Compare commits

...

102 Commits

Author SHA1 Message Date
summoner001 84a0db706a Translated using Weblate (Hungarian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
2024-12-10 21:31:29 +01:00
summoner001 9ec69e17a5 Translated using Weblate (Hungarian)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 21:31:28 +01:00
Bezruchenko Simon 52272cd29a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/
2024-12-10 21:31:28 +01:00
jonnysemon 8517d91861 Translated using Weblate (Arabic)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
2024-12-10 19:39:27 +01:00
jonnysemon 27eb11b6de Translated using Weblate (Arabic)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
2024-12-10 19:39:27 +01:00
Miyu Sakatsuki 2091346690 Translated using Weblate (Japanese)
Currently translated at 61.6% (1193 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
2024-12-10 19:39:26 +01:00
Rafi 8098f1f81f Translated using Weblate (Indonesian)
Currently translated at 89.0% (1975 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/
2024-12-10 19:39:26 +01:00
summoner001 b979d04d1f Translated using Weblate (Hungarian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
2024-12-10 19:39:26 +01:00
summoner001 3118e430f8 Translated using Weblate (Hungarian)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:26 +01:00
大王叫我来巡山 69f9bd5316 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
2024-12-10 19:39:26 +01:00
Rafi 3b3e922da2 Translated using Weblate (Indonesian)
Currently translated at 78.8% (1750 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/
2024-12-10 19:39:26 +01:00
summoner001 d3cceba743 Translated using Weblate (Hungarian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
2024-12-10 19:39:26 +01:00
Ghost of Sparta 8d65fdc2ff Translated using Weblate (Hungarian)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:26 +01:00
summoner001 305a091a09 Translated using Weblate (Hungarian)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:26 +01:00
Random e1f3920ddc Translated using Weblate (Italian)
Currently translated at 100.0% (2218 of 2218 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
2024-12-10 19:39:26 +01:00
Rafi 8e8c391703 Translated using Weblate (Indonesian)
Currently translated at 73.3% (1624 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/
2024-12-10 19:39:26 +01:00
tuananh-ng 20853b07df Translated using Weblate (Vietnamese)
Currently translated at 62.6% (1388 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/
2024-12-10 19:39:26 +01:00
summoner001 3455ced143 Translated using Weblate (Hungarian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
2024-12-10 19:39:26 +01:00
summoner001 5387d991d0 Translated using Weblate (Hungarian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:26 +01:00
Bezruchenko Simon dac5d9e672 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/
2024-12-10 19:39:26 +01:00
大王叫我来巡山 ba37cf3cc7 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
2024-12-10 19:39:26 +01:00
summoner001 6b0fd777a3 Translated using Weblate (Hungarian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
2024-12-10 19:39:26 +01:00
summoner001 0d71e5c4e2 Translated using Weblate (Hungarian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:26 +01:00
jonnysemon b590950655 Translated using Weblate (Arabic)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
2024-12-10 19:39:26 +01:00
No name 745136d6dd Translated using Weblate (Spanish)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
2024-12-10 19:39:26 +01:00
Random a2757179ba Translated using Weblate (Italian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
2024-12-10 19:39:26 +01:00
mlanp a70c785ac0 Translated using Weblate (German)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
2024-12-10 19:39:26 +01:00
Ghost of Sparta ac98f4363e Translated using Weblate (Hungarian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:26 +01:00
Anonymous 906800c3c6 Translated using Weblate (Polish)
Currently translated at 92.8% (2056 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/
2024-12-10 19:39:26 +01:00
Anonymous 81c53420be Translated using Weblate (Ukrainian)
Currently translated at 99.9% (2213 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/
2024-12-10 19:39:26 +01:00
Anonymous 840099ad17 Translated using Weblate (Arabic)
Currently translated at 99.9% (2212 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
2024-12-10 19:39:26 +01:00
Anonymous 656ae93851 Translated using Weblate (Portuguese (Brazil))
Currently translated at 92.0% (2038 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/
2024-12-10 19:39:26 +01:00
Anonymous 21d32a3273 Translated using Weblate (Dutch)
Currently translated at 99.9% (2213 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/
2024-12-10 19:39:26 +01:00
Anonymous eaba362792 Translated using Weblate (Spanish)
Currently translated at 99.9% (2213 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
2024-12-10 19:39:26 +01:00
Anonymous 362691308d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (2213 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
2024-12-10 19:39:26 +01:00
Anonymous 9abe91de61 Translated using Weblate (Italian)
Currently translated at 99.9% (2213 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
2024-12-10 19:39:26 +01:00
Anonymous 1bd6ac2079 Translated using Weblate (French)
Currently translated at 92.9% (2057 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/
2024-12-10 19:39:26 +01:00
Anonymous e86eb5e3c5 Translated using Weblate (Russian)
Currently translated at 99.6% (2206 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/
2024-12-10 19:39:26 +01:00
Anonymous f8c111633b Translated using Weblate (German)
Currently translated at 99.9% (2213 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
2024-12-10 19:39:26 +01:00
Rafi d55f098b86 Translated using Weblate (Indonesian)
Currently translated at 61.5% (1363 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/
2024-12-10 19:39:26 +01:00
Bezruchenko Simon db40aafabf Translated using Weblate (Ukrainian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/
2024-12-10 19:39:26 +01:00
No name 0151aa2e8c Translated using Weblate (Spanish)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/
2024-12-10 19:39:25 +01:00
No name fa975fa76d Translated using Weblate (Spanish)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
2024-12-10 19:39:25 +01:00
summoner001 03b6cd4627 Translated using Weblate (Hungarian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
2024-12-10 19:39:25 +01:00
summoner001 e358ffe403 Translated using Weblate (Hungarian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
2024-12-10 19:39:25 +01:00
zenobit 2c4993b491 Translated using Weblate (Czech)
Currently translated at 89.4% (1980 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/
2024-12-10 19:39:25 +01:00
大王叫我来巡山 e7c1391e03 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
2024-12-10 19:39:25 +01:00
Random bd16b89bc8 Translated using Weblate (Italian)
Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/
2024-12-10 19:39:25 +01:00
Random c80cd66701 Translated using Weblate (Italian)
Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
2024-12-10 19:39:25 +01:00
Evgeny Poberezkin 5d8e11c3a2 blog: typo in screenshot 2024-12-10 18:39:14 +00:00
Evgeny Poberezkin df8ce2b06d blog: fix image 2024-12-10 18:13:11 +00:00
Evgeny 6ff5f31bee blog: v6.2 announcement (#5359)
* blog: v6.2 announcement

* update, images

* update

* readme

* correction

* update
2024-12-10 17:16:34 +00:00
Stanislav Dmitrenko 5e29cda27b desktop: start using continuous runtime for AppImage again (#5366) 2024-12-10 11:09:01 +00:00
Stanislav Dmitrenko 2e573662d5 android, desktop: hiding counters while scrolling (#5363)
* android, desktop: hiding counters while scrolling

* change
2024-12-10 10:07:49 +00:00
spaced4ndy 4075c26dd2 ui: offer to fix connection on call and message buttons (#5358) 2024-12-09 21:03:56 +04:00
Evgeny Poberezkin d64351b760 ui: update label in server statistics 2024-12-08 15:17:32 +00:00
sh b06211bd4e flatpak: update metainfo (#5353)
* flatpak: update metainfo

* make notes like in release

* simpler

* space

---------

Co-authored-by: Evgeny <evgeny@poberezkin.com>
2024-12-08 10:39:31 +00:00
Evgeny Poberezkin 33bc539e16 6.2: ios 254, android 259, desktop 82 2024-12-07 20:53:01 +00:00
Evgeny Poberezkin febea096db android, desktop: remove duplicate translation key 2024-12-07 18:53:18 +00:00
spaced4ndy f0781adbd3 desktop: fix opening operators on onboarding (#5351) 2024-12-07 18:51:23 +00:00
Evgeny Poberezkin df30bb99cb ui: add translations 2024-12-07 17:51:53 +00:00
Evgeny Poberezkin 7c86484978 ios: update library 2024-12-07 17:22:14 +00:00
Stanislav Dmitrenko 307211a47f android, desktop: landscape calls on Android and better local camera ratio management (#5124)
* android, desktop: landscape calls on Android and better local camera ratio management

The main thing is that now when exiting from CallActivity while in call
audio devices are not reset to default. It allows to have landscape mode
enabled

* styles

* fix changing calls
2024-12-07 17:09:00 +00:00
Evgeny 7d6c7c58d7 ui: translations (#5338)
* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2211 of 2211 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Russian)

Currently translated at 99.8% (2206 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Arabic)

Currently translated at 97.4% (2153 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 99.8% (2206 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Arabic)

Currently translated at 98.3% (2174 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2211 of 2211 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Russian)

Currently translated at 99.8% (2206 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Arabic)

Currently translated at 97.4% (2153 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 99.8% (2206 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Arabic)

Currently translated at 98.3% (2174 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1931 of 1931 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Dutch)

Currently translated at 99.8% (2208 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (German)

Currently translated at 97.5% (2158 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2212 of 2212 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1934 of 1934 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (German)

Currently translated at 98.7% (2185 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1934 of 1934 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (German)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (German)

Currently translated at 100.0% (1934 of 1934 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1934 of 1934 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1934 of 1934 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2213 of 2213 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1934 of 1934 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2214 of 2214 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1935 of 1935 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* process localizations

---------

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: J R <jr@simplex.chat>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
2024-12-07 16:52:34 +00:00
Evgeny 93319d947d website: translations (#5350)
* Translated using Weblate (Arabic)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/uk/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/uk/

* Translated using Weblate (German)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/

---------

Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
Co-authored-by: mlanp <github@lang.xyz>
2024-12-07 16:11:30 +00:00
Evgeny Poberezkin ea4927c9b0 core: 6.2.0.7 updated version 2024-12-07 16:01:57 +00:00
Evgeny fe0d811bf7 ui: operator information (#5343)
* ios: operator information

* android, desktop: operator information

* move texts, simplify navigation
2024-12-07 14:41:54 +00:00
Evgeny Poberezkin cbb3da8f83 core: 6.2.0.7 (simplexmq: 6.2.0.7) 2024-12-07 14:40:35 +00:00
Stanislav Dmitrenko 83f0bd9fd3 android, desktop: onboarding button multiline layout (#5348)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-07 14:24:14 +00:00
Diogo 615c483912 android: onboarding small design adjustments (#5346)
* android: onboarding small design adjustments

* bigger

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-07 14:20:01 +00:00
spaced4ndy e0c2272fcb android, desktop: operators info on onboarding (#5341) 2024-12-06 21:35:10 +04:00
spaced4ndy 362581432c ios: export localizations, add translations (#5339)
* ios: export localizations, add translations

* import
2024-12-06 16:01:55 +00:00
Diogo df1a471c56 ios: remove all unsafe warnings in group preferences save (#5340) 2024-12-06 19:55:15 +04:00
Diogo 7d43a43e82 ios: ask for confirmation of save on contact preferences sheet dismiss (#5337) 2024-12-06 18:44:56 +04:00
spaced4ndy ae8ad5c639 ios: operators info on onboarding (#5336) 2024-12-06 17:49:57 +04:00
spaced4ndy 1408d75eb3 ios: use async getServerOperators api (#5334) 2024-12-06 17:21:55 +04:00
spaced4ndy f408988035 ios: fix oneHandUI setting becoming enabled on import (#5335) 2024-12-06 13:05:39 +00:00
spaced4ndy 945c5015d8 ui: improve pending connection texts (#5333)
* ui: improve contact request text

* android

* ternary

* shorter

* kotlin

* change

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-06 15:35:26 +04:00
Diogo 2e431c5afa ios: fix some real time updates in group members (#5332)
* ios: fix some real time updates in group members

* use chat instead of binding for group info updates
2024-12-06 11:10:52 +00:00
Diogo 924273191e ios: ask for confirmation of save on group preferences sheet dismiss (#5327)
* ios: ask for confirmation of save on group preferences sheet dismiss

* fix exit without saving temporary state and also apply fix on dismiss during group creation
2024-12-06 10:21:58 +00:00
Evgeny Poberezkin 9b82cc3303 core: fix feature items when updating preferences in business chats 2024-12-06 10:18:48 +00:00
Evgeny Poberezkin 19e2cebd68 android, desktop: remove footer in Run chat section when chat is running 2024-12-06 01:16:42 +00:00
Evgeny Poberezkin 5ef14ca95e 6.2-beta.6: ios 253, android 258, desktop 81 2024-12-05 23:30:05 +00:00
Evgeny Poberezkin 886dc56de8 ui: update business chat info type 2024-12-05 23:01:37 +00:00
Evgeny Poberezkin bd2ca74987 ui: update "server operators privacy" in onboarding 2024-12-05 22:22:03 +00:00
Evgeny 586671c307 website: translations (#5331)
* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/

* Translated using Weblate (Italian)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (258 of 258 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/hu/

---------

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
2024-12-05 21:46:35 +00:00
Evgeny ff504702de ui: translations (#5330)
* Translated using Weblate (German)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (French)

Currently translated at 93.2% (2060 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Italian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Spanish)

Currently translated at 97.6% (2157 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Dutch)

Currently translated at 97.5% (2154 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.3% (2041 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Arabic)

Currently translated at 97.4% (2153 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Polish)

Currently translated at 93.2% (2059 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Russian)

Currently translated at 93.2% (2061 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (2154 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Italian)

Currently translated at 98.9% (2187 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 99.5% (2201 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 96.6% (1868 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Indonesian)

Currently translated at 60.0% (1326 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (German)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (French)

Currently translated at 93.2% (2060 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Italian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Spanish)

Currently translated at 97.6% (2157 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Dutch)

Currently translated at 97.5% (2154 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.3% (2041 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Arabic)

Currently translated at 97.4% (2153 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 97.5% (2155 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Polish)

Currently translated at 93.2% (2059 of 2209 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Russian)

Currently translated at 93.2% (2061 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 97.4% (2154 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Italian)

Currently translated at 98.9% (2187 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 99.5% (2201 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 96.6% (1868 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (Italian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Indonesian)

Currently translated at 60.0% (1326 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2210 of 2210 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1932 of 1932 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* process localizations

* update translations

---------

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Rafi <rafimuhmad90@gmail.com>
2024-12-05 21:42:53 +00:00
spaced4ndy 69e23ad58f android, desktop: don't show unwanted notifications (#5328)
* android, desktop: don't show unwanted notifications

* format

* fix

* code style

---------

Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
2024-12-05 18:45:19 +00:00
Evgeny Poberezkin e9bf229a9d core: 6.2.0.6 2024-12-05 18:36:07 +00:00
Evgeny 60e0e454e8 core: only update business chat preferences (#5325)
* core: only update business chat preferences

* rework

* migration

* test, bump protocol version

* fix tests
2024-12-05 18:32:00 +00:00
Stanislav Dmitrenko de76e271a8 android, desktop: displaying deleted message with file in chat list (#5329) 2024-12-05 18:10:36 +00:00
Diogo 5f66c29dbd ios: fix open from notification and connected directly chat item chat loading (#5326)
* ios: fix opening from notification and connected directly chat item chat loading

* better fix
2024-12-05 16:15:24 +00:00
spaced4ndy 97cd2682d7 core: take address lock before reading contact request data (to prevent possible race condition if user quickly accepts request several times in a row); android, desktop: show error context in agent CMD errors (#5324) 2024-12-05 20:10:44 +04:00
Stanislav Dmitrenko 4f8a70a6c1 android, desktop: allow to scan QR multiple times after fail (#5323) 2024-12-05 15:52:45 +00:00
Evgeny Poberezkin c1a0943448 6.2-beta.5: ios 251, android 256, desktop 80 2024-12-04 21:56:09 +00:00
Evgeny Poberezkin c1c17d1f19 core: 6.2.0.5 (simplexmq: 6.2.0.6) 2024-12-04 19:59:42 +00:00
spaced4ndy 009d13210f android: fix simplex chat team contact card opening empty page on connection (#5320) 2024-12-04 17:33:30 +00:00
spaced4ndy 892f6498be ios: fix contact cards opening empty page on connection 2 (#5319) 2024-12-04 17:33:12 +00:00
spaced4ndy 3fa1d7b07c core: fix cli servers override (#5317) 2024-12-04 16:50:19 +00:00
Stanislav Dmitrenko ee146cdc7b android, desktop, core: option to show toolbar in chat at the top in reachable UI (#5316)
* android, desktop: ability to show toolbar in chat at the top in reachable UI

* rename

* core AppSettings

* ios AppSettings

* rename

* strings, enable reachable chat toolbar when enabled reachable app toolbars

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-12-04 16:49:45 +00:00
Stanislav Dmitrenko 219381f941 android, desktop: don't load new messages when pressing quote while searching (#5315) 2024-12-04 16:33:14 +00:00
Evgeny 89f380400e core: update business chat profile (#5313)
* core: update business chat profile

* fix, test

* refactor

* test changing non-title member profile

* fix history
2024-12-04 16:32:01 +00:00
170 changed files with 5992 additions and 2793 deletions
+4 -8
View File
@@ -233,7 +233,7 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
[Nov 25, 2025. Servers operated by Flux - true privacy and decentralization for all users](./20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.md)
[Dec 10, 2024. SimpleX network: preset servers operated by Flux, business chats and more with v6.2 of the apps](./20241210-simplex-network-v6-2-servers-by-flux-business-chats.md)
[Oct 14, 2024. SimpleX network: security review of protocols design by Trail of Bits, v6.1 released with better calls and user experience.](./blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md)
@@ -243,20 +243,14 @@ Recent and important updates:
[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md)
[Nov 25, 2023. SimpleX Chat v5.4 released: link mobile and desktop apps via quantum resistant protocol, and much better groups](./blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md).
[Sep 25, 2023. SimpleX Chat v5.3 released: desktop app, local file encryption, improved groups and directory service](./blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.md).
[Apr 22, 2023. SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb](./blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md).
[Mar 1, 2023. SimpleX File Transfer Protocol send large files efficiently, privately and securely, soon to be integrated into SimpleX Chat apps.](./blog/20230301-simplex-file-transfer-protocol.md).
[Nov 8, 2022. Security audit by Trail of Bits, the new website and v4.2 released](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
[Sep 28, 2022. v4.0: encrypted local chat database and many other changes](./blog/20220928-simplex-chat-v4-encrypted-database.md).
[All updates](./blog)
## :zap: Quick installation of a terminal app
@@ -384,9 +378,11 @@ Please also join [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A
- ✅ Improve sending videos (including encryption of locally stored videos).
- ✅ Post-quantum resistant key exchange in double ratchet protocol.
- ✅ Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
- ✅ Support multiple network operators in the app.
- 🏗 Large groups, communities and public channels.
- 🏗 Short links to connect and join groups.
- 🏗 Improve stability and reduce battery usage.
- 🏗 Improve experience for the new users.
- 🏗 Large groups, communities and public channels.
- Privacy & security slider - a simple way to set all settings at once.
- SMP queue redundancy and rotation (manual is supported).
- Include optional message into connection request sent via contact address.
+5 -1
View File
@@ -26,6 +26,7 @@ enum NtfCallAction {
class NtfManager: NSObject, UNUserNotificationCenterDelegate, ObservableObject {
static let shared = NtfManager()
public var navigatingToChat = false
private var granted = false
private var prevNtfTime: Dictionary<ChatId, Date> = [:]
@@ -74,7 +75,10 @@ class NtfManager: NSObject, UNUserNotificationCenterDelegate, ObservableObject {
}
} else {
if let chatId = content.targetContentIdentifier {
ItemsModel.shared.loadOpenChat(chatId)
self.navigatingToChat = true
ItemsModel.shared.loadOpenChat(chatId) {
self.navigatingToChat = false
}
}
}
}
+15 -3
View File
@@ -519,7 +519,14 @@ func testProtoServer(server: String) async throws -> Result<(), ProtocolTestFail
throw r
}
func getServerOperators() throws -> ServerOperatorConditions {
func getServerOperators() async throws -> ServerOperatorConditions {
let r = await chatSendCmd(.apiGetServerOperators)
if case let .serverOperatorConditions(conditions) = r { return conditions }
logger.error("getServerOperators error: \(String(describing: r))")
throw r
}
func getServerOperatorsSync() throws -> ServerOperatorConditions {
let r = chatSendCmdSync(.apiGetServerOperators)
if case let .serverOperatorConditions(conditions) = r { return conditions }
logger.error("getServerOperators error: \(String(describing: r))")
@@ -1599,7 +1606,7 @@ func initializeChat(start: Bool, confirmStart: Bool = false, dbKey: String? = ni
try apiSetEncryptLocalFiles(privacyEncryptLocalFilesGroupDefault.get())
m.chatInitialized = true
m.currentUser = try apiGetActiveUser()
m.conditions = try getServerOperators()
m.conditions = try getServerOperatorsSync()
if shouldImportAppSettingsDefault.get() {
do {
let appSettings = try apiGetAppSettings(settings: AppSettings.current.prepareForExport())
@@ -2014,11 +2021,16 @@ func processReceivedMsg(_ res: ChatResponse) async {
m.removeChat(hostConn.id)
}
}
case let .businessLinkConnecting(user, groupInfo, hostMember, fromContact):
case let .businessLinkConnecting(user, groupInfo, _, fromContact):
if !active(user) { return }
await MainActor.run {
m.updateGroup(groupInfo)
}
if m.chatId == fromContact.id {
ItemsModel.shared.loadOpenChat(groupInfo.id)
}
await MainActor.run {
m.removeChat(fromContact.id)
}
case let .joinedGroupMemberConnecting(user, groupInfo, _, member):
+2 -1
View File
@@ -143,7 +143,8 @@ struct SimpleXApp: App {
let chats = try await apiGetChatsAsync()
await MainActor.run { chatModel.updateChats(chats) }
if let id = chatModel.chatId,
let chat = chatModel.getChat(id) {
let chat = chatModel.getChat(id),
!NtfManager.shared.navigatingToChat {
Task { await loadChat(chat: chat, clearItems: false) }
}
if let ncr = chatModel.ntfContactRequest {
+105 -24
View File
@@ -96,6 +96,8 @@ struct ChatInfoView: View {
@ObservedObject var chat: Chat
@State var contact: Contact
@State var localAlias: String
@State var featuresAllowed: ContactFeaturesAllowed
@State var currentFeaturesAllowed: ContactFeaturesAllowed
var onSearch: () -> Void
@State private var connectionStats: ConnectionStats? = nil
@State private var customUserProfile: Profile? = nil
@@ -154,8 +156,8 @@ struct ChatInfoView: View {
HStack(alignment: .center, spacing: 8) {
let buttonWidth = g.size.width / 4
searchButton(width: buttonWidth)
AudioCallButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
AudioCallButton(chat: chat, contact: contact, connectionStats: $connectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, connectionStats: $connectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
muteButton(width: buttonWidth)
}
}
@@ -312,7 +314,15 @@ struct ChatInfoView: View {
case .networkStatusAlert: return networkStatusAlert()
case .switchAddressAlert: return switchAddressAlert(switchContactAddress)
case .abortSwitchAddressAlert: return abortSwitchAddressAlert(abortSwitchContactAddress)
case .syncConnectionForceAlert: return syncConnectionForceAlert({ syncContactConnection(force: true) })
case .syncConnectionForceAlert:
return syncConnectionForceAlert({
Task {
if let stats = await syncContactConnection(contact, force: true, showAlert: { alert = .someAlert(alert: $0) }) {
connectionStats = stats
dismiss()
}
}
})
case let .queueInfo(info): return queueInfoAlert(info)
case let .someAlert(a): return a.alert
case let .error(title, error): return mkAlert(title: title, message: error)
@@ -327,6 +337,16 @@ struct ChatInfoView: View {
$0.content
}
}
.onDisappear {
if currentFeaturesAllowed != featuresAllowed {
showAlert(
title: NSLocalizedString("Save preferences?", comment: "alert title"),
buttonTitle: NSLocalizedString("Save and notify contact", comment: "alert button"),
buttonAction: { savePreferences() },
cancelButton: true
)
}
}
}
private func contactInfoHeader() -> some View {
@@ -447,8 +467,9 @@ struct ChatInfoView: View {
NavigationLink {
ContactPreferencesView(
contact: $contact,
featuresAllowed: contactUserPrefsToFeaturesAllowed(contact.mergedPreferences),
currentFeaturesAllowed: contactUserPrefsToFeaturesAllowed(contact.mergedPreferences)
featuresAllowed: $featuresAllowed,
currentFeaturesAllowed: $currentFeaturesAllowed,
savePreferences: savePreferences
)
.navigationBarTitle("Contact preferences")
.modifier(ThemedBackground(grouped: true))
@@ -480,7 +501,12 @@ struct ChatInfoView: View {
private func synchronizeConnectionButton() -> some View {
Button {
syncContactConnection(force: false)
Task {
if let stats = await syncContactConnection(contact, force: false, showAlert: { alert = .someAlert(alert: $0) }) {
connectionStats = stats
dismiss()
}
}
} label: {
Label("Fix connection", systemImage: "exclamationmark.arrow.triangle.2.circlepath")
.foregroundColor(.orange)
@@ -599,29 +625,50 @@ struct ChatInfoView: View {
}
}
private func syncContactConnection(force: Bool) {
private func savePreferences() {
Task {
do {
let stats = try apiSyncContactRatchet(contact.apiId, force)
connectionStats = stats
await MainActor.run {
chatModel.updateContactConnectionStats(contact, stats)
dismiss()
}
} catch let error {
logger.error("syncContactConnection apiSyncContactRatchet error: \(responseError(error))")
let a = getErrorAlert(error, "Error synchronizing connection")
await MainActor.run {
alert = .error(title: a.title, error: a.message)
let prefs = contactFeaturesAllowedToPrefs(featuresAllowed)
if let toContact = try await apiSetContactPrefs(contactId: contact.contactId, preferences: prefs) {
await MainActor.run {
contact = toContact
chatModel.updateContact(toContact)
currentFeaturesAllowed = featuresAllowed
}
}
} catch {
logger.error("ContactPreferencesView apiSetContactPrefs error: \(responseError(error))")
}
}
}
}
func syncContactConnection(_ contact: Contact, force: Bool, showAlert: (SomeAlert) -> Void) async -> ConnectionStats? {
do {
let stats = try apiSyncContactRatchet(contact.apiId, force)
await MainActor.run {
ChatModel.shared.updateContactConnectionStats(contact, stats)
}
return stats
} catch let error {
logger.error("syncContactConnection apiSyncContactRatchet error: \(responseError(error))")
let a = getErrorAlert(error, "Error synchronizing connection")
await MainActor.run {
showAlert(
SomeAlert(
alert: mkAlert(title: a.title, message: a.message),
id: "syncContactConnection error"
)
)
}
return nil
}
}
struct AudioCallButton: View {
var chat: Chat
var contact: Contact
@Binding var connectionStats: ConnectionStats?
var width: CGFloat
var showAlert: (SomeAlert) -> Void
@@ -629,6 +676,7 @@ struct AudioCallButton: View {
CallButton(
chat: chat,
contact: contact,
connectionStats: $connectionStats,
image: "phone.fill",
title: "call",
mediaType: .audio,
@@ -641,6 +689,7 @@ struct AudioCallButton: View {
struct VideoButton: View {
var chat: Chat
var contact: Contact
@Binding var connectionStats: ConnectionStats?
var width: CGFloat
var showAlert: (SomeAlert) -> Void
@@ -648,6 +697,7 @@ struct VideoButton: View {
CallButton(
chat: chat,
contact: contact,
connectionStats: $connectionStats,
image: "video.fill",
title: "video",
mediaType: .video,
@@ -660,6 +710,7 @@ struct VideoButton: View {
private struct CallButton: View {
var chat: Chat
var contact: Contact
@Binding var connectionStats: ConnectionStats?
var image: String
var title: LocalizedStringKey
var mediaType: CallMediaType
@@ -671,12 +722,40 @@ private struct CallButton: View {
InfoViewButton(image: image, title: title, disabledLook: !canCall, width: width) {
if canCall {
if CallController.useCallKit() {
CallController.shared.startCall(contact, mediaType)
} else {
// When CallKit is not used, colorscheme will be changed and it will be visible if not hiding sheets first
dismissAllSheets(animated: true) {
CallController.shared.startCall(contact, mediaType)
if let connStats = connectionStats {
if connStats.ratchetSyncState == .ok {
if CallController.useCallKit() {
CallController.shared.startCall(contact, mediaType)
} else {
// When CallKit is not used, colorscheme will be changed and it will be visible if not hiding sheets first
dismissAllSheets(animated: true) {
CallController.shared.startCall(contact, mediaType)
}
}
} else if connStats.ratchetSyncAllowed {
showAlert(SomeAlert(
alert: Alert(
title: Text("Fix connection?"),
message: Text("Connection requires encryption renegotiation."),
primaryButton: .default(Text("Fix")) {
Task {
if let stats = await syncContactConnection(contact, force: false, showAlert: showAlert) {
connectionStats = stats
}
}
},
secondaryButton: .cancel()
),
id: "can't call contact, fix connection"
))
} else {
showAlert(SomeAlert(
alert: mkAlert(
title: "Can't call contact",
message: "Encryption renegotiation in progress."
),
id: "can't call contact, encryption renegotiation in progress"
))
}
}
} else if contact.nextSendGrpInv {
@@ -1173,6 +1252,8 @@ struct ChatInfoView_Previews: PreviewProvider {
chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []),
contact: Contact.sampleData,
localAlias: "",
featuresAllowed: contactUserPrefsToFeaturesAllowed(Contact.sampleData.mergedPreferences),
currentFeaturesAllowed: contactUserPrefsToFeaturesAllowed(Contact.sampleData.mergedPreferences),
onSearch: {}
)
}
@@ -23,7 +23,7 @@ struct CIMemberCreatedContactView: View {
.onTapGesture {
dismissAllSheets(animated: true)
DispatchQueue.main.async {
m.chatId = "@\(contactId)"
ItemsModel.shared.loadOpenChat("@\(contactId)")
}
}
} else {
+10 -1
View File
@@ -133,7 +133,12 @@ struct ChatView: View {
.appSheet(item: $selectedMember) { member in
Group {
if case let .group(groupInfo) = chat.chatInfo {
GroupMemberInfoView(groupInfo: groupInfo, groupMember: member, navigation: true)
GroupMemberInfoView(
groupInfo: groupInfo,
chat: chat,
groupMember: member,
navigation: true
)
}
}
}
@@ -226,6 +231,8 @@ struct ChatView: View {
chat: chat,
contact: contact,
localAlias: chat.chatInfo.localAlias,
featuresAllowed: contactUserPrefsToFeaturesAllowed(contact.mergedPreferences),
currentFeaturesAllowed: contactUserPrefsToFeaturesAllowed(contact.mergedPreferences),
onSearch: { focusSearch() }
)
}
@@ -1122,6 +1129,7 @@ struct ChatView: View {
} else {
let mem = GMember.init(member)
m.groupMembers.append(mem)
m.groupMembersIndexes[member.groupMemberId] = m.groupMembers.count - 1
selectedMember = mem
}
}
@@ -1877,6 +1885,7 @@ struct ReactionContextMenu: View {
} else {
let member = GMember.init(mem)
m.groupMembers.append(member)
m.groupMembersIndexes[member.groupMemberId] = m.groupMembers.count - 1
selectedMember = member
}
} label: {
@@ -14,9 +14,10 @@ struct ContactPreferencesView: View {
@EnvironmentObject var chatModel: ChatModel
@EnvironmentObject var theme: AppTheme
@Binding var contact: Contact
@State var featuresAllowed: ContactFeaturesAllowed
@State var currentFeaturesAllowed: ContactFeaturesAllowed
@Binding var featuresAllowed: ContactFeaturesAllowed
@Binding var currentFeaturesAllowed: ContactFeaturesAllowed
@State private var showSaveDialogue = false
let savePreferences: () -> Void
var body: some View {
let user: User = chatModel.currentUser!
@@ -48,7 +49,10 @@ struct ContactPreferencesView: View {
savePreferences()
dismiss()
}
Button("Exit without saving") { dismiss() }
Button("Exit without saving") {
featuresAllowed = currentFeaturesAllowed
dismiss()
}
}
}
@@ -118,31 +122,15 @@ struct ContactPreferencesView: View {
private func featureFooter(_ feature: ChatFeature, _ enabled: FeatureEnabled) -> some View {
Text(feature.enabledDescription(enabled))
}
private func savePreferences() {
Task {
do {
let prefs = contactFeaturesAllowedToPrefs(featuresAllowed)
if let toContact = try await apiSetContactPrefs(contactId: contact.contactId, preferences: prefs) {
await MainActor.run {
contact = toContact
chatModel.updateContact(toContact)
currentFeaturesAllowed = featuresAllowed
}
}
} catch {
logger.error("ContactPreferencesView apiSetContactPrefs error: \(responseError(error))")
}
}
}
}
struct ContactPreferencesView_Previews: PreviewProvider {
static var previews: some View {
ContactPreferencesView(
contact: Binding.constant(Contact.sampleData),
featuresAllowed: ContactFeaturesAllowed.sampleData,
currentFeaturesAllowed: ContactFeaturesAllowed.sampleData
featuresAllowed: Binding.constant(ContactFeaturesAllowed.sampleData),
currentFeaturesAllowed: Binding.constant(ContactFeaturesAllowed.sampleData),
savePreferences: {}
)
}
}
@@ -78,7 +78,12 @@ struct AddGroupMembersViewCommon: View {
let count = selectedContacts.count
Section {
if creatingGroup {
groupPreferencesButton($groupInfo, true)
GroupPreferencesButton(
groupInfo: $groupInfo,
preferences: groupInfo.fullGroupPreferences,
currentPreferences: groupInfo.fullGroupPreferences,
creatingGroup: true
)
}
rolePicker()
inviteMembersButton()
@@ -87,7 +87,7 @@ struct GroupChatInfoView: View {
if groupInfo.groupProfile.description != nil || (groupInfo.isOwner && groupInfo.businessChat == nil) {
addOrEditWelcomeMessage()
}
groupPreferencesButton($groupInfo)
GroupPreferencesButton(groupInfo: $groupInfo, preferences: groupInfo.fullGroupPreferences, currentPreferences: groupInfo.fullGroupPreferences)
if members.filter({ $0.wrapped.memberCurrent }).count <= SMALL_GROUPS_RCPS_MEM_LIMIT {
sendReceiptsOption()
} else {
@@ -439,7 +439,7 @@ struct GroupChatInfoView: View {
}
private func memberInfoView(_ groupMember: GMember) -> some View {
GroupMemberInfoView(groupInfo: groupInfo, groupMember: groupMember)
GroupMemberInfoView(groupInfo: groupInfo, chat: chat, groupMember: groupMember)
.navigationBarHidden(false)
}
@@ -654,27 +654,72 @@ func deleteGroupAlertMessage(_ groupInfo: GroupInfo) -> Text {
)
}
func groupPreferencesButton(_ groupInfo: Binding<GroupInfo>, _ creatingGroup: Bool = false) -> some View {
let label: LocalizedStringKey = groupInfo.wrappedValue.businessChat == nil ? "Group preferences" : "Chat preferences"
return NavigationLink {
GroupPreferencesView(
groupInfo: groupInfo,
preferences: groupInfo.wrappedValue.fullGroupPreferences,
currentPreferences: groupInfo.wrappedValue.fullGroupPreferences,
creatingGroup: creatingGroup
)
.navigationBarTitle(label)
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
if creatingGroup {
Text("Set group preferences")
} else {
Label(label, systemImage: "switch.2")
struct GroupPreferencesButton: View {
@Binding var groupInfo: GroupInfo
@State var preferences: FullGroupPreferences
@State var currentPreferences: FullGroupPreferences
var creatingGroup: Bool = false
private var label: LocalizedStringKey {
groupInfo.businessChat == nil ? "Group preferences" : "Chat preferences"
}
var body: some View {
NavigationLink {
GroupPreferencesView(
groupInfo: $groupInfo,
preferences: $preferences,
currentPreferences: currentPreferences,
creatingGroup: creatingGroup,
savePreferences: savePreferences
)
.navigationBarTitle(label)
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
.onDisappear {
let saveText = NSLocalizedString(
creatingGroup ? "Save" : "Save and notify group members",
comment: "alert button"
)
if groupInfo.fullGroupPreferences != preferences {
showAlert(
title: NSLocalizedString("Save preferences?", comment: "alert title"),
buttonTitle: saveText,
buttonAction: { savePreferences() },
cancelButton: true
)
}
}
} label: {
if creatingGroup {
Text("Set group preferences")
} else {
Label(label, systemImage: "switch.2")
}
}
}
private func savePreferences() {
Task {
do {
var gp = groupInfo.groupProfile
gp.groupPreferences = toGroupPreferences(preferences)
let gInfo = try await apiUpdateGroup(groupInfo.groupId, gp)
await MainActor.run {
groupInfo = gInfo
ChatModel.shared.updateGroup(gInfo)
currentPreferences = preferences
}
} catch {
logger.error("GroupPreferencesView apiUpdateGroup error: \(responseError(error))")
}
}
}
}
func cantInviteIncognitoAlert() -> Alert {
Alert(
title: Text("Can't invite contacts!"),
@@ -14,11 +14,15 @@ struct GroupMemberInfoView: View {
@EnvironmentObject var theme: AppTheme
@Environment(\.dismiss) var dismiss: DismissAction
@State var groupInfo: GroupInfo
@ObservedObject var chat: Chat
@ObservedObject var groupMember: GMember
var navigation: Bool = false
@State private var connectionStats: ConnectionStats? = nil
@State private var connectionCode: String? = nil
@State private var connectionLoaded: Bool = false
@State private var knownContactChat: Chat? = nil
@State private var knownContact: Contact? = nil
@State private var knownContactConnectionStats: ConnectionStats? = nil
@State private var newRole: GroupMemberRole = .member
@State private var alert: GroupMemberInfoViewAlert?
@State private var sheet: PlanAndConnectActionSheet?
@@ -118,8 +122,8 @@ struct GroupMemberInfoView: View {
} label: {
Label("Share address", systemImage: "square.and.arrow.up")
}
if let contactId = member.memberContactId {
if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if member.memberContactId != nil {
if knownContactChat == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
connectViaAddressButton(contactLink)
}
} else {
@@ -228,6 +232,18 @@ struct GroupMemberInfoView: View {
}
logger.error("apiGroupMemberInfo or apiGetGroupMemberCode error: \(responseError(error))")
}
if let contactId = member.memberContactId, let (contactChat, contact) = knownDirectChat(contactId) {
knownContactChat = contactChat
knownContact = contact
do {
let (stats, _) = try await apiContactInfo(contactChat.chatInfo.apiId)
await MainActor.run {
knownContactConnectionStats = stats
}
} catch let error {
logger.error("apiContactInfo error: \(responseError(error))")
}
}
}
.onChange(of: newRole) { newRole in
if newRole != member.memberRole {
@@ -261,6 +277,11 @@ struct GroupMemberInfoView: View {
ProgressView().scaleEffect(2)
}
}
.onChange(of: chat.chatInfo) { c in
if case let .group(gI) = chat.chatInfo {
groupInfo = gI
}
}
.modifier(ThemedBackground(grouped: true))
}
@@ -268,10 +289,10 @@ struct GroupMemberInfoView: View {
GeometryReader { g in
let buttonWidth = g.size.width / 4
HStack(alignment: .center, spacing: 8) {
if let contactId = member.memberContactId, let (chat, contact) = knownDirectChat(contactId) {
if let chat = knownContactChat, let contact = knownContact {
knownDirectChatButton(chat, width: buttonWidth)
AudioCallButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, width: buttonWidth) { alert = .someAlert(alert: $0) }
AudioCallButton(chat: chat, contact: contact, connectionStats: $knownContactConnectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
VideoButton(chat: chat, contact: contact, connectionStats: $knownContactConnectionStats, width: buttonWidth) { alert = .someAlert(alert: $0) }
} else if groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if let contactId = member.memberContactId {
newDirectChatButton(contactId, width: buttonWidth)
@@ -360,25 +381,49 @@ struct GroupMemberInfoView: View {
func createMemberContactButton(width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
progressIndicator = true
Task {
do {
let memberContact = try await apiCreateMemberContact(groupInfo.apiId, groupMember.groupMemberId)
await MainActor.run {
progressIndicator = false
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
ItemsModel.shared.loadOpenChat(memberContact.id) {
dismissAllSheets(animated: true)
if let connStats = connectionStats {
if connStats.ratchetSyncState == .ok {
progressIndicator = true
Task {
do {
let memberContact = try await apiCreateMemberContact(groupInfo.apiId, groupMember.groupMemberId)
await MainActor.run {
progressIndicator = false
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
ItemsModel.shared.loadOpenChat(memberContact.id) {
dismissAllSheets(animated: true)
}
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
}
} catch let error {
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
let a = getErrorAlert(error, "Error creating member contact")
await MainActor.run {
progressIndicator = false
alert = .error(title: a.title, error: a.message)
}
}
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
}
} catch let error {
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
let a = getErrorAlert(error, "Error creating member contact")
await MainActor.run {
progressIndicator = false
alert = .error(title: a.title, error: a.message)
}
} else if connStats.ratchetSyncAllowed {
alert = .someAlert(alert: SomeAlert(
alert: Alert(
title: Text("Fix connection?"),
message: Text("Connection requires encryption renegotiation."),
primaryButton: .default(Text("Fix")) {
syncMemberConnection(force: false)
},
secondaryButton: .cancel()
),
id: "can't message member, fix connection"
))
} else {
alert = .someAlert(alert: SomeAlert(
alert: mkAlert(
title: "Can't message member",
message: "Encryption renegotiation in progress."
),
id: "can't message contact, encryption renegotiation in progress"
))
}
}
}
@@ -758,6 +803,7 @@ struct GroupMemberInfoView_Previews: PreviewProvider {
static var previews: some View {
GroupMemberInfoView(
groupInfo: GroupInfo.sampleData,
chat: Chat.sampleData,
groupMember: GMember.sampleData
)
}
@@ -20,9 +20,10 @@ struct GroupPreferencesView: View {
@EnvironmentObject var chatModel: ChatModel
@EnvironmentObject var theme: AppTheme
@Binding var groupInfo: GroupInfo
@State var preferences: FullGroupPreferences
@State var currentPreferences: FullGroupPreferences
@Binding var preferences: FullGroupPreferences
var currentPreferences: FullGroupPreferences
let creatingGroup: Bool
let savePreferences: () -> Void
@State private var showSaveDialogue = false
var body: some View {
@@ -68,7 +69,10 @@ struct GroupPreferencesView: View {
savePreferences()
dismiss()
}
Button("Exit without saving") { dismiss() }
Button("Exit without saving") {
preferences = currentPreferences
dismiss()
}
}
}
@@ -132,32 +136,16 @@ struct GroupPreferencesView: View {
}
}
}
private func savePreferences() {
Task {
do {
var gp = groupInfo.groupProfile
gp.groupPreferences = toGroupPreferences(preferences)
let gInfo = try await apiUpdateGroup(groupInfo.groupId, gp)
await MainActor.run {
groupInfo = gInfo
chatModel.updateGroup(gInfo)
currentPreferences = preferences
}
} catch {
logger.error("GroupPreferencesView apiUpdateGroup error: \(responseError(error))")
}
}
}
}
struct GroupPreferencesView_Previews: PreviewProvider {
static var previews: some View {
GroupPreferencesView(
groupInfo: Binding.constant(GroupInfo.sampleData),
preferences: FullGroupPreferences.sampleData,
preferences: Binding.constant(FullGroupPreferences.sampleData),
currentPreferences: FullGroupPreferences.sampleData,
creatingGroup: false
creatingGroup: false,
savePreferences: {}
)
}
}
@@ -587,7 +587,7 @@ struct SMPStatsView: View {
} header: {
Text("Statistics")
} footer: {
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is private to your device.")
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
}
}
}
@@ -703,7 +703,7 @@ struct XFTPStatsView: View {
} header: {
Text("Statistics")
} footer: {
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is private to your device.")
Text("Starting from \(localTimestamp(statsStartedAt)).") + Text("\n") + Text("All data is kept private on your device.")
}
}
}
@@ -62,7 +62,6 @@ struct ChooseServerOperators: View {
var onboarding: Bool
@State private var serverOperators: [ServerOperator] = []
@State private var selectedOperatorIds = Set<Int64>()
@State private var reviewConditionsNavLinkActive = false
@State private var sheetItem: ChooseServerOperatorsSheet? = nil
@State private var notificationsModeNavLinkActive = false
@State private var justOpened = true
@@ -79,7 +78,7 @@ struct ChooseServerOperators: View {
.frame(maxWidth: .infinity, alignment: .center)
if onboarding {
title.padding(.top, 50)
title.padding(.top, 25)
} else {
title
}
@@ -92,11 +91,14 @@ struct ChooseServerOperators: View {
ForEach(serverOperators) { srvOperator in
operatorCheckView(srvOperator)
}
Text("You can configure servers via settings.")
.font(.footnote)
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.horizontal, 32)
VStack {
Text("SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.").padding(.bottom, 8)
Text("You can configure servers via settings.")
}
.font(.footnote)
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.horizontal, 16)
Spacer()
@@ -166,8 +168,9 @@ struct ChooseServerOperators: View {
.modifier(ThemedBackground(grouped: true))
}
}
.frame(maxHeight: .infinity, alignment: .top)
}
.frame(maxHeight: .infinity)
.frame(maxHeight: .infinity, alignment: .top)
.padding(onboarding ? 25 : 16)
}
@@ -214,23 +217,15 @@ struct ChooseServerOperators: View {
}
private func reviewConditionsButton() -> some View {
ZStack {
Button {
reviewConditionsNavLinkActive = true
} label: {
Text("Review conditions")
}
.buttonStyle(OnboardingButtonStyle(isDisabled: selectedOperatorIds.isEmpty))
.disabled(selectedOperatorIds.isEmpty)
NavigationLink(isActive: $reviewConditionsNavLinkActive) {
reviewConditionsDestinationView()
} label: {
EmptyView()
}
.frame(width: 1, height: 1)
.hidden()
NavigationLink("Review conditions") {
reviewConditionsView()
.navigationTitle("Conditions of use")
.navigationBarTitleDisplayMode(.large)
.toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) }
.modifier(ThemedBackground(grouped: true))
}
.buttonStyle(OnboardingButtonStyle(isDisabled: selectedOperatorIds.isEmpty))
.disabled(selectedOperatorIds.isEmpty)
}
private func setOperatorsButton() -> some View {
@@ -309,21 +304,13 @@ struct ChooseServerOperators: View {
.modifier(ThemedBackground())
}
private func reviewConditionsDestinationView() -> some View {
reviewConditionsView()
.navigationTitle("Conditions of use")
.navigationBarTitleDisplayMode(.large)
.toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) }
.modifier(ThemedBackground(grouped: true))
}
@ViewBuilder private func reviewConditionsView() -> some View {
let operatorsWithConditionsAccepted = ChatModel.shared.conditions.serverOperators.filter { $0.conditionsAcceptance.conditionsAccepted }
let acceptForOperators = selectedOperators.filter { !$0.conditionsAcceptance.conditionsAccepted }
VStack(alignment: .leading, spacing: 20) {
if !operatorsWithConditionsAccepted.isEmpty {
Text("Conditions are already accepted for following operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("Same conditions will apply to operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("Conditions are already accepted for these operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("The same conditions will apply to operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.")
} else {
Text("Conditions will be accepted for operator(s): **\(acceptForOperators.map { $0.legalName_ }.joined(separator: ", "))**.")
}
@@ -409,26 +396,53 @@ struct ChooseServerOperators: View {
let operatorsPostLink = URL(string: "https://simplex.chat/blog/20241125-servers-operated-by-flux-true-privacy-and-decentralization-for-all-users.html")!
struct ChooseServerOperatorsInfoView: View {
@Environment(\.colorScheme) var colorScheme: ColorScheme
@EnvironmentObject var theme: AppTheme
var body: some View {
VStack(alignment: .leading) {
Text("Server operators")
.font(.largeTitle)
.bold()
.padding(.vertical)
ScrollView {
VStack(alignment: .leading) {
Group {
Text("The app protects your privacy by using different operators in each conversation.")
Text("When more than one operator is enabled, none of them has metadata to learn who communicates with whom.")
Text("For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.")
NavigationView {
List {
VStack(alignment: .leading, spacing: 12) {
Text("The app protects your privacy by using different operators in each conversation.")
Text("When more than one operator is enabled, none of them has metadata to learn who communicates with whom.")
Text("For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.")
}
.fixedSize(horizontal: false, vertical: true)
.listRowBackground(Color.clear)
.listRowSeparator(.hidden)
.listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))
.padding(.top)
Section {
ForEach(ChatModel.shared.conditions.serverOperators) { op in
operatorInfoNavLinkView(op)
}
.padding(.bottom)
} header: {
Text("About operators")
.foregroundColor(theme.colors.secondary)
}
}
.navigationTitle("Server operators")
.navigationBarTitleDisplayMode(.large)
.modifier(ThemedBackground(grouped: true))
}
}
private func operatorInfoNavLinkView(_ op: ServerOperator) -> some View {
NavigationLink() {
OperatorInfoView(serverOperator: op)
.navigationBarTitle("Network operator")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
HStack {
Image(op.logo(colorScheme))
.resizable()
.scaledToFit()
.frame(width: 24, height: 24)
Text(op.tradeName)
}
}
.padding()
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
.modifier(ThemedBackground())
}
}
@@ -136,7 +136,6 @@ struct CreateFirstProfile: View {
.multilineTextAlignment(.center)
}
.frame(maxWidth: .infinity) // Ensures it takes up the full width
.padding(.top, 25)
.padding(.horizontal, 10)
HStack {
@@ -19,10 +19,10 @@ struct SetNotificationsMode: View {
GeometryReader { g in
ScrollView {
VStack(alignment: .center, spacing: 20) {
Text("Push Notifications")
Text("Push notifications")
.font(.largeTitle)
.bold()
.padding(.top, 50)
.padding(.top, 25)
infoText()
@@ -119,6 +119,7 @@ struct NtfModeSelector: View {
Text(ntfModeShortDescription(mode))
.lineLimit(2)
.font(.callout)
.fixedSize(horizontal: false, vertical: true)
}
}
.padding(.vertical, 12)
@@ -65,6 +65,7 @@ extension AppSettings {
if let val = uiCurrentThemeIds { currentThemeIdsDefault.set(val) }
if let val = uiThemes { themeOverridesDefault.set(val.skipDuplicates()) }
if let val = oneHandUI { groupDefaults.setValue(val, forKey: GROUP_DEFAULT_ONE_HAND_UI) }
if let val = chatBottomBar { groupDefaults.setValue(val, forKey: GROUP_DEFAULT_CHAT_BOTTOM_BAR) }
}
public static var current: AppSettings {
@@ -100,6 +101,7 @@ extension AppSettings {
c.uiCurrentThemeIds = currentThemeIdsDefault.get()
c.uiThemes = themeOverridesDefault.get()
c.oneHandUI = groupDefaults.bool(forKey: GROUP_DEFAULT_ONE_HAND_UI)
c.chatBottomBar = groupDefaults.bool(forKey: GROUP_DEFAULT_CHAT_BOTTOM_BAR)
return c
}
}
@@ -331,9 +331,12 @@ struct OperatorInfoView: View {
Text(d)
}
}
Link(serverOperator.info.website.absoluteString, destination: serverOperator.info.website)
}
Section {
Link("\(serverOperator.info.website)", destination: URL(string: serverOperator.info.website)!)
if let selfhost = serverOperator.info.selfhost {
Section {
Link(selfhost.text, destination: selfhost.link)
}
}
}
}
@@ -421,7 +424,6 @@ struct SingleOperatorUsageConditionsView: View {
@Binding var userServers: [UserOperatorServers]
@Binding var serverErrors: [UserServersError]
var operatorIndex: Int
@State private var usageConditionsNavLinkActive: Bool = false
var body: some View {
viewBody()
@@ -433,52 +435,45 @@ struct SingleOperatorUsageConditionsView: View {
// In current UI implementation this branch doesn't get shown - as conditions can't be opened from inside operator once accepted
VStack(alignment: .leading, spacing: 20) {
Group {
viewHeader()
ConditionsTextView()
.padding(.bottom)
.padding(.bottom)
}
.padding(.horizontal)
viewHeader()
ConditionsTextView()
}
.padding(.bottom)
.padding(.bottom)
.padding(.horizontal)
.frame(maxHeight: .infinity)
} else if !operatorsWithConditionsAccepted.isEmpty {
NavigationView {
VStack(alignment: .leading, spacing: 20) {
Group {
viewHeader()
Text("Conditions are already accepted for following operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("Same conditions will apply to operator **\(userServers[operatorIndex].operator_.legalName_)**.")
conditionsAppliedToOtherOperatorsText()
usageConditionsNavLinkButton()
viewHeader()
Text("Conditions are already accepted for these operator(s): **\(operatorsWithConditionsAccepted.map { $0.legalName_ }.joined(separator: ", "))**.")
Text("The same conditions will apply to operator **\(userServers[operatorIndex].operator_.legalName_)**.")
conditionsAppliedToOtherOperatorsText()
Spacer()
Spacer()
acceptConditionsButton()
.padding(.bottom)
.padding(.bottom)
}
.padding(.horizontal)
acceptConditionsButton()
usageConditionsNavLinkButton()
}
.padding(.bottom)
.padding(.bottom)
.padding(.horizontal)
.frame(maxHeight: .infinity)
}
} else {
VStack(alignment: .leading, spacing: 20) {
Group {
viewHeader()
Text("To use the servers of **\(userServers[operatorIndex].operator_.legalName_)**, accept conditions of use.")
conditionsAppliedToOtherOperatorsText()
ConditionsTextView()
acceptConditionsButton()
.padding(.bottom)
.padding(.bottom)
}
.padding(.horizontal)
viewHeader()
Text("To use the servers of **\(userServers[operatorIndex].operator_.legalName_)**, accept conditions of use.")
conditionsAppliedToOtherOperatorsText()
ConditionsTextView()
acceptConditionsButton()
.padding(.bottom)
.padding(.bottom)
}
.padding(.horizontal)
.frame(maxHeight: .infinity)
}
@@ -545,31 +540,16 @@ struct SingleOperatorUsageConditionsView: View {
}
private func usageConditionsNavLinkButton() -> some View {
ZStack {
Button {
usageConditionsNavLinkActive = true
} label: {
Text("View conditions")
}
NavigationLink(isActive: $usageConditionsNavLinkActive) {
usageConditionsDestinationView()
} label: {
EmptyView()
}
.frame(width: 1, height: 1)
.hidden()
NavigationLink("View conditions") {
ConditionsTextView()
.padding()
.navigationTitle("Conditions of use")
.navigationBarTitleDisplayMode(.large)
.toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) }
.modifier(ThemedBackground(grouped: true))
}
}
private func usageConditionsDestinationView() -> some View {
ConditionsTextView()
.padding()
.padding(.bottom)
.navigationTitle("Conditions of use")
.navigationBarTitleDisplayMode(.large)
.toolbar { ToolbarItem(placement: .navigationBarTrailing, content: conditionsLinkButton) }
.modifier(ThemedBackground(grouped: true))
.font(.callout)
.frame(maxWidth: .infinity, alignment: .center)
}
}
@@ -197,7 +197,7 @@ struct UserProfilesView: View {
action()
} else {
authenticate(
reason: NSLocalizedString("Change user profiles", comment: "authentication reason")
reason: NSLocalizedString("Change chat profiles", comment: "authentication reason")
) { laResult in
switch laResult {
case .success, .unavailable:
@@ -566,6 +566,10 @@
<target>За SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<note>No comment provided by engineer.</note>
@@ -727,8 +731,8 @@
<target>Всички данни се изтриват при въвеждане.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -1288,6 +1292,10 @@
<target>Промени</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Промяна на паролата на базата данни?</target>
@@ -1334,10 +1342,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1533,8 +1537,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5344,10 +5348,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push известия</target>
@@ -5752,14 +5752,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>По-безопасни групи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Запази</target>
@@ -5774,7 +5766,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Запази и уведоми контакта</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -5808,7 +5800,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Запази настройките?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6388,6 +6380,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Сигурността на SimpleX Chat беше одитирана от Trail of Bits.</target>
@@ -6850,6 +6846,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Профилът се споделя само с вашите контакти.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -8122,6 +8126,10 @@ Repeat connection request?</source>
<target>обаждането прието</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>админ</target>
@@ -8308,7 +8316,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>свързване…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8792,6 +8800,10 @@ Repeat connection request?</source>
<target>ви острани</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>запазено</target>
@@ -548,6 +548,10 @@
<target>O SimpleX chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<note>No comment provided by engineer.</note>
@@ -708,8 +712,8 @@
<target>Všechna data se při zadání vymažou.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -1247,6 +1251,10 @@
<target>Změnit</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Změnit přístupovou frázi databáze?</target>
@@ -1293,10 +1301,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1488,8 +1492,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5166,10 +5170,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Nabízená oznámení</target>
@@ -5562,14 +5562,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Uložit</target>
@@ -5584,7 +5576,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Uložit a upozornit kontakt</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -5618,7 +5610,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Uložit předvolby?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6186,6 +6178,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>SimpleX Adresa</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Zabezpečení SimpleX chatu bylo auditováno společností Trail of Bits.</target>
@@ -6638,6 +6634,14 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
<target>Profil je sdílen pouze s vašimi kontakty.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -7853,6 +7857,10 @@ Repeat connection request?</source>
<target>přijatý hovor</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>správce</target>
@@ -8032,7 +8040,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>připojení…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8507,6 +8515,10 @@ Repeat connection request?</source>
<target>odstranil vás</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<note>No comment provided by engineer.</note>
@@ -577,6 +577,11 @@
<target>Über SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Über Betreiber</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Akzent</target>
@@ -637,6 +642,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Freunde aufnehmen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +662,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Team-Mitglieder aufnehmen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +677,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -752,8 +760,8 @@
<target>Alle Daten werden gelöscht, sobald dieser eingegeben wird.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Alle Daten werden nur auf Ihrem Gerät gespeichert.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1244,10 +1252,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Geschäftliche Adresse</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Geschäftliche Chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1341,6 +1351,11 @@
<target>Ändern</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Chat-Profile wechseln</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Datenbank-Passwort ändern?</target>
@@ -1387,21 +1402,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Chat-Profile wechseln</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>Chat besteht bereits</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>Chat besteht bereits!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1494,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1602,8 +1617,8 @@
<target>Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -2243,6 +2258,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Chat löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2273,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Chat löschen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,6 +2543,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -4101,6 +4119,7 @@ Weitere Verbesserungen sind bald verfügbar!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Zum Chat einladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4263,10 +4282,12 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Chat verlassen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Chat verlassen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4422,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>Die Rolle des Mitglieds wird auf "%@" geändert. Alle Chat-Mitglieder werden darüber informiert.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4437,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -5032,6 +5055,7 @@ Dies erfordert die Aktivierung eines VPNs.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Nur Chat-Eigentümer können die Präferenzen ändern.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5166,6 +5190,7 @@ Dies erfordert die Aktivierung eines VPNs.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Oder importieren Sie eine Archiv-Datei</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5456,7 @@ Fehler: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Schutz der Privatsphäre Ihrer Kunden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5590,11 +5616,6 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Der Proxy benötigt ein Passwort</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push-Benachrichtigungen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-Benachrichtigungen</target>
@@ -6021,16 +6042,6 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Sicherere Gruppen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Speichern</target>
@@ -6045,7 +6056,7 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Speichern und Kontakt benachrichtigen</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6080,7 +6091,7 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Präferenzen speichern?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6703,6 +6714,11 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>SimpleX-Adresse</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen.</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">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Die Sicherheit von SimpleX Chat wurde von Trail of Bits überprüft.</target>
@@ -7017,6 +7033,7 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7208,16 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
<target>Das Profil wird nur mit Ihren Kontakten geteilt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Der zweite voreingestellte Netzwerk-Betreiber in der App!</target>
@@ -7208,12 +7235,12 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
</trans-unit>
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new connections of your current chat profile **%@**.</source>
<target>Mögliche Server für neue Verbindungen von Ihrem aktuellen Chat-Profil **%@**.</target>
<target>Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new files of your current chat profile **%@**.</source>
<target>Die Server Deines aktuellen Chat-Profils für neue Dateien **%@**.</target>
<target>Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil **%@**.</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">
@@ -8057,6 +8084,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Sie sind bereits mit %@ verbunden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8335,6 +8363,7 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8522,6 +8551,11 @@ Verbindungsanfrage wiederholen?</target>
<target>Anruf angenommen</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>Einladung akzeptiert</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>Admin</target>
@@ -8710,7 +8744,7 @@ Verbindungsanfrage wiederholen?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>Verbinde…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9204,6 +9238,11 @@ Verbindungsanfrage wiederholen?</target>
<target>hat Sie aus der Gruppe entfernt</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>Zur Verbindung aufgefordert</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>abgespeichert</target>
@@ -577,6 +577,11 @@
<target>About SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>About operators</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Accent</target>
@@ -755,9 +760,9 @@
<target>All data is erased when it is entered.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>All data is private to your device.</target>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<target>All data is kept private on your device.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -1346,6 +1351,11 @@
<target>Change</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Change chat profiles</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Change database passphrase?</target>
@@ -1392,11 +1402,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Change user profiles</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
@@ -1612,9 +1617,9 @@
<target>Conditions are accepted for the operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<target>Conditions are already accepted for following operator(s): **%@**.</target>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Conditions are already accepted for these operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5611,11 +5616,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Proxy requires password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push Notifications</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push notifications</target>
@@ -6042,16 +6042,6 @@ Enable in *Network &amp; servers* settings.</target>
<target>Safer groups</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Same conditions will apply to operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Same conditions will apply to operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Save</target>
@@ -6066,7 +6056,7 @@ Enable in *Network &amp; servers* settings.</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Save and notify contact</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6101,7 +6091,7 @@ Enable in *Network &amp; servers* settings.</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Save preferences?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6724,6 +6714,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>SimpleX Address</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the 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">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>SimpleX Chat security was audited by Trail of Bits.</target>
@@ -7213,6 +7208,16 @@ It can happen because of some bug or when the connection is compromised.</target
<target>The profile is only shared with your contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>The same conditions will apply to operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>The same conditions will apply to operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>The second preset operator in the app!</target>
@@ -8546,6 +8551,11 @@ Repeat connection request?</target>
<target>accepted call</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>accepted invitation</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>admin</target>
@@ -8734,7 +8744,7 @@ Repeat connection request?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>connecting…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9228,6 +9238,11 @@ Repeat connection request?</target>
<target>removed you</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>requested to connect</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>saved</target>
@@ -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">
<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">
<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>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>
<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>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Abort" xml:space="preserve">
@@ -577,6 +577,11 @@
<target>Sobre SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Acerca de los operadores</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Color</target>
@@ -637,6 +642,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Añadir amigos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +662,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Añadir miembros del equipo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +677,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Añade a los miembros de tu equipo a las conversaciones.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -752,8 +760,8 @@
<target>Al introducirlo todos los datos son eliminados.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Todos los datos son privados y están en tu dispositivo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -982,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">
<trans-unit id="App session" xml:space="preserve" approved="no">
<source>App session</source>
<target>Sesión de aplicación</target>
<target state="translated">por sesión</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App version" xml:space="preserve">
@@ -1244,10 +1252,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Dirección empresarial</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Chats empresariales</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1341,6 +1351,11 @@
<target>Cambiar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Cambiar perfil de usuario</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>¿Cambiar contraseña de la base de datos?</target>
@@ -1387,21 +1402,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Cambiar perfil de usuario</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>El chat ya existe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>¡El chat ya existe!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1494,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>El chat será eliminado para todos los miembros. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>El chat será eliminado para tí. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1602,8 +1617,8 @@
<target>Las condiciones se han aceptado para el(los) operador(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -2243,6 +2258,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Eliminar chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2273,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>¿Eliminar chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2291,7 +2308,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete files and media?" xml:space="preserve">
<source>Delete files and media?</source>
<target>Eliminar archivos y multimedia?</target>
<target>¿Eliminar archivos y multimedia?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete files for all chat profiles" xml:space="preserve">
@@ -2526,6 +2543,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>Mensajes directos no permitidos entre miembros de este chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -2736,7 +2754,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Enable Flux" xml:space="preserve">
<source>Enable Flux</source>
<target>Habilitar Flux</target>
<target>Habilita Flux</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable SimpleX Lock" xml:space="preserve">
@@ -2819,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">
<trans-unit id="Encrypt local files" xml:space="preserve" approved="no">
<source>Encrypt local files</source>
<target>Cifra archivos locales</target>
<target state="translated">Cifrar archivos locales</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Encrypt stored files &amp; media" xml:space="preserve">
@@ -3511,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">
<trans-unit id="For private routing" xml:space="preserve" approved="no">
<source>For private routing</source>
<target>Para el enrutamiento privado</target>
<target state="translated">Para enrutamiento privado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For social media" xml:space="preserve">
@@ -4101,6 +4119,7 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Invitar al chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4263,10 +4282,12 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Salir del chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>¿Salir del chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4422,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>El rol del miembro cambiará a "%@" y todos serán notificados.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4437,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>El miembro será eliminado del chat. ¡No podrá deshacerse!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4757,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">
<trans-unit id="New SOCKS credentials will be used for each server." xml:space="preserve" approved="no">
<source>New SOCKS credentials will be used for each server.</source>
<target>Se usarán credenciales SOCKS nuevas por cada servidor.</target>
<target state="translated">Se usarán credenciales SOCKS nuevas para cada servidor.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat" xml:space="preserve">
@@ -4882,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">
<trans-unit id="No media &amp; file servers." xml:space="preserve" approved="no">
<source>No media &amp; file servers.</source>
<target>Ningún servidor de archivos y multimedia.</target>
<target state="translated">Sin servidores para archivos y multimedia.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No message servers." xml:space="preserve">
<trans-unit id="No message servers." xml:space="preserve" approved="no">
<source>No message servers.</source>
<target>Ningún servidor de mensajes.</target>
<target state="translated">Sin servidores para mensajes.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
@@ -4912,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">
<trans-unit id="No push server" xml:space="preserve" approved="no">
<source>No push server</source>
<target>Ningún servidor push</target>
<target state="translated">Sin servidores push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No received or sent files" xml:space="preserve">
@@ -4922,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">
<trans-unit id="No servers for private message routing." xml:space="preserve" approved="no">
<source>No servers for private message routing.</source>
<target>Ningún servidor para enrutamiento privado.</target>
<target state="translated">Sin servidores para enrutamiento privado.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive files." xml:space="preserve">
<trans-unit id="No servers to receive files." xml:space="preserve" approved="no">
<source>No servers to receive files.</source>
<target>Ningún servidor para recibir archivos.</target>
<target state="translated">Sin servidores para recibir archivos.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive messages." xml:space="preserve">
<trans-unit id="No servers to receive messages." xml:space="preserve" approved="no">
<source>No servers to receive messages.</source>
<target>Ningún servidor para recibir mensajes.</target>
<target state="translated">Sin servidores para recibir mensajes.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to send files." xml:space="preserve">
<trans-unit id="No servers to send files." xml:space="preserve" approved="no">
<source>No servers to send files.</source>
<target>Ningún servidor para enviar archivos.</target>
<target state="translated">Sin servidores para enviar archivos.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No user identifiers." xml:space="preserve">
@@ -5032,6 +5055,7 @@ Requiere activación de la VPN.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Sólo los propietarios del chat pueden cambiar las preferencias.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5166,6 +5190,7 @@ Requiere activación de la VPN.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>O importa desde un archivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5406,7 +5431,7 @@ Error: %@</target>
</trans-unit>
<trans-unit id="Preset server address" xml:space="preserve">
<source>Preset server address</source>
<target>Dirección del servidor predefinida</target>
<target>Dirección predefinida del servidor</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preset servers" xml:space="preserve">
@@ -5431,6 +5456,7 @@ Error: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Privacidad para tus clientes.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5590,14 +5616,9 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>El proxy requiere contraseña</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Notificaciones push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Notificaciones automáticas</target>
<target>Notificaciones push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
@@ -5632,7 +5653,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
<target>Conoce más</target>
<target>Saber más</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." xml:space="preserve">
@@ -6021,16 +6042,6 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Grupos más seguros</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Las mismas condiciones se aplicarán al operador **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Las mismas condiciones se aplicarán a el/los operador(es) **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Guardar</target>
@@ -6045,7 +6056,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Guardar y notificar contacto</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6080,7 +6091,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>¿Guardar preferencias?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6600,7 +6611,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
<source>Share SimpleX address on social media.</source>
<target>Compartir dirección SimpleX en redes sociales.</target>
<target>Comparte tu dirección SimpleX en redes sociales.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address" xml:space="preserve">
@@ -6703,6 +6714,11 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
<target>Dirección 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación</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">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>La seguridad de SimpleX Chat ha sido auditada por Trail of Bits.</target>
@@ -6735,12 +6751,12 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="SimpleX address and 1-time links are safe to share via any messenger." xml:space="preserve">
<source>SimpleX address and 1-time links are safe to share via any messenger.</source>
<target>Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.</target>
<target>Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX address or 1-time link?" xml:space="preserve">
<source>SimpleX address or 1-time link?</source>
<target>Dirección SimpleX o enlace de un uso?</target>
<target>¿Dirección SimpleX o enlace de un uso?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX contact address" xml:space="preserve">
@@ -7017,6 +7033,7 @@ Actívalo en ajustes de *Servidores y Redes*.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Pulsa Crear dirección SimpleX en el menú para crearla más tarde.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,9 +7208,19 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida.</target>
<target>El perfil sólo se comparte con tus contactos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Las mismas condiciones se aplicarán al operador **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Las mismas condiciones se aplicarán a el/los operador(es) **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>El segundo operador predefinido!</target>
<target>¡Segundo operador predefinido!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second tick we missed! ✅" xml:space="preserve">
@@ -7206,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">
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve" approved="no">
<source>The servers for new connections of your current chat profile **%@**.</source>
<target>Lista de servidores para las conexiones nuevas de tu perfil actual **%@**.</target>
<target state="translated">Servidores para conexiones nuevas en tu 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">
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve" approved="no">
<source>The servers for new files of your current chat profile **%@**.</source>
<target>Los servidores para archivos nuevos en tu perfil actual **%@**.</target>
<target state="translated">Servidores para archivos nuevos en tu perfil **%@**.</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">
@@ -7398,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">
<trans-unit id="To use the servers of **%@**, accept conditions of use." xml:space="preserve" approved="no">
<source>To use the servers of **%@**, accept conditions of use.</source>
<target>Para usar los servidores de **%@**, acepta las condiciones de uso.</target>
<target state="translated">Para usar los servidores de **%@**, debes aceptar 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">
@@ -7695,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">
<trans-unit id="Use for new connections" xml:space="preserve" approved="no">
<source>Use for new connections</source>
<target>Usar para conexiones nuevas</target>
<target state="translated">Para conexiones nuevas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use from desktop" xml:space="preserve">
@@ -8052,11 +8079,12 @@ Para conectarte pide a tu contacto que cree otro enlace y comprueba la conexión
</trans-unit>
<trans-unit id="You are already connected to %@." xml:space="preserve">
<source>You are already connected to %@.</source>
<target>Ya estás conectado a %@.</target>
<target>Ya estás conectado con %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Ya estás conectado con %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8278,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">
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve" approved="no">
<source>You need to allow your contact to call to be able to call them.</source>
<target>Necesitas permitir que tus contacto llamen para poder llamarles.</target>
<target state="translated">Debes permitir que tus contacto te 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">
@@ -8335,6 +8363,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Dejarás de recibir mensajes de este chat. El historial del chat se conserva.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8522,6 +8551,11 @@ Repeat connection request?</source>
<target>llamada aceptada</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>invitación aceptada</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>administrador</target>
@@ -8710,7 +8744,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>conectando…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8904,7 +8938,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="for better metadata privacy." xml:space="preserve">
<source>for better metadata privacy.</source>
<target>para mayor privacidad de los metadatos.</target>
<target>para mejorar la privacidad de los metadatos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
@@ -9204,6 +9238,11 @@ Repeat connection request?</source>
<target>te ha expulsado</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>solicitado para conectar</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>guardado</target>
@@ -9480,9 +9519,9 @@ last received msg: %2$@</source>
<target>SimpleX</target>
<note>Bundle name</note>
</trans-unit>
<trans-unit id="NSCameraUsageDescription" xml:space="preserve">
<trans-unit id="NSCameraUsageDescription" xml:space="preserve" approved="no">
<source>SimpleX needs camera access to scan QR codes to connect to other users and for video calls.</source>
<target>SimpleX necesita acceso a la cámara para escanear códigos QR para conectarse con otros usuarios y para las videollamadas.</target>
<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>
<note>Privacy - Camera Usage Description</note>
</trans-unit>
<trans-unit id="NSFaceIDUsageDescription" xml:space="preserve">
@@ -9495,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">
<trans-unit id="NSMicrophoneUsageDescription" xml:space="preserve" approved="no">
<source>SimpleX needs microphone access for audio and video calls, and to record voice messages.</source>
<target>SimpleX necesita acceso al micrófono para las llamadas de audio, vídeo y para grabar mensajes de voz.</target>
<target state="translated">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">
@@ -543,6 +543,10 @@
<target>Tietoja SimpleX Chatistä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<note>No comment provided by engineer.</note>
@@ -703,8 +707,8 @@
<target>Kaikki tiedot poistetaan, kun se syötetään.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -1240,6 +1244,10 @@
<target>Muuta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Muutetaanko tietokannan tunnuslause?</target>
@@ -1286,10 +1294,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1481,8 +1485,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5154,10 +5158,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-ilmoitukset</target>
@@ -5550,14 +5550,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Tallenna</target>
@@ -5572,7 +5564,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Tallenna ja ilmoita kontaktille</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -5606,7 +5598,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Tallenna asetukset?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6173,6 +6165,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>SimpleX-osoite</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Trail of Bits on tarkastanut SimpleX Chatin tietoturvan.</target>
@@ -6624,6 +6620,14 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.</t
<target>Profiili jaetaan vain kontaktiesi kanssa.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -7838,6 +7842,10 @@ Repeat connection request?</source>
<target>hyväksytty puhelu</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>ylläpitäjä</target>
@@ -8016,7 +8024,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>yhdistää…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8492,6 +8500,10 @@ Repeat connection request?</source>
<target>poisti sinut</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<note>No comment provided by engineer.</note>
@@ -572,6 +572,10 @@
<target>À propos de SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Principale</target>
@@ -741,8 +745,8 @@
<target>Toutes les données sont effacées lorsqu'il est saisi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Toutes les données restent confinées dans votre appareil.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1329,6 +1333,10 @@
<target>Changer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Changer la phrase secrète de la base de données ?</target>
@@ -1375,10 +1383,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1585,8 +1589,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5530,10 +5534,6 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Le proxy est protégé par un mot de passe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Notifications push</target>
@@ -5958,14 +5958,6 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Groupes plus sûrs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Enregistrer</target>
@@ -5980,7 +5972,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Enregistrer et en informer le contact</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6015,7 +6007,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Enregistrer les préférences?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6631,6 +6623,10 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Adresse 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>La sécurité de SimpleX Chat a été auditée par Trail of Bits.</target>
@@ -7113,6 +7109,14 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
<target>Le profil n'est partagé qu'avec vos contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -8425,6 +8429,10 @@ Répéter la demande de connexion ?</target>
<target>appel accepté</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>admin</target>
@@ -8613,7 +8621,7 @@ Répéter la demande de connexion ?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>connexion…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9106,6 +9114,10 @@ Répéter la demande de connexion ?</target>
<target>vous a retiré</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>enregistré</target>
@@ -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">
<trans-unit id="A few more things" xml:space="preserve" approved="no">
<source>A few more things</source>
<target>Még néhány dolog</target>
<target state="translated">Néhány további dolog</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="A new contact" xml:space="preserve">
@@ -574,7 +574,12 @@
</trans-unit>
<trans-unit id="About SimpleX Chat" xml:space="preserve">
<source>About SimpleX Chat</source>
<target>A SimpleX Chatről</target>
<target>SimpleX Chat névjegye</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Az üzemeltetőkről</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
@@ -637,6 +642,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Barátok hozzáadása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -654,8 +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">
<trans-unit id="Add team members" xml:space="preserve" approved="no">
<source>Add team members</source>
<target state="translated">Kollégák hozzáadása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -668,8 +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">
<trans-unit id="Add your team members to the conversations." xml:space="preserve" approved="no">
<source>Add your team members to the conversations.</source>
<target state="translated">Adja hozzá a kollégáit 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">
@@ -752,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 private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<target>Az összes adat biztonságban van az eszközén.</target>
<trans-unit id="All data is kept private on your device." xml:space="preserve" approved="no">
<source>All data is kept private on your device.</source>
<target state="translated">Az összes adat privát módon van tárolva az Ön eszközén.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -762,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">
<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">
<source>All messages and files are sent **end-to-end encrypted**, with post-quantum security in direct messages.</source>
<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>
<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>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages will be deleted - this cannot be undone!" xml:space="preserve">
@@ -952,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">
<trans-unit id="App build: %@" xml:space="preserve" approved="no">
<source>App build: %@</source>
<target>Az alkalmazás build száma: %@</target>
<target state="translated">Az alkalmazás összeállítási száma: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
@@ -1209,7 +1217,7 @@
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Média elhomályosítása</target>
<target>Médiatartalom elhomályosítása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Both you and your contact can add message reactions." xml:space="preserve">
@@ -1244,10 +1252,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Üzleti cím</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Üzleti csevegések</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1341,6 +1351,11 @@
<target>Változtatás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Csevegési profilok megváltoztatása</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Adatbázis-jelmondat megváltoztatása?</target>
@@ -1387,21 +1402,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Felhasználói profilok megváltoztatása</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Csevegés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>A csevegés már létezik</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>A csevegés már létezik!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1494,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1602,8 +1617,8 @@
<target>A következő üzemeltető(k) számára elfogadott feltételek: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>A feltételek már el lettek fogadva a következő üzemeltető(k) számára: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -2243,6 +2258,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Csevegés törlése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2273,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Csevegés törlése?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,6 +2543,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -2869,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">
<trans-unit id="Encryption re-negotiation error" xml:space="preserve" approved="no">
<source>Encryption re-negotiation error</source>
<target>Titkosítás újraegyeztetési hiba</target>
<target state="translated">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">
@@ -3508,7 +3526,7 @@ Ez az Ön egyszer használható meghívó-hivatkozása!</target>
</trans-unit>
<trans-unit id="For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." xml:space="preserve">
<source>For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</source>
<target>Ha például az ismerőse a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása a Flux egyik kiszolgálóját használja a kézbesítéshez.</target>
<target>Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For private routing" xml:space="preserve">
@@ -4101,6 +4119,7 @@ További fejlesztések hamarosan!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Meghívás a csevegésbe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4263,10 +4282,12 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Csevegés elhagyása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Csevegés elhagyása?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4422,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>A tag szerepeköre meg fog változni a következőre: "%@". A csevegés tagjai értesítést fognak kapni.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4437,7 @@ Ez az Ön hivatkozása a(z) %@ nevű csoporthoz!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>A tag el lesz távolítva a csevegésből - ezt a műveletet nem lehet visszavonni!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4587,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">
<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">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<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>
<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>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
@@ -5032,6 +5055,7 @@ VPN engedélyezése szükséges.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Csak a csevegés tulajdonosai módosíthatják a beállításokat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5166,6 +5190,7 @@ VPN engedélyezése szükséges.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Vagy archívumfájl importálása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5456,7 @@ Hiba: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Az Ön ügyfeleinek adatvédelme.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5545,7 +5571,7 @@ Hiba: %@</target>
</trans-unit>
<trans-unit id="Protect IP address" xml:space="preserve">
<source>Protect IP address</source>
<target>IP-cím védelem</target>
<target>IP-cím védelme</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Protect app screen" xml:space="preserve">
@@ -5590,11 +5616,6 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<target>A proxy jelszót igényel</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push értesítések</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-értesítések</target>
@@ -5605,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">
<trans-unit id="Quantum resistant encryption" xml:space="preserve" approved="no">
<source>Quantum resistant encryption</source>
<target>Kvantumrezisztens titkosítás</target>
<target state="translated">Kvantumálló titkosítás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
@@ -6021,16 +6042,6 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<target>Biztonságosabb csoportok</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Mentés</target>
@@ -6045,7 +6056,7 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Mentés és az ismerős értesítése</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6080,7 +6091,7 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Beállítások mentése?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6119,7 +6130,7 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
</trans-unit>
<trans-unit id="Saved from" xml:space="preserve">
<source>Saved from</source>
<target>Mentve innen:</target>
<target>Elmentve innen:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Saved message" xml:space="preserve">
@@ -6703,6 +6714,11 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
<target>SimpleX-cím</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>A SimpleX Chat biztonsága a Trail of Bits által lett auditálva.</target>
@@ -7017,6 +7033,7 @@ Engedélyezze a „Beállítások -&gt; Hálózat és kiszolgálók” menüben.
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7208,16 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
<target>A profilja csak az ismerőseivel kerül megosztásra.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltetőre is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>A második előre beállított üzemeltető az alkalmazásban!</target>
@@ -7206,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">
<trans-unit id="The servers for new connections of your current chat profile **%@**." xml:space="preserve" approved="no">
<source>The servers for new connections of your current chat profile **%@**.</source>
<target>A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói **%@**.</target>
<target state="translated">Az Ön jelenlegi **%@** nevű csevegő-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">
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve" approved="no">
<source>The servers for new files of your current chat profile **%@**.</source>
<target>Az Ön jelenlegi **%@** nevű csevegőprofiljához tartozó új fájlok kiszolgálói.</target>
<target state="translated">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">
@@ -7236,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">
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve" approved="no">
<source>These settings are for your current profile **%@**.</source>
<target>Ezek a beállítások csak a jelenlegi (**%@**) profiljára vonatkoznak.</target>
<target state="translated">Ezek a beállítások csak az Ön jelenlegi **%@** nevű csevegő-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">
@@ -7266,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">
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve" approved="no">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett.</target>
<target state="translated">Ez a csevegés végpontok közötti kvantumálló tikosítással védett.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
@@ -7306,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">
<trans-unit id="This setting applies to messages in your current chat profile **%@**." xml:space="preserve" approved="no">
<source>This setting applies to messages in your current chat profile **%@**.</source>
<target>Ez a beállítás csak a jelenlegi (**%@**) profiljában lévő üzenetekre vonatkozik.</target>
<target state="translated">Ez a beállítás csak az Ön jelenlegi **%@** nevű csevegő-profiljában lévő üzenetekre vonatkozik.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Title" xml:space="preserve">
@@ -7805,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">
<trans-unit id="Via secure quantum resistant protocol." xml:space="preserve" approved="no">
<source>Via secure quantum resistant protocol.</source>
<target>Biztonságos kvantumrezisztens-protokollon keresztül.</target>
<target state="translated">Biztonságos kvantumálló-protokollon keresztül.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Video call" xml:space="preserve">
@@ -7900,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">
<trans-unit id="Wallpaper accent" xml:space="preserve" approved="no">
<source>Wallpaper accent</source>
<target>Háttérkép kiemelés</target>
<target state="translated">Háttérkép kiemelőszíne</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wallpaper background" xml:space="preserve">
@@ -8050,18 +8077,19 @@ 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">
<trans-unit id="You are already connected to %@." xml:space="preserve" approved="no">
<source>You are already connected to %@.</source>
<target>Ön már kapcsolódva van ehhez: %@.</target>
<target state="translated">Ön már kapcsolódva van a következőhöz: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Ö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">
<trans-unit id="You are already connecting to %@." xml:space="preserve" approved="no">
<source>You are already connecting to %@.</source>
<target>Már folyamatban van a kapcsolódás ehhez: %@.</target>
<target state="translated">Már folyamatban van a kapcsolódás a következőhöz: %@.</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">
@@ -8128,7 +8156,7 @@ Csatlakozáskérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can configure servers via settings." xml:space="preserve">
<source>You can configure servers via settings.</source>
<target>A kiszolgálókat a beállításokon keresztül konfigurálhatja.</target>
<target>A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
@@ -8178,7 +8206,7 @@ Csatlakozáskérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
<source>You can set lock screen notification preview via settings.</source>
<target>A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.</target>
<target>A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." xml:space="preserve">
@@ -8335,6 +8363,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Ön nem fog több üzenetet kapni ebből a csevegésből, de a csevegés előzményei megmaradnak.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8522,6 +8551,11 @@ Kapcsolatkérés megismétlése?</target>
<target>elfogadott hívás</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>elfogadott meghívó</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>adminisztrátor</target>
@@ -8710,7 +8744,7 @@ Kapcsolatkérés megismétlése?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>kapcsolódás…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8747,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">
<trans-unit id="database version is newer than the app, but no down migration for: %@" xml:space="preserve" approved="no">
<source>database version is newer than the app, but no down migration for: %@</source>
<target>az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@</target>
<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>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="days" xml:space="preserve">
@@ -8857,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">
<trans-unit id="encryption re-negotiation allowed" xml:space="preserve" approved="no">
<source>encryption re-negotiation allowed</source>
<target>titkosítás újraegyeztetés engedélyezve</target>
<target state="translated">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">
<trans-unit id="encryption re-negotiation allowed for %@" xml:space="preserve" approved="no">
<source>encryption re-negotiation allowed for %@</source>
<target>titkosítás újraegyeztetés engedélyezve vele: %@</target>
<target state="translated">a titkosítás újraegyeztetése engedélyezve van a következőhöz: %@</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="encryption re-negotiation required" xml:space="preserve">
<trans-unit id="encryption re-negotiation required" xml:space="preserve" approved="no">
<source>encryption re-negotiation required</source>
<target>titkosítás újraegyeztetés szükséges</target>
<target state="translated">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">
<trans-unit id="encryption re-negotiation required for %@" xml:space="preserve" approved="no">
<source>encryption re-negotiation required for %@</source>
<target>titkosítás újraegyeztetés szükséges %@ számára</target>
<target state="translated">a titkosítás újraegyeztetése szükséges a következőhöz: %@</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="ended" xml:space="preserve">
@@ -9159,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">
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve" approved="no">
<source>quantum resistant e2e encryption</source>
<target>végpontok közötti kvantumrezisztens titkosítás</target>
<target state="translated">végpontok közötti kvantumálló titkosítás</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
@@ -9204,6 +9238,11 @@ Kapcsolatkérés megismétlése?</target>
<target>eltávolította Önt</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>kérelmezve a kapcsolódáshoz</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>mentett</target>
@@ -9211,7 +9250,7 @@ Kapcsolatkérés megismétlése?</target>
</trans-unit>
<trans-unit id="saved from %@" xml:space="preserve">
<source>saved from %@</source>
<target>mentve innen: %@</target>
<target>elmentve innen: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
@@ -577,6 +577,11 @@
<target>Riguardo SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve" approved="no">
<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">
<source>Accent</source>
<target>Principale</target>
@@ -637,6 +642,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Aggiungi amici</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +662,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Aggiungi membri del team</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +677,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Aggiungi i membri del tuo team alle conversazioni.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -752,8 +760,8 @@
<target>Tutti i dati vengono cancellati quando inserito.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Tutti i dati sono privati, nel tuo dispositivo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1084,12 +1092,12 @@
</trans-unit>
<trans-unit id="Auto-accept contact requests" xml:space="preserve">
<source>Auto-accept contact requests</source>
<target>Auto-accetta richieste di contatto</target>
<target>Auto-accetta le richieste di contatto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept images" xml:space="preserve">
<source>Auto-accept images</source>
<target>Auto-accetta immagini</target>
<target>Auto-accetta le immagini</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept settings" xml:space="preserve">
@@ -1209,7 +1217,7 @@
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Sfocatura file multimediali</target>
<target>Sfocatura dei file multimediali</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Both you and your contact can add message reactions." xml:space="preserve">
@@ -1244,10 +1252,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Indirizzo di lavoro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Chat di lavoro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1341,6 +1351,11 @@
<target>Cambia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Modifica profili utente</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Cambiare password del database?</target>
@@ -1387,21 +1402,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Modifica profili utente</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>La chat esiste già</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>La chat esiste già!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1494,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>La chat verrà eliminata per tutti i membri, non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>La chat verrà eliminata solo per te, non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1602,8 +1617,8 @@
<target>Le condizioni sono state accettate per gli operatori: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Le condizioni sono già state accettate per i seguenti operatori: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -2243,6 +2258,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Elimina chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2273,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Eliminare la chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,6 +2543,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>I messaggi diretti tra i membri sono vietati in questa chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -4101,6 +4119,7 @@ Altri miglioramenti sono in arrivo!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Invita in chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4263,10 +4282,12 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Esci dalla chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Uscire dalla chat?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4422,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>Il ruolo del membro verrà cambiato in "%@". Verranno notificati tutti i membri della chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4437,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Il membro verrà rimosso dalla chat, non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4479,7 +4502,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Message draft" xml:space="preserve">
<source>Message draft</source>
<target>Bozza dei messaggi</target>
<target>Bozza del messaggio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message forwarded" xml:space="preserve">
@@ -5032,6 +5055,7 @@ Richiede l'attivazione della VPN.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Solo i proprietari della chat possono modificarne le preferenze.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5166,6 +5190,7 @@ Richiede l'attivazione della VPN.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>O importa file archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5456,7 @@ Errore: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Privacy per i tuoi clienti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5590,11 +5616,6 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Il proxy richiede una password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Notifiche push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Notifiche push</target>
@@ -5968,12 +5989,12 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Review conditions" xml:space="preserve">
<source>Review conditions</source>
<target>Esamina le condizioni</target>
<target>Leggi le condizioni</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Review later" xml:space="preserve">
<source>Review later</source>
<target>Esamina più tardi</target>
<target>Leggi più tardi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
@@ -6021,16 +6042,6 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Gruppi più sicuri</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Le stesse condizioni si applicheranno all'operatore **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Le stesse condizioni si applicheranno agli operatori **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Salva</target>
@@ -6045,7 +6056,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Salva e avvisa il contatto</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6080,7 +6091,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Salvare le preferenze?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6279,7 +6290,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Send link previews" xml:space="preserve">
<source>Send link previews</source>
<target>Invia anteprime dei link</target>
<target>Invia le anteprime dei link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send live message" xml:space="preserve">
@@ -6600,7 +6611,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
<source>Share SimpleX address on social media.</source>
<target>Condividi indirizzo SimpleX sui social media.</target>
<target>Condividi l'indirizzo SimpleX sui social media.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address" xml:space="preserve">
@@ -6703,6 +6714,11 @@ 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target state="translated">SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell'app.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>La sicurezza di SimpleX Chat è stata verificata da Trail of Bits.</target>
@@ -7017,6 +7033,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7208,16 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.</ta
<target>Il profilo è condiviso solo con i tuoi contatti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Le stesse condizioni si applicheranno all'operatore **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Le stesse condizioni si applicheranno agli operatori **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Il secondo operatore preimpostato nell'app!</target>
@@ -8057,6 +8084,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Sei già connesso/a con %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8335,6 +8363,7 @@ Ripetere la richiesta di connessione?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8522,6 +8551,11 @@ 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">
<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">
<source>admin</source>
<target>amministratore</target>
@@ -8710,7 +8744,7 @@ Ripetere la richiesta di connessione?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>in connessione…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9204,6 +9238,11 @@ 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">
<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">
<source>saved</source>
<target>salvato</target>
@@ -560,6 +560,10 @@
<target>SimpleX Chat について</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<note>No comment provided by engineer.</note>
@@ -720,8 +724,8 @@
<target>入力するとすべてのデータが消去されます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -1264,6 +1268,10 @@
<target>変更</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>データベースのパスフレーズを更新しますか?</target>
@@ -1310,10 +1318,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1511,8 +1515,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -2474,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">
<trans-unit id="Don't create address" xml:space="preserve" approved="no">
<source>Don't create address</source>
<target>アドレスを作成しないでください</target>
<target state="translated">アドレスを作成しない</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Don't enable" xml:space="preserve">
@@ -3756,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">
<trans-unit id="Instant" xml:space="preserve" approved="no">
<source>Instant</source>
<target>すぐに</target>
<target state="translated">即時</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Instant push notifications will be hidden!&#10;" xml:space="preserve">
@@ -4294,8 +4298,9 @@ 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">
<trans-unit id="Migrate from another device" xml:space="preserve" approved="no">
<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">
@@ -5079,8 +5084,9 @@ Error: %@</source>
<source>Private message routing 🚀</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Private notes" xml:space="preserve">
<trans-unit id="Private notes" xml:space="preserve" approved="no">
<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">
@@ -5204,10 +5210,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>プッシュ通知</target>
@@ -5599,14 +5601,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>保存</target>
@@ -5621,7 +5615,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>保存して、連絡先にに知らせる</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -5655,7 +5649,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>この設定でよろしいですか?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6215,6 +6209,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>SimpleX Chat のセキュリティは Trail of Bits によって監査されました。</target>
@@ -6667,6 +6665,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>プロフィールは連絡先にしか共有されません。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -7533,8 +7539,9 @@ 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">
<trans-unit id="You can make it visible to your SimpleX contacts via Settings." xml:space="preserve" approved="no">
<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">
@@ -7880,6 +7887,10 @@ Repeat connection request?</source>
<target>受けた通話</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>管理者</target>
@@ -8058,7 +8069,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>接続待ち…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8534,6 +8545,10 @@ Repeat connection request?</source>
<target>あなたを除名しました</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<note>No comment provided by engineer.</note>
@@ -577,6 +577,11 @@
<target>Over SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Over operatoren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Accent</target>
@@ -637,6 +642,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Vrienden toevoegen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -656,6 +662,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Teamleden toevoegen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -670,6 +677,7 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Voeg uw teamleden toe aan de gesprekken.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
@@ -752,8 +760,8 @@
<target>Alle gegevens worden bij het invoeren gewist.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Alle gegevens zijn privé op uw apparaat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -829,7 +837,7 @@
</trans-unit>
<trans-unit id="Allow irreversible message deletion only if your contact allows it to you. (24 hours)" xml:space="preserve">
<source>Allow irreversible message deletion only if your contact allows it to you. (24 hours)</source>
<target>Sta het onomkeerbaar verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)</target>
<target>Sta het definitief verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow message reactions only if your contact allows them." xml:space="preserve">
@@ -859,7 +867,7 @@
</trans-unit>
<trans-unit id="Allow to irreversibly delete sent messages. (24 hours)" xml:space="preserve">
<source>Allow to irreversibly delete sent messages. (24 hours)</source>
<target>Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur)</target>
<target>Sta toe om verzonden berichten definitief te verwijderen. (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to send SimpleX links." xml:space="preserve">
@@ -899,7 +907,7 @@
</trans-unit>
<trans-unit id="Allow your contacts to irreversibly delete sent messages. (24 hours)" xml:space="preserve">
<source>Allow your contacts to irreversibly delete sent messages. (24 hours)</source>
<target>Laat uw contacten verzonden berichten onomkeerbaar verwijderen. (24 uur)</target>
<target>Laat uw contacten verzonden berichten definitief verwijderen. (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to send disappearing messages." xml:space="preserve">
@@ -1054,7 +1062,7 @@
</trans-unit>
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
<source>Audio/video calls are prohibited.</source>
<target>Audio/video gesprekken zijn verboden.</target>
<target>Audio/video gesprekken zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Authentication cancelled" xml:space="preserve">
@@ -1244,10 +1252,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Zakelijk adres</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Zakelijke chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1267,7 +1277,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Bellen verboden!</target>
<target>Bellen niet toegestaan!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1341,6 +1351,11 @@
<target>Veranderen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Gebruikersprofielen wijzigen</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Wachtwoord database wijzigen?</target>
@@ -1387,21 +1402,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Gebruikersprofielen wijzigen</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>Chat bestaat al</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>Chat bestaat al!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1481,10 +1494,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>De chat wordt voor alle leden verwijderd - dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>De chat wordt voor je verwijderd - dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1602,8 +1617,8 @@
<target>Voorwaarden worden geaccepteerd voor de operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Voorwaarden zijn reeds geaccepteerd voor de volgende operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -2243,6 +2258,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Chat verwijderen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2257,6 +2273,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Chat verwijderen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2526,11 +2543,12 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>Directe berichten tussen leden zijn in deze chat niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
<source>Direct messages between members are prohibited.</source>
<target>Directe berichten tussen leden zijn verboden in deze groep.</target>
<target>Directe berichten tussen leden zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Disable (keep overrides)" xml:space="preserve">
@@ -2565,12 +2583,12 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Disappearing messages are prohibited in this chat." xml:space="preserve">
<source>Disappearing messages are prohibited in this chat.</source>
<target>Verdwijnende berichten zijn verboden in dit gesprek.</target>
<target>Verdwijnende berichten zijn niet toegestaan in dit gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Disappearing messages are prohibited." xml:space="preserve">
<source>Disappearing messages are prohibited.</source>
<target>Verdwijnende berichten zijn verboden in deze groep.</target>
<target>Verdwijnende berichten zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Disappears at" xml:space="preserve">
@@ -3428,7 +3446,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Files and media are prohibited." xml:space="preserve">
<source>Files and media are prohibited.</source>
<target>Bestanden en media zijn verboden in deze groep.</target>
<target>Bestanden en media zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Files and media not allowed" xml:space="preserve">
@@ -3438,7 +3456,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Files and media prohibited!" xml:space="preserve">
<source>Files and media prohibited!</source>
<target>Bestanden en media verboden!</target>
<target>Bestanden en media niet toegestaan!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Filter unread and favorite chats." xml:space="preserve">
@@ -3842,7 +3860,7 @@ Fout: %2$@</target>
</trans-unit>
<trans-unit id="If you enter this passcode when opening the app, all app data will be irreversibly removed!" xml:space="preserve">
<source>If you enter this passcode when opening the app, all app data will be irreversibly removed!</source>
<target>Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens onomkeerbaar verwijderd!</target>
<target>Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens definitief verwijderd!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you enter your self-destruct passcode while opening the app:" xml:space="preserve">
@@ -4101,6 +4119,7 @@ Binnenkort meer verbeteringen!</target>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Uitnodigen voor een chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4115,12 +4134,12 @@ Binnenkort meer verbeteringen!</target>
</trans-unit>
<trans-unit id="Irreversible message deletion is prohibited in this chat." xml:space="preserve">
<source>Irreversible message deletion is prohibited in this chat.</source>
<target>Het onomkeerbaar verwijderen van berichten is verboden in dit gesprek.</target>
<target>Het definitief verwijderen van berichten is niet toegestaan in dit gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Irreversible message deletion is prohibited." xml:space="preserve">
<source>Irreversible message deletion is prohibited.</source>
<target>Het onomkeerbaar verwijderen van berichten is verboden in deze groep.</target>
<target>Het definitief verwijderen van berichten is verbHet definitief verwijderen van berichten is niet toegestaan..</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It allows having many anonymous connections without any shared data between them in a single chat profile." xml:space="preserve">
@@ -4263,10 +4282,12 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Chat verlaten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Chat verlaten?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4401,6 +4422,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>De rol van het lid wordt gewijzigd naar "%@". Alle chatleden worden op de hoogte gebracht.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4415,6 +4437,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Lid wordt verwijderd uit de chat - dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4504,12 +4527,12 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Message reactions are prohibited in this chat." xml:space="preserve">
<source>Message reactions are prohibited in this chat.</source>
<target>Reacties op berichten zijn verboden in deze chat.</target>
<target>Reacties op berichten zijn niet toegestaan in deze chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message reactions are prohibited." xml:space="preserve">
<source>Message reactions are prohibited.</source>
<target>Reacties op berichten zijn verboden in deze groep.</target>
<target>Reacties op berichten zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message reception" xml:space="preserve">
@@ -5032,6 +5055,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Alleen chateigenaren kunnen voorkeuren wijzigen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5066,7 +5090,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" xml:space="preserve">
<source>Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)</source>
<target>Alleen jij kunt berichten onomkeerbaar verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)</target>
<target>Alleen jij kunt berichten definitief verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only you can make calls." xml:space="preserve">
@@ -5166,6 +5190,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Of importeer archiefbestand</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5431,6 +5456,7 @@ Fout: %@</target>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Privacy voor uw klanten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5505,7 +5531,7 @@ Fout: %@</target>
</trans-unit>
<trans-unit id="Prohibit irreversible message deletion." xml:space="preserve">
<source>Prohibit irreversible message deletion.</source>
<target>Verbied het onomkeerbaar verwijderen van berichten.</target>
<target>Verbied het definitief verwijderen van berichten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Prohibit message reactions." xml:space="preserve">
@@ -5590,11 +5616,6 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Proxy vereist wachtwoord</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Pushmeldingen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push meldingen</target>
@@ -6021,16 +6042,6 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Veiligere groepen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Opslaan</target>
@@ -6045,7 +6056,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Opslaan en Contact melden</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6080,7 +6091,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Voorkeuren opslaan?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6703,6 +6714,11 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>SimpleX adres</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>Simplex-chat en flux hebben een overeenkomst gemaakt om door flux geëxploiteerde servers in de app op te nemen.</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">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>De beveiliging van SimpleX Chat is gecontroleerd door Trail of Bits.</target>
@@ -6765,7 +6781,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
</trans-unit>
<trans-unit id="SimpleX links are prohibited." xml:space="preserve">
<source>SimpleX links are prohibited.</source>
<target>SimpleX-links zijn in deze groep verboden.</target>
<target>SimpleX-links zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX links not allowed" xml:space="preserve">
@@ -7017,6 +7033,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Tik op SimpleX-adres maken in het menu om het later te maken.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7191,6 +7208,16 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.</target>
<target>Het profiel wordt alleen gedeeld met uw contacten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Dezelfde voorwaarden gelden voor operator(s): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>De tweede vooraf ingestelde operator in de app!</target>
@@ -7258,7 +7285,7 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.</target>
</trans-unit>
<trans-unit id="This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." xml:space="preserve">
<source>This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.</source>
<target>Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</target>
<target>Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan definitief verloren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
@@ -7857,12 +7884,12 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="Voice messages are prohibited in this chat." xml:space="preserve">
<source>Voice messages are prohibited in this chat.</source>
<target>Spraak berichten zijn verboden in deze chat.</target>
<target>Spraak berichten zijn niet toegestaan in dit gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Voice messages are prohibited." xml:space="preserve">
<source>Voice messages are prohibited.</source>
<target>Spraak berichten zijn verboden in deze groep.</target>
<target>Spraak berichten zijn niet toegestaan.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Voice messages not allowed" xml:space="preserve">
@@ -7872,7 +7899,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="Voice messages prohibited!" xml:space="preserve">
<source>Voice messages prohibited!</source>
<target>Spraak berichten verboden!</target>
<target>Spraak berichten niet toegestaan!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Voice message…" xml:space="preserve">
@@ -8057,6 +8084,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>U bent al verbonden met %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8335,6 +8363,7 @@ Verbindingsverzoek herhalen?</target>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>U ontvangt geen berichten meer van deze chat. De chatgeschiedenis blijft bewaard.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8522,6 +8551,11 @@ Verbindingsverzoek herhalen?</target>
<target>geaccepteerde oproep</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>geaccepteerde uitnodiging</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>Beheerder</target>
@@ -8710,7 +8744,7 @@ Verbindingsverzoek herhalen?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>Verbinden…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9204,6 +9238,11 @@ Verbindingsverzoek herhalen?</target>
<target>heeft je verwijderd</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>gevraagd om verbinding te maken</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>opgeslagen</target>
@@ -572,6 +572,10 @@
<target>O SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Akcent</target>
@@ -741,8 +745,8 @@
<target>Wszystkie dane są usuwane po jego wprowadzeniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Wszystkie dane są prywatne na Twoim urządzeniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1324,6 +1328,10 @@
<target>Zmień</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Zmienić hasło bazy danych?</target>
@@ -1370,10 +1378,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1580,8 +1584,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5520,10 +5524,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Proxy wymaga hasła</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Powiadomienia push</target>
@@ -5948,14 +5948,6 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Bezpieczniejsze grupy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Zapisz</target>
@@ -5970,7 +5962,7 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Zapisz i powiadom kontakt</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6005,7 +5997,7 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Zapisać preferencje?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6621,6 +6613,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Adres 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Bezpieczeństwo SimpleX Chat zostało zaudytowane przez Trail of Bits.</target>
@@ -7100,6 +7096,14 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
<target>Profil jest udostępniany tylko Twoim kontaktom.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -8412,6 +8416,10 @@ Powtórzyć prośbę połączenia?</target>
<target>zaakceptowane połączenie</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>administrator</target>
@@ -8600,7 +8608,7 @@ Powtórzyć prośbę połączenia?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>łączenie…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9093,6 +9101,10 @@ Powtórzyć prośbę połączenia?</target>
<target>usunął cię</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>zapisane</target>
@@ -5425,8 +5425,8 @@ Isso pode acontecer por causa de algum bug ou quando a conexão está comprometi
<source>Advanced settings</source>
<target state="translated">Configurações avançadas</target>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve" approved="no">
<source>All data is private to your device.</source>
<trans-unit id="All data is kept private on your device." xml:space="preserve" approved="no">
<source>All data is kept private on your device.</source>
<target state="translated">Toda informação é privada em seu dispositivo.</target>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve" approved="no">
@@ -114,10 +114,12 @@
</trans-unit>
<trans-unit id="%@ server" xml:space="preserve">
<source>%@ server</source>
<target>%@ сервер</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ servers" xml:space="preserve">
<source>%@ servers</source>
<target>%@ серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
@@ -382,6 +384,7 @@
</trans-unit>
<trans-unit id="**Scan / Paste link**: to connect via a link you received." xml:space="preserve">
<source>**Scan / Paste link**: to connect via a link you received.</source>
<target>**Сканировать / Вставить ссылку**: чтобы соединиться через полученную ссылку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: Instant push notifications require passphrase saved in Keychain." xml:space="preserve">
@@ -492,10 +495,12 @@
</trans-unit>
<trans-unit id="1-time link" xml:space="preserve">
<source>1-time link</source>
<target>Одноразовая ссылка</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="1-time link can be used *with one contact only* - share in person or via any messenger." xml:space="preserve">
<source>1-time link can be used *with one contact only* - share in person or via any messenger.</source>
<target>Одноразовая ссылка может быть использована *только с одним контактом* - поделитесь при встрече или через любой мессенджер.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="5 minutes" xml:space="preserve">
@@ -572,6 +577,11 @@
<target>Информация о SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<target>Об операторах</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Акцент</target>
@@ -586,6 +596,7 @@
</trans-unit>
<trans-unit id="Accept conditions" xml:space="preserve">
<source>Accept conditions</source>
<target>Принять условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
@@ -606,6 +617,7 @@
</trans-unit>
<trans-unit id="Accepted conditions" xml:space="preserve">
<source>Accepted conditions</source>
<target>Принятые условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
@@ -630,6 +642,7 @@
</trans-unit>
<trans-unit id="Add friends" xml:space="preserve">
<source>Add friends</source>
<target>Добавить друзей</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add profile" xml:space="preserve">
@@ -649,6 +662,7 @@
</trans-unit>
<trans-unit id="Add team members" xml:space="preserve">
<source>Add team members</source>
<target>Добавить сотрудников</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Add to another device" xml:space="preserve">
@@ -663,14 +677,17 @@
</trans-unit>
<trans-unit id="Add your team members to the conversations." xml:space="preserve">
<source>Add your team members to the conversations.</source>
<target>Добавьте сотрудников в разговор.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added media &amp; file servers" xml:space="preserve">
<source>Added media &amp; file servers</source>
<target>Дополнительные серверы файлов и медиа</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Added message servers" xml:space="preserve">
<source>Added message servers</source>
<target>Дополнительные серверы сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Additional accent" xml:space="preserve">
@@ -700,10 +717,12 @@
</trans-unit>
<trans-unit id="Address or 1-time link?" xml:space="preserve">
<source>Address or 1-time link?</source>
<target>Адрес или одноразовая ссылка?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Address settings" xml:space="preserve">
<source>Address settings</source>
<target>Настройки адреса</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
@@ -741,8 +760,8 @@
<target>Все данные удаляются при его вводе.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Все данные хранятся только на вашем устройстве.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1233,10 +1252,12 @@
</trans-unit>
<trans-unit id="Business address" xml:space="preserve">
<source>Business address</source>
<target>Бизнес адрес</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Business chats" xml:space="preserve">
<source>Business chats</source>
<target>Бизнес разговоры</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." xml:space="preserve">
@@ -1330,6 +1351,11 @@
<target>Поменять</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Поменять профили</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Поменять пароль базы данных?</target>
@@ -1376,20 +1402,19 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<target>Разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists" xml:space="preserve">
<source>Chat already exists</source>
<target>Разговор уже существует</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat already exists!" xml:space="preserve">
<source>Chat already exists!</source>
<target>Разговор уже существует!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat colors" xml:space="preserve">
@@ -1469,10 +1494,12 @@
</trans-unit>
<trans-unit id="Chat will be deleted for all members - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for all members - this cannot be undone!</source>
<target>Разговор будет удален для всех участников - это действие нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat will be deleted for you - this cannot be undone!" xml:space="preserve">
<source>Chat will be deleted for you - this cannot be undone!</source>
<target>Разговор будет удален для Вас - это действие нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chats" xml:space="preserve">
@@ -1482,10 +1509,12 @@
</trans-unit>
<trans-unit id="Check messages every 20 min." xml:space="preserve">
<source>Check messages every 20 min.</source>
<target>Проверять сообщения каждые 20 минут.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Check messages when allowed." xml:space="preserve">
<source>Check messages when allowed.</source>
<target>Проверять сообщения по возможности.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Check server address and try again." xml:space="preserve">
@@ -1580,38 +1609,47 @@
</trans-unit>
<trans-unit id="Conditions accepted on: %@." xml:space="preserve">
<source>Conditions accepted on: %@.</source>
<target>Условия приняты: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are accepted for the operator(s): **%@**." xml:space="preserve">
<source>Conditions are accepted for the operator(s): **%@**.</source>
<target>Условия приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Условия уже приняты для следующих оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
<source>Conditions of use</source>
<target>Условия использования</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted for enabled operators after 30 days." xml:space="preserve">
<source>Conditions will be accepted for enabled operators after 30 days.</source>
<target>Условия будут приняты для включенных операторов через 30 дней.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted for operator(s): **%@**." xml:space="preserve">
<source>Conditions will be accepted for operator(s): **%@**.</source>
<target>Условия будут приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted for the operator(s): **%@**." xml:space="preserve">
<source>Conditions will be accepted for the operator(s): **%@**.</source>
<target>Условия будут приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be accepted on: %@." xml:space="preserve">
<source>Conditions will be accepted on: %@.</source>
<target>Условия будут приняты: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions will be automatically accepted for enabled operators on: %@." xml:space="preserve">
<source>Conditions will be automatically accepted for enabled operators on: %@.</source>
<target>Условия будут автоматически приняты для включенных операторов: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Configure ICE servers" xml:space="preserve">
@@ -1810,6 +1848,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Connection security" xml:space="preserve">
<source>Connection security</source>
<target>Безопасность соединения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection terminated" xml:space="preserve">
@@ -1929,6 +1968,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Create 1-time link" xml:space="preserve">
<source>Create 1-time link</source>
<target>Создать одноразовую ссылку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Create SimpleX address" xml:space="preserve">
@@ -2018,6 +2058,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Current conditions text couldn't be loaded, you can review conditions via this link:" xml:space="preserve">
<source>Current conditions text couldn't be loaded, you can review conditions via this link:</source>
<target>Текст условий использования не может быть показан, вы можете посмотреть их через ссылку:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Current passphrase…" xml:space="preserve">
@@ -2217,6 +2258,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat" xml:space="preserve">
<source>Delete chat</source>
<target>Удалить разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete chat profile" xml:space="preserve">
@@ -2231,6 +2273,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delete chat?" xml:space="preserve">
<source>Delete chat?</source>
<target>Удалить разговор?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete connection" xml:space="preserve">
@@ -2395,6 +2438,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Delivered even when Apple drops them." xml:space="preserve">
<source>Delivered even when Apple drops them.</source>
<target>Доставляются даже тогда, когда Apple их теряет.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delivery" xml:space="preserve">
@@ -2499,6 +2543,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited in this chat." xml:space="preserve">
<source>Direct messages between members are prohibited in this chat.</source>
<target>Прямые сообщения между членами запрещены в этом разговоре.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Direct messages between members are prohibited." xml:space="preserve">
@@ -2684,6 +2729,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="E2E encrypted notifications." xml:space="preserve">
<source>E2E encrypted notifications.</source>
<target>E2E зашифрованные нотификации.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Edit" xml:space="preserve">
@@ -2708,6 +2754,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Enable Flux" xml:space="preserve">
<source>Enable Flux</source>
<target>Включить Flux</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable SimpleX Lock" xml:space="preserve">
@@ -2917,6 +2964,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error accepting conditions" xml:space="preserve">
<source>Error accepting conditions</source>
<target>Ошибка приема условий</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error accepting contact request" xml:space="preserve">
@@ -2931,6 +2979,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error adding server" xml:space="preserve">
<source>Error adding server</source>
<target>Ошибка добавления сервера</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
@@ -3075,6 +3124,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error loading servers" xml:space="preserve">
<source>Error loading servers</source>
<target>Ошибка загрузки серверов</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error migrating settings" xml:space="preserve">
@@ -3134,6 +3184,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error saving servers" xml:space="preserve">
<source>Error saving servers</source>
<target>Ошибка сохранения серверов</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
@@ -3208,6 +3259,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Error updating server" xml:space="preserve">
<source>Error updating server</source>
<target>Ошибка сохранения сервера</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Error updating settings" xml:space="preserve">
@@ -3257,6 +3309,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="Errors in servers configuration." xml:space="preserve">
<source>Errors in servers configuration.</source>
<target>Ошибки в настройках серверов.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="Even when disabled in the conversation." xml:space="preserve">
@@ -3463,6 +3516,7 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="For chat profile %@:" xml:space="preserve">
<source>For chat profile %@:</source>
<target>Для профиля чата %@:</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="For console" xml:space="preserve">
@@ -3472,14 +3526,17 @@ This is your own one-time link!</source>
</trans-unit>
<trans-unit id="For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." xml:space="preserve">
<source>For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</source>
<target>Например, если Ваш контакт получает сообщения через сервер SimpleX Chat, Ваше приложение доставит их через сервер Flux.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For private routing" xml:space="preserve">
<source>For private routing</source>
<target>Для доставки сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="For social media" xml:space="preserve">
<source>For social media</source>
<target>Для социальных сетей</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Forward" xml:space="preserve">
@@ -3758,10 +3815,12 @@ Error: %2$@</source>
</trans-unit>
<trans-unit id="How it affects privacy" xml:space="preserve">
<source>How it affects privacy</source>
<target>Как это влияет на конфиденциальность</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="How it helps privacy" xml:space="preserve">
<source>How it helps privacy</source>
<target>Как это улучшает конфиденциальность</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="How to" xml:space="preserve">
@@ -4059,6 +4118,7 @@ More improvements are coming soon!</source>
</trans-unit>
<trans-unit id="Invite to chat" xml:space="preserve">
<source>Invite to chat</source>
<target>Пригласить в разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invite to group" xml:space="preserve">
@@ -4221,10 +4281,12 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Leave chat" xml:space="preserve">
<source>Leave chat</source>
<target>Покинуть разговор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave chat?" xml:space="preserve">
<source>Leave chat?</source>
<target>Покинуть разговор?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
@@ -4359,6 +4421,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All chat members will be notified." xml:space="preserve">
<source>Member role will be changed to "%@". All chat members will be notified.</source>
<target>Роль участника будет изменена на "%@". Все участники разговора получат уведомление.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member role will be changed to &quot;%@&quot;. All group members will be notified." xml:space="preserve">
@@ -4373,6 +4436,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Member will be removed from chat - this cannot be undone!" xml:space="preserve">
<source>Member will be removed from chat - this cannot be undone!</source>
<target>Член будет удален из разговора - это действие нельзя отменить!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Member will be removed from group - this cannot be undone!" xml:space="preserve">
@@ -4637,6 +4701,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="More reliable notifications" xml:space="preserve">
<source>More reliable notifications</source>
<target>Более надежные уведомления</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Most likely this connection is deleted." xml:space="preserve">
@@ -4676,6 +4741,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Network decentralization" xml:space="preserve">
<source>Network decentralization</source>
<target>Децентрализация сети</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Network issues - message expired after many attempts to send it." xml:space="preserve">
@@ -4690,6 +4756,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Network operator" xml:space="preserve">
<source>Network operator</source>
<target>Оператор сети</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Network settings" xml:space="preserve">
@@ -4749,6 +4816,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="New events" xml:space="preserve">
<source>New events</source>
<target>Новые события</target>
<note>notification</note>
</trans-unit>
<trans-unit id="New in %@" xml:space="preserve">
@@ -4778,6 +4846,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="New server" xml:space="preserve">
<source>New server</source>
<target>Новый сервер</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="No" xml:space="preserve">
@@ -4837,10 +4906,12 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No media &amp; file servers." xml:space="preserve">
<source>No media &amp; file servers.</source>
<target>Нет серверов файлов и медиа.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No message servers." xml:space="preserve">
<source>No message servers.</source>
<target>Нет серверов сообщений.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No network connection" xml:space="preserve">
@@ -4875,18 +4946,22 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="No servers for private message routing." xml:space="preserve">
<source>No servers for private message routing.</source>
<target>Нет серверов для доставки сообщений.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive files." xml:space="preserve">
<source>No servers to receive files.</source>
<target>Нет серверов для приема файлов.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to receive messages." xml:space="preserve">
<source>No servers to receive messages.</source>
<target>Нет серверов для приема сообщений.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No servers to send files." xml:space="preserve">
<source>No servers to send files.</source>
<target>Нет серверов для отправки файлов.</target>
<note>servers error</note>
</trans-unit>
<trans-unit id="No user identifiers." xml:space="preserve">
@@ -4921,6 +4996,7 @@ This is your link for group %@!</source>
</trans-unit>
<trans-unit id="Notifications privacy" xml:space="preserve">
<source>Notifications privacy</source>
<target>Конфиденциальность уведомлений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Now admins can:&#10;- delete members' messages.&#10;- disable members (&quot;observer&quot; role)" xml:space="preserve">
@@ -4978,6 +5054,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Only chat owners can change preferences." xml:space="preserve">
<source>Only chat owners can change preferences.</source>
<target>Только владельцы разговора могут поменять предпочтения.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only client devices store user profiles, contacts, groups, and messages." xml:space="preserve">
@@ -5067,6 +5144,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Open changes" xml:space="preserve">
<source>Open changes</source>
<target>Открыть изменения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open chat" xml:space="preserve">
@@ -5081,6 +5159,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Open conditions" xml:space="preserve">
<source>Open conditions</source>
<target>Открыть условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open group" xml:space="preserve">
@@ -5100,14 +5179,17 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Operator" xml:space="preserve">
<source>Operator</source>
<target>Оператор</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Operator server" xml:space="preserve">
<source>Operator server</source>
<target>Сервер оператора</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Or import archive file" xml:space="preserve">
<source>Or import archive file</source>
<target>Или импортировать файл архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
@@ -5132,6 +5214,7 @@ Requires compatible VPN.</source>
</trans-unit>
<trans-unit id="Or to share privately" xml:space="preserve">
<source>Or to share privately</source>
<target>Или поделиться конфиденциально</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Other" xml:space="preserve">
@@ -5352,6 +5435,7 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Preset servers" xml:space="preserve">
<source>Preset servers</source>
<target>Серверы по умолчанию</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preview" xml:space="preserve">
@@ -5371,6 +5455,7 @@ Error: %@</source>
</trans-unit>
<trans-unit id="Privacy for your customers." xml:space="preserve">
<source>Privacy for your customers.</source>
<target>Конфиденциальность для ваших покупателей.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Privacy redefined" xml:space="preserve">
@@ -5497,7 +5582,7 @@ Error: %@</source>
<source>Protect your IP address from the messaging relays chosen by your contacts.
Enable in *Network &amp; servers* settings.</source>
<target>Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.
Включите в настройках *Сеть и серверы*.</target>
Включите в настройках *Сети и серверов*.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Protect your chat profiles with a password!" xml:space="preserve">
@@ -5530,10 +5615,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Прокси требует пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Доставка уведомлений</target>
@@ -5907,10 +5988,12 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Review conditions" xml:space="preserve">
<source>Review conditions</source>
<target>Посмотреть условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Review later" xml:space="preserve">
<source>Review later</source>
<target>Посмотреть позже</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Revoke" xml:space="preserve">
@@ -5958,14 +6041,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Более безопасные группы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Сохранить</target>
@@ -5980,7 +6055,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Сохранить и уведомить контакт</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6015,7 +6090,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Сохранить предпочтения?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6369,6 +6444,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Server added to operator %@." xml:space="preserve">
<source>Server added to operator %@.</source>
<target>Сервер добавлен к оператору %@.</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Server address" xml:space="preserve">
@@ -6388,14 +6464,17 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Server operator changed." xml:space="preserve">
<source>Server operator changed.</source>
<target>Оператор серверов изменен.</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Server operators" xml:space="preserve">
<source>Server operators</source>
<target>Операторы серверов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Server protocol changed." xml:space="preserve">
<source>Server protocol changed.</source>
<target>Протокол сервера изменен.</target>
<note>alert title</note>
</trans-unit>
<trans-unit id="Server requires authorization to create queues, check password" xml:space="preserve">
@@ -6526,10 +6605,12 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Share 1-time link with a friend" xml:space="preserve">
<source>Share 1-time link with a friend</source>
<target>Поделитесь одноразовой ссылкой с другом</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share SimpleX address on social media." xml:space="preserve">
<source>Share SimpleX address on social media.</source>
<target>Поделитесь SimpleX адресом в социальных сетях.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address" xml:space="preserve">
@@ -6539,6 +6620,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Share address publicly" xml:space="preserve">
<source>Share address publicly</source>
<target>Поделитесь адресом</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share address with contacts?" xml:space="preserve">
@@ -6631,6 +6713,11 @@ Enable in *Network &amp; servers* settings.</source>
<target>Адрес 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<target>SimpleX Chat и Flux заключили соглашение добавить серверы под управлением Flux в приложение.</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">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Безопасность SimpleX Chat была проверена Trail of Bits.</target>
@@ -6663,10 +6750,12 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="SimpleX address and 1-time links are safe to share via any messenger." xml:space="preserve">
<source>SimpleX address and 1-time links are safe to share via any messenger.</source>
<target>Адрес SimpleX и одноразовые ссылки безопасно отправлять через любой мессенджер.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX address or 1-time link?" xml:space="preserve">
<source>SimpleX address or 1-time link?</source>
<target>Адрес SimpleX или одноразовая ссылка?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX contact address" xml:space="preserve">
@@ -6762,6 +6851,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Some servers failed the test:&#10;%@" xml:space="preserve">
<source>Some servers failed the test:
%@</source>
<target>Серверы не прошли тест:
%@</target>
<note>alert message</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
@@ -6941,6 +7032,7 @@ Enable in *Network &amp; servers* settings.</source>
</trans-unit>
<trans-unit id="Tap Create SimpleX address in the menu to create it later." xml:space="preserve">
<source>Tap Create SimpleX address in the menu to create it later.</source>
<target>Нажмите Создать адрес SimpleX в меню, чтобы создать его позже.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap button " xml:space="preserve">
@@ -7032,6 +7124,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="The app protects your privacy by using different operators in each conversation." xml:space="preserve">
<source>The app protects your privacy by using different operators in each conversation.</source>
<target>Приложение улучшает конфиденциальность используя разных операторов в каждом разговоре.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The app will ask to confirm downloads from unknown file servers (except .onion)." xml:space="preserve">
@@ -7051,6 +7144,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="The connection reached the limit of undelivered messages, your contact may be offline." xml:space="preserve">
<source>The connection reached the limit of undelivered messages, your contact may be offline.</source>
<target>Соединение достигло предела недоставленных сообщений. Возможно, Ваш контакт не в сети.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The connection you accepted will be cancelled!" xml:space="preserve">
@@ -7113,8 +7207,19 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Профиль отправляется только Вашим контактам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Те же самые условия будут приняты для оператора **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Те же самые условия будут приняты для оператора(ов): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Второй оператор серверов в приложении!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second tick we missed! ✅" xml:space="preserve">
@@ -7134,6 +7239,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="The servers for new files of your current chat profile **%@**." xml:space="preserve">
<source>The servers for new files of your current chat profile **%@**.</source>
<target>Серверы для новых файлов Вашего текущего профиля **%@**.</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">
@@ -7153,6 +7259,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="These conditions will also apply for: **%@**." xml:space="preserve">
<source>These conditions will also apply for: **%@**.</source>
<target>Эти условия также будут применены к: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="These settings are for your current profile **%@**." xml:space="preserve">
@@ -7257,6 +7364,7 @@ It can happen because of some bug or when the connection is compromised.</source
</trans-unit>
<trans-unit id="To protect against your link being replaced, you can compare contact security codes." xml:space="preserve">
<source>To protect against your link being replaced, you can compare contact security codes.</source>
<target>Чтобы защитить Вашу ссылку от замены, Вы можете сравнить код безопасности.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To protect timezone, image/voice files use UTC." xml:space="preserve">
@@ -7283,6 +7391,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="To receive" xml:space="preserve">
<source>To receive</source>
<target>Для получения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To record speech please grant permission to use Microphone." xml:space="preserve">
@@ -7307,6 +7416,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="To send" xml:space="preserve">
<source>To send</source>
<target>Для оправки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To support instant push notifications the chat database has to be migrated." xml:space="preserve">
@@ -7316,6 +7426,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<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>Чтобы использовать серверы оператора **%@**, примите условия использования.</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">
@@ -7410,6 +7521,7 @@ You will be prompted to complete authentication before this feature is enabled.<
</trans-unit>
<trans-unit id="Undelivered messages" xml:space="preserve">
<source>Undelivered messages</source>
<target>Недоставленные сообщения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unexpected migration state" xml:space="preserve">
@@ -7571,6 +7683,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use %@" xml:space="preserve">
<source>Use %@</source>
<target>Использовать %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
@@ -7600,10 +7713,12 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use for files" xml:space="preserve">
<source>Use for files</source>
<target>Использовать для файлов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use for messages" xml:space="preserve">
<source>Use for messages</source>
<target>Использовать для сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use for new connections" xml:space="preserve">
@@ -7648,6 +7763,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="Use servers" xml:space="preserve">
<source>Use servers</source>
<target>Использовать серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
@@ -7742,6 +7858,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="View conditions" xml:space="preserve">
<source>View conditions</source>
<target>Посмотреть условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="View security code" xml:space="preserve">
@@ -7751,6 +7868,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="View updated conditions" xml:space="preserve">
<source>View updated conditions</source>
<target>Посмотреть измененные условия</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Visible history" xml:space="preserve">
@@ -7865,6 +7983,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="When more than one operator is enabled, none of them has metadata to learn who communicates with whom." xml:space="preserve">
<source>When more than one operator is enabled, none of them has metadata to learn who communicates with whom.</source>
<target>Когда больше чем один оператор включен, ни один из них не видит метаданные, чтобы определить, кто соединен с кем.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." xml:space="preserve">
@@ -7964,6 +8083,7 @@ To connect, please ask your contact to create another connection link and check
</trans-unit>
<trans-unit id="You are already connected with %@." xml:space="preserve">
<source>You are already connected with %@.</source>
<target>Вы уже соединены с %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You are already connecting to %@." xml:space="preserve">
@@ -8030,10 +8150,12 @@ Repeat join request?</source>
</trans-unit>
<trans-unit id="You can configure operators in Network &amp; servers settings." xml:space="preserve">
<source>You can configure operators in Network &amp; servers settings.</source>
<target>Вы можете настроить операторов в настройках Сети и серверов.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can configure servers via settings." xml:space="preserve">
<source>You can configure servers via settings.</source>
<target>Вы можете настроить серверы позже.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
@@ -8078,6 +8200,7 @@ Repeat join request?</source>
</trans-unit>
<trans-unit id="You can set connection name, to remember who the link was shared with." xml:space="preserve">
<source>You can set connection name, to remember who the link was shared with.</source>
<target>Вы можете установить имя соединения, чтобы запомнить кому Вы отправили ссылку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -8239,6 +8362,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="You will stop receiving messages from this chat. Chat history will be preserved." xml:space="preserve">
<source>You will stop receiving messages from this chat. Chat history will be preserved.</source>
<target>Вы прекратите получать сообщения в этом разговоре. История будет сохранена.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You will stop receiving messages from this group. Chat history will be preserved." xml:space="preserve">
@@ -8383,6 +8507,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="Your servers" xml:space="preserve">
<source>Your servers</source>
<target>Ваши серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your settings" xml:space="preserve">
@@ -8425,6 +8550,11 @@ Repeat connection request?</source>
<target>принятый звонок</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<target>принятое приглашение</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>админ</target>
@@ -8613,7 +8743,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>соединяется…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8807,6 +8937,7 @@ Repeat connection request?</source>
</trans-unit>
<trans-unit id="for better metadata privacy." xml:space="preserve">
<source>for better metadata privacy.</source>
<target>для лучшей конфиденциальности метаданных.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="forwarded" xml:space="preserve">
@@ -9106,6 +9237,11 @@ Repeat connection request?</source>
<target>удалил(а) Вас из группы</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<target>запрошено соединение</target>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>сохранено</target>
@@ -9438,22 +9574,27 @@ last received msg: %2$@</source>
<body>
<trans-unit id="%d new events" xml:space="preserve">
<source>%d new events</source>
<target>%d новых сообщений</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="From: %@" xml:space="preserve">
<source>From: %@</source>
<target>От: %@</target>
<note>notification body</note>
</trans-unit>
<trans-unit id="New events" xml:space="preserve">
<source>New events</source>
<target>Новые события</target>
<note>notification</note>
</trans-unit>
<trans-unit id="New messages" xml:space="preserve">
<source>New messages</source>
<target>Новые сообщения</target>
<note>notification</note>
</trans-unit>
<trans-unit id="New messages in %d chats" xml:space="preserve">
<source>New messages in %d chats</source>
<target>Новые сообщения в %d разговоре(ах)</target>
<note>notification body</note>
</trans-unit>
</body>
@@ -536,6 +536,10 @@
<target>เกี่ยวกับ SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<note>No comment provided by engineer.</note>
@@ -695,8 +699,8 @@
<target>ข้อมูลทั้งหมดจะถูกลบเมื่อถูกป้อน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<trans-unit id="All data is kept private on your device." xml:space="preserve">
<source>All data is kept private on your device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All group members will remain connected." xml:space="preserve">
@@ -1232,6 +1236,10 @@
<target>เปลี่ยน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>เปลี่ยนรหัสผ่านฐานข้อมูล?</target>
@@ -1278,10 +1286,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1473,8 +1477,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5133,10 +5137,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>การแจ้งเตือนแบบทันที</target>
@@ -5527,14 +5527,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>บันทึก</target>
@@ -5549,7 +5541,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>บันทึกและแจ้งผู้ติดต่อ</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -5583,7 +5575,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>บันทึกการตั้งค่า?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6147,6 +6139,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>ที่อยู่ 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>ความปลอดภัยของ SimpleX Chat ได้รับการตรวจสอบโดย Trail of Bits</target>
@@ -6598,6 +6594,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>โปรไฟล์นี้แชร์กับผู้ติดต่อของคุณเท่านั้น</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -7806,6 +7810,10 @@ Repeat connection request?</source>
<target>รับสายแล้ว</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>ผู้ดูแลระบบ</target>
@@ -7984,7 +7992,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>กำลังเชื่อมต่อ…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -8458,6 +8466,10 @@ Repeat connection request?</source>
<target>ลบคุณออกแล้ว</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<note>No comment provided by engineer.</note>
@@ -572,6 +572,10 @@
<target>SimpleX Chat hakkında</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Ana renk</target>
@@ -741,8 +745,8 @@
<target>Kullanıldığında bütün veriler silinir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Tüm veriler cihazınıza özeldir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1329,6 +1333,10 @@
<target>Değiştir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Veritabanı parolasını değiştir?</target>
@@ -1375,10 +1383,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1585,8 +1589,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5530,10 +5534,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Proxy şifre gerektirir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Anında bildirimler</target>
@@ -5958,14 +5958,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Daha güvenli gruplar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Kaydet</target>
@@ -5980,7 +5972,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Kaydet ve kişilere bildir</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6015,7 +6007,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Tercihler kaydedilsin mi?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6631,6 +6623,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>SimpleX Adresi</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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>SimpleX Chat güvenliği Trails of Bits tarafından denetlenmiştir.</target>
@@ -7113,6 +7109,14 @@ Bazı hatalar nedeniyle veya bağlantı tehlikeye girdiğinde meydana gelebilir.
<target>Profil sadece kişilerinle paylaşılacak.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -8425,6 +8429,10 @@ Bağlantı isteği tekrarlansın mı?</target>
<target>kabul edilen arama</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>yönetici</target>
@@ -8613,7 +8621,7 @@ Bağlantı isteği tekrarlansın mı?</target>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>bağlanılıyor…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9106,6 +9114,10 @@ Bağlantı isteği tekrarlansın mı?</target>
<target>sen kaldırıldın</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>kaydedildi</target>
@@ -577,6 +577,10 @@
<target>Про чат SimpleX</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>Акцент</target>
@@ -752,8 +756,8 @@
<target>Всі дані стираються при введенні.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>Всі дані є приватними для вашого пристрою.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1341,6 +1345,11 @@
<target>Зміна</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<target>Зміна профілів користувачів</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>Змінити пароль до бази даних?</target>
@@ -1387,11 +1396,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<target>Зміна профілів користувачів</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1602,8 +1606,8 @@
<target>Для оператора(ів) приймаються умови: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<target>Умови вже прийняті для наступних операторів: **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -5590,14 +5594,9 @@ Enable in *Network &amp; servers* settings.</source>
<target>Проксі вимагає пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<target>Push-сповіщення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>Push-повідомлення</target>
<target>Push-сповіщення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
@@ -6021,16 +6020,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>Безпечніші групи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<target>Такі ж умови діятимуть і для оператора **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<target>Такі ж умови будуть застосовуватися до оператора(ів): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Зберегти</target>
@@ -6045,7 +6034,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>Зберегти та повідомити контакт</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -6080,7 +6069,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>Зберегти настройки?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6703,6 +6692,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Адреса 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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>Безпека SimpleX Chat була перевірена компанією Trail of Bits.</target>
@@ -7191,6 +7184,16 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Профіль доступний лише вашим контактам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<target>Такі ж умови діятимуть і для оператора **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<target>Такі ж умови будуть застосовуватися до оператора(ів): **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<target>Другий попередньо встановлений оператор у застосунку!</target>
@@ -8522,6 +8525,10 @@ Repeat connection request?</source>
<target>прийнято виклик</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>адмін</target>
@@ -8710,7 +8717,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>з'єднання…</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9204,6 +9211,10 @@ Repeat connection request?</source>
<target>прибрали вас</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>збережено</target>
@@ -566,6 +566,10 @@
<target>关于SimpleX Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About operators" xml:space="preserve">
<source>About operators</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Accent" xml:space="preserve">
<source>Accent</source>
<target>强调</target>
@@ -735,8 +739,8 @@
<target>所有数据在输入后将被删除。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is private to your device." xml:space="preserve">
<source>All data is private to your device.</source>
<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>所有数据都是您设备的私有数据.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
@@ -1316,6 +1320,10 @@
<target>更改</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Change chat profiles" xml:space="preserve">
<source>Change chat profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Change database passphrase?" xml:space="preserve">
<source>Change database passphrase?</source>
<target>更改数据库密码?</target>
@@ -1362,10 +1370,6 @@
<note>authentication reason
set passcode view</note>
</trans-unit>
<trans-unit id="Change user profiles" xml:space="preserve">
<source>Change user profiles</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Chat" xml:space="preserve">
<source>Chat</source>
<note>No comment provided by engineer.</note>
@@ -1571,8 +1575,8 @@
<source>Conditions are accepted for the operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions are already accepted for following operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for following operator(s): **%@**.</source>
<trans-unit id="Conditions are already accepted for these operator(s): **%@**." xml:space="preserve">
<source>Conditions are already accepted for these operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conditions of use" xml:space="preserve">
@@ -5485,10 +5489,6 @@ Enable in *Network &amp; servers* settings.</source>
<source>Proxy requires password</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push Notifications" xml:space="preserve">
<source>Push Notifications</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push notifications" xml:space="preserve">
<source>Push notifications</source>
<target>推送通知</target>
@@ -5911,14 +5911,6 @@ Enable in *Network &amp; servers* settings.</source>
<target>更安全的群组</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator **%@**." xml:space="preserve">
<source>Same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>Same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>保存</target>
@@ -5933,7 +5925,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save and notify contact" xml:space="preserve">
<source>Save and notify contact</source>
<target>保存并通知联系人</target>
<note>No comment provided by engineer.</note>
<note>alert button</note>
</trans-unit>
<trans-unit id="Save and notify group members" xml:space="preserve">
<source>Save and notify group members</source>
@@ -5968,7 +5960,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Save preferences?" xml:space="preserve">
<source>Save preferences?</source>
<target>保存偏好设置?</target>
<note>No comment provided by engineer.</note>
<note>alert title</note>
</trans-unit>
<trans-unit id="Save profile password" xml:space="preserve">
<source>Save profile password</source>
@@ -6578,6 +6570,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>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">
<source>SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="SimpleX Chat security was audited by Trail of Bits." xml:space="preserve">
<source>SimpleX Chat security was audited by Trail of Bits.</source>
<target>SimpleX Chat 的安全性 由 Trail of Bits 审核。</target>
@@ -7055,6 +7051,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>该资料仅与您的联系人共享。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator **%@**." xml:space="preserve">
<source>The same conditions will apply to operator **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The same conditions will apply to operator(s): **%@**." xml:space="preserve">
<source>The same conditions will apply to operator(s): **%@**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The second preset operator in the app!" xml:space="preserve">
<source>The second preset operator in the app!</source>
<note>No comment provided by engineer.</note>
@@ -8358,6 +8362,10 @@ Repeat connection request?</source>
<target>已接受通话</target>
<note>call status</note>
</trans-unit>
<trans-unit id="accepted invitation" xml:space="preserve">
<source>accepted invitation</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="admin" xml:space="preserve">
<source>admin</source>
<target>管理员</target>
@@ -8546,7 +8554,7 @@ Repeat connection request?</source>
<trans-unit id="connecting…" xml:space="preserve">
<source>connecting…</source>
<target>连接中……</target>
<note>chat list item title</note>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="connection established" xml:space="preserve">
<source>connection established</source>
@@ -9039,6 +9047,10 @@ Repeat connection request?</source>
<target>已将您移除</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="requested to connect" xml:space="preserve">
<source>requested to connect</source>
<note>chat list item title</note>
</trans-unit>
<trans-unit id="saved" xml:space="preserve">
<source>saved</source>
<target>已保存</target>
@@ -1,7 +1,15 @@
/*
Localizable.strings
SimpleX
/* notification body */
"%d new events" = "%d новых сообщений";
/* notification body */
"From: %@" = "От: %@";
/* notification */
"New events" = "Новые события";
/* notification */
"New messages" = "Новые сообщения";
/* notification body */
"New messages in %d chats" = "Новые сообщения в %d разговоре(ах)";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
+18 -18
View File
@@ -167,9 +167,9 @@
648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; };
648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */; };
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D82CFE07CF00536B68 /* libffi.a */; };
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy-ghc9.6.3.a */; };
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */; };
649B28DF2CFE07CF00536B68 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DA2CFE07CF00536B68 /* libgmpxx.a */; };
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy.a */; };
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */; };
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 649B28DC2CFE07CF00536B68 /* libgmp.a */; };
649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; };
649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; };
@@ -516,9 +516,9 @@
648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemForwardingView.swift; sourceTree = "<group>"; };
6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
649B28D82CFE07CF00536B68 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy-ghc9.6.3.a"; sourceTree = "<group>"; };
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a"; sourceTree = "<group>"; };
649B28DA2CFE07CF00536B68 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy.a"; sourceTree = "<group>"; };
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a"; sourceTree = "<group>"; };
649B28DC2CFE07CF00536B68 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = "<group>"; };
649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = "<group>"; };
@@ -671,9 +671,9 @@
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
649B28E12CFE07CF00536B68 /* libgmp.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy.a in Frameworks */,
649B28E02CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a in Frameworks */,
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy-ghc9.6.3.a in Frameworks */,
649B28DE2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a in Frameworks */,
649B28DD2CFE07CF00536B68 /* libffi.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -754,8 +754,8 @@
649B28D82CFE07CF00536B68 /* libffi.a */,
649B28DC2CFE07CF00536B68 /* libgmp.a */,
649B28DA2CFE07CF00536B68 /* libgmpxx.a */,
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy-ghc9.6.3.a */,
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.4-3HGUY7rfU7IFvhj8CPEbqy.a */,
649B28D92CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E-ghc9.6.3.a */,
649B28DB2CFE07CF00536B68 /* libHSsimplex-chat-6.2.0.7-3p784Fmu4gOAiEiFcsHj1E.a */,
);
path = Libraries;
sourceTree = "<group>";
@@ -1931,7 +1931,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -1980,7 +1980,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -2021,7 +2021,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@@ -2041,7 +2041,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
@@ -2066,7 +2066,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
@@ -2103,7 +2103,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
@@ -2140,7 +2140,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2191,7 +2191,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 250;
CURRENT_PROJECT_VERSION = 254;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -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 = 250;
CURRENT_PROJECT_VERSION = 254;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -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 = 250;
CURRENT_PROJECT_VERSION = 254;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
+15 -51
View File
@@ -1212,13 +1212,12 @@ public enum ServerProtocol: String, Decodable {
public enum OperatorTag: String, Codable {
case simplex = "simplex"
case flux = "flux"
case xyz = "xyz"
case demo = "demo"
}
public struct ServerOperatorInfo: Decodable {
public struct ServerOperatorInfo {
public var description: [String]
public var website: String
public var website: URL
public var selfhost: (text: String, link: URL)? = nil
public var logo: String
public var largeLogo: String
public var logoDarkMode: String
@@ -1228,10 +1227,10 @@ public struct ServerOperatorInfo: Decodable {
public let operatorsInfo: Dictionary<OperatorTag, ServerOperatorInfo> = [
.simplex: ServerOperatorInfo(
description: [
"SimpleX Chat is the first communication network that has no user profile IDs of any kind, not even random numbers or keys that identify the users.",
"SimpleX Chat is the first communication network that has no user profile IDs of any kind, not even random numbers or identity keys.",
"SimpleX Chat Ltd develops the communication software for SimpleX network."
],
website: "https://simplex.chat",
website: URL(string: "https://simplex.chat")!,
logo: "decentralized",
largeLogo: "logo",
logoDarkMode: "decentralized-light",
@@ -1239,31 +1238,17 @@ public let operatorsInfo: Dictionary<OperatorTag, ServerOperatorInfo> = [
),
.flux: ServerOperatorInfo(
description: [
"Flux is the largest decentralized cloud infrastructure, leveraging a global network of user-operated computational nodes.",
"Flux offers a powerful, scalable, and affordable platform designed to support individuals, businesses, and cutting-edge technologies like AI. With high uptime and worldwide distribution, Flux ensures reliable, accessible cloud computing for all."
"Flux is the largest decentralized cloud, based on a global network of user-operated nodes.",
"Flux offers a powerful, scalable, and affordable cutting edge technology platform for all.",
"Flux operates servers in SimpleX network to improve its privacy and decentralization."
],
website: "https://runonflux.com",
website: URL(string: "https://runonflux.com")!,
selfhost: (text: "Self-host SimpleX servers on Flux", link: URL(string: "https://home.runonflux.io/apps/marketplace?q=simplex")!),
logo: "flux_logo_symbol",
largeLogo: "flux_logo",
logoDarkMode: "flux_logo_symbol",
largeLogoDarkMode: "flux_logo-light"
),
.xyz: ServerOperatorInfo(
description: ["XYZ servers"],
website: "XYZ website",
logo: "shield",
largeLogo: "logo",
logoDarkMode: "shield",
largeLogoDarkMode: "logo-light"
),
.demo: ServerOperatorInfo(
description: ["Demo operator"],
website: "Demo website",
logo: "decentralized",
largeLogo: "logo",
logoDarkMode: "decentralized-light",
largeLogoDarkMode: "logo-light"
)
]
public struct UsageConditions: Decodable {
@@ -1358,7 +1343,7 @@ public struct ServerOperator: Identifiable, Equatable, Codable {
public static let dummyOperatorInfo = ServerOperatorInfo(
description: ["Default"],
website: "Default",
website: URL(string: "https://simplex.chat")!,
logo: "decentralized",
largeLogo: "logo",
logoDarkMode: "decentralized-light",
@@ -1384,30 +1369,6 @@ public struct ServerOperator: Identifiable, Equatable, Codable {
smpRoles: ServerRoles(storage: true, proxy: true),
xftpRoles: ServerRoles(storage: true, proxy: true)
)
public static var sampleData2 = ServerOperator(
operatorId: 2,
operatorTag: .xyz,
tradeName: "XYZ",
legalName: nil,
serverDomains: ["xyz.com"],
conditionsAcceptance: .required(deadline: nil),
enabled: false,
smpRoles: ServerRoles(storage: false, proxy: true),
xftpRoles: ServerRoles(storage: false, proxy: true)
)
public static var sampleData3 = ServerOperator(
operatorId: 3,
operatorTag: .demo,
tradeName: "Demo",
legalName: nil,
serverDomains: ["demo.com"],
conditionsAcceptance: .required(deadline: nil),
enabled: false,
smpRoles: ServerRoles(storage: true, proxy: false),
xftpRoles: ServerRoles(storage: true, proxy: false)
)
}
public struct ServerRoles: Equatable, Codable {
@@ -2655,6 +2616,7 @@ public struct AppSettings: Codable, Equatable {
public var uiCurrentThemeIds: [String: String]? = nil
public var uiThemes: [ThemeOverrides]? = nil
public var oneHandUI: Bool? = nil
public var chatBottomBar: Bool? = nil
public func prepareForExport() -> AppSettings {
var empty = AppSettings()
@@ -2689,6 +2651,7 @@ public struct AppSettings: Codable, Equatable {
if uiCurrentThemeIds != def.uiCurrentThemeIds { empty.uiCurrentThemeIds = uiCurrentThemeIds }
if uiThemes != def.uiThemes { empty.uiThemes = uiThemes }
if oneHandUI != def.oneHandUI { empty.oneHandUI = oneHandUI }
if chatBottomBar != def.chatBottomBar { empty.chatBottomBar = chatBottomBar }
return empty
}
@@ -2723,7 +2686,8 @@ public struct AppSettings: Codable, Equatable {
uiDarkColorScheme: DefaultTheme.SIMPLEX.themeName,
uiCurrentThemeIds: nil as [String: String]?,
uiThemes: nil as [ThemeOverrides]?,
oneHandUI: false
oneHandUI: true,
chatBottomBar: true
)
}
}
+3 -1
View File
@@ -57,6 +57,7 @@ public let GROUP_DEFAULT_CONFIRM_DB_UPGRADES = "confirmDBUpgrades"
public let GROUP_DEFAULT_CALL_KIT_ENABLED = "callKitEnabled"
public let GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED = "pqExperimentalEnabled" // no longer used
public let GROUP_DEFAULT_ONE_HAND_UI = "oneHandUI"
public let GROUP_DEFAULT_CHAT_BOTTOM_BAR = "chatBottomBar"
public let APP_GROUP_NAME = "group.chat.simplex.app"
@@ -94,7 +95,8 @@ public func registerGroupDefaults() {
GROUP_DEFAULT_CONFIRM_DB_UPGRADES: false,
GROUP_DEFAULT_CALL_KIT_ENABLED: true,
GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED: false,
GROUP_DEFAULT_ONE_HAND_UI: true
GROUP_DEFAULT_ONE_HAND_UI: true,
GROUP_DEFAULT_CHAT_BOTTOM_BAR: true
])
}
+6 -3
View File
@@ -1782,9 +1782,11 @@ public struct PendingContactConnection: Decodable, NamedChat, Hashable {
public var displayName: String {
get {
if let initiated = pccConnStatus.initiated {
return initiated && !viaContactUri
return viaContactUri
? NSLocalizedString("requested to connect", comment: "chat list item title")
: initiated
? NSLocalizedString("invited to connect", comment: "chat list item title")
: NSLocalizedString("connecting…", comment: "chat list item title")
: NSLocalizedString("accepted invitation", comment: "chat list item title")
} else {
// this should not be in the list
return NSLocalizedString("connection established", comment: "chat list item title (it should not be shown")
@@ -1962,8 +1964,9 @@ public struct GroupProfile: Codable, NamedChat, Hashable {
}
public struct BusinessChatInfo: Decodable, Hashable {
public var memberId: String
public var chatType: BusinessChatType
public var businessId: String
public var customerId: String
}
public enum BusinessChatType: String, Codable, Hashable {
+24 -24
View File
@@ -918,7 +918,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Свързване с настолно устройство";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "свързване…";
/* No comment provided by engineer. */
@@ -1905,27 +1905,6 @@
/* No comment provided by engineer. */
"Group links" = "Групови линкове";
/* No comment provided by engineer. */
"Members can add message reactions." = "Членовете на групата могат да добавят реакции към съобщенията.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Членовете на групата могат необратимо да изтриват изпратените съобщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Членовете на групата могат да изпращат лични съобщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Членовете на групата могат да изпращат изчезващи съобщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Членовете на групата могат да изпращат файлове и медия.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Членовете на групата могат да изпращат SimpleX линкове.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Членовете на групата могат да изпращат гласови съобщения.";
/* notification */
"Group message:" = "Групово съобщение:";
@@ -2376,6 +2355,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Членът ще бъде премахнат от групата - това не може да бъде отменено!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Членовете на групата могат да добавят реакции към съобщенията.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Членовете на групата могат необратимо да изтриват изпратените съобщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Членовете на групата могат да изпращат лични съобщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Членовете на групата могат да изпращат изчезващи съобщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Членовете на групата могат да изпращат файлове и медия.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Членовете на групата могат да изпращат SimpleX линкове.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Членовете на групата могат да изпращат гласови съобщения.";
/* item status text */
"Message delivery error" = "Грешка при доставката на съобщението";
@@ -3139,7 +3139,7 @@
/* alert button */
"Save (and notify contacts)" = "Запази (и уведоми контактите)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Запази и уведоми контакта";
/* No comment provided by engineer. */
@@ -3157,7 +3157,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Запази паролата в Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Запази настройките?";
/* No comment provided by engineer. */
+21 -21
View File
@@ -729,7 +729,7 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Připojování k serveru... (chyba: %@)";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "připojení…";
/* No comment provided by engineer. */
@@ -1544,24 +1544,6 @@
/* No comment provided by engineer. */
"Group links" = "Odkazy na skupiny";
/* No comment provided by engineer. */
"Members can add message reactions." = "Členové skupin mohou přidávat reakce na zprávy.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Členové skupiny mohou nevratně mazat odeslané zprávy. (24 hodin)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Členové skupiny mohou posílat přímé zprávy.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Členové skupiny mohou posílat mizící zprávy.";
/* No comment provided by engineer. */
"Members can send files and media." = "Členové skupiny mohou posílat soubory a média.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Členové skupiny mohou posílat hlasové zprávy.";
/* notification */
"Group message:" = "Skupinová zpráva:";
@@ -1934,6 +1916,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Člen bude odstraněn ze skupiny - toto nelze vzít zpět!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Členové skupin mohou přidávat reakce na zprávy.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Členové skupiny mohou nevratně mazat odeslané zprávy. (24 hodin)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Členové skupiny mohou posílat přímé zprávy.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Členové skupiny mohou posílat mizící zprávy.";
/* No comment provided by engineer. */
"Members can send files and media." = "Členové skupiny mohou posílat soubory a média.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Členové skupiny mohou posílat hlasové zprávy.";
/* item status text */
"Message delivery error" = "Chyba doručení zprávy";
@@ -2538,7 +2538,7 @@
/* alert button */
"Save (and notify contacts)" = "Uložit (a informovat kontakty)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Uložit a upozornit kontakt";
/* No comment provided by engineer. */
@@ -2556,7 +2556,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Uložit přístupovou frázi do Klíčenky";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Uložit předvolby?";
/* No comment provided by engineer. */
+121 -40
View File
@@ -343,6 +343,9 @@
/* No comment provided by engineer. */
"Abort changing address?" = "Wechsel der Empfängeradresse beenden?";
/* No comment provided by engineer. */
"About operators" = "Über Betreiber";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Über SimpleX Chat";
@@ -376,6 +379,9 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Akzeptierte Nutzungsbedingungen";
/* chat list item title */
"accepted invitation" = "Einladung akzeptiert";
/* No comment provided by engineer. */
"Acknowledged" = "Bestätigt";
@@ -388,6 +394,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Fügen Sie die Adresse Ihrem Profil hinzu, damit Ihre Kontakte sie mit anderen Personen teilen können. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet.";
/* No comment provided by engineer. */
"Add friends" = "Freunde aufnehmen";
/* No comment provided by engineer. */
"Add profile" = "Profil hinzufügen";
@@ -397,12 +406,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Fügen Sie Server durch Scannen der QR Codes hinzu.";
/* No comment provided by engineer. */
"Add team members" = "Team-Mitglieder aufnehmen";
/* No comment provided by engineer. */
"Add to another device" = "Einem anderen Gerät hinzufügen";
/* No comment provided by engineer. */
"Add welcome message" = "Begrüßungsmeldung hinzufügen";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Nehmen Sie Team-Mitglieder in Ihre Unterhaltungen auf.";
/* No comment provided by engineer. */
"Added media & file servers" = "Medien- und Dateiserver hinzugefügt";
@@ -464,7 +479,7 @@
"All data is erased when it is entered." = "Alle Daten werden gelöscht, sobald dieser eingegeben wird.";
/* No comment provided by engineer. */
"All data is private to your device." = "Alle Daten werden nur auf Ihrem Gerät gespeichert.";
"All data is kept private on your device." = "Alle Daten werden nur auf Ihrem Gerät gespeichert.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Alle Gruppenmitglieder bleiben verbunden.";
@@ -793,6 +808,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgarisch, Finnisch, Thailändisch und Ukrainisch - Dank der Nutzer und [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Geschäftliche Adresse";
/* No comment provided by engineer. */
"Business chats" = "Geschäftliche Chats";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per Chat-Profil (Voreinstellung) oder [per Verbindung](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -863,6 +884,9 @@
/* No comment provided by engineer. */
"Change" = "Ändern";
/* authentication reason */
"Change chat profiles" = "Chat-Profile wechseln";
/* No comment provided by engineer. */
"Change database passphrase?" = "Datenbank-Passwort ändern?";
@@ -891,9 +915,6 @@
set passcode view */
"Change self-destruct passcode" = "Selbstzerstörungs-Zugangscode ändern";
/* authentication reason */
"Change user profiles" = "Chat-Profile wechseln";
/* chat item text */
"changed address for you" = "Wechselte die Empfängeradresse von Ihnen";
@@ -909,6 +930,15 @@
/* chat item text */
"changing address…" = "Wechsel der Empfängeradresse wurde gestartet…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "Chat besteht bereits";
/* No comment provided by engineer. */
"Chat already exists!" = "Chat besteht bereits!";
/* No comment provided by engineer. */
"Chat colors" = "Chat-Farben";
@@ -954,6 +984,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Chat-Design";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "Der Chat wird für alle Mitglieder gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Der Chat wird für Sie gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Chats" = "Chats";
@@ -1030,7 +1066,7 @@
"Conditions are accepted for the operator(s): **%@**." = "Die Nutzungsbedingungen der/des Betreiber(s) werden akzeptiert: **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: **%@**.";
"Conditions are already accepted for these operator(s): **%@**." = "Die Nutzungsbedingungen der/des folgenden Betreiber(s) wurden schon akzeptiert: **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Nutzungsbedingungen";
@@ -1173,7 +1209,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Mit dem Desktop verbinden";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "Verbinde…";
/* No comment provided by engineer. */
@@ -1475,12 +1511,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Kontakt löschen und benachrichtigen";
/* No comment provided by engineer. */
"Delete chat" = "Chat löschen";
/* No comment provided by engineer. */
"Delete chat profile" = "Chat-Profil löschen";
/* No comment provided by engineer. */
"Delete chat profile?" = "Chat-Profil löschen?";
/* No comment provided by engineer. */
"Delete chat?" = "Chat löschen?";
/* No comment provided by engineer. */
"Delete connection" = "Verbindung löschen";
@@ -1655,6 +1697,9 @@
/* chat feature */
"Direct messages" = "Direkte Nachrichten";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "In diesem Chat sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "In dieser Gruppe sind Direktnachrichten zwischen Mitgliedern nicht erlaubt.";
@@ -2424,27 +2469,6 @@
/* No comment provided by engineer. */
"Group links" = "Gruppen-Links";
/* No comment provided by engineer. */
"Members can add message reactions." = "Gruppenmitglieder können eine Reaktion auf Nachrichten geben.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Gruppenmitglieder können Direktnachrichten versenden.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Gruppenmitglieder können verschwindende Nachrichten senden.";
/* No comment provided by engineer. */
"Members can send files and media." = "Gruppenmitglieder können Dateien und Medien senden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Gruppenmitglieder können SimpleX-Links senden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Gruppenmitglieder können Sprachnachrichten versenden.";
/* notification */
"Group message:" = "Grppennachricht:";
@@ -2715,6 +2739,9 @@
/* No comment provided by engineer. */
"Invite members" = "Mitglieder einladen";
/* No comment provided by engineer. */
"Invite to chat" = "Zum Chat einladen";
/* No comment provided by engineer. */
"Invite to group" = "In Gruppe einladen";
@@ -2829,6 +2856,12 @@
/* swipe action */
"Leave" = "Verlassen";
/* No comment provided by engineer. */
"Leave chat" = "Chat verlassen";
/* No comment provided by engineer. */
"Leave chat?" = "Chat verlassen?";
/* No comment provided by engineer. */
"Leave group" = "Gruppe verlassen";
@@ -2925,15 +2958,42 @@
/* item status text */
"Member inactive" = "Mitglied inaktiv";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Die Rolle des Mitglieds wird auf \"%@\" geändert. Alle Chat-Mitglieder werden darüber informiert.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "Die Mitgliederrolle wird auf \"%@\" geändert. Alle Mitglieder der Gruppe werden benachrichtigt.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Die Mitgliederrolle wird auf \"%@\" geändert. Das Mitglied wird eine neue Einladung erhalten.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Das Mitglied wird aus dem Chat entfernt. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Das Mitglied wird aus der Gruppe entfernt. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Gruppenmitglieder können eine Reaktion auf Nachrichten geben.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Gruppenmitglieder können Direktnachrichten versenden.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Gruppenmitglieder können verschwindende Nachrichten senden.";
/* No comment provided by engineer. */
"Members can send files and media." = "Gruppenmitglieder können Dateien und Medien senden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Gruppenmitglieder können SimpleX-Links senden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Gruppenmitglieder können Sprachnachrichten versenden.";
/* No comment provided by engineer. */
"Menus" = "Menüs";
@@ -3329,6 +3389,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion-Hosts werden nicht verwendet.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Nur Chat-Eigentümer können die Präferenzen ändern.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine **2-Schichten Ende-zu-Ende-Verschlüsselung** gesendet werden.";
@@ -3407,6 +3470,9 @@
/* alert title */
"Operator server" = "Betreiber-Server";
/* No comment provided by engineer. */
"Or import archive file" = "Oder importieren Sie eine Archiv-Datei";
/* No comment provided by engineer. */
"Or paste archive link" = "Oder fügen Sie den Archiv-Link ein";
@@ -3575,6 +3641,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Datenschutz & Sicherheit";
/* No comment provided by engineer. */
"Privacy for your customers." = "Schutz der Privatsphäre Ihrer Kunden.";
/* No comment provided by engineer. */
"Privacy redefined" = "Datenschutz neu definiert";
@@ -3671,9 +3740,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Push-Benachrichtigungen";
/* No comment provided by engineer. */
"Push Notifications" = "Push-Benachrichtigungen";
/* No comment provided by engineer. */
"Push server" = "Push-Server";
@@ -3870,6 +3936,9 @@
/* chat item action */
"Reply" = "Antwort";
/* chat list item title */
"requested to connect" = "Zur Verbindung aufgefordert";
/* No comment provided by engineer. */
"Required" = "Erforderlich";
@@ -3948,12 +4017,6 @@
/* No comment provided by engineer. */
"Safer groups" = "Sicherere Gruppen";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.";
/* alert button
chat item action */
"Save" = "Speichern";
@@ -3961,7 +4024,7 @@
/* alert button */
"Save (and notify contacts)" = "Speichern (und Kontakte benachrichtigen)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Speichern und Kontakt benachrichtigen";
/* No comment provided by engineer. */
@@ -3982,7 +4045,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Passwort im Schlüsselbund speichern";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Präferenzen speichern?";
/* No comment provided by engineer. */
@@ -4400,6 +4463,9 @@
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "SimpleX-Adresse oder Einmal-Link?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX-Chat und Flux haben vereinbart, die von Flux betriebenen Server in die App aufzunehmen.";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "Die Sicherheit von SimpleX Chat wurde von Trail of Bits überprüft.";
@@ -4580,6 +4646,9 @@
/* No comment provided by engineer. */
"Tap button " = "Schaltfläche antippen ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tippen Sie im Menü auf SimpleX-Adresse erstellen, um sie später zu erstellen.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Zum Aktivieren des Profils tippen.";
@@ -4694,6 +4763,12 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Das Profil wird nur mit Ihren Kontakten geteilt.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den Betreiber **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Dieselben Nutzungsbedingungen gelten auch für den/die Betreiber: **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "Der zweite voreingestellte Netzwerk-Betreiber in der App!";
@@ -4704,10 +4779,10 @@
"The sender will NOT be notified" = "Der Absender wird NICHT benachrichtigt";
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Mögliche Server für neue Verbindungen von Ihrem aktuellen Chat-Profil **%@**.";
"The servers for new connections of your current chat profile **%@**." = "Nachrichten-Server für neue Verbindungen über Ihr aktuelles Chat-Profil **%@**.";
/* No comment provided by engineer. */
"The servers for new files of your current chat profile **%@**." = "Die Server Deines aktuellen Chat-Profils für neue Dateien **%@**.";
"The servers for new files of your current chat profile **%@**." = "Medien- und Datei-Server für neue Daten über Ihr aktuelles Chat-Profil **%@**.";
/* No comment provided by engineer. */
"The text you pasted is not a SimpleX link." = "Der von Ihnen eingefügte Text ist kein SimpleX-Link.";
@@ -5282,6 +5357,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Sie sind bereits mit %@ verbunden.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Sie sind bereits mit %@ verbunden.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Sie sind bereits mit %@ verbunden.";
@@ -5480,6 +5558,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Sie können Anrufe und Benachrichtigungen auch von stummgeschalteten Profilen empfangen, solange diese aktiv sind.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Sie werden von diesem Chat keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Sie werden von dieser Gruppe keine Nachrichten mehr erhalten. Der Nachrichtenverlauf wird beibehalten.";
+131 -50
View File
@@ -343,6 +343,9 @@
/* No comment provided by engineer. */
"Abort changing address?" = "¿Cancelar el cambio de servidor?";
/* No comment provided by engineer. */
"About operators" = "Acerca de los operadores";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Sobre SimpleX Chat";
@@ -376,6 +379,9 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Condiciones aceptadas";
/* chat list item title */
"accepted invitation" = "invitación aceptada";
/* No comment provided by engineer. */
"Acknowledged" = "Confirmaciones";
@@ -388,6 +394,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Añade la dirección a tu perfil para que tus contactos puedan compartirla con otros. La actualización del perfil se enviará a tus contactos.";
/* No comment provided by engineer. */
"Add friends" = "Añadir amigos";
/* No comment provided by engineer. */
"Add profile" = "Añadir perfil";
@@ -397,12 +406,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Añadir servidores mediante el escaneo de códigos QR.";
/* No comment provided by engineer. */
"Add team members" = "Añadir miembros del equipo";
/* No comment provided by engineer. */
"Add to another device" = "Añadir a otro dispositivo";
/* No comment provided by engineer. */
"Add welcome message" = "Añadir mensaje de bienvenida";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Añade a los miembros de tu equipo a las conversaciones.";
/* No comment provided by engineer. */
"Added media & file servers" = "Servidores de archivos y multimedia añadidos";
@@ -464,7 +479,7 @@
"All data is erased when it is entered." = "Al introducirlo todos los datos son eliminados.";
/* No comment provided by engineer. */
"All data is private to your device." = "Todos los datos son privados y están en tu dispositivo.";
"All data is kept private on your device." = "Todos los datos son privados y están en tu dispositivo.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Todos los miembros del grupo permanecerán conectados.";
@@ -793,6 +808,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Búlgaro, Finlandés, Tailandés y Ucraniano - gracias a los usuarios y [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Dirección empresarial";
/* No comment provided by engineer. */
"Business chats" = "Chats empresariales";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Mediante perfil (predeterminado) o [por conexión](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -863,6 +884,9 @@
/* No comment provided by engineer. */
"Change" = "Cambiar";
/* authentication reason */
"Change chat profiles" = "Cambiar perfil de usuario";
/* No comment provided by engineer. */
"Change database passphrase?" = "¿Cambiar contraseña de la base de datos?";
@@ -891,9 +915,6 @@
set passcode view */
"Change self-destruct passcode" = "Cambiar código autodestrucción";
/* authentication reason */
"Change user profiles" = "Cambiar perfil de usuario";
/* chat item text */
"changed address for you" = "ha cambiado tu servidor de envío";
@@ -909,6 +930,15 @@
/* chat item text */
"changing address…" = "cambiando de servidor…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "El chat ya existe";
/* No comment provided by engineer. */
"Chat already exists!" = "¡El chat ya existe!";
/* No comment provided by engineer. */
"Chat colors" = "Colores del chat";
@@ -954,6 +984,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Tema de chat";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "El chat será eliminado para todos los miembros. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "El chat será eliminado para tí. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Chats" = "Chats";
@@ -1030,7 +1066,7 @@
"Conditions are accepted for the operator(s): **%@**." = "Las condiciones se han aceptado para el(los) operador(s): **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): **%@**.";
"Conditions are already accepted for these operator(s): **%@**." = "Las condiciones ya se han aceptado para el/los siguiente(s) operador(s): **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Condiciones de uso";
@@ -1173,7 +1209,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Conectando con ordenador";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "conectando…";
/* No comment provided by engineer. */
@@ -1475,12 +1511,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Eliminar y notificar contacto";
/* No comment provided by engineer. */
"Delete chat" = "Eliminar chat";
/* No comment provided by engineer. */
"Delete chat profile" = "Eliminar perfil";
/* No comment provided by engineer. */
"Delete chat profile?" = "¿Eliminar perfil?";
/* No comment provided by engineer. */
"Delete chat?" = "¿Eliminar chat?";
/* No comment provided by engineer. */
"Delete connection" = "Eliminar conexión";
@@ -1500,7 +1542,7 @@
"Delete file" = "Eliminar archivo";
/* No comment provided by engineer. */
"Delete files and media?" = "Eliminar archivos y multimedia?";
"Delete files and media?" = "¿Eliminar archivos y multimedia?";
/* No comment provided by engineer. */
"Delete files for all chat profiles" = "Eliminar archivos de todos los perfiles";
@@ -1655,6 +1697,9 @@
/* chat feature */
"Direct messages" = "Mensajes directos";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "Mensajes directos no permitidos entre miembros de este chat.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Los mensajes directos entre miembros del grupo no están permitidos.";
@@ -1798,7 +1843,7 @@
"Enable camera access" = "Permitir acceso a la cámara";
/* No comment provided by engineer. */
"Enable Flux" = "Habilitar Flux";
"Enable Flux" = "Habilita Flux";
/* No comment provided by engineer. */
"Enable for all" = "Activar para todos";
@@ -2296,7 +2341,7 @@
"Fix not supported by group member" = "Corrección no compatible con miembro del grupo";
/* No comment provided by engineer. */
"for better metadata privacy." = "para mayor privacidad de los metadatos.";
"for better metadata privacy." = "para mejorar la privacidad de los metadatos.";
/* servers error */
"For chat profile %@:" = "Para el perfil de chat %@:";
@@ -2424,27 +2469,6 @@
/* No comment provided by engineer. */
"Group links" = "Enlaces de grupo";
/* No comment provided by engineer. */
"Members can add message reactions." = "Los miembros pueden añadir reacciones a los mensajes.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Los miembros del grupo pueden enviar mensajes directos.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Los miembros del grupo pueden enviar mensajes temporales.";
/* No comment provided by engineer. */
"Members can send files and media." = "Los miembros del grupo pueden enviar archivos y multimedia.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Los miembros del grupo pueden enviar enlaces SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz.";
/* notification */
"Group message:" = "Mensaje de grupo:";
@@ -2715,6 +2739,9 @@
/* No comment provided by engineer. */
"Invite members" = "Invitar miembros";
/* No comment provided by engineer. */
"Invite to chat" = "Invitar al chat";
/* No comment provided by engineer. */
"Invite to group" = "Invitar al grupo";
@@ -2829,6 +2856,12 @@
/* swipe action */
"Leave" = "Salir";
/* No comment provided by engineer. */
"Leave chat" = "Salir del chat";
/* No comment provided by engineer. */
"Leave chat?" = "¿Salir del chat?";
/* No comment provided by engineer. */
"Leave group" = "Salir del grupo";
@@ -2925,15 +2958,42 @@
/* item status text */
"Member inactive" = "Miembro inactivo";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "El rol del miembro cambiará a \"%@\" y todos serán notificados.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "El rol del miembro cambiará a \"%@\" y se notificará al grupo.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "El rol del miembro cambiará a \"%@\" y recibirá una invitación nueva.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "El miembro será eliminado del chat. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "El miembro será expulsado del grupo. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Los miembros pueden añadir reacciones a los mensajes.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Los miembros del grupo pueden enviar mensajes directos.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Los miembros del grupo pueden enviar mensajes temporales.";
/* No comment provided by engineer. */
"Members can send files and media." = "Los miembros del grupo pueden enviar archivos y multimedia.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Los miembros del grupo pueden enviar enlaces SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz.";
/* No comment provided by engineer. */
"Menus" = "Menus";
@@ -3329,6 +3389,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "No se usarán hosts .onion.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Sólo los propietarios del chat pueden cambiar las preferencias.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes enviados con **cifrado de extremo a extremo de 2 capas**.";
@@ -3407,6 +3470,9 @@
/* alert title */
"Operator server" = "Servidor del operador";
/* No comment provided by engineer. */
"Or import archive file" = "O importa desde un archivo";
/* No comment provided by engineer. */
"Or paste archive link" = "O pegar enlace del archivo";
@@ -3561,7 +3627,7 @@
"Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos.";
/* No comment provided by engineer. */
"Preset server address" = "Dirección del servidor predefinida";
"Preset server address" = "Dirección predefinida del servidor";
/* No comment provided by engineer. */
"Preset servers" = "Servidores predefinidos";
@@ -3575,6 +3641,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Seguridad y Privacidad";
/* No comment provided by engineer. */
"Privacy for your customers." = "Privacidad para tus clientes.";
/* No comment provided by engineer. */
"Privacy redefined" = "Privacidad redefinida";
@@ -3669,10 +3738,7 @@
"Proxy requires password" = "El proxy requiere contraseña";
/* No comment provided by engineer. */
"Push notifications" = "Notificaciones automáticas";
/* No comment provided by engineer. */
"Push Notifications" = "Notificaciones push";
"Push notifications" = "Notificaciones push";
/* No comment provided by engineer. */
"Push server" = "Servidor push";
@@ -3696,7 +3762,7 @@
"Read" = "Leer";
/* No comment provided by engineer. */
"Read more" = "Conoce más";
"Read more" = "Saber más";
/* No comment provided by engineer. */
"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "Conoce más en la [Guía del Usuario](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode).";
@@ -3870,6 +3936,9 @@
/* chat item action */
"Reply" = "Responder";
/* chat list item title */
"requested to connect" = "solicitado para conectar";
/* No comment provided by engineer. */
"Required" = "Obligatorio";
@@ -3948,12 +4017,6 @@
/* No comment provided by engineer. */
"Safer groups" = "Grupos más seguros";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Las mismas condiciones se aplicarán al operador **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Las mismas condiciones se aplicarán a el/los operador(es) **%@**.";
/* alert button
chat item action */
"Save" = "Guardar";
@@ -3961,7 +4024,7 @@
/* alert button */
"Save (and notify contacts)" = "Guardar (y notificar contactos)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Guardar y notificar contacto";
/* No comment provided by engineer. */
@@ -3982,7 +4045,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Guardar la contraseña en Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "¿Guardar preferencias?";
/* No comment provided by engineer. */
@@ -4347,7 +4410,7 @@
"Share profile" = "Comparte perfil";
/* No comment provided by engineer. */
"Share SimpleX address on social media." = "Compartir dirección SimpleX en redes sociales.";
"Share SimpleX address on social media." = "Comparte tu dirección SimpleX en redes sociales.";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Comparte este enlace de un solo uso";
@@ -4395,10 +4458,13 @@
"SimpleX Address" = "Dirección SimpleX";
/* No comment provided by engineer. */
"SimpleX address and 1-time links are safe to share via any messenger." = "Compartir enlaces de un uso y direcciones SimpleX es seguro a través de cualquier medio.";
"SimpleX address and 1-time links are safe to share via any messenger." = "Compartir los enlaces de un uso y las direcciones SimpleX es seguro a través de cualquier medio.";
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "Dirección SimpleX o enlace de un uso?";
"SimpleX address or 1-time link?" = "¿Dirección SimpleX o enlace de un uso?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "Simplex Chat y Flux han acordado incluir servidores operados por Flux en la aplicación";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "La seguridad de SimpleX Chat ha sido auditada por Trail of Bits.";
@@ -4580,6 +4646,9 @@
/* No comment provided by engineer. */
"Tap button " = "Pulsa el botón ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Pulsa Crear dirección SimpleX en el menú para crearla más tarde.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Pulsa sobre un perfil para activarlo.";
@@ -4695,7 +4764,13 @@
"The profile is only shared with your contacts." = "El perfil sólo se comparte con tus contactos.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "El segundo operador predefinido!";
"The same conditions will apply to operator **%@**." = "Las mismas condiciones se aplicarán al operador **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Las mismas condiciones se aplicarán a el/los operador(es) **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "¡Segundo operador predefinido!";
/* No comment provided by engineer. */
"The second tick we missed! ✅" = "¡El doble check que nos faltaba! ✅";
@@ -4704,7 +4779,7 @@
"The sender will NOT be notified" = "El remitente NO será notificado";
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Lista de servidores para las conexiones nuevas de tu perfil actual **%@**.";
"The servers for new connections of your current chat profile **%@**." = "Lista de servidores para las conexiones nuevas del perfil **%@**.";
/* No comment provided by engineer. */
"The servers for new files of your current chat profile **%@**." = "Los servidores para archivos nuevos en tu perfil actual **%@**.";
@@ -5280,7 +5355,10 @@
"You already have a chat profile with the same display name. Please choose another name." = "Ya tienes un perfil con este nombre mostrado. Por favor, elige otro nombre.";
/* No comment provided by engineer. */
"You are already connected to %@." = "Ya estás conectado a %@.";
"You are already connected to %@." = "Ya estás conectado con %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Ya estás conectado con %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Ya estás conectando con %@.";
@@ -5480,6 +5558,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Seguirás recibiendo llamadas y notificaciones de los perfiles silenciados cuando estén activos.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Dejarás de recibir mensajes de este chat. El historial del chat se conserva.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Dejarás de recibir mensajes de este grupo. El historial del chat se conservará.";
+21 -21
View File
@@ -711,7 +711,7 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Yhteyden muodostaminen palvelimeen... (virhe: %@)";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "yhdistää…";
/* No comment provided by engineer. */
@@ -1520,24 +1520,6 @@
/* No comment provided by engineer. */
"Group links" = "Ryhmälinkit";
/* No comment provided by engineer. */
"Members can add message reactions." = "Ryhmän jäsenet voivat lisätä viestireaktioita.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Ryhmän jäsenet voivat poistaa lähetetyt viestit peruuttamattomasti. (24 tuntia)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Ryhmän jäsenet voivat lähettää suoraviestejä.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Ryhmän jäsenet voivat lähettää katoavia viestejä.";
/* No comment provided by engineer. */
"Members can send files and media." = "Ryhmän jäsenet voivat lähettää tiedostoja ja mediaa.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Ryhmän jäsenet voivat lähettää ääniviestejä.";
/* notification */
"Group message:" = "Ryhmäviesti:";
@@ -1910,6 +1892,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Jäsen poistetaan ryhmästä - tätä ei voi perua!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Ryhmän jäsenet voivat lisätä viestireaktioita.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Ryhmän jäsenet voivat poistaa lähetetyt viestit peruuttamattomasti. (24 tuntia)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Ryhmän jäsenet voivat lähettää suoraviestejä.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Ryhmän jäsenet voivat lähettää katoavia viestejä.";
/* No comment provided by engineer. */
"Members can send files and media." = "Ryhmän jäsenet voivat lähettää tiedostoja ja mediaa.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Ryhmän jäsenet voivat lähettää ääniviestejä.";
/* item status text */
"Message delivery error" = "Viestin toimitusvirhe";
@@ -2508,7 +2508,7 @@
/* alert button */
"Save (and notify contacts)" = "Tallenna (ja ilmoita kontakteille)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Tallenna ja ilmoita kontaktille";
/* No comment provided by engineer. */
@@ -2526,7 +2526,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Tallenna tunnuslause Avainnippuun";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Tallenna asetukset?";
/* No comment provided by engineer. */
+25 -25
View File
@@ -431,7 +431,7 @@
"All data is erased when it is entered." = "Toutes les données sont effacées lorsqu'il est saisi.";
/* No comment provided by engineer. */
"All data is private to your device." = "Toutes les données restent confinées dans votre appareil.";
"All data is kept private on your device." = "Toutes les données restent confinées dans votre appareil.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Tous les membres du groupe resteront connectés.";
@@ -1101,7 +1101,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Connexion au bureau";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "connexion…";
/* No comment provided by engineer. */
@@ -2301,27 +2301,6 @@
/* No comment provided by engineer. */
"Group links" = "Liens de groupe";
/* No comment provided by engineer. */
"Members can add message reactions." = "Les membres du groupe peuvent ajouter des réactions aux messages.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Les membres du groupe peuvent supprimer de manière irréversible les messages envoyés. (24 heures)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Les membres du groupe peuvent envoyer des messages directs.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Les membres du groupes peuvent envoyer des messages éphémères.";
/* No comment provided by engineer. */
"Members can send files and media." = "Les membres du groupe peuvent envoyer des fichiers et des médias.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Les membres du groupe peuvent envoyer des liens SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Les membres du groupe peuvent envoyer des messages vocaux.";
/* notification */
"Group message:" = "Message du groupe:";
@@ -2805,6 +2784,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Ce membre sera retiré du groupe - impossible de revenir en arrière!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Les membres du groupe peuvent ajouter des réactions aux messages.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Les membres du groupe peuvent supprimer de manière irréversible les messages envoyés. (24 heures)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Les membres du groupe peuvent envoyer des messages directs.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Les membres du groupes peuvent envoyer des messages éphémères.";
/* No comment provided by engineer. */
"Members can send files and media." = "Les membres du groupe peuvent envoyer des fichiers et des médias.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Les membres du groupe peuvent envoyer des liens SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Les membres du groupe peuvent envoyer des messages vocaux.";
/* No comment provided by engineer. */
"Menus" = "Menus";
@@ -3763,7 +3763,7 @@
/* alert button */
"Save (and notify contacts)" = "Enregistrer (et en informer les contacts)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Enregistrer et en informer le contact";
/* No comment provided by engineer. */
@@ -3784,7 +3784,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Enregistrer la phrase secrète dans la Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Enregistrer les préférences?";
/* No comment provided by engineer. */
+127 -46
View File
@@ -344,7 +344,10 @@
"Abort changing address?" = "Címváltoztatás megszakítása??";
/* No comment provided by engineer. */
"About SimpleX Chat" = "A SimpleX Chatről";
"About operators" = "Az üzemeltetőkről";
/* No comment provided by engineer. */
"About SimpleX Chat" = "SimpleX Chat névjegye";
/* No comment provided by engineer. */
"above, then choose:" = "gombra fent, majd válassza ki:";
@@ -376,6 +379,9 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Elfogadott feltételek";
/* chat list item title */
"accepted invitation" = "elfogadott meghívó";
/* No comment provided by engineer. */
"Acknowledged" = "Nyugtázva";
@@ -388,6 +394,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Cím hozzáadása a profilhoz, hogy az ismerősei megoszthassák másokkal. A profilfrissítés elküldésre kerül az ismerősei számára.";
/* No comment provided by engineer. */
"Add friends" = "Barátok hozzáadása";
/* No comment provided by engineer. */
"Add profile" = "Profil hozzáadása";
@@ -397,12 +406,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Kiszolgáló hozzáadása QR-kód beolvasásával.";
/* No comment provided by engineer. */
"Add team members" = "Csapattagok hozzáadása";
/* No comment provided by engineer. */
"Add to another device" = "Hozzáadás egy másik eszközhöz";
/* No comment provided by engineer. */
"Add welcome message" = "Üdvözlőüzenet hozzáadása";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Adja hozzá csapattagjait a beszélgetésekhez.";
/* No comment provided by engineer. */
"Added media & file servers" = "Hozzáadott média- és fájlkiszolgálók";
@@ -464,7 +479,7 @@
"All data is erased when it is entered." = "A jelkód megadása után az összes adat törlésre kerül.";
/* No comment provided by engineer. */
"All data is private to your device." = "Az összes adat biztonságban van az eszközén.";
"All data is kept private on your device." = "Az összes adat biztonságban van az eszközén.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Az összes csoporttag kapcsolatban marad.";
@@ -770,7 +785,7 @@
"Blur for better privacy." = "Elhomályosítás a jobb adatvédelemért.";
/* No comment provided by engineer. */
"Blur media" = "Média elhomályosítása";
"Blur media" = "Médiatartalom elhomályosítása";
/* No comment provided by engineer. */
"bold" = "félkövér";
@@ -793,6 +808,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bolgár, finn, thai és ukrán köszönet a felhasználóknak és a [Weblate-nek](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Üzleti cím";
/* No comment provided by engineer. */
"Business chats" = "Üzleti csevegések";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "A csevegési profillal (alapértelmezett), vagy a [kapcsolattal] (https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BÉTA).";
@@ -863,6 +884,9 @@
/* No comment provided by engineer. */
"Change" = "Változtatás";
/* authentication reason */
"Change chat profiles" = "Csevegési profilok megváltoztatása";
/* No comment provided by engineer. */
"Change database passphrase?" = "Adatbázis-jelmondat megváltoztatása?";
@@ -891,9 +915,6 @@
set passcode view */
"Change self-destruct passcode" = "Önmegsemmisító jelkód megváltoztatása";
/* authentication reason */
"Change user profiles" = "Felhasználói profilok megváltoztatása";
/* chat item text */
"changed address for you" = "cím megváltoztatva";
@@ -909,6 +930,15 @@
/* chat item text */
"changing address…" = "cím megváltoztatása…";
/* No comment provided by engineer. */
"Chat" = "Csevegés";
/* No comment provided by engineer. */
"Chat already exists" = "A csevegés már létezik";
/* No comment provided by engineer. */
"Chat already exists!" = "A csevegés már létezik!";
/* No comment provided by engineer. */
"Chat colors" = "Csevegés színei";
@@ -954,6 +984,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Csevegés témája";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "A csevegés minden tag számára törlésre kerül - ezt a műveletet nem lehet visszavonni!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "A csevegés törlésre kerül az Ön számára - ezt a műveletet nem lehet visszavonni!";
/* No comment provided by engineer. */
"Chats" = "Csevegések";
@@ -1030,7 +1066,7 @@
"Conditions are accepted for the operator(s): **%@**." = "A következő üzemeltető(k) számára elfogadott feltételek: **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "A feltételek már el lettek fogadva a következő üzemeltető(k) számára: **%@**.";
"Conditions are already accepted for these operator(s): **%@**." = "A feltételek már el lettek fogadva a következő üzemeltető(k) számára: **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Használati feltételek";
@@ -1173,7 +1209,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Kapcsolódás a számítógéphez";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "kapcsolódás…";
/* No comment provided by engineer. */
@@ -1475,12 +1511,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Törlés, és az ismerős értesítése";
/* No comment provided by engineer. */
"Delete chat" = "Csevegés törlése";
/* No comment provided by engineer. */
"Delete chat profile" = "Csevegési profil törlése";
/* No comment provided by engineer. */
"Delete chat profile?" = "Csevegési profil törlése?";
/* No comment provided by engineer. */
"Delete chat?" = "Csevegés törlése?";
/* No comment provided by engineer. */
"Delete connection" = "Kapcsolat törlése";
@@ -1655,6 +1697,9 @@
/* chat feature */
"Direct messages" = "Közvetlen üzenetek";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "A tagok közötti közvetlen üzenetek le vannak tiltva ebben a csevegésben.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "A közvetlen üzenetek küldése a tagok között le van tiltva ebben a csoportban.";
@@ -2305,7 +2350,7 @@
"For console" = "Konzolhoz";
/* No comment provided by engineer. */
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Ha például az ismerőse a SimpleX Chat kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása a Flux egyik kiszolgálóját használja a kézbesítéshez.";
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Például, ha az Ön ismerőse egy SimpleX Chat-kiszolgálón keresztül fogadja az üzeneteket, az Ön alkalmazása egy Flux-kiszolgálón keresztül fogja azokat kézbesíteni.";
/* No comment provided by engineer. */
"For private routing" = "A privát útválasztáshoz";
@@ -2424,27 +2469,6 @@
/* No comment provided by engineer. */
"Group links" = "Csoporthivatkozások";
/* No comment provided by engineer. */
"Members can add message reactions." = "Csoporttagok üzenetreakciókat adhatnak hozzá.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)";
/* No comment provided by engineer. */
"Members can send direct messages." = "A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "A csoport tagjai küldhetnek eltűnő üzeneteket.";
/* No comment provided by engineer. */
"Members can send files and media." = "A csoport tagjai küldhetnek fájlokat és médiatartalmakat.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "A csoport tagjai küldhetnek SimpleX-hivatkozásokat.";
/* No comment provided by engineer. */
"Members can send voice messages." = "A csoport tagjai küldhetnek hangüzeneteket.";
/* notification */
"Group message:" = "Csoport üzenet:";
@@ -2715,6 +2739,9 @@
/* No comment provided by engineer. */
"Invite members" = "Tagok meghívása";
/* No comment provided by engineer. */
"Invite to chat" = "Meghívás a csevegésbe";
/* No comment provided by engineer. */
"Invite to group" = "Meghívás a csoportba";
@@ -2829,6 +2856,12 @@
/* swipe action */
"Leave" = "Elhagyás";
/* No comment provided by engineer. */
"Leave chat" = "Csevegés elhagyása";
/* No comment provided by engineer. */
"Leave chat?" = "Csevegés elhagyása?";
/* No comment provided by engineer. */
"Leave group" = "Csoport elhagyása";
@@ -2925,15 +2958,42 @@
/* item status text */
"Member inactive" = "Inaktív tag";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "A tag szerepeköre meg fog változni a következőre: \"%@\". A csevegés tagjai értesítést fognak kapni.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "A tag szerepköre meg fog változni erre: „%@”. A csoportban az összes tag értesítve lesz.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "A tag szerepköre meg fog változni erre: „%@”. A tag új meghívást fog kapni.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "A tag el lesz távolítva a csevegésből - ezt a műveletet nem lehet visszavonni!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "A tag eltávolítása a csoportból - ez a művelet nem vonható vissza!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Csoporttagok üzenetreakciókat adhatnak hozzá.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)";
/* No comment provided by engineer. */
"Members can send direct messages." = "A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "A csoport tagjai küldhetnek eltűnő üzeneteket.";
/* No comment provided by engineer. */
"Members can send files and media." = "A csoport tagjai küldhetnek fájlokat és médiatartalmakat.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "A csoport tagjai küldhetnek SimpleX-hivatkozásokat.";
/* No comment provided by engineer. */
"Members can send voice messages." = "A csoport tagjai küldhetnek hangüzeneteket.";
/* No comment provided by engineer. */
"Menus" = "Menük";
@@ -3329,6 +3389,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion-kiszolgálók nem lesznek használva.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Csak a csevegés tulajdonosai módosíthatják a beállításokat.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Csak az eszközök alkalmazásai tárolják a felhasználó-profilokat, névjegyeket, csoportokat és a **2 rétegű végpontok közötti titkosítással** küldött üzeneteket.";
@@ -3407,6 +3470,9 @@
/* alert title */
"Operator server" = "Kiszolgáló üzemeltető";
/* No comment provided by engineer. */
"Or import archive file" = "Vagy archívumfájl importálása";
/* No comment provided by engineer. */
"Or paste archive link" = "Vagy az archívum hivatkozásának beillesztése";
@@ -3575,6 +3641,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Adatvédelem és biztonság";
/* No comment provided by engineer. */
"Privacy for your customers." = "Az Ön ügyfeleinek adatvédelme.";
/* No comment provided by engineer. */
"Privacy redefined" = "Adatvédelem újraértelmezve";
@@ -3645,7 +3714,7 @@
"Protect app screen" = "Alkalmazás képernyőjének védelme";
/* No comment provided by engineer. */
"Protect IP address" = "IP-cím védelem";
"Protect IP address" = "IP-cím védelme";
/* No comment provided by engineer. */
"Protect your chat profiles with a password!" = "Védje meg a csevegési profiljait egy jelszóval!";
@@ -3671,9 +3740,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Push-értesítések";
/* No comment provided by engineer. */
"Push Notifications" = "Push értesítések";
/* No comment provided by engineer. */
"Push server" = "Push-kiszolgáló";
@@ -3870,6 +3936,9 @@
/* chat item action */
"Reply" = "Válasz";
/* chat list item title */
"requested to connect" = "kérelmezve a kapcsolódáshoz";
/* No comment provided by engineer. */
"Required" = "Szükséges";
@@ -3948,12 +4017,6 @@
/* No comment provided by engineer. */
"Safer groups" = "Biztonságosabb csoportok";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Ugyanezek a feltételek vonatkoznak a következő üzemeltetőre is: **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.";
/* alert button
chat item action */
"Save" = "Mentés";
@@ -3961,7 +4024,7 @@
/* alert button */
"Save (and notify contacts)" = "Mentés és az ismerősök értesítése";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Mentés és az ismerős értesítése";
/* No comment provided by engineer. */
@@ -3982,7 +4045,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Jelmondat mentése a kulcstartóba";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Beállítások mentése?";
/* No comment provided by engineer. */
@@ -4007,10 +4070,10 @@
"Saved" = "Mentett";
/* No comment provided by engineer. */
"Saved from" = "Mentve innen:";
"Saved from" = "Elmentve innen:";
/* No comment provided by engineer. */
"saved from %@" = "mentve innen: %@";
"saved from %@" = "elmentve innen: %@";
/* message info title */
"Saved message" = "Mentett üzenet";
@@ -4400,6 +4463,9 @@
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "SimpleX-cím vagy egyszer használható meghívó-hivatkozás?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "A SimpleX Chat és a Flux megállapodást kötött arról, hogy a Flux által üzemeltetett kiszolgálókat beépítik az alkalmazásba.";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "A SimpleX Chat biztonsága a Trail of Bits által lett auditálva.";
@@ -4580,6 +4646,9 @@
/* No comment provided by engineer. */
"Tap button " = "Koppintson a ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Koppintson a SimpleX-cím létrehozása menüpontra a későbbi létrehozáshoz.";
/* No comment provided by engineer. */
"Tap to activate profile." = "A profil aktiválásához koppintson az ikonra.";
@@ -4694,6 +4763,12 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "A profilja csak az ismerőseivel kerül megosztásra.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltetőre is: **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Ugyanezek a feltételek lesznek elfogadva a következő üzemeltető(k)re is: **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "A második előre beállított üzemeltető az alkalmazásban!";
@@ -5282,6 +5357,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Ön már kapcsolódva van ehhez: %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Ön már kapcsolódva van vele: %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Már folyamatban van a kapcsolódás ehhez: %@.";
@@ -5331,7 +5409,7 @@
"You can configure operators in Network & servers settings." = "Az üzemeltetőket a „Hálózat és kiszolgálók” beállításaban konfigurálhatja.";
/* No comment provided by engineer. */
"You can configure servers via settings." = "A kiszolgálókat a beállításokon keresztül konfigurálhatja.";
"You can configure servers via settings." = "A kiszolgálókat a „Hálózat és kiszolgálók” menüben konfigurálhatja.";
/* No comment provided by engineer. */
"You can create it later" = "Létrehozás később";
@@ -5361,7 +5439,7 @@
"You can set connection name, to remember who the link was shared with." = "Beállíthatja az ismerős nevét, hogy emlékezzen arra, hogy kivel osztotta meg a hivatkozást.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.";
"You can set lock screen notification preview via settings." = "A lezárási képernyő értesítési előnézetét az „Értesítések” menüben állíthatja be.";
/* No comment provided by engineer. */
"You can share a link or a QR code - anybody will be able to join the group. You won't lose members of the group if you later delete it." = "Megoszthat egy hivatkozást vagy QR-kódot - így bárki csatlakozhat a csoporthoz. Ha a csoport később törlésre kerül, akkor nem fogja elveszíteni annak tagjait.";
@@ -5480,6 +5558,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Továbbra is kap hívásokat és értesítéseket a némított profiloktól, ha azok aktívak.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Ön nem fog több üzenetet kapni ebből a csevegésből, de a csevegés előzményei megmaradnak.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Ettől a csoporttól nem fog értesítéseket kapni. A csevegési előzmények megmaradnak.";
+118 -46
View File
@@ -388,6 +388,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Aggiungi l'indirizzo al tuo profilo, in modo che i tuoi contatti possano condividerlo con altre persone. L'aggiornamento del profilo verrà inviato ai tuoi contatti.";
/* No comment provided by engineer. */
"Add friends" = "Aggiungi amici";
/* No comment provided by engineer. */
"Add profile" = "Aggiungi profilo";
@@ -397,12 +400,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Aggiungi server scansionando codici QR.";
/* No comment provided by engineer. */
"Add team members" = "Aggiungi membri del team";
/* No comment provided by engineer. */
"Add to another device" = "Aggiungi ad un altro dispositivo";
/* No comment provided by engineer. */
"Add welcome message" = "Aggiungi messaggio di benvenuto";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Aggiungi i membri del tuo team alle conversazioni.";
/* No comment provided by engineer. */
"Added media & file servers" = "Server di multimediali e file aggiunti";
@@ -464,7 +473,7 @@
"All data is erased when it is entered." = "Tutti i dati vengono cancellati quando inserito.";
/* No comment provided by engineer. */
"All data is private to your device." = "Tutti i dati sono privati, nel tuo dispositivo.";
"All data is kept private on your device." = "Tutti i dati sono privati, nel tuo dispositivo.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Tutti i membri del gruppo resteranno connessi.";
@@ -680,10 +689,10 @@
"Auto-accept" = "Accetta automaticamente";
/* No comment provided by engineer. */
"Auto-accept contact requests" = "Auto-accetta richieste di contatto";
"Auto-accept contact requests" = "Auto-accetta le richieste di contatto";
/* No comment provided by engineer. */
"Auto-accept images" = "Auto-accetta immagini";
"Auto-accept images" = "Auto-accetta le immagini";
/* alert title */
"Auto-accept settings" = "Accetta automaticamente le impostazioni";
@@ -770,7 +779,7 @@
"Blur for better privacy." = "Sfoca per una privacy maggiore.";
/* No comment provided by engineer. */
"Blur media" = "Sfocatura file multimediali";
"Blur media" = "Sfocatura dei file multimediali";
/* No comment provided by engineer. */
"bold" = "grassetto";
@@ -793,6 +802,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgaro, finlandese, tailandese e ucraino - grazie agli utenti e a [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Indirizzo di lavoro";
/* No comment provided by engineer. */
"Business chats" = "Chat di lavoro";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per profilo di chat (predefinito) o [per connessione](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -863,6 +878,9 @@
/* No comment provided by engineer. */
"Change" = "Cambia";
/* authentication reason */
"Change chat profiles" = "Modifica profili utente";
/* No comment provided by engineer. */
"Change database passphrase?" = "Cambiare password del database?";
@@ -891,9 +909,6 @@
set passcode view */
"Change self-destruct passcode" = "Cambia codice di autodistruzione";
/* authentication reason */
"Change user profiles" = "Modifica profili utente";
/* chat item text */
"changed address for you" = "indirizzo cambiato per te";
@@ -909,6 +924,15 @@
/* chat item text */
"changing address…" = "cambio indirizzo…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "La chat esiste già";
/* No comment provided by engineer. */
"Chat already exists!" = "La chat esiste già!";
/* No comment provided by engineer. */
"Chat colors" = "Colori della chat";
@@ -954,6 +978,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Tema della chat";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "La chat verrà eliminata per tutti i membri, non è reversibile!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "La chat verrà eliminata solo per te, non è reversibile!";
/* No comment provided by engineer. */
"Chats" = "Chat";
@@ -1030,7 +1060,7 @@
"Conditions are accepted for the operator(s): **%@**." = "Le condizioni sono state accettate per gli operatori: **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "Le condizioni sono già state accettate per i seguenti operatori: **%@**.";
"Conditions are already accepted for these operator(s): **%@**." = "Le condizioni sono già state accettate per i seguenti operatori: **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Condizioni d'uso";
@@ -1173,7 +1203,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Connessione al desktop";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "in connessione…";
/* No comment provided by engineer. */
@@ -1475,12 +1505,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Elimina e avvisa il contatto";
/* No comment provided by engineer. */
"Delete chat" = "Elimina chat";
/* No comment provided by engineer. */
"Delete chat profile" = "Elimina il profilo di chat";
/* No comment provided by engineer. */
"Delete chat profile?" = "Eliminare il profilo di chat?";
/* No comment provided by engineer. */
"Delete chat?" = "Eliminare la chat?";
/* No comment provided by engineer. */
"Delete connection" = "Elimina connessione";
@@ -1655,6 +1691,9 @@
/* chat feature */
"Direct messages" = "Messaggi diretti";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "I messaggi diretti tra i membri sono vietati in questa chat.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "I messaggi diretti tra i membri sono vietati in questo gruppo.";
@@ -2424,27 +2463,6 @@
/* No comment provided by engineer. */
"Group links" = "Link del gruppo";
/* No comment provided by engineer. */
"Members can add message reactions." = "I membri del gruppo possono aggiungere reazioni ai messaggi.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore)";
/* No comment provided by engineer. */
"Members can send direct messages." = "I membri del gruppo possono inviare messaggi diretti.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "I membri del gruppo possono inviare messaggi a tempo.";
/* No comment provided by engineer. */
"Members can send files and media." = "I membri del gruppo possono inviare file e contenuti multimediali.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "I membri del gruppo possono inviare link di Simplex.";
/* No comment provided by engineer. */
"Members can send voice messages." = "I membri del gruppo possono inviare messaggi vocali.";
/* notification */
"Group message:" = "Messaggio del gruppo:";
@@ -2715,6 +2733,9 @@
/* No comment provided by engineer. */
"Invite members" = "Invita membri";
/* No comment provided by engineer. */
"Invite to chat" = "Invita in chat";
/* No comment provided by engineer. */
"Invite to group" = "Invita al gruppo";
@@ -2829,6 +2850,12 @@
/* swipe action */
"Leave" = "Esci";
/* No comment provided by engineer. */
"Leave chat" = "Esci dalla chat";
/* No comment provided by engineer. */
"Leave chat?" = "Uscire dalla chat?";
/* No comment provided by engineer. */
"Leave group" = "Esci dal gruppo";
@@ -2925,15 +2952,42 @@
/* item status text */
"Member inactive" = "Membro inattivo";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Il ruolo del membro verrà cambiato in \"%@\". Verranno notificati tutti i membri della chat.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "Il ruolo del membro verrà cambiato in \"%@\". Tutti i membri del gruppo verranno avvisati.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Il ruolo del membro verrà cambiato in \"%@\". Il membro riceverà un invito nuovo.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Il membro verrà rimosso dalla chat, non è reversibile!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Il membro verrà rimosso dal gruppo, non è reversibile!";
/* No comment provided by engineer. */
"Members can add message reactions." = "I membri del gruppo possono aggiungere reazioni ai messaggi.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore)";
/* No comment provided by engineer. */
"Members can send direct messages." = "I membri del gruppo possono inviare messaggi diretti.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "I membri del gruppo possono inviare messaggi a tempo.";
/* No comment provided by engineer. */
"Members can send files and media." = "I membri del gruppo possono inviare file e contenuti multimediali.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "I membri del gruppo possono inviare link di Simplex.";
/* No comment provided by engineer. */
"Members can send voice messages." = "I membri del gruppo possono inviare messaggi vocali.";
/* No comment provided by engineer. */
"Menus" = "Menu";
@@ -2950,7 +3004,7 @@
"Message delivery warning" = "Avviso di consegna del messaggio";
/* No comment provided by engineer. */
"Message draft" = "Bozza dei messaggi";
"Message draft" = "Bozza del messaggio";
/* item status text */
"Message forwarded" = "Messaggio inoltrato";
@@ -3329,6 +3383,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Gli host Onion non verranno usati.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Solo i proprietari della chat possono modificarne le preferenze.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Solo i dispositivi client archiviano profili utente, i contatti, i gruppi e i messaggi inviati con la **crittografia end-to-end a 2 livelli**.";
@@ -3407,6 +3464,9 @@
/* alert title */
"Operator server" = "Server dell'operatore";
/* No comment provided by engineer. */
"Or import archive file" = "O importa file archivio";
/* No comment provided by engineer. */
"Or paste archive link" = "O incolla il link dell'archivio";
@@ -3575,6 +3635,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Privacy e sicurezza";
/* No comment provided by engineer. */
"Privacy for your customers." = "Privacy per i tuoi clienti.";
/* No comment provided by engineer. */
"Privacy redefined" = "Privacy ridefinita";
@@ -3671,9 +3734,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Notifiche push";
/* No comment provided by engineer. */
"Push Notifications" = "Notifiche push";
/* No comment provided by engineer. */
"Push server" = "Server push";
@@ -3922,10 +3982,10 @@
"Reveal" = "Rivela";
/* No comment provided by engineer. */
"Review conditions" = "Esamina le condizioni";
"Review conditions" = "Leggi le condizioni";
/* No comment provided by engineer. */
"Review later" = "Esamina più tardi";
"Review later" = "Leggi più tardi";
/* No comment provided by engineer. */
"Revoke" = "Revoca";
@@ -3948,12 +4008,6 @@
/* No comment provided by engineer. */
"Safer groups" = "Gruppi più sicuri";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Le stesse condizioni si applicheranno all'operatore **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Le stesse condizioni si applicheranno agli operatori **%@**.";
/* alert button
chat item action */
"Save" = "Salva";
@@ -3961,7 +4015,7 @@
/* alert button */
"Save (and notify contacts)" = "Salva (e avvisa i contatti)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Salva e avvisa il contatto";
/* No comment provided by engineer. */
@@ -3982,7 +4036,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Salva password nel portachiavi";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Salvare le preferenze?";
/* No comment provided by engineer. */
@@ -4127,7 +4181,7 @@
"Send errors" = "Errori di invio";
/* No comment provided by engineer. */
"Send link previews" = "Invia anteprime dei link";
"Send link previews" = "Invia le anteprime dei link";
/* No comment provided by engineer. */
"Send live message" = "Invia messaggio in diretta";
@@ -4347,7 +4401,7 @@
"Share profile" = "Condividi il profilo";
/* No comment provided by engineer. */
"Share SimpleX address on social media." = "Condividi indirizzo SimpleX sui social media.";
"Share SimpleX address on social media." = "Condividi l'indirizzo SimpleX sui social media.";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Condividi questo link di invito una tantum";
@@ -4400,6 +4454,9 @@
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "Indirizzo SimpleX o link una tantum?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX Chat e Flux hanno concluso un accordo per includere server gestiti da Flux nell'app";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "La sicurezza di SimpleX Chat è stata verificata da Trail of Bits.";
@@ -4580,6 +4637,9 @@
/* No comment provided by engineer. */
"Tap button " = "Tocca il pulsante ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tocca Crea indirizzo SimpleX nel menu per crearlo più tardi.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Tocca per attivare il profilo.";
@@ -4694,6 +4754,12 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Il profilo è condiviso solo con i tuoi contatti.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Le stesse condizioni si applicheranno all'operatore **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Le stesse condizioni si applicheranno agli operatori **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "Il secondo operatore preimpostato nell'app!";
@@ -5282,6 +5348,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Sei già connesso/a a %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Sei già connesso/a con %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Ti stai già connettendo a %@.";
@@ -5480,6 +5549,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Continuerai a ricevere chiamate e notifiche da profili silenziati quando sono attivi.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Non riceverai più messaggi da questa chat. La cronologia della chat verrà conservata.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Non riceverai più messaggi da questo gruppo. La cronologia della chat verrà conservata.";
+21 -21
View File
@@ -828,7 +828,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "デスクトップに接続中";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "接続待ち…";
/* No comment provided by engineer. */
@@ -1661,24 +1661,6 @@
/* No comment provided by engineer. */
"Group links" = "グループのリンク";
/* No comment provided by engineer. */
"Members can add message reactions." = "グループメンバーはメッセージへのリアクションを追加できます。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。(24時間)";
/* No comment provided by engineer. */
"Members can send direct messages." = "グループのメンバーがダイレクトメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "グループのメンバーが消えるメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send files and media." = "グループメンバーはファイルやメディアを送信できます。";
/* No comment provided by engineer. */
"Members can send voice messages." = "グループのメンバーが音声メッセージを送信できます。";
/* notification */
"Group message:" = "グループメッセージ:";
@@ -2051,6 +2033,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "メンバーをグループから除名する (※元に戻せません※)!";
/* No comment provided by engineer. */
"Members can add message reactions." = "グループメンバーはメッセージへのリアクションを追加できます。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。(24時間)";
/* No comment provided by engineer. */
"Members can send direct messages." = "グループのメンバーがダイレクトメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "グループのメンバーが消えるメッセージを送信できます。";
/* No comment provided by engineer. */
"Members can send files and media." = "グループメンバーはファイルやメディアを送信できます。";
/* No comment provided by engineer. */
"Members can send voice messages." = "グループのメンバーが音声メッセージを送信できます。";
/* item status text */
"Message delivery error" = "メッセージ送信エラー";
@@ -2655,7 +2655,7 @@
/* alert button */
"Save (and notify contacts)" = "保存(連絡先に通知)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "保存して、連絡先にに知らせる";
/* No comment provided by engineer. */
@@ -2673,7 +2673,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "パスフレーズをキーチェーンに保存";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "この設定でよろしいですか?";
/* No comment provided by engineer. */
+141 -60
View File
@@ -343,6 +343,9 @@
/* No comment provided by engineer. */
"Abort changing address?" = "Adres wijziging afbreken?";
/* No comment provided by engineer. */
"About operators" = "Over operatoren";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Over SimpleX Chat";
@@ -376,6 +379,9 @@
/* No comment provided by engineer. */
"Accepted conditions" = "Geaccepteerde voorwaarden";
/* chat list item title */
"accepted invitation" = "geaccepteerde uitnodiging";
/* No comment provided by engineer. */
"Acknowledged" = "Erkend";
@@ -388,6 +394,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Voeg een adres toe aan uw profiel, zodat uw contacten het met andere mensen kunnen delen. Profiel update wordt naar uw contacten verzonden.";
/* No comment provided by engineer. */
"Add friends" = "Vrienden toevoegen";
/* No comment provided by engineer. */
"Add profile" = "Profiel toevoegen";
@@ -397,12 +406,18 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Servers toevoegen door QR-codes te scannen.";
/* No comment provided by engineer. */
"Add team members" = "Teamleden toevoegen";
/* No comment provided by engineer. */
"Add to another device" = "Toevoegen aan een ander apparaat";
/* No comment provided by engineer. */
"Add welcome message" = "Welkom bericht toevoegen";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Voeg uw teamleden toe aan de gesprekken.";
/* No comment provided by engineer. */
"Added media & file servers" = "Media- en bestandsservers toegevoegd";
@@ -464,7 +479,7 @@
"All data is erased when it is entered." = "Alle gegevens worden bij het invoeren gewist.";
/* No comment provided by engineer. */
"All data is private to your device." = "Alle gegevens zijn privé op uw apparaat.";
"All data is kept private on your device." = "Alle gegevens zijn privé op uw apparaat.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Alle groepsleden blijven verbonden.";
@@ -512,7 +527,7 @@
"Allow downgrade" = "Downgraden toestaan";
/* No comment provided by engineer. */
"Allow irreversible message deletion only if your contact allows it to you. (24 hours)" = "Sta het onomkeerbaar verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)";
"Allow irreversible message deletion only if your contact allows it to you. (24 hours)" = "Sta het definitief verwijderen van berichten alleen toe als uw contact dit toestaat. (24 uur)";
/* No comment provided by engineer. */
"Allow message reactions only if your contact allows them." = "Sta bericht reacties alleen toe als uw contact dit toestaat.";
@@ -530,7 +545,7 @@
"Allow sharing" = "Delen toestaan";
/* No comment provided by engineer. */
"Allow to irreversibly delete sent messages. (24 hours)" = "Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur)";
"Allow to irreversibly delete sent messages. (24 hours)" = "Sta toe om verzonden berichten definitief te verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Allow to send files and media." = "Sta toe om bestanden en media te verzenden.";
@@ -554,7 +569,7 @@
"Allow your contacts to call you." = "Sta toe dat uw contacten u bellen.";
/* No comment provided by engineer. */
"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Laat uw contacten verzonden berichten onomkeerbaar verwijderen. (24 uur)";
"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Laat uw contacten verzonden berichten definitief verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Allow your contacts to send disappearing messages." = "Sta toe dat uw contacten verdwijnende berichten verzenden.";
@@ -659,7 +674,7 @@
"Audio/video calls" = "Audio/video oproepen";
/* No comment provided by engineer. */
"Audio/video calls are prohibited." = "Audio/video gesprekken zijn verboden.";
"Audio/video calls are prohibited." = "Audio/video gesprekken zijn niet toegestaan.";
/* PIN entry */
"Authentication cancelled" = "Verificatie geannuleerd";
@@ -793,6 +808,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Bulgaars, Fins, Thais en Oekraïens - dankzij de gebruikers en [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Zakelijk adres";
/* No comment provided by engineer. */
"Business chats" = "Zakelijke chats";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Via chatprofiel (standaard) of [via verbinding](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
@@ -815,7 +836,7 @@
"Calls" = "Oproepen";
/* No comment provided by engineer. */
"Calls prohibited!" = "Bellen verboden!";
"Calls prohibited!" = "Bellen niet toegestaan!";
/* No comment provided by engineer. */
"Camera not available" = "Camera niet beschikbaar";
@@ -863,6 +884,9 @@
/* No comment provided by engineer. */
"Change" = "Veranderen";
/* authentication reason */
"Change chat profiles" = "Gebruikersprofielen wijzigen";
/* No comment provided by engineer. */
"Change database passphrase?" = "Wachtwoord database wijzigen?";
@@ -891,9 +915,6 @@
set passcode view */
"Change self-destruct passcode" = "Zelfvernietigings code wijzigen";
/* authentication reason */
"Change user profiles" = "Gebruikersprofielen wijzigen";
/* chat item text */
"changed address for you" = "adres voor u gewijzigd";
@@ -909,6 +930,15 @@
/* chat item text */
"changing address…" = "adres wijzigen…";
/* No comment provided by engineer. */
"Chat" = "Chat";
/* No comment provided by engineer. */
"Chat already exists" = "Chat bestaat al";
/* No comment provided by engineer. */
"Chat already exists!" = "Chat bestaat al!";
/* No comment provided by engineer. */
"Chat colors" = "Chat kleuren";
@@ -954,6 +984,12 @@
/* No comment provided by engineer. */
"Chat theme" = "Chat thema";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "De chat wordt voor alle leden verwijderd - dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "De chat wordt voor je verwijderd - dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Chats" = "Chats";
@@ -1030,7 +1066,7 @@
"Conditions are accepted for the operator(s): **%@**." = "Voorwaarden worden geaccepteerd voor de operator(s): **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "Voorwaarden zijn reeds geaccepteerd voor de volgende operator(s): **%@**.";
"Conditions are already accepted for these operator(s): **%@**." = "Voorwaarden zijn reeds geaccepteerd voor de volgende operator(s): **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Gebruiksvoorwaarden";
@@ -1173,7 +1209,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Verbinding maken met desktop";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "Verbinden…";
/* No comment provided by engineer. */
@@ -1475,12 +1511,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Verwijderen en contact op de hoogte stellen";
/* No comment provided by engineer. */
"Delete chat" = "Chat verwijderen";
/* No comment provided by engineer. */
"Delete chat profile" = "Chatprofiel verwijderen";
/* No comment provided by engineer. */
"Delete chat profile?" = "Chatprofiel verwijderen?";
/* No comment provided by engineer. */
"Delete chat?" = "Chat verwijderen?";
/* No comment provided by engineer. */
"Delete connection" = "Verbinding verwijderen";
@@ -1656,7 +1698,10 @@
"Direct messages" = "Directe berichten";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Directe berichten tussen leden zijn verboden in deze groep.";
"Direct messages between members are prohibited in this chat." = "Directe berichten tussen leden zijn in deze chat niet toegestaan.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Directe berichten tussen leden zijn niet toegestaan.";
/* No comment provided by engineer. */
"Disable (keep overrides)" = "Uitschakelen (overschrijvingen behouden)";
@@ -1680,10 +1725,10 @@
"Disappearing messages" = "Verdwijnende berichten";
/* No comment provided by engineer. */
"Disappearing messages are prohibited in this chat." = "Verdwijnende berichten zijn verboden in dit gesprek.";
"Disappearing messages are prohibited in this chat." = "Verdwijnende berichten zijn niet toegestaan in dit gesprek.";
/* No comment provided by engineer. */
"Disappearing messages are prohibited." = "Verdwijnende berichten zijn verboden in deze groep.";
"Disappearing messages are prohibited." = "Verdwijnende berichten zijn niet toegestaan.";
/* No comment provided by engineer. */
"Disappears at" = "Verdwijnt op";
@@ -2254,13 +2299,13 @@
"Files and media" = "Bestanden en media";
/* No comment provided by engineer. */
"Files and media are prohibited." = "Bestanden en media zijn verboden in deze groep.";
"Files and media are prohibited." = "Bestanden en media zijn niet toegestaan.";
/* No comment provided by engineer. */
"Files and media not allowed" = "Bestanden en media niet toegestaan";
/* No comment provided by engineer. */
"Files and media prohibited!" = "Bestanden en media verboden!";
"Files and media prohibited!" = "Bestanden en media niet toegestaan!";
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filter ongelezen en favoriete chats.";
@@ -2424,27 +2469,6 @@
/* No comment provided by engineer. */
"Group links" = "Groep links";
/* No comment provided by engineer. */
"Members can add message reactions." = "Groepsleden kunnen bericht reacties toevoegen.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Groepsleden kunnen verzonden berichten onherroepelijk verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Groepsleden kunnen directe berichten sturen.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Groepsleden kunnen verdwijnende berichten sturen.";
/* No comment provided by engineer. */
"Members can send files and media." = "Groepsleden kunnen bestanden en media verzenden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Groepsleden kunnen SimpleX-links verzenden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Groepsleden kunnen spraak berichten verzenden.";
/* notification */
"Group message:" = "Groep bericht:";
@@ -2533,7 +2557,7 @@
"If you can't meet in person, show QR code in a video call, or share the link." = "Als je elkaar niet persoonlijk kunt ontmoeten, laat dan de QR-code zien in een videogesprek of deel de link.";
/* No comment provided by engineer. */
"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens onomkeerbaar verwijderd!";
"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Als u deze toegangscode invoert bij het openen van de app, worden alle app-gegevens definitief verwijderd!";
/* No comment provided by engineer. */
"If you enter your self-destruct passcode while opening the app:" = "Als u uw zelfvernietigings wachtwoord invoert tijdens het openen van de app:";
@@ -2715,6 +2739,9 @@
/* No comment provided by engineer. */
"Invite members" = "Nodig leden uit";
/* No comment provided by engineer. */
"Invite to chat" = "Uitnodigen voor een chat";
/* No comment provided by engineer. */
"Invite to group" = "Uitnodigen voor groep";
@@ -2743,10 +2770,10 @@
"Irreversible message deletion" = "Onomkeerbare berichtverwijdering";
/* No comment provided by engineer. */
"Irreversible message deletion is prohibited in this chat." = "Het onomkeerbaar verwijderen van berichten is verboden in dit gesprek.";
"Irreversible message deletion is prohibited in this chat." = "Het definitief verwijderen van berichten is niet toegestaan in dit gesprek.";
/* No comment provided by engineer. */
"Irreversible message deletion is prohibited." = "Het onomkeerbaar verwijderen van berichten is verboden in deze groep.";
"Irreversible message deletion is prohibited." = "Het definitief verwijderen van berichten is verbHet definitief verwijderen van berichten is niet toegestaan..";
/* No comment provided by engineer. */
"It allows having many anonymous connections without any shared data between them in a single chat profile." = "Het maakt het mogelijk om veel anonieme verbindingen te hebben zonder enige gedeelde gegevens tussen hen in een enkel chatprofiel.";
@@ -2829,6 +2856,12 @@
/* swipe action */
"Leave" = "Verlaten";
/* No comment provided by engineer. */
"Leave chat" = "Chat verlaten";
/* No comment provided by engineer. */
"Leave chat?" = "Chat verlaten?";
/* No comment provided by engineer. */
"Leave group" = "Groep verlaten";
@@ -2925,15 +2958,42 @@
/* item status text */
"Member inactive" = "Lid inactief";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "De rol van het lid wordt gewijzigd naar \"%@\". Alle chatleden worden op de hoogte gebracht.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "De rol van lid wordt gewijzigd in \"%@\". Alle groepsleden worden op de hoogte gebracht.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "De rol van lid wordt gewijzigd in \"%@\". Het lid ontvangt een nieuwe uitnodiging.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Lid wordt verwijderd uit de chat - dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Lid wordt uit de groep verwijderd, dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Groepsleden kunnen bericht reacties toevoegen.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Groepsleden kunnen verzonden berichten onherroepelijk verwijderen. (24 uur)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Groepsleden kunnen directe berichten sturen.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Groepsleden kunnen verdwijnende berichten sturen.";
/* No comment provided by engineer. */
"Members can send files and media." = "Groepsleden kunnen bestanden en media verzenden.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Groepsleden kunnen SimpleX-links verzenden.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Groepsleden kunnen spraak berichten verzenden.";
/* No comment provided by engineer. */
"Menus" = "Menu's";
@@ -2965,10 +3025,10 @@
"Message reactions" = "Reacties op berichten";
/* No comment provided by engineer. */
"Message reactions are prohibited in this chat." = "Reacties op berichten zijn verboden in deze chat.";
"Message reactions are prohibited in this chat." = "Reacties op berichten zijn niet toegestaan in deze chat.";
/* No comment provided by engineer. */
"Message reactions are prohibited." = "Reacties op berichten zijn verboden in deze groep.";
"Message reactions are prohibited." = "Reacties op berichten zijn niet toegestaan.";
/* notification */
"message received" = "bericht ontvangen";
@@ -3329,6 +3389,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion hosts worden niet gebruikt.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Alleen chateigenaren kunnen voorkeuren wijzigen.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Alleen client apparaten slaan gebruikers profielen, contacten, groepen en berichten op die zijn verzonden met **2-laags end-to-end-codering**.";
@@ -3348,7 +3411,7 @@
"Only you can add message reactions." = "Alleen jij kunt bericht reacties toevoegen.";
/* No comment provided by engineer. */
"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Alleen jij kunt berichten onomkeerbaar verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)";
"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Alleen jij kunt berichten definitief verwijderen (je contact kan ze markeren voor verwijdering). (24 uur)";
/* No comment provided by engineer. */
"Only you can make calls." = "Alleen jij kunt bellen.";
@@ -3407,6 +3470,9 @@
/* alert title */
"Operator server" = "Operatorserver";
/* No comment provided by engineer. */
"Or import archive file" = "Of importeer archiefbestand";
/* No comment provided by engineer. */
"Or paste archive link" = "Of plak de archief link";
@@ -3575,6 +3641,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Privacy en beveiliging";
/* No comment provided by engineer. */
"Privacy for your customers." = "Privacy voor uw klanten.";
/* No comment provided by engineer. */
"Privacy redefined" = "Privacy opnieuw gedefinieerd";
@@ -3618,7 +3687,7 @@
"Prohibit audio/video calls." = "Audio/video gesprekken verbieden.";
/* No comment provided by engineer. */
"Prohibit irreversible message deletion." = "Verbied het onomkeerbaar verwijderen van berichten.";
"Prohibit irreversible message deletion." = "Verbied het definitief verwijderen van berichten.";
/* No comment provided by engineer. */
"Prohibit message reactions." = "Bericht reacties verbieden.";
@@ -3671,9 +3740,6 @@
/* No comment provided by engineer. */
"Push notifications" = "Push meldingen";
/* No comment provided by engineer. */
"Push Notifications" = "Pushmeldingen";
/* No comment provided by engineer. */
"Push server" = "Push server";
@@ -3870,6 +3936,9 @@
/* chat item action */
"Reply" = "Antwoord";
/* chat list item title */
"requested to connect" = "gevraagd om verbinding te maken";
/* No comment provided by engineer. */
"Required" = "Vereist";
@@ -3948,12 +4017,6 @@
/* No comment provided by engineer. */
"Safer groups" = "Veiligere groepen";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Dezelfde voorwaarden gelden voor operator **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Dezelfde voorwaarden gelden voor operator(s): **%@**.";
/* alert button
chat item action */
"Save" = "Opslaan";
@@ -3961,7 +4024,7 @@
/* alert button */
"Save (and notify contacts)" = "Bewaar (en informeer contacten)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Opslaan en Contact melden";
/* No comment provided by engineer. */
@@ -3982,7 +4045,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Sla het wachtwoord op in de Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Voorkeuren opslaan?";
/* No comment provided by engineer. */
@@ -4400,6 +4463,9 @@
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "SimpleX adres of eenmalige link?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "Simplex-chat en flux hebben een overeenkomst gemaakt om door flux geëxploiteerde servers in de app op te nemen.";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "De beveiliging van SimpleX Chat is gecontroleerd door Trail of Bits.";
@@ -4416,7 +4482,7 @@
"SimpleX links" = "SimpleX links";
/* No comment provided by engineer. */
"SimpleX links are prohibited." = "SimpleX-links zijn in deze groep verboden.";
"SimpleX links are prohibited." = "SimpleX-links zijn niet toegestaan.";
/* No comment provided by engineer. */
"SimpleX links not allowed" = "SimpleX-links zijn niet toegestaan";
@@ -4580,6 +4646,9 @@
/* No comment provided by engineer. */
"Tap button " = "Tik op de knop ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Tik op SimpleX-adres maken in het menu om het later te maken.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Tik hier om profiel te activeren.";
@@ -4694,6 +4763,12 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Het profiel wordt alleen gedeeld met uw contacten.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Dezelfde voorwaarden gelden voor operator **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Dezelfde voorwaarden gelden voor operator(s): **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "De tweede vooraf ingestelde operator in de app!";
@@ -4734,7 +4809,7 @@
"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Deze actie kan niet ongedaan worden gemaakt, de berichten die eerder zijn verzonden en ontvangen dan geselecteerd, worden verwijderd. Het kan enkele minuten duren.";
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.";
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan definitief verloren.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Deze chat is beveiligd met end-to-end codering.";
@@ -5145,16 +5220,16 @@
"Voice messages" = "Spraak berichten";
/* No comment provided by engineer. */
"Voice messages are prohibited in this chat." = "Spraak berichten zijn verboden in deze chat.";
"Voice messages are prohibited in this chat." = "Spraak berichten zijn niet toegestaan in dit gesprek.";
/* No comment provided by engineer. */
"Voice messages are prohibited." = "Spraak berichten zijn verboden in deze groep.";
"Voice messages are prohibited." = "Spraak berichten zijn niet toegestaan.";
/* No comment provided by engineer. */
"Voice messages not allowed" = "Spraakberichten niet toegestaan";
/* No comment provided by engineer. */
"Voice messages prohibited!" = "Spraak berichten verboden!";
"Voice messages prohibited!" = "Spraak berichten niet toegestaan!";
/* No comment provided by engineer. */
"waiting for answer…" = "wachten op antwoord…";
@@ -5282,6 +5357,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "U bent al verbonden met %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "U bent al verbonden met %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "U maakt al verbinding met %@.";
@@ -5480,6 +5558,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "U ontvangt nog steeds oproepen en meldingen van gedempte profielen wanneer deze actief zijn.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "U ontvangt geen berichten meer van deze chat. De chatgeschiedenis blijft bewaard.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Je ontvangt geen berichten meer van deze groep. Je gesprek geschiedenis blijft behouden.";
+25 -25
View File
@@ -431,7 +431,7 @@
"All data is erased when it is entered." = "Wszystkie dane są usuwane po jego wprowadzeniu.";
/* No comment provided by engineer. */
"All data is private to your device." = "Wszystkie dane są prywatne na Twoim urządzeniu.";
"All data is kept private on your device." = "Wszystkie dane są prywatne na Twoim urządzeniu.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Wszyscy członkowie grupy pozostaną połączeni.";
@@ -1086,7 +1086,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Łączenie z komputerem";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "łączenie…";
/* No comment provided by engineer. */
@@ -2277,27 +2277,6 @@
/* No comment provided by engineer. */
"Group links" = "Linki grupowe";
/* No comment provided by engineer. */
"Members can add message reactions." = "Członkowie grupy mogą dodawać reakcje wiadomości.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Członkowie grupy mogą nieodwracalnie usuwać wysłane wiadomości. (24 godziny)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Członkowie grupy mogą wysyłać bezpośrednie wiadomości.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Członkowie grupy mogą wysyłać znikające wiadomości.";
/* No comment provided by engineer. */
"Members can send files and media." = "Członkowie grupy mogą wysyłać pliki i media.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Członkowie grupy mogą wysyłać linki SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Członkowie grupy mogą wysyłać wiadomości głosowe.";
/* notification */
"Group message:" = "Wiadomość grupowa:";
@@ -2778,6 +2757,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Członek zostanie usunięty z grupy - nie można tego cofnąć!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Członkowie grupy mogą dodawać reakcje wiadomości.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Członkowie grupy mogą nieodwracalnie usuwać wysłane wiadomości. (24 godziny)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Członkowie grupy mogą wysyłać bezpośrednie wiadomości.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Członkowie grupy mogą wysyłać znikające wiadomości.";
/* No comment provided by engineer. */
"Members can send files and media." = "Członkowie grupy mogą wysyłać pliki i media.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Członkowie grupy mogą wysyłać linki SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Członkowie grupy mogą wysyłać wiadomości głosowe.";
/* No comment provided by engineer. */
"Menus" = "Menu";
@@ -3736,7 +3736,7 @@
/* alert button */
"Save (and notify contacts)" = "Zapisz (i powiadom kontakty)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Zapisz i powiadom kontakt";
/* No comment provided by engineer. */
@@ -3757,7 +3757,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Zapisz hasło w pęku kluczy";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Zapisać preferencje?";
/* No comment provided by engineer. */
+395 -26
View File
@@ -82,6 +82,9 @@
/* No comment provided by engineer. */
"**Recommended**: device token and end-to-end encrypted notifications are sent to SimpleX Chat push server, but it does not see the message content, size or who it is from." = "**Рекомендовано**: токен устройства и уведомления отправляются на сервер SimpleX Chat, но сервер не получает сами сообщения, их размер или от кого они.";
/* No comment provided by engineer. */
"**Scan / Paste link**: to connect via a link you received." = "**Сканировать / Вставить ссылку**: чтобы соединиться через полученную ссылку.";
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: для работы мгновенных уведомлений пароль должен быть сохранен в Keychain.";
@@ -142,6 +145,12 @@
/* No comment provided by engineer. */
"%@ is verified" = "%@ подтверждён";
/* No comment provided by engineer. */
"%@ server" = "%@ сервер";
/* No comment provided by engineer. */
"%@ servers" = "%@ серверы";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ загружено";
@@ -295,6 +304,12 @@
/* time interval */
"1 week" = "1 неделю";
/* No comment provided by engineer. */
"1-time link" = "Одноразовая ссылка";
/* No comment provided by engineer. */
"1-time link can be used *with one contact only* - share in person or via any messenger." = "Одноразовая ссылка может быть использована *только с одним контактом* - поделитесь при встрече или через любой мессенджер.";
/* No comment provided by engineer. */
"5 minutes" = "5 минут";
@@ -328,6 +343,9 @@
/* No comment provided by engineer. */
"Abort changing address?" = "Прекратить изменение адреса?";
/* No comment provided by engineer. */
"About operators" = "Об операторах";
/* No comment provided by engineer. */
"About SimpleX Chat" = "Информация о SimpleX Chat";
@@ -342,6 +360,9 @@
swipe action */
"Accept" = "Принять";
/* No comment provided by engineer. */
"Accept conditions" = "Принять условия";
/* No comment provided by engineer. */
"Accept connection request?" = "Принять запрос?";
@@ -355,6 +376,12 @@
/* call status */
"accepted call" = "принятый звонок";
/* No comment provided by engineer. */
"Accepted conditions" = "Принятые условия";
/* chat list item title */
"accepted invitation" = "принятое приглашение";
/* No comment provided by engineer. */
"Acknowledged" = "Подтверждено";
@@ -367,6 +394,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "Добавьте адрес в свой профиль, чтобы Ваши контакты могли поделиться им. Профиль будет отправлен Вашим контактам.";
/* No comment provided by engineer. */
"Add friends" = "Добавить друзей";
/* No comment provided by engineer. */
"Add profile" = "Добавить профиль";
@@ -376,12 +406,24 @@
/* No comment provided by engineer. */
"Add servers by scanning QR codes." = "Добавить серверы через QR код.";
/* No comment provided by engineer. */
"Add team members" = "Добавить сотрудников";
/* No comment provided by engineer. */
"Add to another device" = "Добавить на другое устройство";
/* No comment provided by engineer. */
"Add welcome message" = "Добавить приветственное сообщение";
/* No comment provided by engineer. */
"Add your team members to the conversations." = "Добавьте сотрудников в разговор.";
/* No comment provided by engineer. */
"Added media & file servers" = "Дополнительные серверы файлов и медиа";
/* No comment provided by engineer. */
"Added message servers" = "Дополнительные серверы сообщений";
/* No comment provided by engineer. */
"Additional accent" = "Дополнительный акцент";
@@ -397,6 +439,12 @@
/* No comment provided by engineer. */
"Address change will be aborted. Old receiving address will be used." = "Изменение адреса будет прекращено. Будет использоваться старый адрес.";
/* No comment provided by engineer. */
"Address or 1-time link?" = "Адрес или одноразовая ссылка?";
/* No comment provided by engineer. */
"Address settings" = "Настройки адреса";
/* member role */
"admin" = "админ";
@@ -431,7 +479,7 @@
"All data is erased when it is entered." = "Все данные удаляются при его вводе.";
/* No comment provided by engineer. */
"All data is private to your device." = "Все данные хранятся только на вашем устройстве.";
"All data is kept private on your device." = "Все данные хранятся только на вашем устройстве.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Все члены группы, которые соединились через эту ссылку, останутся в группе.";
@@ -760,6 +808,12 @@
/* No comment provided by engineer. */
"Bulgarian, Finnish, Thai and Ukrainian - thanks to the users and [Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Болгарский, финский, тайский и украинский - благодаря пользователям и [Weblate] (https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!";
/* No comment provided by engineer. */
"Business address" = "Бизнес адрес";
/* No comment provided by engineer. */
"Business chats" = "Бизнес разговоры";
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "По профилю чата или [по соединению](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (БЕТА).";
@@ -830,6 +884,9 @@
/* No comment provided by engineer. */
"Change" = "Поменять";
/* authentication reason */
"Change chat profiles" = "Поменять профили";
/* No comment provided by engineer. */
"Change database passphrase?" = "Поменять пароль базы данных?";
@@ -873,6 +930,15 @@
/* chat item text */
"changing address…" = "смена адреса…";
/* No comment provided by engineer. */
"Chat" = "Разговор";
/* No comment provided by engineer. */
"Chat already exists" = "Разговор уже существует";
/* No comment provided by engineer. */
"Chat already exists!" = "Разговор уже существует!";
/* No comment provided by engineer. */
"Chat colors" = "Цвета чата";
@@ -918,9 +984,21 @@
/* No comment provided by engineer. */
"Chat theme" = "Тема чата";
/* No comment provided by engineer. */
"Chat will be deleted for all members - this cannot be undone!" = "Разговор будет удален для всех участников - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Chat will be deleted for you - this cannot be undone!" = "Разговор будет удален для Вас - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Chats" = "Чаты";
/* No comment provided by engineer. */
"Check messages every 20 min." = "Проверять сообщения каждые 20 минут.";
/* No comment provided by engineer. */
"Check messages when allowed." = "Проверять сообщения по возможности.";
/* alert title */
"Check server address and try again." = "Проверьте адрес сервера и попробуйте снова.";
@@ -981,6 +1059,33 @@
/* No comment provided by engineer. */
"Completed" = "Готово";
/* No comment provided by engineer. */
"Conditions accepted on: %@." = "Условия приняты: %@.";
/* No comment provided by engineer. */
"Conditions are accepted for the operator(s): **%@**." = "Условия приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for these operator(s): **%@**." = "Условия уже приняты для следующих оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Условия использования";
/* No comment provided by engineer. */
"Conditions will be accepted for enabled operators after 30 days." = "Условия будут приняты для включенных операторов через 30 дней.";
/* No comment provided by engineer. */
"Conditions will be accepted for operator(s): **%@**." = "Условия будут приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions will be accepted for the operator(s): **%@**." = "Условия будут приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"Conditions will be accepted on: %@." = "Условия будут приняты: %@.";
/* No comment provided by engineer. */
"Conditions will be automatically accepted for enabled operators on: %@." = "Условия будут автоматически приняты для включенных операторов: %@.";
/* No comment provided by engineer. */
"Configure ICE servers" = "Настройка ICE серверов";
@@ -1104,7 +1209,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Подключение к компьютеру";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "соединяется…";
/* No comment provided by engineer. */
@@ -1128,6 +1233,9 @@
/* No comment provided by engineer. */
"Connection request sent!" = "Запрос на соединение отправлен!";
/* No comment provided by engineer. */
"Connection security" = "Безопасность соединения";
/* No comment provided by engineer. */
"Connection terminated" = "Подключение прервано";
@@ -1209,6 +1317,9 @@
/* No comment provided by engineer. */
"Create" = "Создать";
/* No comment provided by engineer. */
"Create 1-time link" = "Создать одноразовую ссылку";
/* No comment provided by engineer. */
"Create a group using a random profile." = "Создайте группу, используя случайный профиль.";
@@ -1260,6 +1371,9 @@
/* No comment provided by engineer. */
"creator" = "создатель";
/* No comment provided by engineer. */
"Current conditions text couldn't be loaded, you can review conditions via this link:" = "Текст условий использования не может быть показан, вы можете посмотреть их через ссылку:";
/* No comment provided by engineer. */
"Current Passcode" = "Текущий Код";
@@ -1397,12 +1511,18 @@
/* No comment provided by engineer. */
"Delete and notify contact" = "Удалить и уведомить контакт";
/* No comment provided by engineer. */
"Delete chat" = "Удалить разговор";
/* No comment provided by engineer. */
"Delete chat profile" = "Удалить профиль чата";
/* No comment provided by engineer. */
"Delete chat profile?" = "Удалить профиль?";
/* No comment provided by engineer. */
"Delete chat?" = "Удалить разговор?";
/* No comment provided by engineer. */
"Delete connection" = "Удалить соединение";
@@ -1508,6 +1628,9 @@
/* No comment provided by engineer. */
"Deletion errors" = "Ошибки удаления";
/* No comment provided by engineer. */
"Delivered even when Apple drops them." = "Доставляются даже тогда, когда Apple их теряет.";
/* No comment provided by engineer. */
"Delivery" = "Доставка";
@@ -1574,6 +1697,9 @@
/* chat feature */
"Direct messages" = "Прямые сообщения";
/* No comment provided by engineer. */
"Direct messages between members are prohibited in this chat." = "Прямые сообщения между членами запрещены в этом разговоре.";
/* No comment provided by engineer. */
"Direct messages between members are prohibited." = "Прямые сообщения между членами группы запрещены.";
@@ -1695,6 +1821,9 @@
/* No comment provided by engineer. */
"e2e encrypted" = "e2e зашифровано";
/* No comment provided by engineer. */
"E2E encrypted notifications." = "E2E зашифрованные нотификации.";
/* chat item action */
"Edit" = "Редактировать";
@@ -1713,6 +1842,9 @@
/* No comment provided by engineer. */
"Enable camera access" = "Включить доступ к камере";
/* No comment provided by engineer. */
"Enable Flux" = "Включить Flux";
/* No comment provided by engineer. */
"Enable for all" = "Включить для всех";
@@ -1872,12 +2004,18 @@
/* No comment provided by engineer. */
"Error aborting address change" = "Ошибка при прекращении изменения адреса";
/* alert title */
"Error accepting conditions" = "Ошибка приема условий";
/* No comment provided by engineer. */
"Error accepting contact request" = "Ошибка при принятии запроса на соединение";
/* No comment provided by engineer. */
"Error adding member(s)" = "Ошибка при добавлении членов группы";
/* alert title */
"Error adding server" = "Ошибка добавления сервера";
/* No comment provided by engineer. */
"Error changing address" = "Ошибка при изменении адреса";
@@ -1962,6 +2100,9 @@
/* No comment provided by engineer. */
"Error joining group" = "Ошибка при вступлении в группу";
/* alert title */
"Error loading servers" = "Ошибка загрузки серверов";
/* No comment provided by engineer. */
"Error migrating settings" = "Ошибка миграции настроек";
@@ -1995,6 +2136,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Ошибка сохранения пароля в Keychain";
/* alert title */
"Error saving servers" = "Ошибка сохранения серверов";
/* when migrating */
"Error saving settings" = "Ошибка сохранения настроек";
@@ -2037,6 +2181,9 @@
/* No comment provided by engineer. */
"Error updating message" = "Ошибка при обновлении сообщения";
/* alert title */
"Error updating server" = "Ошибка сохранения сервера";
/* No comment provided by engineer. */
"Error updating settings" = "Ошибка при сохранении настроек сети";
@@ -2064,6 +2211,9 @@
/* No comment provided by engineer. */
"Errors" = "Ошибки";
/* servers error */
"Errors in servers configuration." = "Ошибки в настройках серверов.";
/* No comment provided by engineer. */
"Even when disabled in the conversation." = "Даже когда они выключены в разговоре.";
@@ -2190,9 +2340,24 @@
/* No comment provided by engineer. */
"Fix not supported by group member" = "Починка не поддерживается членом группы";
/* No comment provided by engineer. */
"for better metadata privacy." = "для лучшей конфиденциальности метаданных.";
/* servers error */
"For chat profile %@:" = "Для профиля чата %@:";
/* No comment provided by engineer. */
"For console" = "Для консоли";
/* No comment provided by engineer. */
"For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server." = "Например, если Ваш контакт получает сообщения через сервер SimpleX Chat, Ваше приложение доставит их через сервер Flux.";
/* No comment provided by engineer. */
"For private routing" = "Для доставки сообщений";
/* No comment provided by engineer. */
"For social media" = "Для социальных сетей";
/* chat item action */
"Forward" = "Переслать";
@@ -2304,27 +2469,6 @@
/* No comment provided by engineer. */
"Group links" = "Ссылки групп";
/* No comment provided by engineer. */
"Members can add message reactions." = "Члены группы могут добавлять реакции на сообщения.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Члены группы могут необратимо удалять отправленные сообщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Члены группы могут посылать прямые сообщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Члены группы могут посылать исчезающие сообщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Члены группы могут слать файлы и медиа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Члены группы могут отправлять ссылки SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Члены группы могут отправлять голосовые сообщения.";
/* notification */
"Group message:" = "Групповое сообщение:";
@@ -2385,6 +2529,12 @@
/* time unit */
"hours" = "часов";
/* No comment provided by engineer. */
"How it affects privacy" = "Как это влияет на конфиденциальность";
/* No comment provided by engineer. */
"How it helps privacy" = "Как это улучшает конфиденциальность";
/* No comment provided by engineer. */
"How SimpleX works" = "Как SimpleX работает";
@@ -2589,6 +2739,9 @@
/* No comment provided by engineer. */
"Invite members" = "Пригласить членов группы";
/* No comment provided by engineer. */
"Invite to chat" = "Пригласить в разговор";
/* No comment provided by engineer. */
"Invite to group" = "Пригласить в группу";
@@ -2703,6 +2856,12 @@
/* swipe action */
"Leave" = "Выйти";
/* No comment provided by engineer. */
"Leave chat" = "Покинуть разговор";
/* No comment provided by engineer. */
"Leave chat?" = "Покинуть разговор?";
/* No comment provided by engineer. */
"Leave group" = "Выйти из группы";
@@ -2799,15 +2958,42 @@
/* item status text */
"Member inactive" = "Член неактивен";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All chat members will be notified." = "Роль участника будет изменена на \"%@\". Все участники разговора получат уведомление.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". All group members will be notified." = "Роль члена группы будет изменена на \"%@\". Все члены группы получат сообщение.";
/* No comment provided by engineer. */
"Member role will be changed to \"%@\". The member will receive a new invitation." = "Роль члена группы будет изменена на \"%@\". Будет отправлено новое приглашение.";
/* No comment provided by engineer. */
"Member will be removed from chat - this cannot be undone!" = "Член будет удален из разговора - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Член группы будет удален - это действие нельзя отменить!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Члены группы могут добавлять реакции на сообщения.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Члены группы могут необратимо удалять отправленные сообщения. (24 часа)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Члены группы могут посылать прямые сообщения.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Члены группы могут посылать исчезающие сообщения.";
/* No comment provided by engineer. */
"Members can send files and media." = "Члены группы могут слать файлы и медиа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Члены группы могут отправлять ссылки SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Члены группы могут отправлять голосовые сообщения.";
/* No comment provided by engineer. */
"Menus" = "Меню";
@@ -2961,6 +3147,9 @@
/* No comment provided by engineer. */
"More reliable network connection." = "Более надежное соединение с сетью.";
/* No comment provided by engineer. */
"More reliable notifications" = "Более надежные уведомления";
/* item status description */
"Most likely this connection is deleted." = "Скорее всего, соединение удалено.";
@@ -2985,12 +3174,18 @@
/* No comment provided by engineer. */
"Network connection" = "Интернет-соединение";
/* No comment provided by engineer. */
"Network decentralization" = "Децентрализация сети";
/* snd error text */
"Network issues - message expired after many attempts to send it." = "Ошибка сети - сообщение не было отправлено после многократных попыток.";
/* No comment provided by engineer. */
"Network management" = "Статус сети";
/* No comment provided by engineer. */
"Network operator" = "Оператор сети";
/* No comment provided by engineer. */
"Network settings" = "Настройки сети";
@@ -3018,6 +3213,9 @@
/* No comment provided by engineer. */
"New display name" = "Новое имя";
/* notification */
"New events" = "Новые события";
/* No comment provided by engineer. */
"New in %@" = "Новое в %@";
@@ -3039,6 +3237,9 @@
/* No comment provided by engineer. */
"New passphrase…" = "Новый пароль…";
/* No comment provided by engineer. */
"New server" = "Новый сервер";
/* No comment provided by engineer. */
"New SOCKS credentials will be used every time you start the app." = "Новые учетные данные SOCKS будут использоваться при каждом запуске приложения.";
@@ -3084,6 +3285,12 @@
/* No comment provided by engineer. */
"No info, try to reload" = "Нет информации, попробуйте перезагрузить";
/* servers error */
"No media & file servers." = "Нет серверов файлов и медиа.";
/* servers error */
"No message servers." = "Нет серверов сообщений.";
/* No comment provided by engineer. */
"No network connection" = "Нет интернет-соединения";
@@ -3102,6 +3309,18 @@
/* No comment provided by engineer. */
"No received or sent files" = "Нет полученных или отправленных файлов";
/* servers error */
"No servers for private message routing." = "Нет серверов для доставки сообщений.";
/* servers error */
"No servers to receive files." = "Нет серверов для приема файлов.";
/* servers error */
"No servers to receive messages." = "Нет серверов для приема сообщений.";
/* servers error */
"No servers to send files." = "Нет серверов для отправки файлов.";
/* copied message info in history */
"no text" = "нет текста";
@@ -3123,6 +3342,9 @@
/* No comment provided by engineer. */
"Notifications are disabled!" = "Уведомления выключены";
/* No comment provided by engineer. */
"Notifications privacy" = "Конфиденциальность уведомлений";
/* No comment provided by engineer. */
"Now admins can:\n- delete members' messages.\n- disable members (\"observer\" role)" = "Теперь админы могут:\n- удалять сообщения членов.\n- приостанавливать членов (роль \"наблюдатель\")";
@@ -3167,6 +3389,9 @@
/* No comment provided by engineer. */
"Onion hosts will not be used." = "Onion хосты не используются.";
/* No comment provided by engineer. */
"Only chat owners can change preferences." = "Только владельцы разговора могут поменять предпочтения.";
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages." = "Только пользовательские устройства хранят контакты, группы и сообщения.";
@@ -3215,12 +3440,18 @@
/* No comment provided by engineer. */
"Open" = "Открыть";
/* No comment provided by engineer. */
"Open changes" = "Открыть изменения";
/* No comment provided by engineer. */
"Open chat" = "Открыть чат";
/* authentication reason */
"Open chat console" = "Открыть консоль";
/* No comment provided by engineer. */
"Open conditions" = "Открыть условия";
/* No comment provided by engineer. */
"Open group" = "Открыть группу";
@@ -3233,6 +3464,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Приложение отрывается…";
/* No comment provided by engineer. */
"Operator" = "Оператор";
/* alert title */
"Operator server" = "Сервер оператора";
/* No comment provided by engineer. */
"Or import archive file" = "Или импортировать файл архива";
/* No comment provided by engineer. */
"Or paste archive link" = "Или вставьте ссылку архива";
@@ -3245,6 +3485,9 @@
/* No comment provided by engineer. */
"Or show this code" = "Или покажите этот код";
/* No comment provided by engineer. */
"Or to share privately" = "Или поделиться конфиденциально";
/* No comment provided by engineer. */
"other" = "другое";
@@ -3386,6 +3629,9 @@
/* No comment provided by engineer. */
"Preset server address" = "Адрес сервера по умолчанию";
/* No comment provided by engineer. */
"Preset servers" = "Серверы по умолчанию";
/* No comment provided by engineer. */
"Preview" = "Просмотр";
@@ -3395,6 +3641,9 @@
/* No comment provided by engineer. */
"Privacy & security" = "Конфиденциальность";
/* No comment provided by engineer. */
"Privacy for your customers." = "Конфиденциальность для ваших покупателей.";
/* No comment provided by engineer. */
"Privacy redefined" = "Более конфиденциальный";
@@ -3471,7 +3720,7 @@
"Protect your chat profiles with a password!" = "Защитите Ваши профили чата паролем!";
/* No comment provided by engineer. */
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.\nВключите в настройках *Сеть и серверы*.";
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Защитите ваш IP адрес от серверов сообщений, выбранных Вашими контактами.\nВключите в настройках *Сети и серверов*.";
/* No comment provided by engineer. */
"Protocol timeout" = "Таймаут протокола";
@@ -3687,6 +3936,9 @@
/* chat item action */
"Reply" = "Ответить";
/* chat list item title */
"requested to connect" = "запрошено соединение";
/* No comment provided by engineer. */
"Required" = "Обязательно";
@@ -3738,6 +3990,12 @@
/* chat item action */
"Reveal" = "Показать";
/* No comment provided by engineer. */
"Review conditions" = "Посмотреть условия";
/* No comment provided by engineer. */
"Review later" = "Посмотреть позже";
/* No comment provided by engineer. */
"Revoke" = "Отозвать";
@@ -3766,7 +4024,7 @@
/* alert button */
"Save (and notify contacts)" = "Сохранить (и уведомить контакты)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Сохранить и уведомить контакт";
/* No comment provided by engineer. */
@@ -3787,7 +4045,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Сохранить пароль в Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Сохранить предпочтения?";
/* No comment provided by engineer. */
@@ -4024,6 +4282,9 @@
/* No comment provided by engineer. */
"Server" = "Сервер";
/* alert message */
"Server added to operator %@." = "Сервер добавлен к оператору %@.";
/* No comment provided by engineer. */
"Server address" = "Адрес сервера";
@@ -4033,6 +4294,15 @@
/* srv error text. */
"Server address is incompatible with network settings." = "Адрес сервера несовместим с настройками сети.";
/* alert title */
"Server operator changed." = "Оператор серверов изменен.";
/* No comment provided by engineer. */
"Server operators" = "Операторы серверов";
/* alert title */
"Server protocol changed." = "Протокол сервера изменен.";
/* queue info */
"server queue info: %@\n\nlast received msg: %@" = "информация сервера об очереди: %1$@\n\nпоследнее полученное сообщение: %2$@";
@@ -4118,9 +4388,15 @@
/* No comment provided by engineer. */
"Share 1-time link" = "Поделиться одноразовой ссылкой";
/* No comment provided by engineer. */
"Share 1-time link with a friend" = "Поделитесь одноразовой ссылкой с другом";
/* No comment provided by engineer. */
"Share address" = "Поделиться адресом";
/* No comment provided by engineer. */
"Share address publicly" = "Поделитесь адресом";
/* alert title */
"Share address with contacts?" = "Поделиться адресом с контактами?";
@@ -4133,6 +4409,9 @@
/* No comment provided by engineer. */
"Share profile" = "Поделиться профилем";
/* No comment provided by engineer. */
"Share SimpleX address on social media." = "Поделитесь SimpleX адресом в социальных сетях.";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "Поделиться одноразовой ссылкой-приглашением";
@@ -4178,6 +4457,15 @@
/* No comment provided by engineer. */
"SimpleX Address" = "Адрес SimpleX";
/* No comment provided by engineer. */
"SimpleX address and 1-time links are safe to share via any messenger." = "Адрес SimpleX и одноразовые ссылки безопасно отправлять через любой мессенджер.";
/* No comment provided by engineer. */
"SimpleX address or 1-time link?" = "Адрес SimpleX или одноразовая ссылка?";
/* No comment provided by engineer. */
"SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app." = "SimpleX Chat и Flux заключили соглашение добавить серверы под управлением Flux в приложение.";
/* No comment provided by engineer. */
"SimpleX Chat security was audited by Trail of Bits." = "Безопасность SimpleX Chat была проверена Trail of Bits.";
@@ -4253,6 +4541,9 @@
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Во время импорта произошли некоторые ошибки:";
/* alert message */
"Some servers failed the test:\n%@" = "Серверы не прошли тест:\n%@";
/* notification title */
"Somebody" = "Контакт";
@@ -4355,6 +4646,9 @@
/* No comment provided by engineer. */
"Tap button " = "Нажмите кнопку ";
/* No comment provided by engineer. */
"Tap Create SimpleX address in the menu to create it later." = "Нажмите Создать адрес SimpleX в меню, чтобы создать его позже.";
/* No comment provided by engineer. */
"Tap to activate profile." = "Нажмите, чтобы сделать профиль активным.";
@@ -4415,6 +4709,9 @@
/* No comment provided by engineer. */
"The app can notify you when you receive messages or contact requests - please open settings to enable." = "Приложение может посылать Вам уведомления о сообщениях и запросах на соединение - уведомления можно включить в Настройках.";
/* No comment provided by engineer. */
"The app protects your privacy by using different operators in each conversation." = "Приложение улучшает конфиденциальность используя разных операторов в каждом разговоре.";
/* No comment provided by engineer. */
"The app will ask to confirm downloads from unknown file servers (except .onion)." = "Приложение будет запрашивать подтверждение загрузки с неизвестных серверов (за исключением .onion адресов).";
@@ -4424,6 +4721,9 @@
/* No comment provided by engineer. */
"The code you scanned is not a SimpleX link QR code." = "Этот QR код не является SimpleX-ccылкой.";
/* No comment provided by engineer. */
"The connection reached the limit of undelivered messages, your contact may be offline." = "Соединение достигло предела недоставленных сообщений. Возможно, Ваш контакт не в сети.";
/* No comment provided by engineer. */
"The connection you accepted will be cancelled!" = "Подтвержденное соединение будет отменено!";
@@ -4463,6 +4763,15 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Профиль отправляется только Вашим контактам.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Те же самые условия будут приняты для оператора **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Те же самые условия будут приняты для оператора(ов): **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "Второй оператор серверов в приложении!";
/* No comment provided by engineer. */
"The second tick we missed! ✅" = "Вторая галочка - знать, что доставлено! ✅";
@@ -4472,6 +4781,9 @@
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "Серверы для новых соединений Вашего текущего профиля чата **%@**.";
/* No comment provided by engineer. */
"The servers for new files of your current chat profile **%@**." = "Серверы для новых файлов Вашего текущего профиля **%@**.";
/* No comment provided by engineer. */
"The text you pasted is not a SimpleX link." = "Вставленный текст не является SimpleX-ссылкой.";
@@ -4481,6 +4793,9 @@
/* No comment provided by engineer. */
"Themes" = "Темы";
/* No comment provided by engineer. */
"These conditions will also apply for: **%@**." = "Эти условия также будут применены к: **%@**.";
/* No comment provided by engineer. */
"These settings are for your current profile **%@**." = "Установки для Вашего активного профиля **%@**.";
@@ -4544,6 +4859,9 @@
/* No comment provided by engineer. */
"To make a new connection" = "Чтобы соединиться";
/* No comment provided by engineer. */
"To protect against your link being replaced, you can compare contact security codes." = "Чтобы защитить Вашу ссылку от замены, Вы можете сравнить код безопасности.";
/* No comment provided by engineer. */
"To protect timezone, image/voice files use UTC." = "Чтобы защитить Ваш часовой пояс, файлы картинок и голосовых сообщений используют UTC.";
@@ -4556,6 +4874,9 @@
/* No comment provided by engineer. */
"To protect your privacy, SimpleX uses separate IDs for each of your contacts." = "Чтобы защитить Вашу конфиденциальность, SimpleX использует разные идентификаторы для каждого Вашeго контакта.";
/* No comment provided by engineer. */
"To receive" = "Для получения";
/* No comment provided by engineer. */
"To record speech please grant permission to use Microphone." = "Для записи речи, пожалуйста, дайте разрешение на использование микрофона.";
@@ -4568,9 +4889,15 @@
/* No comment provided by engineer. */
"To reveal your hidden profile, enter a full password into a search field in **Your chat profiles** page." = "Чтобы показать Ваш скрытый профиль, введите его пароль в поле поиска на странице **Ваши профили чата**.";
/* No comment provided by engineer. */
"To send" = "Для оправки";
/* No comment provided by engineer. */
"To support instant push notifications the chat database has to be migrated." = "Для поддержки мгновенный доставки уведомлений данные чата должны быть перемещены.";
/* No comment provided by engineer. */
"To use the servers of **%@**, accept conditions of use." = "Чтобы использовать серверы оператора **%@**, примите условия использования.";
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "Чтобы подтвердить end-to-end шифрование с Вашим контактом сравните (или сканируйте) код безопасности на Ваших устройствах.";
@@ -4628,6 +4955,9 @@
/* rcv group event chat item */
"unblocked %@" = "%@ разблокирован";
/* No comment provided by engineer. */
"Undelivered messages" = "Недоставленные сообщения";
/* No comment provided by engineer. */
"Unexpected migration state" = "Неожиданная ошибка при перемещении данных чата";
@@ -4745,12 +5075,21 @@
/* No comment provided by engineer. */
"Use .onion hosts" = "Использовать .onion хосты";
/* No comment provided by engineer. */
"Use %@" = "Использовать %@";
/* No comment provided by engineer. */
"Use chat" = "Использовать чат";
/* No comment provided by engineer. */
"Use current profile" = "Использовать активный профиль";
/* No comment provided by engineer. */
"Use for files" = "Использовать для файлов";
/* No comment provided by engineer. */
"Use for messages" = "Использовать для сообщений";
/* No comment provided by engineer. */
"Use for new connections" = "Использовать для новых соединений";
@@ -4775,6 +5114,9 @@
/* No comment provided by engineer. */
"Use server" = "Использовать сервер";
/* No comment provided by engineer. */
"Use servers" = "Использовать серверы";
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Использовать серверы предосталенные SimpleX Chat?";
@@ -4859,9 +5201,15 @@
/* No comment provided by engineer. */
"Videos and files up to 1gb" = "Видео и файлы до 1гб";
/* No comment provided by engineer. */
"View conditions" = "Посмотреть условия";
/* No comment provided by engineer. */
"View security code" = "Показать код безопасности";
/* No comment provided by engineer. */
"View updated conditions" = "Посмотреть измененные условия";
/* chat feature */
"Visible history" = "Доступ к истории";
@@ -4943,6 +5291,9 @@
/* No comment provided by engineer. */
"when IP hidden" = "когда IP защищен";
/* No comment provided by engineer. */
"When more than one operator is enabled, none of them has metadata to learn who communicates with whom." = "Когда больше чем один оператор включен, ни один из них не видит метаданные, чтобы определить, кто соединен с кем.";
/* No comment provided by engineer. */
"When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Когда Вы соединены с контактом инкогнито, тот же самый инкогнито профиль будет использоваться для групп с этим контактом.";
@@ -5006,6 +5357,9 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "Вы уже соединены с контактом %@.";
/* No comment provided by engineer. */
"You are already connected with %@." = "Вы уже соединены с %@.";
/* No comment provided by engineer. */
"You are already connecting to %@." = "Вы уже соединяетесь с %@.";
@@ -5051,6 +5405,12 @@
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "Вы можете изменить это в настройках Интерфейса.";
/* No comment provided by engineer. */
"You can configure operators in Network & servers settings." = "Вы можете настроить операторов в настройках Сети и серверов.";
/* No comment provided by engineer. */
"You can configure servers via settings." = "Вы можете настроить серверы позже.";
/* No comment provided by engineer. */
"You can create it later" = "Вы можете создать его позже";
@@ -5075,6 +5435,9 @@
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "Вы можете отправлять сообщения %@ из Архивированных контактов.";
/* No comment provided by engineer. */
"You can set connection name, to remember who the link was shared with." = "Вы можете установить имя соединения, чтобы запомнить кому Вы отправили ссылку.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "Вы можете установить просмотр уведомлений на экране блокировки в настройках.";
@@ -5195,6 +5558,9 @@
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "Вы все равно получите звонки и уведомления в профилях без звука, когда они активные.";
/* No comment provided by engineer. */
"You will stop receiving messages from this chat. Chat history will be preserved." = "Вы прекратите получать сообщения в этом разговоре. История будет сохранена.";
/* No comment provided by engineer. */
"You will stop receiving messages from this group. Chat history will be preserved." = "Вы перестанете получать сообщения от этой группы. История чата будет сохранена.";
@@ -5276,6 +5642,9 @@
/* No comment provided by engineer. */
"Your server address" = "Адрес Вашего сервера";
/* No comment provided by engineer. */
"Your servers" = "Ваши серверы";
/* No comment provided by engineer. */
"Your settings" = "Настройки";
+21 -21
View File
@@ -681,7 +681,7 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "กำลังเชื่อมต่อกับเซิร์ฟเวอร์... (ข้อผิดพลาด: %@)";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "กำลังเชื่อมต่อ…";
/* No comment provided by engineer. */
@@ -1469,24 +1469,6 @@
/* No comment provided by engineer. */
"Group links" = "ลิงค์กลุ่ม";
/* No comment provided by engineer. */
"Members can add message reactions." = "สมาชิกกลุ่มสามารถเพิ่มการแสดงปฏิกิริยาต่อข้อความได้";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "สมาชิกกลุ่มสามารถลบข้อความที่ส่งแล้วอย่างถาวร";
/* No comment provided by engineer. */
"Members can send direct messages." = "สมาชิกกลุ่มสามารถส่งข้อความโดยตรงได้";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "สมาชิกกลุ่มสามารถส่งข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) ได้";
/* No comment provided by engineer. */
"Members can send files and media." = "สมาชิกกลุ่มสามารถส่งไฟล์และสื่อ";
/* No comment provided by engineer. */
"Members can send voice messages." = "สมาชิกกลุ่มสามารถส่งข้อความเสียง";
/* notification */
"Group message:" = "ข้อความกลุ่ม:";
@@ -1853,6 +1835,24 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "สมาชิกจะถูกลบออกจากกลุ่ม - ไม่สามารถยกเลิกได้!";
/* No comment provided by engineer. */
"Members can add message reactions." = "สมาชิกกลุ่มสามารถเพิ่มการแสดงปฏิกิริยาต่อข้อความได้";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "สมาชิกกลุ่มสามารถลบข้อความที่ส่งแล้วอย่างถาวร";
/* No comment provided by engineer. */
"Members can send direct messages." = "สมาชิกกลุ่มสามารถส่งข้อความโดยตรงได้";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "สมาชิกกลุ่มสามารถส่งข้อความที่จะหายไปหลังจากเวลาที่กำหนดหลังการอ่าน (disappearing messages) ได้";
/* No comment provided by engineer. */
"Members can send files and media." = "สมาชิกกลุ่มสามารถส่งไฟล์และสื่อ";
/* No comment provided by engineer. */
"Members can send voice messages." = "สมาชิกกลุ่มสามารถส่งข้อความเสียง";
/* item status text */
"Message delivery error" = "ข้อผิดพลาดในการส่งข้อความ";
@@ -2439,7 +2439,7 @@
/* alert button */
"Save (and notify contacts)" = "บันทึก (และแจ้งผู้ติดต่อ)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "บันทึกและแจ้งผู้ติดต่อ";
/* No comment provided by engineer. */
@@ -2457,7 +2457,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "บันทึกข้อความรหัสผ่านใน Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "บันทึกการตั้งค่า?";
/* No comment provided by engineer. */
+25 -25
View File
@@ -431,7 +431,7 @@
"All data is erased when it is entered." = "Kullanıldığında bütün veriler silinir.";
/* No comment provided by engineer. */
"All data is private to your device." = "Tüm veriler cihazınıza özeldir.";
"All data is kept private on your device." = "Tüm veriler cihazınıza özeldir.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Tüm grup üyeleri bağlı kalacaktır.";
@@ -1101,7 +1101,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Bilgisayara bağlanıyor";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "bağlanılıyor…";
/* No comment provided by engineer. */
@@ -2301,27 +2301,6 @@
/* No comment provided by engineer. */
"Group links" = "Grup bağlantıları";
/* No comment provided by engineer. */
"Members can add message reactions." = "Grup üyeleri mesaj tepkileri ekleyebilir.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Grup üyeleri, gönderilen mesajları kalıcı olarak silebilir. (24 saat içinde)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Grup üyeleri doğrudan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Grup üyeleri kaybolan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send files and media." = "Grup üyeleri dosyalar ve medya gönderebilir.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Grup üyeleri SimpleX bağlantıları gönderebilir.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Grup üyeleri sesli mesajlar gönderebilir.";
/* notification */
"Group message:" = "Grup mesajı:";
@@ -2805,6 +2784,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Üye gruptan çıkarılacaktır - bu geri alınamaz!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Grup üyeleri mesaj tepkileri ekleyebilir.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Grup üyeleri, gönderilen mesajları kalıcı olarak silebilir. (24 saat içinde)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Grup üyeleri doğrudan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Grup üyeleri kaybolan mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Members can send files and media." = "Grup üyeleri dosyalar ve medya gönderebilir.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Grup üyeleri SimpleX bağlantıları gönderebilir.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Grup üyeleri sesli mesajlar gönderebilir.";
/* No comment provided by engineer. */
"Menus" = "Menüler";
@@ -3763,7 +3763,7 @@
/* alert button */
"Save (and notify contacts)" = "Kaydet (ve kişilere bildir)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Kaydet ve kişilere bildir";
/* No comment provided by engineer. */
@@ -3784,7 +3784,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Parolayı Anahtar Zincirinde kaydet";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Tercihler kaydedilsin mi?";
/* No comment provided by engineer. */
+36 -39
View File
@@ -464,7 +464,7 @@
"All data is erased when it is entered." = "Всі дані стираються при введенні.";
/* No comment provided by engineer. */
"All data is private to your device." = "Всі дані є приватними для вашого пристрою.";
"All data is kept private on your device." = "Всі дані є приватними для вашого пристрою.";
/* No comment provided by engineer. */
"All group members will remain connected." = "Всі учасники групи залишаться на зв'язку.";
@@ -863,6 +863,9 @@
/* No comment provided by engineer. */
"Change" = "Зміна";
/* authentication reason */
"Change chat profiles" = "Зміна профілів користувачів";
/* No comment provided by engineer. */
"Change database passphrase?" = "Змінити пароль до бази даних?";
@@ -891,9 +894,6 @@
set passcode view */
"Change self-destruct passcode" = "Змінити пароль самознищення";
/* authentication reason */
"Change user profiles" = "Зміна профілів користувачів";
/* chat item text */
"changed address for you" = "змінили для вас адресу";
@@ -1030,7 +1030,7 @@
"Conditions are accepted for the operator(s): **%@**." = "Для оператора(ів) приймаються умови: **%@**.";
/* No comment provided by engineer. */
"Conditions are already accepted for following operator(s): **%@**." = "Умови вже прийняті для наступних операторів: **%@**.";
"Conditions are already accepted for these operator(s): **%@**." = "Умови вже прийняті для наступних операторів: **%@**.";
/* No comment provided by engineer. */
"Conditions of use" = "Умови використання";
@@ -1173,7 +1173,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "Підключення до ПК";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "з'єднання…";
/* No comment provided by engineer. */
@@ -2424,27 +2424,6 @@
/* No comment provided by engineer. */
"Group links" = "Групові посилання";
/* No comment provided by engineer. */
"Members can add message reactions." = "Учасники групи можуть додавати реакції на повідомлення.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Учасники групи можуть безповоротно видаляти надіслані повідомлення. (24 години)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Учасники групи можуть надсилати прямі повідомлення.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Учасники групи можуть надсилати зникаючі повідомлення.";
/* No comment provided by engineer. */
"Members can send files and media." = "Учасники групи можуть надсилати файли та медіа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Учасники групи можуть надсилати посилання SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Учасники групи можуть надсилати голосові повідомлення.";
/* notification */
"Group message:" = "Групове повідомлення:";
@@ -2934,6 +2913,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "Учасник буде видалений з групи - це неможливо скасувати!";
/* No comment provided by engineer. */
"Members can add message reactions." = "Учасники групи можуть додавати реакції на повідомлення.";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "Учасники групи можуть безповоротно видаляти надіслані повідомлення. (24 години)";
/* No comment provided by engineer. */
"Members can send direct messages." = "Учасники групи можуть надсилати прямі повідомлення.";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "Учасники групи можуть надсилати зникаючі повідомлення.";
/* No comment provided by engineer. */
"Members can send files and media." = "Учасники групи можуть надсилати файли та медіа.";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "Учасники групи можуть надсилати посилання SimpleX.";
/* No comment provided by engineer. */
"Members can send voice messages." = "Учасники групи можуть надсилати голосові повідомлення.";
/* No comment provided by engineer. */
"Menus" = "Меню";
@@ -3669,10 +3669,7 @@
"Proxy requires password" = "Проксі вимагає пароль";
/* No comment provided by engineer. */
"Push notifications" = "Push-повідомлення";
/* No comment provided by engineer. */
"Push Notifications" = "Push-сповіщення";
"Push notifications" = "Push-сповіщення";
/* No comment provided by engineer. */
"Push server" = "Push-сервер";
@@ -3948,12 +3945,6 @@
/* No comment provided by engineer. */
"Safer groups" = "Безпечніші групи";
/* No comment provided by engineer. */
"Same conditions will apply to operator **%@**." = "Такі ж умови діятимуть і для оператора **%@**.";
/* No comment provided by engineer. */
"Same conditions will apply to operator(s): **%@**." = "Такі ж умови будуть застосовуватися до оператора(ів): **%@**.";
/* alert button
chat item action */
"Save" = "Зберегти";
@@ -3961,7 +3952,7 @@
/* alert button */
"Save (and notify contacts)" = "Зберегти (і повідомити контактам)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "Зберегти та повідомити контакт";
/* No comment provided by engineer. */
@@ -3982,7 +3973,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "Збережіть парольну фразу в Keychain";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "Зберегти настройки?";
/* No comment provided by engineer. */
@@ -4694,6 +4685,12 @@
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Профіль доступний лише вашим контактам.";
/* No comment provided by engineer. */
"The same conditions will apply to operator **%@**." = "Такі ж умови діятимуть і для оператора **%@**.";
/* No comment provided by engineer. */
"The same conditions will apply to operator(s): **%@**." = "Такі ж умови будуть застосовуватися до оператора(ів): **%@**.";
/* No comment provided by engineer. */
"The second preset operator in the app!" = "Другий попередньо встановлений оператор у застосунку!";
+25 -25
View File
@@ -413,7 +413,7 @@
"All data is erased when it is entered." = "所有数据在输入后将被删除。";
/* No comment provided by engineer. */
"All data is private to your device." = "所有数据都是您设备的私有数据.";
"All data is kept private on your device." = "所有数据都是您设备的私有数据.";
/* No comment provided by engineer. */
"All group members will remain connected." = "所有群组成员将保持连接。";
@@ -1059,7 +1059,7 @@
/* No comment provided by engineer. */
"Connecting to desktop" = "正连接到桌面";
/* chat list item title */
/* No comment provided by engineer. */
"connecting…" = "连接中……";
/* No comment provided by engineer. */
@@ -2214,27 +2214,6 @@
/* No comment provided by engineer. */
"Group links" = "群组链接";
/* No comment provided by engineer. */
"Members can add message reactions." = "群组成员可以添加信息回应。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "群组成员可以不可撤回地删除已发送的消息";
/* No comment provided by engineer. */
"Members can send direct messages." = "群组成员可以私信。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "群组成员可以发送限时消息。";
/* No comment provided by engineer. */
"Members can send files and media." = "群组成员可以发送文件和媒体。";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "群成员可发送 SimpleX 链接。";
/* No comment provided by engineer. */
"Members can send voice messages." = "群组成员可以发送语音消息。";
/* notification */
"Group message:" = "群组消息:";
@@ -2712,6 +2691,27 @@
/* No comment provided by engineer. */
"Member will be removed from group - this cannot be undone!" = "成员将被移出群组——此操作无法撤消!";
/* No comment provided by engineer. */
"Members can add message reactions." = "群组成员可以添加信息回应。";
/* No comment provided by engineer. */
"Members can irreversibly delete sent messages. (24 hours)" = "群组成员可以不可撤回地删除已发送的消息";
/* No comment provided by engineer. */
"Members can send direct messages." = "群组成员可以私信。";
/* No comment provided by engineer. */
"Members can send disappearing messages." = "群组成员可以发送限时消息。";
/* No comment provided by engineer. */
"Members can send files and media." = "群组成员可以发送文件和媒体。";
/* No comment provided by engineer. */
"Members can send SimpleX links." = "群成员可发送 SimpleX 链接。";
/* No comment provided by engineer. */
"Members can send voice messages." = "群组成员可以发送语音消息。";
/* No comment provided by engineer. */
"Menus" = "菜单";
@@ -3634,7 +3634,7 @@
/* alert button */
"Save (and notify contacts)" = "保存(并通知联系人)";
/* No comment provided by engineer. */
/* alert button */
"Save and notify contact" = "保存并通知联系人";
/* No comment provided by engineer. */
@@ -3655,7 +3655,7 @@
/* No comment provided by engineer. */
"Save passphrase in Keychain" = "在钥匙串中保存密码";
/* No comment provided by engineer. */
/* alert title */
"Save preferences?" = "保存偏好设置?";
/* No comment provided by engineer. */
@@ -115,7 +115,6 @@
android:launchMode="singleInstance"
android:supportsPictureInPicture="true"
android:autoRemoveFromRecents="true"
android:screenOrientation="portrait"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>
<provider
@@ -360,6 +360,8 @@ class SimplexApp: Application(), LifecycleEventObserver {
return true
}
override fun androidCreateActiveCallState(): Closeable = ActiveCallState()
override val androidApiLevel: Int get() = Build.VERSION.SDK_INT
}
}
@@ -29,6 +29,7 @@ actual fun LazyColumnWithScrollBar(
flingBehavior: FlingBehavior,
userScrollEnabled: Boolean,
additionalBarOffset: State<Dp>?,
chatBottomBar: State<Boolean>,
fillMaxSize: Boolean,
content: LazyListScope.() -> Unit
) {
@@ -91,6 +92,7 @@ actual fun LazyColumnWithScrollBarNoAppBar(
flingBehavior: FlingBehavior,
userScrollEnabled: Boolean,
additionalBarOffset: State<Dp>?,
chatBottomBar: State<Boolean>,
content: LazyListScope.() -> Unit
) {
val state = state ?: rememberLazyListState()
@@ -71,8 +71,12 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface {
}
override fun stop() {
am.unregisterAudioDeviceCallback(audioCallback)
am.removeOnCommunicationDeviceChangedListener(listener)
try {
am.unregisterAudioDeviceCallback(audioCallback)
am.removeOnCommunicationDeviceChangedListener(listener)
} catch (e: Exception) {
Log.e(TAG, e.stackTraceToString())
}
}
override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) {
@@ -6,12 +6,12 @@ import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.*
import android.content.pm.ActivityInfo
import android.content.pm.PackageManager
import android.media.*
import android.os.Build
import android.os.PowerManager
import android.os.PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
import android.os.PowerManager.WakeLock
import android.view.View
import android.view.ViewGroup
import android.webkit.*
@@ -23,7 +23,6 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.snapshots.SnapshotStateList
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -47,7 +46,6 @@ import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.onboarding.OnboardingStage
import chat.simplex.res.MR
import com.google.accompanist.permissions.*
import dev.icerock.moko.resources.StringResource
@@ -58,6 +56,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.datetime.Clock
import kotlinx.serialization.encodeToString
import java.io.Closeable
// Should be destroy()'ed and set as null when call is ended. Otherwise, it will be a leak
@SuppressLint("StaticFieldLeak")
@@ -72,49 +71,62 @@ fun activeCallDestroyWebView() = withApi {
Log.d(TAG, "CallView: webview was destroyed")
}
@SuppressLint("SourceLockedOrientationActivity")
@Composable
actual fun ActiveCallView() {
val call = remember { chatModel.activeCall }.value
val scope = rememberCoroutineScope()
val proximityLock = remember {
class ActiveCallState: Closeable {
val proximityLock: WakeLock? = screenOffWakeLock()
var wasConnected = false
val callAudioDeviceManager = CallAudioDeviceManagerInterface.new()
private var closed = false
init {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
callAudioDeviceManager.start()
}
}
override fun close() {
if (closed) return
closed = true
CallSoundsPlayer.stop()
if (wasConnected) {
CallSoundsPlayer.vibrate()
}
callAudioDeviceManager.stop()
dropAudioManagerOverrides()
if (proximityLock?.isHeld == true) {
proximityLock.release()
}
}
private fun screenOffWakeLock(): WakeLock? {
val pm = (androidAppContext.getSystemService(Context.POWER_SERVICE) as PowerManager)
if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
return if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, androidAppContext.packageName + ":proximityLock")
} else {
null
}
}
val wasConnected = rememberSaveable { mutableStateOf(false) }
}
@SuppressLint("SourceLockedOrientationActivity")
@Composable
actual fun ActiveCallView() {
val call = remember { chatModel.activeCall }.value
val callState = call?.androidCallState as ActiveCallState?
val scope = rememberCoroutineScope()
LaunchedEffect(call) {
if (call?.callState == CallState.Connected && !wasConnected.value) {
if (call?.callState == CallState.Connected && callState != null && !callState.wasConnected) {
CallSoundsPlayer.vibrate(2)
wasConnected.value = true
callState.wasConnected = true
}
}
val callAudioDeviceManager = remember { CallAudioDeviceManagerInterface.new() }
DisposableEffect(Unit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
callAudioDeviceManager.start()
}
onDispose {
CallSoundsPlayer.stop()
if (wasConnected.value) {
CallSoundsPlayer.vibrate()
}
callAudioDeviceManager.stop()
dropAudioManagerOverrides()
if (proximityLock?.isHeld == true) {
proximityLock.release()
}
}
}
LaunchedEffect(chatModel.activeCallViewIsCollapsed.value) {
LaunchedEffect(callState, chatModel.activeCallViewIsCollapsed.value) {
callState ?: return@LaunchedEffect
if (chatModel.activeCallViewIsCollapsed.value) {
if (proximityLock?.isHeld == true) proximityLock.release()
if (callState.proximityLock?.isHeld == true) callState.proximityLock.release()
} else {
delay(1000)
if (proximityLock?.isHeld == false) proximityLock.acquire()
if (callState.proximityLock?.isHeld == false) callState.proximityLock.acquire()
}
}
Box(Modifier.fillMaxSize()) {
@@ -122,6 +134,7 @@ actual fun ActiveCallView() {
Log.d(TAG, "received from WebRTCView: $apiMsg")
val call = chatModel.activeCall.value
if (call != null) {
val callState = call.androidCallState as ActiveCallState
Log.d(TAG, "has active call $call")
val callRh = call.remoteHostId
when (val r = apiMsg.resp) {
@@ -131,9 +144,9 @@ actual fun ActiveCallView() {
updateActiveCall(call) { it.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
// Starting is delayed to make Android <= 11 working good with Bluetooth
callAudioDeviceManager.start()
callState.callAudioDeviceManager.start()
} else {
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
}
CallSoundsPlayer.startConnectingCallSound(scope)
activeCallWaitDeliveryReceipt(scope)
@@ -143,9 +156,9 @@ actual fun ActiveCallView() {
updateActiveCall(call) { it.copy(callState = CallState.OfferSent, localCapabilities = r.capabilities) }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
// Starting is delayed to make Android <= 11 working good with Bluetooth
callAudioDeviceManager.start()
callState.callAudioDeviceManager.start()
} else {
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
}
}
is WCallResponse.Answer -> withBGApi {
@@ -228,14 +241,14 @@ actual fun ActiveCallView() {
!chatModel.activeCallViewIsCollapsed.value -> true
else -> false
}
if (call != null && showOverlay) {
ActiveCallOverlay(call, chatModel, callAudioDeviceManager)
if (call != null && showOverlay && callState != null) {
ActiveCallOverlay(call, chatModel, callState.callAudioDeviceManager)
}
}
KeyChangeEffect(call?.localMediaSources?.hasVideo) {
if (call != null && call.hasVideo && callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) {
KeyChangeEffect(callState, call?.localMediaSources?.hasVideo) {
if (call != null && call.hasVideo && callState != null && callState.callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) {
// enabling speaker on user action (peer action ignored) and not disabling it again
callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
callState.callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.hasVideo, true)
}
}
val context = LocalContext.current
@@ -243,16 +256,12 @@ actual fun ActiveCallView() {
val activity = context as? Activity ?: return@DisposableEffect onDispose {}
val prevVolumeControlStream = activity.volumeControlStream
activity.volumeControlStream = AudioManager.STREAM_VOICE_CALL
// Lock orientation to portrait in order to have good experience with calls
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
chatModel.activeCallViewIsVisible.value = true
// After the first call, End command gets added to the list which prevents making another calls
chatModel.callCommand.removeAll { it is WCallCommand.End }
keepScreenOn(true)
onDispose {
activity.volumeControlStream = prevVolumeControlStream
// Unlock orientation
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
chatModel.activeCallViewIsVisible.value = false
chatModel.callCommand.clear()
keepScreenOn(false)
@@ -264,8 +273,8 @@ actual fun ActiveCallView() {
private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, callAudioDeviceManager: CallAudioDeviceManagerInterface) {
ActiveCallOverlayLayout(
call = call,
devices = remember { callAudioDeviceManager.devices }.value,
currentDevice = remember { callAudioDeviceManager.currentDevice },
devices = remember(callAudioDeviceManager) { callAudioDeviceManager.devices }.value,
currentDevice = remember(callAudioDeviceManager) { callAudioDeviceManager.currentDevice },
dismiss = { withBGApi { chatModel.callManager.endCall(call) } },
toggleAudio = { chatModel.callCommand.add(WCallCommand.Media(CallMediaSource.Mic, enable = !call.localMediaSources.mic)) },
selectDevice = { callAudioDeviceManager.selectDevice(it.id) },
@@ -832,7 +841,8 @@ fun PreviewActiveCallOverlayVideo() {
connectionInfo = ConnectionInfo(
RTCIceCandidate(RTCIceCandidateType.Host, "tcp"),
RTCIceCandidate(RTCIceCandidateType.Host, "tcp")
)
),
androidCallState = {}
),
devices = emptyList(),
currentDevice = remember { mutableStateOf(null) },
@@ -841,7 +851,7 @@ fun PreviewActiveCallOverlayVideo() {
selectDevice = {},
toggleVideo = {},
toggleSound = {},
flipCamera = {}
flipCamera = {},
)
}
}
@@ -862,7 +872,8 @@ fun PreviewActiveCallOverlayAudio() {
connectionInfo = ConnectionInfo(
RTCIceCandidate(RTCIceCandidateType.Host, "udp"),
RTCIceCandidate(RTCIceCandidateType.Host, "udp")
)
),
androidCallState = {}
),
devices = emptyList(),
currentDevice = remember { mutableStateOf(null) },
@@ -33,6 +33,7 @@ import com.google.accompanist.permissions.rememberPermissionState
import com.google.common.util.concurrent.ListenableFuture
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.delay
import java.util.concurrent.*
// Adapted from learntodroid - https://gist.github.com/learntodroid/8f839be0b29d0378f843af70607bd7f5
@@ -41,13 +42,13 @@ import java.util.concurrent.*
actual fun QRCodeScanner(
showQRCodeScanner: MutableState<Boolean>,
padding: PaddingValues,
onBarcode: (String) -> Unit
onBarcode: suspend (String) -> Boolean
) {
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current
var preview by remember { mutableStateOf<Preview?>(null) }
var lastAnalyzedTimeStamp = 0L
var contactLink = ""
val preview = remember { mutableStateOf<Preview?>(null) }
val contactLink = remember { mutableStateOf("") }
val checkingLink = remember { mutableStateOf(false) }
val cameraProviderFuture by produceState<ListenableFuture<ProcessCameraProvider>?>(initialValue = null) {
value = ProcessCameraProvider.getInstance(context)
@@ -86,28 +87,33 @@ actual fun QRCodeScanner(
.build()
val cameraExecutor: ExecutorService = Executors.newSingleThreadExecutor()
cameraProviderFuture?.addListener({
preview = Preview.Builder().build().also {
preview.value = Preview.Builder().build().also {
it.setSurfaceProvider(previewView.surfaceProvider)
}
val detector: QrCodeDetector<GrayU8> = FactoryFiducial.qrcode(null, GrayU8::class.java)
fun getQR(imageProxy: ImageProxy) {
val currentTimeStamp = System.currentTimeMillis()
if (currentTimeStamp - lastAnalyzedTimeStamp >= TimeUnit.SECONDS.toMillis(1)) {
detector.process(imageProxyToGrayU8(imageProxy))
val found = detector.detections
val qr = found.firstOrNull()
if (qr != null) {
if (qr.message != contactLink) {
// Make sure link is new and not a repeat
contactLink = qr.message
onBarcode(contactLink)
suspend fun getQR(imageProxy: ImageProxy) {
if (checkingLink.value) return
checkingLink.value = true
detector.process(imageProxyToGrayU8(imageProxy))
val found = detector.detections
val qr = found.firstOrNull()
if (qr != null) {
if (qr.message != contactLink.value) {
// Make sure link is new and not a repeat if that link was handled successfully
if (onBarcode(qr.message)) {
contactLink.value = qr.message
}
// just some delay to not spam endlessly with alert in case the user scan something wrong, and it fails fast
// (for example, scan user's address while verifying contact code - it prevents alert spam)
delay(1000)
}
}
checkingLink.value = false
imageProxy.close()
}
val imageAnalyzer = ImageAnalysis.Analyzer { proxy -> getQR(proxy) }
val imageAnalyzer = ImageAnalysis.Analyzer { proxy -> withApi { getQR(proxy) } }
val imageAnalysis: ImageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setImageQueueDepth(1)
@@ -115,7 +121,7 @@ actual fun QRCodeScanner(
.also { it.setAnalyzer(cameraExecutor, imageAnalyzer) }
try {
cameraProviderFuture?.get()?.unbindAll()
cameraProviderFuture?.get()?.bindToLifecycle(lifecycleOwner, cameraSelector, preview, imageAnalysis)
cameraProviderFuture?.get()?.bindToLifecycle(lifecycleOwner, cameraSelector, preview.value, imageAnalysis)
} catch (e: Exception) {
Log.d(TAG, "CameraPreview: ${e.localizedMessage}")
}
@@ -106,7 +106,12 @@ fun AppearanceScope.AppearanceLayout(
}
// }
SettingsPreferenceItem(icon = null, stringResource(MR.strings.one_hand_ui), ChatModel.controller.appPrefs.oneHandUI)
SettingsPreferenceItem(icon = null, stringResource(MR.strings.one_hand_ui), ChatModel.controller.appPrefs.oneHandUI) { enabled ->
if (enabled) appPrefs.chatBottomBar.set(true)
}
if (remember { appPrefs.oneHandUI.state }.value) {
SettingsPreferenceItem(icon = null, stringResource(MR.strings.chat_bottom_bar), ChatModel.controller.appPrefs.chatBottomBar)
}
}
SectionDividerSpaced()
@@ -1546,8 +1546,9 @@ data class GroupProfile (
@Serializable
data class BusinessChatInfo (
val memberId: String,
val chatType: BusinessChatType
val chatType: BusinessChatType,
val businessId: String,
val customerId: String,
)
@Serializable
@@ -1894,8 +1895,9 @@ class PendingContactConnection(
generalGetString(MR.strings.display_name_connection_established)
} else {
generalGetString(
if (initiated && !viaContactUri) MR.strings.display_name_invited_to_connect
else MR.strings.display_name_connecting
if (viaContactUri) MR.strings.display_name_requested_to_connect
else if (initiated) MR.strings.display_name_invited_to_connect
else MR.strings.display_name_accepted_invitation
)
}
}
@@ -23,6 +23,7 @@ import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.call.*
import chat.simplex.common.views.chat.item.showQuotedItemDoesNotExistAlert
import chat.simplex.common.views.chatlist.openGroupChat
import chat.simplex.common.views.migration.MigrationFileLinkData
import chat.simplex.common.views.onboarding.OnboardingStage
import chat.simplex.common.views.usersettings.*
@@ -257,6 +258,7 @@ class AppPreferences {
val iosCallKitCallsInRecents = mkBoolPreference(SHARED_PREFS_IOS_CALL_KIT_CALLS_IN_RECENTS, false)
val oneHandUI = mkBoolPreference(SHARED_PREFS_ONE_HAND_UI, true)
val chatBottomBar = mkBoolPreference(SHARED_PREFS_CHAT_BOTTOM_BAR, true)
val hintPreferences: List<Pair<SharedPreference<Boolean>, Boolean>> = listOf(
laNoticeShown to false,
@@ -431,6 +433,7 @@ class AppPreferences {
private const val SHARED_PREFS_SHOULD_IMPORT_APP_SETTINGS = "ShouldImportAppSettings"
private const val SHARED_PREFS_CONFIRM_DB_UPGRADES = "ConfirmDBUpgrades"
private const val SHARED_PREFS_ONE_HAND_UI = "OneHandUI"
private const val SHARED_PREFS_CHAT_BOTTOM_BAR = "ChatBottomBar"
private const val SHARED_PREFS_SELF_DESTRUCT = "LocalAuthenticationSelfDestruct"
private const val SHARED_PREFS_SELF_DESTRUCT_DISPLAY_NAME = "LocalAuthenticationSelfDestructDisplayName"
private const val SHARED_PREFS_PQ_EXPERIMENTAL_ENABLED = "PQExperimentalEnabled" // no longer used
@@ -438,7 +441,6 @@ class AppPreferences {
private const val SHARED_PREFS_CURRENT_THEME_IDs = "CurrentThemeIds"
private const val SHARED_PREFS_SYSTEM_DARK_THEME = "SystemDarkTheme"
private const val SHARED_PREFS_THEMES_OLD = "Themes"
private const val SHARED_PREFS_THEME_OVERRIDES = "ThemeOverrides"
private const val SHARED_PREFS_PROFILE_IMAGE_CORNER_RADIUS = "ProfileImageCornerRadius"
private const val SHARED_PREFS_CHAT_ITEM_ROUNDNESS = "ChatItemRoundness"
private const val SHARED_PREFS_CHAT_ITEM_TAIL = "ChatItemTail"
@@ -2434,9 +2436,7 @@ object ChatController {
) {
receiveFile(rhId, r.user, file.fileId, auto = true)
}
if (cItem.showNotification && (allowedToShowNotification() || chatModel.chatId.value != cInfo.id || chatModel.remoteHostId() != rhId)) {
ntfManager.notifyMessageReceived(r.user, cInfo, cItem)
}
ntfManager.notifyMessageReceived(rhId, r.user, cInfo, cItem)
}
}
is CR.ChatItemsStatusesUpdated ->
@@ -2450,7 +2450,7 @@ object ChatController {
}
}
is CR.ChatItemUpdated ->
chatItemSimpleUpdate(rhId, r.user, r.chatItem)
chatItemUpdateNotify(rhId, r.user, r.chatItem)
is CR.ChatItemReaction -> {
if (active(r.user)) {
withChats {
@@ -2531,6 +2531,11 @@ object ChatController {
withChats {
updateGroup(rhId, r.groupInfo)
}
if (chatModel.chatId.value == r.fromContact.id) {
openGroupChat(rhId, r.groupInfo.groupId)
}
withChats {
removeChat(rhId, r.fromContact.id)
}
}
@@ -2943,9 +2948,17 @@ object ChatController {
}
private suspend fun chatItemSimpleUpdate(rh: Long?, user: UserLike, aChatItem: AChatItem) {
if (activeUser(rh, user)) {
val cInfo = aChatItem.chatInfo
val cItem = aChatItem.chatItem
withChats { upsertChatItem(rh, cInfo, cItem) }
}
}
private suspend fun chatItemUpdateNotify(rh: Long?, user: UserLike, aChatItem: AChatItem) {
val cInfo = aChatItem.chatInfo
val cItem = aChatItem.chatItem
val notify = { ntfManager.notifyMessageReceived(user, cInfo, cItem) }
val notify = { ntfManager.notifyMessageReceived(rh, user, cInfo, cItem) }
if (!activeUser(rh, user)) {
notify()
} else if (withChats { upsertChatItem(rh, cInfo, cItem) }) {
@@ -3656,14 +3669,13 @@ enum class ServerProtocol {
@Serializable
enum class OperatorTag {
@SerialName("simplex") SimpleX,
@SerialName("flux") Flux,
@SerialName("xyz") XYZ,
@SerialName("demo") Demo
@SerialName("flux") Flux
}
data class ServerOperatorInfo(
val description: List<String>,
val website: String,
val selfhost: Pair<String, String>? = null,
val logo: ImageResource,
val largeLogo: ImageResource,
val logoDarkMode: ImageResource,
@@ -3683,31 +3695,17 @@ val operatorsInfo: Map<OperatorTag, ServerOperatorInfo> = mapOf(
),
OperatorTag.Flux to ServerOperatorInfo(
description = listOf(
"Flux is the largest decentralized cloud infrastructure, leveraging a global network of user-operated computational nodes.",
"Flux offers a powerful, scalable, and affordable platform designed to support individuals, businesses, and cutting-edge technologies like AI. With high uptime and worldwide distribution, Flux ensures reliable, accessible cloud computing for all."
"Flux is the largest decentralized cloud, based on a global network of user-operated nodes.",
"Flux offers a powerful, scalable, and affordable cutting edge technology platform for all.",
"Flux operates servers in SimpleX network to improve its privacy and decentralization."
),
website = "https://runonflux.com",
selfhost = "Self-host SimpleX servers on Flux" to "https://home.runonflux.io/apps/marketplace?q=simplex",
logo = MR.images.flux_logo_symbol,
largeLogo = MR.images.flux_logo,
logoDarkMode = MR.images.flux_logo_symbol,
largeLogoDarkMode = MR.images.flux_logo_light
),
OperatorTag.XYZ to ServerOperatorInfo(
description = listOf("XYZ servers"),
website = "XYZ website",
logo = MR.images.shield,
largeLogo = MR.images.logo,
logoDarkMode = MR.images.shield,
largeLogoDarkMode = MR.images.logo_light
),
OperatorTag.Demo to ServerOperatorInfo(
description = listOf("Demo operator"),
website = "Demo website",
logo = MR.images.decentralized,
largeLogo = MR.images.logo,
logoDarkMode = MR.images.decentralized_light,
largeLogoDarkMode = MR.images.logo_light
)
)
@Serializable
@@ -3787,7 +3785,7 @@ data class ServerOperator(
companion object {
val dummyOperatorInfo = ServerOperatorInfo(
description = listOf("Default"),
website = "Default",
website = "https://simplex.chat",
logo = MR.images.decentralized,
largeLogo = MR.images.logo,
logoDarkMode = MR.images.decentralized_light,
@@ -3805,30 +3803,6 @@ data class ServerOperator(
smpRoles = ServerRoles(storage = true, proxy = true),
xftpRoles = ServerRoles(storage = true, proxy = true)
)
val sampleData2 = ServerOperator(
operatorId = 2,
operatorTag = OperatorTag.XYZ,
tradeName = "XYZ",
legalName = null,
serverDomains = listOf("xyz.com"),
conditionsAcceptance = ConditionsAcceptance.Required(deadline = null),
enabled = false,
smpRoles = ServerRoles(storage = false, proxy = true),
xftpRoles = ServerRoles(storage = false, proxy = true)
)
val sampleData3 = ServerOperator(
operatorId = 3,
operatorTag = OperatorTag.Demo,
tradeName = "Demo",
legalName = null,
serverDomains = listOf("demo.com"),
conditionsAcceptance = ConditionsAcceptance.Required(deadline = null),
enabled = false,
smpRoles = ServerRoles(storage = true, proxy = false),
xftpRoles = ServerRoles(storage = true, proxy = false)
)
}
val id: Long
@@ -6491,7 +6465,7 @@ sealed class SQLiteError {
@Serializable
sealed class AgentErrorType {
val string: String get() = when (this) {
is CMD -> "CMD ${cmdErr.string}"
is CMD -> "CMD ${cmdErr.string} $errContext"
is CONN -> "CONN ${connErr.string}"
is SMP -> "SMP ${smpErr.string}"
// is NTF -> "NTF ${ntfErr.string}"
@@ -6504,7 +6478,7 @@ sealed class AgentErrorType {
is CRITICAL -> "CRITICAL $offerRestart $criticalErr"
is INACTIVE -> "INACTIVE"
}
@Serializable @SerialName("CMD") class CMD(val cmdErr: CommandErrorType): AgentErrorType()
@Serializable @SerialName("CMD") class CMD(val cmdErr: CommandErrorType, val errContext: String): AgentErrorType()
@Serializable @SerialName("CONN") class CONN(val connErr: ConnectionErrorType): AgentErrorType()
@Serializable @SerialName("SMP") class SMP(val serverAddress: String, val smpErr: SMPErrorType): AgentErrorType()
// @Serializable @SerialName("NTF") class NTF(val ntfErr: SMPErrorType): AgentErrorType()
@@ -6882,7 +6856,8 @@ data class AppSettings(
var uiDarkColorScheme: String? = null,
var uiCurrentThemeIds: Map<String, String>? = null,
var uiThemes: List<ThemeOverrides>? = null,
var oneHandUI: Boolean? = null
var oneHandUI: Boolean? = null,
var chatBottomBar: Boolean? = null
) {
fun prepareForExport(): AppSettings {
val empty = AppSettings()
@@ -6917,6 +6892,7 @@ data class AppSettings(
if (uiCurrentThemeIds != def.uiCurrentThemeIds) { empty.uiCurrentThemeIds = uiCurrentThemeIds }
if (uiThemes != def.uiThemes) { empty.uiThemes = uiThemes }
if (oneHandUI != def.oneHandUI) { empty.oneHandUI = oneHandUI }
if (chatBottomBar != def.chatBottomBar) { empty.chatBottomBar = chatBottomBar }
return empty
}
@@ -6962,6 +6938,7 @@ data class AppSettings(
uiCurrentThemeIds?.let { def.currentThemeIds.set(it) }
uiThemes?.let { def.themeOverrides.set(it.skipDuplicates()) }
oneHandUI?.let { def.oneHandUI.set(it) }
chatBottomBar?.let { if (appPlatform.isAndroid) def.chatBottomBar.set(it) else def.chatBottomBar.set(true) }
}
companion object {
@@ -6996,7 +6973,8 @@ data class AppSettings(
uiDarkColorScheme = DefaultTheme.SIMPLEX.themeName,
uiCurrentThemeIds = null,
uiThemes = null,
oneHandUI = true
oneHandUI = true,
chatBottomBar = true,
)
val current: AppSettings
@@ -7032,7 +7010,8 @@ data class AppSettings(
uiDarkColorScheme = def.systemDarkTheme.get() ?: DefaultTheme.SIMPLEX.themeName,
uiCurrentThemeIds = def.currentThemeIds.get(),
uiThemes = def.themeOverrides.get(),
oneHandUI = def.oneHandUI.get()
oneHandUI = def.oneHandUI.get(),
chatBottomBar = def.chatBottomBar.get()
)
}
}
@@ -36,9 +36,17 @@ abstract class NtfManager {
)
)
fun notifyMessageReceived(user: UserLike, cInfo: ChatInfo, cItem: ChatItem) {
if (!cInfo.ntfsEnabled) return
displayNotification(user = user, chatId = cInfo.id, displayName = cInfo.displayName, msgText = hideSecrets(cItem))
fun notifyMessageReceived(rhId: Long?, user: UserLike, cInfo: ChatInfo, cItem: ChatItem) {
if (
cItem.showNotification &&
cInfo.ntfsEnabled &&
(
allowedToShowNotification() ||
chatModel.chatId.value != cInfo.id ||
chatModel.remoteHostId() != rhId)
) {
displayNotification(user = user, chatId = cInfo.id, displayName = cInfo.displayName, msgText = hideSecrets(cItem))
}
}
fun acceptContactRequestAction(userId: Long?, incognito: Boolean, chatId: ChatId) {
@@ -10,6 +10,7 @@ import chat.simplex.common.model.ChatId
import chat.simplex.common.model.NotificationsMode
import chat.simplex.common.ui.theme.CurrentColors
import kotlinx.coroutines.Job
import java.io.Closeable
interface PlatformInterface {
suspend fun androidServiceStart() {}
@@ -26,6 +27,7 @@ interface PlatformInterface {
fun androidPictureInPictureAllowed(): Boolean = true
fun androidCallEnded() {}
fun androidRestartNetworkObserver() {}
fun androidCreateActiveCallState(): Closeable = Closeable { }
fun androidIsXiaomiDevice(): Boolean = false
val androidApiLevel: Int? get() = null
@Composable fun androidLockPortraitOrientation() {}
@@ -23,6 +23,7 @@ expect fun LazyColumnWithScrollBar(
flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
userScrollEnabled: Boolean = true,
additionalBarOffset: State<Dp>? = null,
chatBottomBar: State<Boolean> = remember { mutableStateOf(true) },
// by default, this function will include .fillMaxSize() without you doing anything. If you don't need it, pass `false` here
// maxSize (at least maxHeight) is needed for blur on appBars to work correctly
fillMaxSize: Boolean = true,
@@ -41,6 +42,7 @@ expect fun LazyColumnWithScrollBarNoAppBar(
flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
userScrollEnabled: Boolean = true,
additionalBarOffset: State<Dp>? = null,
chatBottomBar: State<Boolean> = remember { mutableStateOf(true) },
content: LazyListScope.() -> Unit
)
@@ -609,6 +609,7 @@ fun themedBackgroundBrush(): Brush = Brush.linearGradient(
)
val DEFAULT_PADDING = 20.dp
val DEFAULT_ONBOARDING_HORIZONTAL_PADDING = 25.dp
val DEFAULT_SPACE_AFTER_ICON = 4.dp
val DEFAULT_PADDING_HALF = DEFAULT_PADDING / 2
val DEFAULT_BOTTOM_PADDING = 48.dp
@@ -156,7 +156,7 @@ fun TerminalLog(floating: Boolean, composeViewHeight: State<Dp>) {
LazyColumnWithScrollBar (
reverseLayout = true,
contentPadding = PaddingValues(
top = topPaddingToContent(),
top = topPaddingToContent(false),
bottom = composeViewHeight.value
),
state = listState,
@@ -117,7 +117,7 @@ fun CreateFirstProfile(chatModel: ChatModel, close: () -> Unit) {
ColumnWithScrollBar {
val displayName = rememberSaveable { mutableStateOf("") }
val focusRequester = remember { FocusRequester() }
Column(if (appPlatform.isAndroid) Modifier.fillMaxSize().padding(start = DEFAULT_PADDING * 2, end = DEFAULT_PADDING * 2, bottom = DEFAULT_PADDING) else Modifier.widthIn(max = 600.dp).fillMaxHeight().padding(horizontal = DEFAULT_PADDING).align(Alignment.CenterHorizontally)) {
Column(if (appPlatform.isAndroid) Modifier.fillMaxSize().padding(start = DEFAULT_ONBOARDING_HORIZONTAL_PADDING * 2, end = DEFAULT_ONBOARDING_HORIZONTAL_PADDING * 2, bottom = DEFAULT_PADDING) else Modifier.widthIn(max = 600.dp).fillMaxHeight().padding(horizontal = DEFAULT_PADDING).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
Box(Modifier.align(Alignment.CenterHorizontally)) {
AppBarTitle(stringResource(MR.strings.create_your_profile), bottomPadding = DEFAULT_PADDING, withPadding = false)
}
@@ -130,7 +130,7 @@ fun CreateFirstProfile(chatModel: ChatModel, close: () -> Unit) {
Spacer(Modifier.fillMaxHeight().weight(1f))
Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingActionButton(
if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.create_profile_button,
onboarding = null,
enabled = canCreateProfile(displayName.value),
@@ -43,6 +43,7 @@ class CallManager(val chatModel: ChatModel) {
private fun justAcceptIncomingCall(invitation: RcvCallInvitation, userProfile: Profile) {
with (chatModel) {
activeCall.value?.androidCallState?.close()
activeCall.value = Call(
remoteHostId = invitation.remoteHostId,
userProfile = userProfile,
@@ -51,6 +52,7 @@ class CallManager(val chatModel: ChatModel) {
callState = CallState.InvitationAccepted,
initialCallType = invitation.callType.media,
sharedKey = invitation.sharedKey,
androidCallState = platform.androidCreateActiveCallState()
)
showCallView.value = true
val useRelay = controller.appPrefs.webrtcPolicyRelay.get()
@@ -78,6 +80,7 @@ class CallManager(val chatModel: ChatModel) {
// Don't destroy WebView if you plan to accept next call right after this one
if (!switchingCall.value) {
showCallView.value = false
activeCall.value?.androidCallState?.close()
activeCall.value = null
activeCallViewIsCollapsed.value = false
platform.androidCallEnded()
@@ -7,6 +7,7 @@ import chat.simplex.res.MR
import kotlinx.datetime.Instant
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.io.Closeable
import java.net.URI
import kotlin.collections.ArrayList
@@ -27,7 +28,9 @@ data class Call(
// When a user has audio call, and then he wants to enable camera but didn't grant permissions for using camera yet,
// we show permissions view without enabling camera before permissions are granted. After they are granted, enabling camera
val wantsToEnableCamera: Boolean = false
val wantsToEnableCamera: Boolean = false,
val androidCallState: Closeable
) {
val encrypted: Boolean get() = localEncrypted && sharedKey != null
private val localEncrypted: Boolean get() = localCapabilities?.encryption ?: false
@@ -131,26 +131,14 @@ fun ChatInfoView(
},
syncContactConnection = {
withBGApi {
val cStats = chatModel.controller.apiSyncContactRatchet(chatRh, contact.contactId, force = false)
connStats.value = cStats
if (cStats != null) {
withChats {
updateContactConnectionStats(chatRh, contact, cStats)
}
}
syncContactConnection(chatRh, contact, connStats, force = false)
close.invoke()
}
},
syncContactConnectionForce = {
showSyncConnectionForceAlert(syncConnectionForce = {
withBGApi {
val cStats = chatModel.controller.apiSyncContactRatchet(chatRh, contact.contactId, force = true)
connStats.value = cStats
if (cStats != null) {
withChats {
updateContactConnectionStats(chatRh, contact, cStats)
}
}
syncContactConnection(chatRh, contact, connStats, force = true)
close.invoke()
}
})
@@ -189,6 +177,16 @@ fun ChatInfoView(
}
}
suspend fun syncContactConnection(rhId: Long?, contact: Contact, connectionStats: MutableState<ConnectionStats?>, force: Boolean) {
val cStats = chatModel.controller.apiSyncContactRatchet(rhId, contact.contactId, force = force)
connectionStats.value = cStats
if (cStats != null) {
withChats {
updateContactConnectionStats(rhId, contact, cStats)
}
}
}
sealed class SendReceipts {
object Yes: SendReceipts()
object No: SendReceipts()
@@ -505,7 +503,7 @@ fun ChatInfoLayout(
currentUser: User,
sendReceipts: State<SendReceipts>,
setSendReceipts: (SendReceipts) -> Unit,
connStats: State<ConnectionStats?>,
connStats: MutableState<ConnectionStats?>,
contactNetworkStatus: NetworkStatus,
customUserProfile: Profile?,
localAlias: String,
@@ -553,8 +551,8 @@ fun ChatInfoLayout(
verticalAlignment = Alignment.CenterVertically
) {
SearchButton(modifier = Modifier.fillMaxWidth(0.25f), chat, contact, close, onSearchClicked)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact)
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact, connStats)
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact, connStats)
MuteButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
}
}
@@ -825,12 +823,14 @@ fun MuteButton(
fun AudioCallButton(
modifier: Modifier,
chat: Chat,
contact: Contact
contact: Contact,
connectionStats: MutableState<ConnectionStats?>
) {
CallButton(
modifier = modifier,
chat,
contact,
connectionStats,
icon = painterResource(MR.images.ic_call),
title = generalGetString(MR.strings.info_view_call_button),
mediaType = CallMediaType.Audio
@@ -841,12 +841,14 @@ fun AudioCallButton(
fun VideoButton(
modifier: Modifier,
chat: Chat,
contact: Contact
contact: Contact,
connectionStats: MutableState<ConnectionStats?>
) {
CallButton(
modifier = modifier,
chat,
contact,
connectionStats,
icon = painterResource(MR.images.ic_videocam),
title = generalGetString(MR.strings.info_view_video_button),
mediaType = CallMediaType.Video
@@ -858,6 +860,7 @@ fun CallButton(
modifier: Modifier,
chat: Chat,
contact: Contact,
connectionStats: MutableState<ConnectionStats?>,
icon: Painter,
title: String,
mediaType: CallMediaType
@@ -879,7 +882,23 @@ fun CallButton(
disabledLook = !canCall,
onClick =
when {
canCall -> { { startChatCall(chat.remoteHostId, chat.chatInfo, mediaType) } }
canCall -> { {
val connStats = connectionStats.value
if (connStats != null) {
if (connStats.ratchetSyncState == RatchetSyncState.Ok) {
startChatCall(chat.remoteHostId, chat.chatInfo, mediaType)
} else if (connStats.ratchetSyncAllowed) {
showFixConnectionAlert(syncConnection = {
withBGApi { syncContactConnection(chat.remoteHostId, contact, connectionStats, force = false) }
})
} else {
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.cant_call_contact_alert_title),
generalGetString(MR.strings.encryption_renegotiation_in_progress)
)
}
}
} }
contact.nextSendGrpInv -> { { showCantCallContactSendMessageAlert() } }
!contact.active -> { { showCantCallContactDeletedAlert() } }
!contact.ready -> { { showCantCallContactConnectingAlert() } }
@@ -1265,6 +1284,15 @@ fun showSyncConnectionForceAlert(syncConnectionForce: () -> Unit) {
)
}
fun showFixConnectionAlert(syncConnection: () -> Unit) {
AlertManager.shared.showAlertDialog(
title = generalGetString(MR.strings.sync_connection_question),
text = generalGetString(MR.strings.sync_connection_desc),
confirmText = generalGetString(MR.strings.sync_connection_confirm),
onConfirm = syncConnection,
)
}
fun queueInfoText(info: Pair<RcvMsgInfo?, ServerQueueInfo>): String {
val (rcvMsgInfo, qInfo) = info
val msgInfo: String = if (rcvMsgInfo != null) json.encodeToString(rcvMsgInfo) else generalGetString(MR.strings.message_queue_info_none)
@@ -29,6 +29,7 @@ import androidx.compose.ui.unit.*
import chat.simplex.common.model.*
import chat.simplex.common.model.CIDirection.GroupRcv
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel.activeCall
import chat.simplex.common.model.ChatModel.controller
import chat.simplex.common.model.ChatModel.withChats
import chat.simplex.common.ui.theme.*
@@ -573,7 +574,8 @@ fun startChatCall(remoteHostId: Long?, chatInfo: ChatInfo, media: CallMediaType)
if (chatInfo is ChatInfo.Direct) {
val contactInfo = chatModel.controller.apiContactInfo(remoteHostId, chatInfo.contact.contactId)
val profile = contactInfo?.second ?: chatModel.currentUser.value?.profile?.toProfile() ?: return@withBGApi
chatModel.activeCall.value = Call(remoteHostId = remoteHostId, contact = chatInfo.contact, callUUID = null, callState = CallState.WaitCapabilities, initialCallType = media, userProfile = profile)
activeCall.value?.androidCallState?.close()
chatModel.activeCall.value = Call(remoteHostId = remoteHostId, contact = chatInfo.contact, callUUID = null, callState = CallState.WaitCapabilities, initialCallType = media, userProfile = profile, androidCallState = platform.androidCreateActiveCallState())
chatModel.showCallView.value = true
chatModel.callCommand.add(WCallCommand.Capabilities(media))
}
@@ -658,6 +660,8 @@ fun ChatLayout(
Box(Modifier.fillMaxSize().chatViewBackgroundModifier(MaterialTheme.colors, MaterialTheme.wallpaper, LocalAppBarHandler.current?.backgroundGraphicsLayerSize, LocalAppBarHandler.current?.backgroundGraphicsLayer)) {
val remoteHostId = remember { remoteHostId }.value
val chatInfo = remember { chatInfo }.value
val oneHandUI = remember { appPrefs.oneHandUI.state }
val chatBottomBar = remember { appPrefs.chatBottomBar.state }
AdaptingBottomPaddingLayout(Modifier, CHAT_COMPOSE_LAYOUT_ID, composeViewHeight) {
if (chatInfo != null) {
Box(Modifier.fillMaxSize()) {
@@ -670,25 +674,23 @@ fun ChatLayout(
)
}
}
val oneHandUI = remember { appPrefs.oneHandUI.state }
Box(
Modifier
.layoutId(CHAT_COMPOSE_LAYOUT_ID)
.align(Alignment.BottomCenter)
.imePadding()
.navigationBarsPadding()
.then(if (oneHandUI.value) Modifier.padding(bottom = AppBarHeight * fontSizeSqrtMultiplier) else Modifier)
.then(if (oneHandUI.value && chatBottomBar.value) Modifier.padding(bottom = AppBarHeight * fontSizeSqrtMultiplier) else Modifier)
) {
composeView()
}
}
val oneHandUI = remember { appPrefs.oneHandUI.state }
if (oneHandUI.value) {
if (oneHandUI.value && chatBottomBar.value) {
StatusBarBackground()
} else {
NavigationBarBackground(true, oneHandUI.value, noAlpha = true)
}
Box(if (oneHandUI.value) Modifier.align(Alignment.BottomStart).imePadding() else Modifier) {
Box(if (oneHandUI.value && chatBottomBar.value) Modifier.align(Alignment.BottomStart).imePadding() else Modifier) {
if (selectedChatItems.value == null) {
if (chatInfo != null) {
ChatInfoToolbar(chatInfo, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch)
@@ -856,12 +858,13 @@ fun BoxScope.ChatInfoToolbar(
}
}
val oneHandUI = remember { appPrefs.oneHandUI.state }
val chatBottomBar = remember { appPrefs.chatBottomBar.state }
DefaultAppBar(
navigationButton = { if (appPlatform.isAndroid || showSearch.value) { NavigationButtonBack(onBackClicked) } },
title = { ChatInfoToolbarTitle(chatInfo) },
onTitleClick = if (chatInfo is ChatInfo.Local) null else info,
showSearch = showSearch.value,
onTop = !oneHandUI.value,
onTop = !oneHandUI.value || !chatBottomBar.value,
onSearchValueChanged = onSearchValueChanged,
buttons = { barButtons.forEach { it() } }
)
@@ -873,11 +876,11 @@ fun BoxScope.ChatInfoToolbar(
showMenu,
modifier = Modifier.onSizeChanged { with(density) {
width.value = it.width.toDp().coerceAtLeast(250.dp)
if (oneHandUI.value && (appPlatform.isDesktop || (platform.androidApiLevel ?: 0) >= 30)) height.value = it.height.toDp()
if (oneHandUI.value && chatBottomBar.value && (appPlatform.isDesktop || (platform.androidApiLevel ?: 0) >= 30)) height.value = it.height.toDp()
} },
offset = DpOffset(-width.value, if (oneHandUI.value) -height.value else AppBarHeight)
offset = DpOffset(-width.value, if (oneHandUI.value && chatBottomBar.value) -height.value else AppBarHeight)
) {
if (oneHandUI.value) {
if (oneHandUI.value && chatBottomBar.value) {
menuItems.asReversed().forEach { it() }
} else {
menuItems.forEach { it() }
@@ -964,7 +967,7 @@ fun BoxScope.ChatItemsList(
val reversedChatItems = remember { derivedStateOf { chatModel.chatItems.asReversed() } }
val revealedItems = rememberSaveable(stateSaver = serializableSaver()) { mutableStateOf(setOf<Long>()) }
val mergedItems = remember { derivedStateOf { MergedItems.create(reversedChatItems.value, unreadCount, revealedItems.value, chatModel.chatState) } }
val topPaddingToContentPx = rememberUpdatedState(with(LocalDensity.current) { topPaddingToContent().roundToPx() })
val topPaddingToContentPx = rememberUpdatedState(with(LocalDensity.current) { topPaddingToContent(true).roundToPx() })
/** determines height based on window info and static height of two AppBars. It's needed because in the first graphic frame height of
* [composeViewHeight] is unknown, but we need to set scroll position for unread messages already so it will be correct before the first frame appears
* */
@@ -981,6 +984,7 @@ fun BoxScope.ChatItemsList(
})
val maxHeight = remember { derivedStateOf { listState.value.layoutInfo.viewportEndOffset - topPaddingToContentPx.value } }
val loadingMoreItems = remember { mutableStateOf(false) }
val animatedScrollingInProgress = remember { mutableStateOf(false) }
val ignoreLoadingRequests = remember(remoteHostId) { mutableSetOf<Long>() }
if (!loadingMoreItems.value) {
PreloadItems(chatInfo.id, if (searchValueIsEmpty.value) ignoreLoadingRequests else mutableSetOf(), mergedItems, listState, ChatPagination.UNTIL_PRELOAD_COUNT) { chatId, pagination ->
@@ -1001,7 +1005,7 @@ fun BoxScope.ChatItemsList(
val chatInfoUpdated = rememberUpdatedState(chatInfo)
val highlightedItems = remember { mutableStateOf(setOf<Long>()) }
val scope = rememberCoroutineScope()
val scrollToItem: (Long) -> Unit = remember { scrollToItem(loadingMoreItems, highlightedItems, chatInfoUpdated, maxHeight, scope, reversedChatItems, mergedItems, listState, loadMessages) }
val scrollToItem: (Long) -> Unit = remember { scrollToItem(searchValue, loadingMoreItems, animatedScrollingInProgress, highlightedItems, chatInfoUpdated, maxHeight, scope, reversedChatItems, mergedItems, listState, loadMessages) }
val scrollToQuotedItemFromItem: (Long) -> Unit = remember { findQuotedItemFromItem(remoteHostIdUpdated, chatInfoUpdated, scope, scrollToItem) }
LoadLastItems(loadingMoreItems, remoteHostId, chatInfo)
@@ -1264,10 +1268,11 @@ fun BoxScope.ChatItemsList(
state = listState.value,
reverseLayout = true,
contentPadding = PaddingValues(
top = topPaddingToContent(),
top = topPaddingToContent(true),
bottom = composeViewHeight.value
),
additionalBarOffset = composeViewHeight
additionalBarOffset = composeViewHeight,
chatBottomBar = remember { appPrefs.chatBottomBar.state }
) {
val mergedItemsValue = mergedItems.value
itemsIndexed(mergedItemsValue.items, key = { _, merged -> keyForItem(merged.newest().item) }) { index, merged ->
@@ -1310,8 +1315,8 @@ fun BoxScope.ChatItemsList(
}
}
}
FloatingButtons(loadingMoreItems, mergedItems, unreadCount, maxHeight, composeViewHeight, remoteHostId, chatInfo, searchValue, markChatRead, listState)
FloatingDate(Modifier.padding(top = 10.dp + topPaddingToContent()).align(Alignment.TopCenter), mergedItems, listState)
FloatingButtons(loadingMoreItems, animatedScrollingInProgress, mergedItems, unreadCount, maxHeight, composeViewHeight, searchValue, markChatRead, listState)
FloatingDate(Modifier.padding(top = 10.dp + topPaddingToContent(true)).align(Alignment.TopCenter), mergedItems, listState)
LaunchedEffect(Unit) {
snapshotFlow { listState.value.isScrollInProgress }
@@ -1319,6 +1324,15 @@ fun BoxScope.ChatItemsList(
chatViewScrollState.value = it
}
}
LaunchedEffect(Unit) {
snapshotFlow { listState.value.isScrollInProgress }
.filter { !it }
.collect {
if (animatedScrollingInProgress.value) {
animatedScrollingInProgress.value = false
}
}
}
}
@Composable
@@ -1396,18 +1410,17 @@ private fun NotifyChatListOnFinishingComposition(
@Composable
fun BoxScope.FloatingButtons(
loadingMoreItems: MutableState<Boolean>,
animatedScrollingInProgress: MutableState<Boolean>,
mergedItems: State<MergedItems>,
unreadCount: State<Int>,
maxHeight: State<Int>,
composeViewHeight: State<Dp>,
remoteHostId: Long?,
chatInfo: ChatInfo,
searchValue: State<String>,
markChatRead: () -> Unit,
listState: State<LazyListState>
) {
val scope = rememberCoroutineScope()
val topPaddingToContentPx = rememberUpdatedState(with(LocalDensity.current) { topPaddingToContent().roundToPx() })
val topPaddingToContentPx = rememberUpdatedState(with(LocalDensity.current) { topPaddingToContent(true).roundToPx() })
val bottomUnreadCount = remember {
derivedStateOf {
if (unreadCount.value == 0) return@derivedStateOf 0
@@ -1437,8 +1450,14 @@ fun BoxScope.FloatingButtons(
bottomUnreadCount,
showBottomButtonWithCounter,
showBottomButtonWithArrow,
animatedScrollingInProgress,
composeViewHeight,
onClick = { scope.launch { tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(0) } } }
onClick = {
scope.launch {
animatedScrollingInProgress.value = true
tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(0) }
}
}
)
// Don't show top FAB if is in search
if (searchValue.value.isNotEmpty()) return
@@ -1447,13 +1466,17 @@ fun BoxScope.FloatingButtons(
val showDropDown = remember { mutableStateOf(false) }
TopEndFloatingButton(
Modifier.padding(end = DEFAULT_PADDING, top = 24.dp + topPaddingToContent()).align(Alignment.TopEnd),
Modifier.padding(end = DEFAULT_PADDING, top = 24.dp + topPaddingToContent(true)).align(Alignment.TopEnd),
topUnreadCount,
animatedScrollingInProgress,
onClick = {
val index = mergedItems.value.items.indexOfLast { it.hasUnread() }
if (index != -1) {
// scroll to the top unread item
scope.launch { tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(index + 1, -maxHeight.value) } }
scope.launch {
animatedScrollingInProgress.value = true
tryBlockAndSetLoadingMore(loadingMoreItems) { listState.value.animateScrollToItem(index + 1, -maxHeight.value) }
}
}
},
onLongClick = { showDropDown.value = true }
@@ -1465,7 +1488,7 @@ fun BoxScope.FloatingButtons(
DefaultDropdownMenu(
showDropDown,
modifier = Modifier.onSizeChanged { with(density) { width.value = it.width.toDp().coerceAtLeast(250.dp) } },
offset = DpOffset(-DEFAULT_PADDING - width.value, 24.dp + fabSize + topPaddingToContent())
offset = DpOffset(-DEFAULT_PADDING - width.value, 24.dp + fabSize + topPaddingToContent(true))
) {
ItemAction(
generalGetString(MR.strings.mark_read),
@@ -1593,10 +1616,11 @@ fun MemberImage(member: GroupMember) {
private fun TopEndFloatingButton(
modifier: Modifier = Modifier,
unreadCount: State<Int>,
animatedScrollingInProgress: State<Boolean>,
onClick: () -> Unit,
onLongClick: () -> Unit
) {
if (unreadCount.value > 0) {
if (remember { derivedStateOf { unreadCount.value > 0 && !animatedScrollingInProgress.value } }.value) {
val interactionSource = interactionSourceWithDetection(onClick, onLongClick)
FloatingActionButton(
{}, // no action here
@@ -1615,9 +1639,10 @@ private fun TopEndFloatingButton(
}
@Composable
fun topPaddingToContent(): Dp {
fun topPaddingToContent(chatView: Boolean): Dp {
val oneHandUI = remember { appPrefs.oneHandUI.state }
return if (oneHandUI.value) {
val chatBottomBar = remember { appPrefs.chatBottomBar.state }
return if (oneHandUI.value && (!chatView || chatBottomBar.value)) {
WindowInsets.statusBars.asPaddingValues().calculateTopPadding()
} else {
AppBarHeight * fontSizeSqrtMultiplier + WindowInsets.statusBars.asPaddingValues().calculateTopPadding()
@@ -1634,7 +1659,7 @@ private fun FloatingDate(
val nearBottomIndex = remember(chatModel.chatId) { mutableStateOf(if (isNearBottom.value) -1 else 0) }
val showDate = remember(chatModel.chatId) { mutableStateOf(false) }
val density = LocalDensity.current.density
val topPaddingToContentPx = rememberUpdatedState(with(LocalDensity.current) { topPaddingToContent().roundToPx() })
val topPaddingToContentPx = rememberUpdatedState(with(LocalDensity.current) { topPaddingToContent(true).roundToPx() })
val fontSizeSqrtMultiplier = fontSizeSqrtMultiplier
val lastVisibleItemDate = remember {
derivedStateOf {
@@ -1834,7 +1859,9 @@ private fun lastFullyVisibleIemInListState(topPaddingToContentPx: State<Int>, de
}
private fun scrollToItem(
searchValue: State<String>,
loadingMoreItems: MutableState<Boolean>,
animatedScrollingInProgress: MutableState<Boolean>,
highlightedItems: MutableState<Set<Long>>,
chatInfo: State<ChatInfo>,
maxHeight: State<Int>,
@@ -1847,6 +1874,8 @@ private fun scrollToItem(
withApi {
try {
var index = mergedItems.value.indexInParentItems[itemId] ?: -1
// Don't try to load messages while in search
if (index == -1 && searchValue.value.isNotBlank()) return@withApi
// setting it to 'loading' even if the item is loaded because in rare cases when the resulting item is near the top, scrolling to
// it will trigger loading more items and will scroll to incorrect position (because of trimming)
loadingMoreItems.value = true
@@ -1870,6 +1899,7 @@ private fun scrollToItem(
highlightedItems.value = setOf(itemId)
} else {
withContext(scope.coroutineContext) {
animatedScrollingInProgress.value = true
listState.value.animateScrollToItem(min(reversedChatItems.value.lastIndex, index + 1), -maxHeight.value)
highlightedItems.value = setOf(itemId)
}
@@ -1931,10 +1961,11 @@ private fun BoxScope.BottomEndFloatingButton(
unreadCount: State<Int>,
showButtonWithCounter: State<Boolean>,
showButtonWithArrow: State<Boolean>,
animatedScrollingInProgress: State<Boolean>,
composeViewHeight: State<Dp>,
onClick: () -> Unit
) = when {
showButtonWithCounter.value -> {
showButtonWithCounter.value && !animatedScrollingInProgress.value -> {
FloatingActionButton(
onClick = onClick,
elevation = FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
@@ -1948,7 +1979,7 @@ private fun BoxScope.BottomEndFloatingButton(
)
}
}
showButtonWithArrow.value -> {
showButtonWithArrow.value && !animatedScrollingInProgress.value -> {
FloatingActionButton(
onClick = onClick,
elevation = FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
@@ -13,19 +13,19 @@ import chat.simplex.res.MR
import dev.icerock.moko.resources.compose.stringResource
@Composable
fun ScanCodeView(verifyCode: (String?, cb: (Boolean) -> Unit) -> Unit, close: () -> Unit) {
fun ScanCodeView(verifyCode: suspend (String?) -> Boolean, close: () -> Unit) {
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.scan_code))
QRCodeScanner { text ->
verifyCode(text) {
if (it) {
close()
} else {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.incorrect_code)
)
}
val success = verifyCode(text)
if (success) {
close()
} else {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.incorrect_code)
)
}
success
}
Text(stringResource(MR.strings.scan_code_from_contacts_app), Modifier.padding(horizontal = DEFAULT_PADDING))
SectionBottomSpacer()
@@ -35,14 +35,14 @@ fun VerifyCodeView(
displayName,
connectionCode,
connectionVerified,
verifyCode = { newCode, cb ->
withBGApi {
val res = verify(newCode)
if (res != null) {
val (verified) = res
cb(verified)
if (verified) close()
}
verifyCode = { newCode ->
val res = verify(newCode)
if (res != null) {
val (verified) = res
if (verified) close()
verified
} else {
false
}
}
)
@@ -54,7 +54,7 @@ private fun VerifyCodeLayout(
displayName: String,
connectionCode: String,
connectionVerified: Boolean,
verifyCode: (String?, cb: (Boolean) -> Unit) -> Unit,
verifyCode: suspend (String?) -> Boolean,
) {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.security_code), withPadding = false)
@@ -100,7 +100,7 @@ private fun VerifyCodeLayout(
) {
if (connectionVerified) {
SimpleButton(generalGetString(MR.strings.clear_verification), painterResource(MR.images.ic_shield)) {
verifyCode(null) {}
withApi { verifyCode(null) }
}
} else {
if (appPlatform.isAndroid) {
@@ -111,7 +111,8 @@ private fun VerifyCodeLayout(
}
}
SimpleButton(generalGetString(MR.strings.mark_code_verified), painterResource(MR.images.ic_verified_user)) {
verifyCode(connectionCode) { verified ->
withApi {
val verified = verifyCode(connectionCode)
if (!verified) {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.incorrect_code)
@@ -306,7 +306,7 @@ fun ModalData.GroupChatInfoLayout(
contentPadding = if (oneHandUI.value) {
PaddingValues(top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + DEFAULT_PADDING + 5.dp, bottom = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding())
} else {
PaddingValues(top = topPaddingToContent())
PaddingValues(top = topPaddingToContent(false))
},
state = listState
) {
@@ -8,8 +8,6 @@ import SectionSpacer
import SectionTextFooter
import SectionView
import androidx.compose.desktop.ui.tooling.preview.Preview
import java.net.URI
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.foundation.text.appendInlineContent
@@ -58,6 +56,19 @@ fun GroupMemberInfoView(
val developerTools = chatModel.controller.appPrefs.developerTools.get()
var progressIndicator by remember { mutableStateOf(false) }
fun syncMemberConnection() {
withBGApi {
val r = chatModel.controller.apiSyncGroupMemberRatchet(rhId, groupInfo.apiId, member.groupMemberId, force = false)
if (r != null) {
connStats.value = r.second
withChats {
updateGroupMemberConnectionStats(rhId, groupInfo, r.first, r.second)
}
close.invoke()
}
}
}
if (chat != null) {
val newRole = remember { mutableStateOf(member.memberRole) }
GroupMemberInfoLayout(
@@ -78,19 +89,30 @@ fun GroupMemberInfoView(
}
},
createMemberContact = {
withBGApi {
progressIndicator = true
val memberContact = chatModel.controller.apiCreateMemberContact(rhId, groupInfo.apiId, member.groupMemberId)
if (memberContact != null) {
val memberChat = Chat(remoteHostId = rhId, ChatInfo.Direct(memberContact), chatItems = arrayListOf())
withChats {
addChat(memberChat)
openLoadedChat(memberChat)
if (connectionStats != null) {
if (connectionStats.ratchetSyncState == RatchetSyncState.Ok) {
withBGApi {
progressIndicator = true
val memberContact = chatModel.controller.apiCreateMemberContact(rhId, groupInfo.apiId, member.groupMemberId)
if (memberContact != null) {
val memberChat = Chat(remoteHostId = rhId, ChatInfo.Direct(memberContact), chatItems = arrayListOf())
withChats {
addChat(memberChat)
openLoadedChat(memberChat)
}
closeAll()
chatModel.setContactNetworkStatus(memberContact, NetworkStatus.Connected())
}
progressIndicator = false
}
closeAll()
chatModel.setContactNetworkStatus(memberContact, NetworkStatus.Connected())
} else if (connectionStats.ratchetSyncAllowed) {
showFixConnectionAlert(syncConnection = { syncMemberConnection() })
} else {
AlertManager.shared.showAlertMsg(
generalGetString(MR.strings.cant_send_message_to_member_alert_title),
generalGetString(MR.strings.encryption_renegotiation_in_progress)
)
}
progressIndicator = false
}
},
connectViaAddress = { connReqUri ->
@@ -149,16 +171,7 @@ fun GroupMemberInfoView(
})
},
syncMemberConnection = {
withBGApi {
val r = chatModel.controller.apiSyncGroupMemberRatchet(rhId, groupInfo.apiId, member.groupMemberId, force = false)
if (r != null) {
connStats.value = r.second
withChats {
updateGroupMemberConnectionStats(rhId, groupInfo, r.first, r.second)
}
close.invoke()
}
}
syncMemberConnection()
},
syncMemberConnectionForce = {
showSyncConnectionForceAlert(syncConnectionForce = {
@@ -335,9 +348,20 @@ fun GroupMemberInfoLayout(
val knownChat = if (contactId != null) knownDirectChat(contactId) else null
if (knownChat != null) {
val (chat, contact) = knownChat
val knownContactConnectionStats: MutableState<ConnectionStats?> = remember { mutableStateOf(null) }
LaunchedEffect(contact.contactId) {
withBGApi {
val contactInfo = chatModel.controller.apiContactInfo(chat.remoteHostId, chat.chatInfo.apiId)
if (contactInfo != null) {
knownContactConnectionStats.value = contactInfo.first
}
}
}
OpenChatButton(modifier = Modifier.fillMaxWidth(0.33f), onClick = { openDirectChat(contact.contactId) })
AudioCallButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
VideoButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact, knownContactConnectionStats)
VideoButton(modifier = Modifier.fillMaxWidth(1f), chat, contact, knownContactConnectionStats)
} else if (groupInfo.fullGroupPreferences.directMessages.on(groupInfo.membership)) {
if (contactId != null) {
OpenChatButton(modifier = Modifier.fillMaxWidth(0.33f), onClick = { openDirectChat(contactId) }) // legacy - only relevant for direct contacts created when joining group
@@ -761,7 +761,7 @@ private fun BoxScope.ChatList(searchText: MutableState<TextFieldValue>, listStat
val searchShowingSimplexLink = remember { mutableStateOf(false) }
val searchChatFilteredBySimplexLink = remember { mutableStateOf<String?>(null) }
val chats = filteredChats(showUnreadAndFavorites, searchShowingSimplexLink, searchChatFilteredBySimplexLink, searchText.value.text, allChats.value.toList())
val topPaddingToContent = topPaddingToContent()
val topPaddingToContent = topPaddingToContent(false)
val blankSpaceSize = if (oneHandUI.value) WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding() + AppBarHeight * fontSizeSqrtMultiplier else topPaddingToContent
LazyColumnWithScrollBar(
if (!oneHandUI.value) Modifier.imePadding() else Modifier,
@@ -347,7 +347,7 @@ fun ChatPreviewView(
chatItemContentPreview(chat, ci)
}
if (mc !is MsgContent.MCVoice || !showContentPreview || mc.text.isNotEmpty() || chatModelDraftChatId == chat.id) {
Box(Modifier.offset(x = if (mc is MsgContent.MCFile) -15.sp.toDp() else 0.dp)) {
Box(Modifier.offset(x = if (mc is MsgContent.MCFile && ci.meta.itemDeleted == null) -15.sp.toDp() else 0.dp)) {
chatPreviewText()
}
}
@@ -194,7 +194,7 @@ private fun ShareList(
filteredChats(false, mutableStateOf(false), mutableStateOf(null), search, sorted)
}
}
val topPaddingToContent = topPaddingToContent()
val topPaddingToContent = topPaddingToContent(false)
LazyColumnWithScrollBar(
modifier = Modifier.then(if (oneHandUI.value) Modifier.consumeWindowInsets(WindowInsets.navigationBars.only(WindowInsetsSides.Vertical)) else Modifier).imePadding(),
contentPadding = PaddingValues(
@@ -192,13 +192,7 @@ fun DatabaseLayout(
}
RunChatSetting(stopped, toggleEnabled && !progressIndicator, startChat, stopChatAlert)
}
SectionTextFooter(
if (stopped) {
stringResource(MR.strings.you_must_use_the_most_recent_version_of_database)
} else {
stringResource(MR.strings.stop_chat_to_enable_database_actions)
}
)
if (stopped) SectionTextFooter(stringResource(MR.strings.you_must_use_the_most_recent_version_of_database))
SectionDividerSpaced(maxTopPadding = true)
}
@@ -203,7 +203,7 @@ private fun MutableState<MigrationToState?>.PasteOrScanLinkView(close: () -> Uni
if (appPlatform.isAndroid) {
SectionView(stringResource(MR.strings.scan_QR_code).replace('\n', ' ').uppercase()) {
QRCodeScanner(showQRCodeScanner = remember { mutableStateOf(true) }) { text ->
withBGApi { checkUserLink(text) }
checkUserLink(text)
}
}
SectionSpacer()
@@ -518,8 +518,8 @@ private fun ProgressView() {
DefaultProgressView(null)
}
private suspend fun MutableState<MigrationToState?>.checkUserLink(link: String) {
if (strHasSimplexFileLink(link.trim())) {
private suspend fun MutableState<MigrationToState?>.checkUserLink(link: String): Boolean {
return if (strHasSimplexFileLink(link.trim())) {
val data = MigrationFileLinkData.readFromLink(link)
val hasProxyConfigured = data?.networkConfig?.hasProxyConfigured() ?: false
val networkConfig = data?.networkConfig?.transformToPlatformSupported()
@@ -537,11 +537,13 @@ private suspend fun MutableState<MigrationToState?>.checkUserLink(link: String)
networkProxy = null
)
}
true
} else {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.invalid_file_link),
text = generalGetString(MR.strings.the_text_you_pasted_is_not_a_link)
)
false
}
}
@@ -12,6 +12,7 @@ import chat.simplex.common.platform.*
import chat.simplex.common.views.chatlist.*
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import kotlinx.coroutines.*
import java.net.URI
enum class ConnectionLinkType {
@@ -26,8 +27,18 @@ suspend fun planAndConnect(
cleanup: (() -> Unit)? = null,
filterKnownContact: ((Contact) -> Unit)? = null,
filterKnownGroup: ((GroupInfo) -> Unit)? = null,
) {
val connectionPlan = chatModel.controller.apiConnectPlan(rhId, uri.toString())
): CompletableDeferred<Boolean> {
val completable = CompletableDeferred<Boolean>()
val close: (() -> Unit)? = {
close?.invoke()
// if close was called, it means the connection was created
completable.complete(true)
}
val cleanup: (() -> Unit)? = {
cleanup?.invoke()
completable.complete(!completable.isActive)
}
val connectionPlan = chatModel.controller.apiConnectPlan(rhId, uri)
if (connectionPlan != null) {
val link = strHasSingleSimplexLink(uri.trim())
val linkText = if (link?.format is Format.SimplexLink)
@@ -333,6 +344,7 @@ suspend fun planAndConnect(
)
}
}
return completable
}
suspend fun connectViaUri(
@@ -343,7 +355,7 @@ suspend fun connectViaUri(
connectionPlan: ConnectionPlan?,
close: (() -> Unit)?,
cleanup: (() -> Unit)?,
) {
): Boolean {
val pcc = chatModel.controller.apiConnect(rhId, incognito, uri)
val connLinkType = if (connectionPlan != null) planToConnectionLinkType(connectionPlan) else ConnectionLinkType.INVITATION
if (pcc != null) {
@@ -363,6 +375,7 @@ suspend fun connectViaUri(
)
}
cleanup?.invoke()
return pcc != null
}
fun planToConnectionLinkType(connectionPlan: ConnectionPlan): ConnectionLinkType {
@@ -334,7 +334,7 @@ private fun ModalData.NewChatSheetLayout(
@Composable
fun NonOneHandLazyColumn() {
val blankSpaceSize = topPaddingToContent()
val blankSpaceSize = topPaddingToContent(false)
LazyColumnWithScrollBar(
Modifier.imePadding(),
state = listState,
@@ -646,7 +646,7 @@ private fun ModalData.DeletedContactsView(rh: RemoteHostInfo?, closeDeletedChats
)
Box {
val topPaddingToContent = topPaddingToContent()
val topPaddingToContent = topPaddingToContent(false)
LazyColumnWithScrollBar(
if (!oneHandUI.value) Modifier.imePadding() else Modifier,
contentPadding = PaddingValues(
@@ -38,8 +38,7 @@ import chat.simplex.common.views.chat.topPaddingToContent
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.usersettings.*
import chat.simplex.res.MR
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.*
import java.net.URI
enum class NewChatOption {
@@ -400,7 +399,7 @@ fun ActiveProfilePicker(
.fillMaxSize()
.alpha(if (progressByTimeout) 0.6f else 1f)
) {
LazyColumnWithScrollBar(Modifier.padding(top = topPaddingToContent()), userScrollEnabled = !switchingProfile.value) {
LazyColumnWithScrollBar(Modifier.padding(top = topPaddingToContent(false)), userScrollEnabled = !switchingProfile.value) {
item {
val oneHandUI = remember { appPrefs.oneHandUI.state }
if (oneHandUI.value) {
@@ -559,15 +558,14 @@ private fun ConnectView(rhId: Long?, showQRCodeScanner: MutableState<Boolean>, p
SectionView(stringResource(MR.strings.or_scan_qr_code).uppercase(), headerBottomPadding = 5.dp) {
QRCodeScanner(showQRCodeScanner) { text ->
withBGApi {
val res = verify(rhId, text, close)
if (!res) {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.invalid_qr_code),
text = generalGetString(MR.strings.code_you_scanned_is_not_simplex_link_qr_code)
)
}
val linkVerified = verifyOnly(text)
if (!linkVerified) {
AlertManager.shared.showAlertMsg(
title = generalGetString(MR.strings.invalid_qr_code),
text = generalGetString(MR.strings.code_you_scanned_is_not_simplex_link_qr_code)
)
}
verifyAndConnect(rhId, text, close)
}
}
}
@@ -656,23 +654,25 @@ private fun filteredProfiles(users: List<User>, searchTextOrPassword: String): L
}
}
private suspend fun verify(rhId: Long?, text: String?, close: () -> Unit): Boolean {
private fun verifyOnly(text: String?): Boolean = text != null && strIsSimplexLink(text)
private suspend fun verifyAndConnect(rhId: Long?, text: String?, close: () -> Unit): Boolean {
if (text != null && strIsSimplexLink(text)) {
connect(rhId, text, close)
return true
return withContext(Dispatchers.Default) {
connect(rhId, text, close)
}
}
return false
}
private suspend fun connect(rhId: Long?, link: String, close: () -> Unit, cleanup: (() -> Unit)? = null) {
private suspend fun connect(rhId: Long?, link: String, close: () -> Unit, cleanup: (() -> Unit)? = null): Boolean =
planAndConnect(
rhId,
link,
close = close,
cleanup = cleanup,
incognito = null
)
}
).await()
private fun createInvitation(
rhId: Long?,
@@ -10,5 +10,5 @@ import chat.simplex.common.ui.theme.DEFAULT_PADDING_HALF
expect fun QRCodeScanner(
showQRCodeScanner: MutableState<Boolean> = remember { mutableStateOf(true) },
padding: PaddingValues = PaddingValues(horizontal = DEFAULT_PADDING * 2f, vertical = DEFAULT_PADDING_HALF),
onBarcode: (String) -> Unit
onBarcode: suspend (String) -> Boolean
)
@@ -1,7 +1,11 @@
package chat.simplex.common.views.onboarding
import SectionBottomSpacer
import SectionDividerSpaced
import SectionItemView
import SectionTextFooter
import SectionView
import TextIconSpaced
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.*
@@ -12,8 +16,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ServerOperator
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.helpers.*
@@ -49,7 +53,7 @@ fun ModalData.ChooseServerOperators(
Column(Modifier.fillMaxWidth().padding(horizontal = DEFAULT_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingInformationButton(
stringResource(MR.strings.how_it_helps_privacy),
onClick = { modalManager.showModal { ChooseServerOperatorsInfoView() } }
onClick = { modalManager.showModal { ChooseServerOperatorsInfoView(modalManager) } }
)
}
@@ -57,7 +61,8 @@ fun ModalData.ChooseServerOperators(
Column((
if (appPlatform.isDesktop) Modifier.width(600.dp).align(Alignment.CenterHorizontally) else Modifier)
.fillMaxWidth()
.padding(horizontal = DEFAULT_PADDING)
.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING),
horizontalAlignment = Alignment.CenterHorizontally
) {
serverOperators.value.forEachIndexed { index, srvOperator ->
OperatorCheckView(srvOperator, selectedOperatorIds)
@@ -67,6 +72,7 @@ fun ModalData.ChooseServerOperators(
}
Spacer(Modifier.height(DEFAULT_PADDING_HALF))
SectionTextFooter(annotatedStringResource(MR.strings.onboarding_network_operators_simplex_flux_agreement), textAlign = TextAlign.Center)
SectionTextFooter(annotatedStringResource(MR.strings.onboarding_network_operators_configure_via_settings), textAlign = TextAlign.Center)
}
Spacer(Modifier.weight(1f))
@@ -169,7 +175,7 @@ private fun ReviewConditionsButton(
modalManager: ModalManager
) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.operator_review_conditions,
onboarding = null,
enabled = enabled,
@@ -184,7 +190,7 @@ private fun ReviewConditionsButton(
@Composable
private fun SetOperatorsButton(enabled: Boolean, onboarding: Boolean, serverOperators: State<List<ServerOperator>>, selectedOperatorIds: State<Set<Long>>, close: () -> Unit) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.onboarding_network_operators_update,
onboarding = null,
enabled = enabled,
@@ -206,7 +212,7 @@ private fun SetOperatorsButton(enabled: Boolean, onboarding: Boolean, serverOper
@Composable
private fun ContinueButton(enabled: Boolean, onboarding: Boolean, close: () -> Unit) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.onboarding_network_operators_continue,
onboarding = null,
enabled = enabled,
@@ -234,7 +240,7 @@ private fun ReviewConditionsView(
// remembering both since we don't want to reload the view after the user accepts conditions
val operatorsWithConditionsAccepted = remember { chatModel.conditions.value.serverOperators.filter { it.conditionsAcceptance.conditionsAccepted } }
val acceptForOperators = remember { selectedOperators.value.filter { !it.conditionsAcceptance.conditionsAccepted } }
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = DEFAULT_PADDING)) {
ColumnWithScrollBar(modifier = Modifier.fillMaxSize().padding(horizontal = if (onboarding) DEFAULT_ONBOARDING_HORIZONTAL_PADDING else DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.operator_conditions_of_use), withPadding = false, enableAlphaChanges = false, bottomPadding = DEFAULT_PADDING)
if (operatorsWithConditionsAccepted.isNotEmpty()) {
ReadableText(MR.strings.operator_conditions_accepted_for_some, args = operatorsWithConditionsAccepted.joinToString(", ") { it.legalName_ })
@@ -267,7 +273,7 @@ private fun AcceptConditionsButton(
}
}
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier,
modifier = if (appPlatform.isAndroid) Modifier.fillMaxWidth() else Modifier,
labelId = MR.strings.accept_conditions,
onboarding = null,
onclick = {
@@ -338,11 +344,49 @@ private fun enabledOperators(operators: List<ServerOperator>, selectedOperatorId
}
@Composable
private fun ChooseServerOperatorsInfoView() {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.onboarding_network_operators), withPadding = false)
ReadableText(stringResource(MR.strings.onboarding_network_operators_app_will_use_different_operators))
ReadableText(stringResource(MR.strings.onboarding_network_operators_app_will_use_for_routing))
private fun ChooseServerOperatorsInfoView(
modalManager: ModalManager
) {
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.onboarding_network_operators))
Column(
Modifier.padding(horizontal = DEFAULT_PADDING)
) {
ReadableText(stringResource(MR.strings.onboarding_network_operators_app_will_use_different_operators))
ReadableText(stringResource(MR.strings.onboarding_network_operators_cant_see_who_talks_to_whom))
ReadableText(stringResource(MR.strings.onboarding_network_operators_app_will_use_for_routing))
}
SectionDividerSpaced()
SectionView(title = stringResource(MR.strings.onboarding_network_about_operators).uppercase()) {
chatModel.conditions.value.serverOperators.forEach { op ->
ServerOperatorRow(op, modalManager)
}
}
SectionBottomSpacer()
}
}
@Composable()
private fun ServerOperatorRow(
operator: ServerOperator,
modalManager: ModalManager
) {
SectionItemView(
{
modalManager.showModalCloseable { close ->
OperatorInfoView(operator)
}
}
) {
Image(
painterResource(operator.logo),
operator.tradeName,
modifier = Modifier.size(24.dp)
)
TextIconSpaced()
Text(operator.tradeName)
}
}
@@ -35,14 +35,14 @@ fun SetNotificationsMode(m: ChatModel) {
AppBarTitle(stringResource(MR.strings.onboarding_notifications_mode_title), bottomPadding = DEFAULT_PADDING)
}
val currentMode = rememberSaveable { mutableStateOf(NotificationsMode.default) }
Column(Modifier.padding(horizontal = DEFAULT_PADDING).fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
Column(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingInformationButton(
stringResource(MR.strings.onboarding_notifications_mode_subtitle),
onClick = { ModalManager.fullscreen.showModalCloseable { NotificationBatteryUsageInfo() } }
)
}
Spacer(Modifier.weight(1f))
Column(Modifier.padding(horizontal = DEFAULT_PADDING)) {
Column(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING)) {
SelectableCard(currentMode, NotificationsMode.SERVICE, stringResource(MR.strings.onboarding_notifications_mode_service), annotatedStringResource(MR.strings.onboarding_notifications_mode_service_desc_short)) {
currentMode.value = NotificationsMode.SERVICE
}
@@ -56,7 +56,7 @@ fun SetNotificationsMode(m: ChatModel) {
Spacer(Modifier.weight(1f))
Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingActionButton(
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier,
modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING).fillMaxWidth() else Modifier,
labelId = MR.strings.use_chat,
onboarding = OnboardingStage.OnboardingComplete,
onclick = {
@@ -190,7 +190,7 @@ private fun SetupDatabasePassphraseLayout(
@Composable
private fun SetPassphraseButton(disabled: Boolean, onClick: () -> Unit) {
OnboardingActionButton(
if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.set_database_passphrase,
onboarding = null,
onclick = onClick,
@@ -5,6 +5,7 @@ import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
@@ -13,6 +14,8 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.layout.layout
import androidx.compose.ui.text.TextLayoutResult
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.font.FontWeight
@@ -27,6 +30,8 @@ import chat.simplex.common.views.migration.MigrateToDeviceView
import chat.simplex.common.views.migration.MigrationToState
import chat.simplex.res.MR
import dev.icerock.moko.resources.StringResource
import kotlin.math.ceil
import kotlin.math.floor
@Composable
fun SimpleXInfo(chatModel: ChatModel, onboarding: Boolean = true) {
@@ -52,7 +57,7 @@ fun SimpleXInfoLayout(
user: User?,
onboardingStage: SharedPreference<OnboardingStage>?
) {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
ColumnWithScrollBar(Modifier.padding(horizontal = DEFAULT_ONBOARDING_HORIZONTAL_PADDING), horizontalAlignment = Alignment.CenterHorizontally) {
Box(Modifier.widthIn(max = if (appPlatform.isAndroid) 250.dp else 500.dp).padding(top = DEFAULT_PADDING + 8.dp), contentAlignment = Alignment.Center) {
SimpleXLogo()
}
@@ -73,7 +78,7 @@ fun SimpleXInfoLayout(
Column(Modifier.fillMaxHeight().weight(1f)) { }
if (onboardingStage != null) {
Column(Modifier.padding(horizontal = DEFAULT_PADDING).widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally,) {
Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally,) {
OnboardingActionButton(user, onboardingStage)
TextButtonBelowOnboardingButton(stringResource(MR.strings.migrate_from_another_device)) {
chatModel.migrationState.value = MigrationToState.PasteOrScanLink
@@ -139,7 +144,7 @@ fun OnboardingActionButton(
shape = CircleShape,
enabled = enabled,
// elevation = ButtonDefaults.elevation(defaultElevation = 0.dp, focusedElevation = 0.dp, pressedElevation = 0.dp, hoveredElevation = 0.dp),
contentPadding = PaddingValues(horizontal = if (icon == null) DEFAULT_PADDING * 2 else DEFAULT_PADDING * 1.5f, vertical = DEFAULT_PADDING),
contentPadding = PaddingValues(horizontal = if (icon == null) DEFAULT_PADDING * 2 else DEFAULT_PADDING * 1.5f, vertical = 17.dp),
colors = ButtonDefaults.buttonColors(MaterialTheme.colors.primary, disabledBackgroundColor = MaterialTheme.colors.secondary)
) {
if (icon != null) {
@@ -153,8 +158,8 @@ fun OnboardingActionButton(
fun TextButtonBelowOnboardingButton(text: String, onClick: (() -> Unit)?) {
val state = getKeyboardState()
val enabled = onClick != null
val topPadding by animateDpAsState(if (appPlatform.isAndroid && state.value == KeyboardState.Opened) 0.dp else DEFAULT_PADDING_HALF)
val bottomPadding by animateDpAsState(if (appPlatform.isAndroid && state.value == KeyboardState.Opened) 0.dp else DEFAULT_PADDING_HALF)
val topPadding by animateDpAsState(if (appPlatform.isAndroid && state.value == KeyboardState.Opened) 0.dp else 7.5.dp)
val bottomPadding by animateDpAsState(if (appPlatform.isAndroid && state.value == KeyboardState.Opened) 0.dp else 7.5.dp)
if ((appPlatform.isAndroid && state.value == KeyboardState.Closed) || topPadding > 0.dp) {
TextButton({ onClick?.invoke() }, Modifier.padding(top = topPadding, bottom = bottomPadding).clip(CircleShape), enabled = enabled) {
Text(
@@ -181,13 +186,41 @@ fun OnboardingInformationButton(
.clip(CircleShape)
.clickable { onClick() }
) {
Row(Modifier.padding(8.dp), horizontalArrangement = Arrangement.spacedBy(4.dp) ) {
Row(Modifier.padding(8.dp), horizontalArrangement = Arrangement.spacedBy(4.dp)) {
Icon(
painterResource(MR.images.ic_info),
null,
tint = MaterialTheme.colors.primary
)
Text(text, style = MaterialTheme.typography.button, color = MaterialTheme.colors.primary)
// https://issuetracker.google.com/issues/206039942#comment32
var textLayoutResult: TextLayoutResult? by remember { mutableStateOf(null) }
Text(
text,
Modifier
.layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
val newTextLayoutResult = textLayoutResult
if (newTextLayoutResult == null || newTextLayoutResult.lineCount == 0) {
// Default behavior if there is no text or the text layout is not measured yet
layout(placeable.width, placeable.height) {
placeable.placeRelative(0, 0)
}
} else {
val minX = (0 until newTextLayoutResult.lineCount).minOf(newTextLayoutResult::getLineLeft)
val maxX = (0 until newTextLayoutResult.lineCount).maxOf(newTextLayoutResult::getLineRight)
layout(ceil(maxX - minX).toInt(), placeable.height) {
placeable.place(-floor(minX).toInt(), 0)
}
}
},
onTextLayout = {
textLayoutResult = it
},
style = MaterialTheme.typography.button,
color = MaterialTheme.colors.primary
)
}
}
}
@@ -40,6 +40,8 @@ import chat.simplex.res.MR
import dev.icerock.moko.resources.ImageResource
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@Composable
fun ConnectDesktopView(close: () -> Unit) {
@@ -233,7 +235,7 @@ private fun FoundDesktop(
SectionSpacer()
if (compatible) {
SectionItemView({ confirmKnownDesktop(sessionAddress, rc) }) {
SectionItemView({ withBGApi { confirmKnownDesktop(sessionAddress, rc) } }) {
Icon(painterResource(MR.images.ic_check), generalGetString(MR.strings.connect_button), tint = MaterialTheme.colors.secondary)
TextIconSpaced(false)
Text(generalGetString(MR.strings.connect_button))
@@ -356,7 +358,7 @@ private fun ScanDesktopAddressView(sessionAddress: MutableState<String>) {
SectionView(stringResource(MR.strings.scan_qr_code_from_desktop).uppercase()) {
QRCodeScanner { text ->
sessionAddress.value = text
processDesktopQRCode(sessionAddress, text)
connectDesktopAddress(sessionAddress, text)
}
}
}
@@ -398,7 +400,7 @@ private fun DesktopAddressView(sessionAddress: MutableState<String>) {
stringResource(MR.strings.connect_to_desktop),
disabled = sessionAddress.value.isEmpty(),
click = {
connectDesktopAddress(sessionAddress, sessionAddress.value)
withBGApi { connectDesktopAddress(sessionAddress, sessionAddress.value) }
},
)
}
@@ -461,10 +463,6 @@ private suspend fun updateRemoteCtrls(remoteCtrls: SnapshotStateList<RemoteCtrlI
}
}
private fun processDesktopQRCode(sessionAddress: MutableState<String>, resp: String) {
connectDesktopAddress(sessionAddress, resp)
}
private fun findKnownDesktop(showConnectScreen: MutableState<Boolean>) {
withBGApi {
if (controller.findKnownRemoteCtrl()) {
@@ -478,45 +476,48 @@ private fun findKnownDesktop(showConnectScreen: MutableState<Boolean>) {
}
}
private fun confirmKnownDesktop(sessionAddress: MutableState<String>, rc: RemoteCtrlInfo) {
connectDesktop(sessionAddress) {
controller.confirmRemoteCtrl(rc.remoteCtrlId)
private suspend fun confirmKnownDesktop(sessionAddress: MutableState<String>, rc: RemoteCtrlInfo): Boolean {
return withContext(Dispatchers.Default) {
connectDesktop(sessionAddress) {
controller.confirmRemoteCtrl(rc.remoteCtrlId)
}
}
}
private fun connectDesktopAddress(sessionAddress: MutableState<String>, addr: String) {
connectDesktop(sessionAddress) {
controller.connectRemoteCtrl(addr)
private suspend fun connectDesktopAddress(sessionAddress: MutableState<String>, addr: String): Boolean {
return withContext(Dispatchers.Default) {
connectDesktop(sessionAddress) {
controller.connectRemoteCtrl(addr)
}
}
}
private fun connectDesktop(sessionAddress: MutableState<String>, connect: suspend () -> Pair<SomeRemoteCtrl?, CR.ChatCmdError?>) {
withBGApi {
val res = connect()
if (res.first != null) {
val (rc_, ctrlAppInfo, v) = res.first!!
sessionAddress.value = ""
chatModel.remoteCtrlSession.value = RemoteCtrlSession(
ctrlAppInfo = ctrlAppInfo,
appVersion = v,
sessionState = UIRemoteCtrlSessionState.Connecting(remoteCtrl_ = rc_)
)
} else {
val e = res.second ?: return@withBGApi
when {
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadInvitation -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorChat && e.chatError.errorType is ChatErrorType.CommandError -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadVersion -> showBadVersionAlert(v = e.chatError.remoteCtrlError.appVersion)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.VERSION -> showBadVersionAlert(v = null)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.CTRL_AUTH -> showDesktopDisconnectedErrorAlert()
else -> {
val errMsg = "${e.responseType}: ${e.details}"
Log.e(TAG, "bad response: $errMsg")
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error), errMsg)
}
private suspend fun connectDesktop(sessionAddress: MutableState<String>, connect: suspend () -> Pair<SomeRemoteCtrl?, CR.ChatCmdError?>): Boolean {
val res = connect()
if (res.first != null) {
val (rc_, ctrlAppInfo, v) = res.first!!
sessionAddress.value = ""
chatModel.remoteCtrlSession.value = RemoteCtrlSession(
ctrlAppInfo = ctrlAppInfo,
appVersion = v,
sessionState = UIRemoteCtrlSessionState.Connecting(remoteCtrl_ = rc_)
)
} else {
val e = res.second ?: return false
when {
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadInvitation -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorChat && e.chatError.errorType is ChatErrorType.CommandError -> showBadInvitationErrorAlert()
e.chatError is ChatError.ChatErrorRemoteCtrl && e.chatError.remoteCtrlError is RemoteCtrlError.BadVersion -> showBadVersionAlert(v = e.chatError.remoteCtrlError.appVersion)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.VERSION -> showBadVersionAlert(v = null)
e.chatError is ChatError.ChatErrorAgent && e.chatError.agentError is AgentErrorType.RCP && e.chatError.agentError.rcpErr is RCErrorType.CTRL_AUTH -> showDesktopDisconnectedErrorAlert()
else -> {
val errMsg = "${e.responseType}: ${e.details}"
Log.e(TAG, "bad response: $errMsg")
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error), errMsg)
}
}
}
return res.first != null
}
private fun verifyDesktopSessionCode(remoteCtrls: SnapshotStateList<RemoteCtrlInfo>, sessCode: String) {
@@ -410,7 +410,7 @@ fun OperatorViewLayout(
}
@Composable
private fun OperatorInfoView(serverOperator: ServerOperator) {
fun OperatorInfoView(serverOperator: ServerOperator) {
ColumnWithScrollBar {
AppBarTitle(stringResource(MR.strings.operator_info_title))
@@ -427,23 +427,27 @@ private fun OperatorInfoView(serverOperator: ServerOperator) {
SectionDividerSpaced(maxBottomPadding = false)
val uriHandler = LocalUriHandler.current
SectionView {
SectionItemView {
Column(verticalArrangement = Arrangement.spacedBy(10.dp)) {
serverOperator.info.description.forEach { d ->
Text(d)
}
val website = serverOperator.info.website
Text(website, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(website) })
}
}
}
SectionDividerSpaced()
SectionView(generalGetString(MR.strings.operator_website).uppercase()) {
SectionItemView {
val website = serverOperator.info.website
val uriHandler = LocalUriHandler.current
Text(website, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(website) })
val selfhost = serverOperator.info.selfhost
if (selfhost != null) {
SectionDividerSpaced(maxBottomPadding = false)
SectionView {
SectionItemView {
val (text, link) = selfhost
Text(text, color = MaterialTheme.colors.primary, modifier = Modifier.clickable { uriHandler.openUriCatching(link) })
}
}
}
}
@@ -26,6 +26,7 @@ fun ScanProtocolServerLayout(rhId: Long?, onNext: (UserServer) -> Unit) {
text = generalGetString(MR.strings.smp_servers_check_address)
)
}
res != null
}
}
}
File diff suppressed because it is too large Load Diff
@@ -71,6 +71,8 @@
<string name="connection_local_display_name">connection %1$d</string>
<string name="display_name_connection_established">connection established</string>
<string name="display_name_invited_to_connect">invited to connect</string>
<string name="display_name_requested_to_connect">requested to connect</string>
<string name="display_name_accepted_invitation">accepted invitation</string>
<string name="display_name_connecting">connecting…</string>
<string name="description_you_shared_one_time_link">you shared one-time link</string>
<string name="description_you_shared_one_time_link_incognito">you shared one-time link incognito</string>
@@ -522,6 +524,10 @@
<string name="sync_connection_force_question">Renegotiate encryption?</string>
<string name="sync_connection_force_desc">The encryption is working and the new encryption agreement is not required. It may result in connection errors!</string>
<string name="sync_connection_force_confirm">Renegotiate</string>
<string name="sync_connection_question">Fix connection?</string>
<string name="sync_connection_desc">Connection requires encryption renegotiation.</string>
<string name="sync_connection_confirm">Fix</string>
<string name="encryption_renegotiation_in_progress">Encryption renegotiation in progress.</string>
<string name="view_security_code">View security code</string>
<string name="verify_security_code">Verify security code</string>
@@ -1075,8 +1081,11 @@
<!-- ChooseServerOperators.kt -->
<string name="onboarding_choose_server_operators">Server operators</string>
<string name="onboarding_network_operators">Network operators</string>
<string name="onboarding_network_operators_app_will_use_different_operators">When more than one network operator is enabled, the app will use the servers of different operators for each conversation.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">For example, if you receive messages via SimpleX Chat server, the app will use one of Flux servers for private routing.</string>
<string name="onboarding_network_operators_simplex_flux_agreement">SimpleX Chat and Flux made an agreement to include Flux-operated servers into the app.</string>
<string name="onboarding_network_operators_app_will_use_different_operators">The app protects your privacy by using different operators in each conversation.</string>
<string name="onboarding_network_operators_cant_see_who_talks_to_whom">When more than one operator is enabled, none of them has metadata to learn who communicates with whom.</string>
<string name="onboarding_network_operators_app_will_use_for_routing">For example, if your contact receives messages via a SimpleX Chat server, your app will deliver them via a Flux server.</string>
<string name="onboarding_network_about_operators">About operators</string>
<string name="onboarding_select_network_operators_to_use">Select network operators to use.</string>
<string name="how_it_helps_privacy">How it helps privacy</string>
<string name="onboarding_network_operators_configure_via_settings">You can configure servers via settings.</string>
@@ -1305,7 +1314,6 @@
<string name="chat_database_deleted">Chat database deleted</string>
<string name="restart_the_app_to_create_a_new_chat_profile">Restart the app to create a new chat profile.</string>
<string name="you_must_use_the_most_recent_version_of_database">You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts.</string>
<string name="stop_chat_to_enable_database_actions">Stop chat to enable database actions.</string>
<string name="files_and_media_section">Files &amp; media</string>
<string name="delete_files_and_media_for_all_users">Delete files for all chat profiles</string>
<string name="delete_files_and_media_all">Delete all files</string>
@@ -1396,7 +1404,8 @@
<string name="database_downgrade">Database downgrade</string>
<string name="incompatible_database_version">Incompatible database version</string>
<string name="confirm_database_upgrades">Confirm database upgrades</string>
<string name="one_hand_ui">Reachable chat toolbar</string>
<string name="one_hand_ui">Reachable app toolbars</string>
<string name="chat_bottom_bar">Reachable chat toolbar</string>
<string name="one_hand_ui_card_title">Toggle chat list:</string>
<string name="one_hand_ui_change_instruction">You can change it in Appearance settings.</string>
<string name="terminal_always_visible">Show console in new window</string>
@@ -1744,10 +1753,9 @@
<string name="use_servers_of_operator_x">Use %s</string>
<string name="operator_conditions_failed_to_load">Current conditions text couldn\'t be loaded, you can review conditions via this link:</string>
<string name="operator_conditions_accepted_for_some"><![CDATA[Conditions are already accepted for following operator(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Same conditions will apply to operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[Same conditions will apply to operator(s): <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[The same conditions will apply to operator <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_apply_to_operators"><![CDATA[The same conditions will apply to operator(s): <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_applied"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="operator_same_conditions_will_be_applied"><![CDATA[Same conditions will apply to operator: <b>%s</b>.]]></string>
<string name="operator_conditions_will_be_accepted_for_some"><![CDATA[Conditions will be accepted for operator(s): <b>%s</b>.]]></string>
<string name="operators_conditions_will_also_apply"><![CDATA[These conditions will also apply for: <b>%s</b>.]]></string>
<string name="view_conditions">View conditions</string>
@@ -2398,7 +2406,7 @@
<string name="servers_info_messages_sent">Messages sent</string>
<string name="servers_info_messages_received">Messages received</string>
<string name="servers_info_details">Details</string>
<string name="servers_info_private_data_disclaimer">Starting from %s.\nAll data is private to your device.</string>
<string name="servers_info_private_data_disclaimer">Starting from %s.\nAll data is kept private on your device..</string>
<string name="servers_info_subscriptions_section_header">Message reception</string>
<string name="servers_info_subscriptions_connections_subscribed">Active connections</string>
<string name="servers_info_subscriptions_connections_pending">Pending</string>
@@ -1133,7 +1133,6 @@
<string name="save_preferences_question">Запази настройките\?</string>
<string name="icon_descr_speaker_on">Високоговорителят е включен</string>
<string name="icon_descr_speaker_off">Високоговорителят е изключен</string>
<string name="stop_chat_to_enable_database_actions">Спрете чата, за да активирате действията с базата данни.</string>
<string name="role_in_group">Роля</string>
<string name="network_options_save">Запази</string>
<string name="reset_color">Нулирай цветовете</string>

Some files were not shown because too many files have changed in this diff Show More