Compare commits

..

172 Commits

Author SHA1 Message Date
Evgeny Poberezkin
8308651f44 android: 4.6-beta.0 (104) - for f-droid, the build is in armv7a branch 2023-03-22 22:40:35 +00:00
Evgeny Poberezkin
ad881bd46a ios: 4.6 (131) 2023-03-22 22:10:31 +00:00
Evgeny Poberezkin
c037eb2d24 Revert "mobile: hide observer role from UI (to be reverted after v4.5.4 is released)"
This reverts commit 37d0bc2f14.
2023-03-22 21:38:12 +00:00
Evgeny Poberezkin
8b4353deba ios: 4.6 (130) 2023-03-22 21:35:57 +00:00
Evgeny Poberezkin
a2be0d35fb readme: Spanish translation 2023-03-22 20:50:50 +00:00
Evgeny Poberezkin
1909bdc702 android: update string 2023-03-22 20:14:52 +00:00
Evgeny Poberezkin
63909defaf website: translations (#2061)
* Translated using Weblate (Arabic)

Currently translated at 96.2% (203 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 96.2% (203 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 97.1% (205 of 211 strings)

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

* Added translation using Weblate (Ukrainian)

* Added translation using Weblate (Chinese (Simplified))

* Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 11.8% (25 of 211 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

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

* Deleted translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (German)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 13.7% (29 of 211 strings)

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

---------

Co-authored-by: jonnysemon <johndevand@tutanota.com>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: 4 Bi 5aYzVk 93FCVjWLWxh44XH3984teVSfjwFYmUGUrbvnHwGirk9 <userfifteen.seventeen@mailfence.com>
Co-authored-by: Float <float.hu+@gmail.com>
Co-authored-by: mlanp <github@lang.xyz>
2023-03-22 19:42:54 +00:00
Evgeny Poberezkin
8544984b17 core: 4.6.0.0 2023-03-22 19:37:02 +00:00
Stanislav Dmitrenko
563984c0df android: strings for user privacy settings (#2060) 2023-03-22 19:34:43 +00:00
Evgeny Poberezkin
6500ee5fc9 mobile app translations (#2029)
* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 1.2% (11 of 907 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 1.2% (11 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 71.7% (692 of 965 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 100.0% (965 of 965 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 99.6% (904 of 907 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (965 of 965 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% (907 of 907 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 1.2% (11 of 907 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 1.2% (11 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 71.7% (692 of 965 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 100.0% (965 of 965 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 99.6% (904 of 907 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (965 of 965 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% (907 of 907 strings)

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

* Added translation using Weblate (Ukrainian)

* Added translation using Weblate (Ukrainian)

* Added translation using Weblate (Lithuanian)

* Added translation using Weblate (Lithuanian)

* Translated using Weblate (Spanish)

Currently translated at 84.8% (819 of 965 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 0.8% (8 of 965 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 0.9% (9 of 907 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 96.8% (935 of 965 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (965 of 965 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% (965 of 965 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 41.7% (379 of 907 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (967 of 967 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 44.9% (408 of 907 strings)

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

* Deleted translation using Weblate (Norwegian Bokmål)

* Deleted translation using Weblate (Polish)

* Deleted translation using Weblate (Norwegian Bokmål)

* Deleted translation using Weblate (Polish)

* Deleted translation using Weblate (Bulgarian)

* Deleted translation using Weblate (Bulgarian)

* Translated using Weblate (German)

Currently translated at 99.2% (900 of 907 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (967 of 967 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (967 of 967 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (967 of 967 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 73.2% (664 of 907 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (967 of 967 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (907 of 907 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (967 of 967 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (967 of 967 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 44.8% (434 of 967 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (967 of 967 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 99.4% (902 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (967 of 967 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 85.4% (775 of 907 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% (967 of 967 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% (907 of 907 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (967 of 967 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% (907 of 907 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (967 of 967 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% (907 of 907 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (967 of 967 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% (907 of 907 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (967 of 967 strings)

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

* ios: add Spanish

* ios: import localizations

* export localizations

* fix typo

* android: add Spanish

---------

Co-authored-by: sith-on-mars <groguko36@tuta.io>
Co-authored-by: Nick Lai <nick20080808@gmail.com>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: Moo <hazap@hotmail.com>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: Luis Morillo Najarro <luis_cnnvd@hotmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: Pedro Licio <amaralrj@gmail.com>
Co-authored-by: mlanp <github@lang.xyz>
2023-03-22 19:33:24 +00:00
Evgeny Poberezkin
61d8fa02d4 ios: export localizations 2023-03-22 17:50:41 +00:00
Evgeny Poberezkin
0fac2187f0 mobile: what's new in 4.6 (#2058)
* ios: what's new in 4.6

* android: what's new in 4.6
2023-03-22 17:45:55 +00:00
Evgeny Poberezkin
1db61be860 ios: remove unused type 2023-03-22 15:59:48 +00:00
Evgeny Poberezkin
06a0dbd0f2 core, iOS: hidden and muted user profiles (#2025)
* core, ios: profile privacy design

* migration

* core: user profile privacy

* update nix dependencies

* update simplexmq

* import stateTVar

* update core library

* update UI

* update hide/show user profile

* update API, UI, fix test

* update api, UI, test

* update api call

* fix api

* update UI for hidden profiles

* filter notifications on hidden/muted profiles when inactive, alerts

* updates

* update schema, test, icon
2023-03-22 15:58:01 +00:00
Evgeny Poberezkin
bcdf502ce6 core: update simplexmq 2023-03-22 09:10:54 +00:00
Stanislav Dmitrenko
f9e2f4931a android: group welcome message (#2042) 2023-03-21 23:00:20 +00:00
Stanislav Dmitrenko
8929d15df0 ios: ability to specify welcome message in a group (#2041)
* ios: ability to specify welcome message in a group

* update state in model
2023-03-21 15:15:48 +00:00
Stanislav Dmitrenko
2f529535b1 android: turn of screen in call (#2037) 2023-03-20 21:17:13 +00:00
Stanislav Dmitrenko
90c9eae283 android: night mode splash screen (#2036) 2023-03-20 18:04:48 +00:00
Stanislav Dmitrenko
added6105b android: relay server footer (#2035) 2023-03-20 17:12:15 +00:00
Stanislav Dmitrenko
2df39b5e24 android: catch exceptions while opening a URL (#2034) 2023-03-20 16:18:41 +00:00
Stanislav Dmitrenko
3477dd9400 android: system and in-app language selector (#2033)
* android: system language selector

* in-app language selector

* refactor

* refactor

* different value for Chinese

* change language order/names

* different translation

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-20 15:47:09 +00:00
Evgeny Poberezkin
5282551f3d Merge branch 'stable' 2023-03-19 22:59:36 +00:00
Evgeny Poberezkin
dcadaaf29b docs: readme (#2031) 2023-03-19 22:58:17 +00:00
Evgeny Poberezkin
e9d6baa6ba docs: translations (#2030)
* docs: translations

* update table

* update heading/links

* update table

* update table

* update heading
2023-03-19 20:28:39 +00:00
zenobit
6ae052a7a1 Added translated docs to czech (#1963)
* Added translated docs to czech

* Dates reverted, Added link to CZ WEBRTC.md
2023-03-19 18:10:32 +00:00
Stanislav Dmitrenko
9f750c2516 android: audio session management in calls (#2026)
* android: audio session management in calls

* audio session compatibility with old APIs

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-19 17:20:43 +00:00
Evgeny Poberezkin
1fe46834f2 mobile: add Chinese interface language 2023-03-19 17:17:27 +00:00
Evgeny Poberezkin
3db85c7d37 mobile app translations (#2028)
* Translated using Weblate (Russian)

Currently translated at 100.0% (965 of 965 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% (903 of 903 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 100.0% (903 of 903 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 99.8% (902 of 903 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (965 of 965 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% (903 of 903 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 100.0% (903 of 903 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 99.8% (902 of 903 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (903 of 903 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 59.1% (571 of 965 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 2.9% (27 of 903 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% (965 of 965 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% (903 of 903 strings)

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

* ios: remove unused translations

* ios: import/export localizations

---------

Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: John m <jvanmanen@gmail.com>
2023-03-19 13:35:51 +00:00
Evgeny Poberezkin
1e4f1b8891 ios: export localizations 2023-03-19 12:53:41 +00:00
Evgeny Poberezkin
0fcd6d40ee Merge pull request #2001 from simplex-chat/callkit
iOS: native calls using WebRTC library and CallKit
2023-03-19 12:25:44 +00:00
Evgeny Poberezkin
aaa4ffe789 Merge branch 'master' into callkit 2023-03-19 12:14:34 +00:00
Evgeny Poberezkin
8c4720d0cb ios: link to set app interface language 2023-03-19 12:14:10 +00:00
Evgeny Poberezkin
94b97f6097 cli: /db export command 2023-03-19 11:49:30 +00:00
Evgeny Poberezkin
85800d96c8 ios: import/export localizations 2023-03-18 18:02:34 +00:00
Evgeny Poberezkin
3b4c06111a ios: update core library 2023-03-18 17:54:40 +00:00
Evgeny Poberezkin
548d695a82 mobile app translations (#2027)
* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 92.6% (884 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 16.8% (161 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 16.8% (161 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 69.1% (660 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 72.7% (694 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 90.1% (860 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.1% (249 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 0.1% (1 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 27.1% (260 of 959 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (959 of 959 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% (893 of 893 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 1.1% (11 of 959 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 35.8% (344 of 959 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (965 of 965 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 100.0% (965 of 965 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 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 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% (965 of 965 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% (893 of 893 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 2.5% (25 of 965 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 4.8% (43 of 893 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 0.6% (6 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (965 of 965 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% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 32.5% (314 of 965 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 32.5% (314 of 965 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 1.7% (16 of 893 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% (965 of 965 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% (893 of 893 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 45.5% (440 of 965 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 100.0% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 92.6% (884 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 16.8% (161 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 16.8% (161 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 69.1% (660 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 72.7% (694 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 90.1% (860 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.1% (249 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 0.1% (1 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 27.1% (260 of 959 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (959 of 959 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% (893 of 893 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 1.1% (11 of 959 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (959 of 959 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 35.8% (344 of 959 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (965 of 965 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 100.0% (965 of 965 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 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 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% (965 of 965 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% (893 of 893 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 2.5% (25 of 965 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 4.8% (43 of 893 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 0.6% (6 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (965 of 965 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% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (965 of 965 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 32.5% (314 of 965 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 32.5% (314 of 965 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 1.7% (16 of 893 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% (965 of 965 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% (893 of 893 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 45.5% (440 of 965 strings)

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

---------

Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: Bdd55oo <giggzuv9z.eofjx@aleeas.com>
Co-authored-by: Pedro Licio <amaralrj@gmail.com>
Co-authored-by: Pedro Licio <pedro@agenciaregex.com>
Co-authored-by: Float <float.hu+@gmail.com>
Co-authored-by: sith-on-mars <groguko36@tuta.io>
Co-authored-by: jonnysemon <johndevand@tutanota.com>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: Nick Lai <nick20080808@gmail.com>
Co-authored-by: M Sarmad Qadeer <msarmadqadeer@gmail.com>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: Luis Morillo Najarro <luis_cnnvd@hotmail.com>
2023-03-18 17:46:50 +00:00
Evgeny Poberezkin
c986a4b88b website: enable Italian and Dutch translations 2023-03-18 17:20:08 +00:00
Evgeny Poberezkin
09940ccf8d website translations (#1960)
* Added translation using Weblate (Arabic)

* Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 20.3% (43 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 52.6% (111 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 61.6% (130 of 211 strings)

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

* Added translation using Weblate (Arabic)

* Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 20.3% (43 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 52.6% (111 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 61.6% (130 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 69.1% (146 of 211 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 76.7% (162 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 46.4% (98 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 50.2% (106 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 95.7% (202 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 96.6% (204 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (211 of 211 strings)

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

* Added translation using Weblate (Italian)

* Translated using Weblate (Italian)

Currently translated at 100.0% (211 of 211 strings)

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

* Added translation using Weblate (Spanish)

* remove "coming soon"

---------

Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: jonnysemon <johndevand@tutanota.com>
Co-authored-by: ManeraKai <manerakai@protonmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: random r <epsilin@yopmail.com>
2023-03-18 17:12:25 +00:00
Evgeny Poberezkin
d8cc867099 update simplexmq 2023-03-18 16:18:59 +00:00
Evgeny Poberezkin
dce8a1dff9 update simplexmq 2023-03-18 13:43:01 +00:00
Evgeny Poberezkin
5bc9e014c2 update simplexmq 2023-03-18 13:26:54 +00:00
Evgeny Poberezkin
8a2876fca9 core: uncomment simplexmq QQ git reference, ios: update core 2023-03-18 11:00:19 +00:00
Evgeny Poberezkin
17f39ec6a0 Merge branch 'stable' 2023-03-18 09:59:08 +00:00
Evgeny Poberezkin
498ffe8a71 4.5.4: Android 103, iOS 128 2023-03-18 09:57:19 +00:00
Evgeny Poberezkin
66ea2d5d71 Merge branch 'stable' 2023-03-18 08:38:10 +00:00
Evgeny Poberezkin
3dd5b5d835 core: 4.5.4.2 (add stateTVar imports) 2023-03-18 07:59:43 +00:00
Evgeny Poberezkin
9127b1bbc6 Merge pull request #2022 from simplex-chat/ep/v454
v4.5.4: add support for observer role
2023-03-17 17:14:43 +00:00
Evgeny Poberezkin
1657bcf97d core: 4.5.4.1 2023-03-17 15:02:41 +00:00
Evgeny Poberezkin
428db2f8f4 core: fix unused contact deletion (#2023)
* core: failing test for leaving and deleting the group joined via link

* fix test

* merge logic

* fix

* add condition

* refactor

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>

* compiles

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2023-03-17 16:03:19 +04:00
Evgeny Poberezkin
4cc59d9fbd core: 4.5.4.0 2023-03-16 23:30:28 +00:00
Evgeny Poberezkin
c50306709b mobile: do not show "observer" overlay when user leaves group 2023-03-16 23:29:47 +00:00
Evgeny Poberezkin
37d0bc2f14 mobile: hide observer role from UI (to be reverted after v4.5.4 is released) 2023-03-16 22:58:00 +00:00
Stanislav Dmitrenko
2fda0454e3 android: group link role, add observer role (#1981)
* android: group link role, add observer role

* padding

* disabled tint for buttons

* proper layout for long display name

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-16 22:20:42 +00:00
Evgeny Poberezkin
be19af62d9 ios: group link role, add observer role (#1978)
* ios: group link role, add observer role

* prevent observers from sending in UI, clear compose state on role change
2023-03-16 22:20:20 +00:00
Evgeny Poberezkin
f915eb2a20 core: initial group member role when joining via link (#1975)
* core: initial group member role when joining via link

* fix tests

* set role when joining group via link, enable observer test

* show group link when role changes

* amend test

* check role is member or observer when creating a link
2023-03-16 22:19:51 +00:00
Evgeny Poberezkin
2bc1236a2c terminal: update help, remove user ID from terminal /smp test command (#1973)
* terminal: update help, remove user ID from terminal /smp test command

* update mobile api

* update help
2023-03-16 22:19:22 +00:00
Evgeny Poberezkin
9db1924268 ios: optionally show callkit calls in recents and update settings (#2021)
* ios: optionally show callkit calls in recents and update settings

* refactor, fix call error when starting from recents
2023-03-16 22:08:58 +00:00
Evgeny Poberezkin
7a9f220290 ios: do not suspend chat when switching to another callkit call (#2020) 2023-03-16 20:19:53 +00:00
Evgeny Poberezkin
8145387f77 ios: CallKit changed reporting logic (#2019)
* ios: CallKit changed reporting logic

* refactor, suspend chat after call when app is in background

---------

Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
2023-03-16 19:57:43 +00:00
Evgeny Poberezkin
063440e735 ios: remove sheets in ActiveCallView (does not work when call accepted from background via callkit) 2023-03-16 17:18:25 +00:00
Evgeny Poberezkin
6724de09c9 ios: dismiss sheets on IncomingCallView, send notification if reportNewIncomingVoIPPushPayload fails 2023-03-16 16:59:05 +00:00
Evgeny Poberezkin
809cc1f234 ios: different speaker buttons on call screen 2023-03-16 08:46:13 +00:00
Stanislav Dmitrenko
2643ea9066 ios: reverted some changes related to lockScreen (#2011)
* Revert "ios: CallKit enhancements (#2010)"

This reverts commit 840df89ca6.

* Revert "ios: CallKit integrated with app lock and screen protect (#2007)"

This reverts commit 0404b020e6.

* ios: reverted some changes related to lockScreen

* undo delay

* better support of appLock + call

* refactor

* refactor 2

* refactor 3

* refactor 4

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-15 21:09:33 +00:00
Stanislav Dmitrenko
840df89ca6 ios: CallKit enhancements (#2010)
* ios: CallKit enhancements

* better checks
2023-03-15 15:32:27 +00:00
Stanislav Dmitrenko
0404b020e6 ios: CallKit integrated with app lock and screen protect (#2007)
* ios: CallKit integrated with app lock and screen protect

* better lock mechanics

* background color

* logs

* refactor, revert auth changes

* additional state variable to allow connecting call

* fix lock screen, public logs

* show callkit option without dev tools

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-15 10:21:21 +00:00
Stanislav Dmitrenko
f48cabcc0a ios: CallKit double call in background fix (#2004) 2023-03-14 15:28:34 +00:00
Stanislav Dmitrenko
f123a905d5 app icon in CallKit screen (#2003) 2023-03-14 15:19:54 +00:00
Stanislav Dmitrenko
9ec6911005 ios: CallKit integration (#1969)
* ios: CallKit integration

* notifying CallKit about outgoing call

* changes

* switching calls with CallKit

* string

* add NSE filtering entitlement

* add NSE build scheme

* remove some call limitations

* calls enhancments

* fixed calls on lockscreen

* don't display useless notification

* fix app state

* ability to answer on call from chat item via CallKit

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-14 08:12:40 +00:00
darkmaster
c4c93f881d docs: fixes listening port (server) [FR] (#2000) 2023-03-13 23:57:37 +00:00
Evgeny Poberezkin
13706c4f64 website: remove "coming soon" from released features 2023-03-12 23:44:16 +00:00
Evgeny Poberezkin
f2f4b26c35 core: update agent protocol to parameterize by entity type (#1988)
* core: update agent protocol to parameterize by entity type

* update simplexmq
2023-03-10 17:23:04 +00:00
Evgeny Poberezkin
1b7b9da07c ios: update core library 2023-03-09 23:08:53 +00:00
Evgeny Poberezkin
2817306659 core: types to support xftp (#1971)
* core: types to support xftp

* migration, amend types

* update protocol / types

* update protocol, types

* update schema, simplexmq
2023-03-09 11:01:22 +00:00
Stanislav Dmitrenko
5f587c2104 android: group link role, add observer role (#1981)
* android: group link role, add observer role

* padding

* disabled tint for buttons

* proper layout for long display name

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-07 22:27:28 +00:00
M Sarmad Qadeer
f5670c39da website: add support for overlay hash in URL (#1974)
* website: add support for overlay hash in URL

* website: update the overlay hashes

* website: fix the ui of donate button in join simplex section

* website: make the text selectable of unique & explained swiper

* scroll to popup context

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-06 22:25:54 +00:00
Stanislav Dmitrenko
c0105d135c android: UI to moderate messages to other members (#1982)
* android: UI to moderate messages to other members

* do not show moderate button on moderated, show alert

* changed item

* limiting number of lines in header

* limit text height
2023-03-06 21:58:44 +00:00
Evgeny Poberezkin
f1a9814faa ios: UI to moderate messages of other members (#1980)
* ios: UI to moderate messages of other members

* split moderate action

* do not show moderate button on moderated, show alert
2023-03-06 21:57:58 +00:00
Evgeny Poberezkin
8f0e7512be ios: group link role, add observer role (#1978)
* ios: group link role, add observer role

* prevent observers from sending in UI, clear compose state on role change
2023-03-06 13:54:43 +00:00
Evgeny Poberezkin
7d49209f79 core: initial group member role when joining via link (#1975)
* core: initial group member role when joining via link

* fix tests

* set role when joining group via link, enable observer test

* show group link when role changes

* amend test

* check role is member or observer when creating a link
2023-03-06 09:51:42 +00:00
Evgeny Poberezkin
b2e285c2c7 terminal: update help, remove user ID from terminal /smp test command (#1973)
* terminal: update help, remove user ID from terminal /smp test command

* update mobile api

* update help
2023-03-04 22:33:17 +00:00
Stanislav Dmitrenko
54020250dc ios: native WebRTC (#1933)
* ios: native WebRTC

* add video showing

* make async function better working with main thread

* wrapped code in main actor, just in case

* small change

* a little better

* enable relay

* removed unused code

* allow switching calls

* testing

* enable encryption

* testing more

* another test

* one more test

* fix remote unencrypted video

* deleted unused code related to PixelBuffer

* added MediaEncryption playground

* better playground

* better playground

* fixes

* use new encryption api

* media encryption works

* small changes

* added lib dependency

* use commit reference for lib instead of version

* video format, PIP size

* remove sample.js

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-03-02 13:17:01 +00:00
Evgeny Poberezkin
01acbb970a blog: typos 2023-03-01 20:03:06 +00:00
Evgeny Poberezkin
36cad35d46 blog: SimpleX File Transfer Protocol (XFTP) (#1965)
* blog: SimpleX File Transfer Protocol (XFTP)

* update blog

* simplify quick start

* update blog
2023-03-01 19:29:59 +00:00
spacedandy
41c9c84139 4.5.3: iOS 127 2023-03-01 19:38:50 +04:00
spacedandy
9e9ca521b0 4.5.3: Android 102 2023-03-01 18:00:49 +04:00
spaced4ndy
1927862871 android: show "export prohibited" alert on enabling app data backup with random db password set (#1962) 2023-03-01 14:36:08 +04:00
spacedandy
c80eaf8550 core: 4.5.3.1 2023-03-01 13:23:34 +04:00
Evgeny Poberezkin
9e6a35bac3 mobile: add Czech, fix translations (#1961)
* ios: import localizations

* re-export localizations

* add Czech language

* fix Czech strings

* add Czech to android
2023-03-01 08:52:56 +00:00
Evgeny Poberezkin
62ffcf94a6 translations (#1956)
* Translated using Weblate (Chinese (Simplified))

Currently translated at 73.6% (658 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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 99.7% (891 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 78.2% (699 of 893 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 82.5% (737 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 96.5% (862 of 893 strings)

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

* Added translation using Weblate (Arabic)

* Added translation using Weblate (Arabic)

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 73.6% (658 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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 99.7% (891 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 78.2% (699 of 893 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 82.5% (737 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 96.5% (862 of 893 strings)

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

* Added translation using Weblate (Arabic)

* Added translation using Weblate (Arabic)

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (954 of 954 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% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 59.2% (565 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (893 of 893 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 0.6% (6 of 954 strings)

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

---------

Co-authored-by: Aaron H <niximi333@gmail.com>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: M Sarmad Qadeer <msarmadqadeer@gmail.com>
Co-authored-by: Bdd55oo <giggzuv9z.eofjx@aleeas.com>
Co-authored-by: Pedro Licio <pedro@agenciaregex.com>
2023-03-01 08:15:32 +00:00
Evgeny Poberezkin
2b77920dcd teminal: option to log errors and service messages to file, closes #1516 (#1957)
* teminal: option to log errors and service messages to file, closes #1516

* rename function
2023-02-28 23:26:08 +00:00
darkmaster
38b7e4d4a4 docs: fixes listening port (server) (#1958) 2023-02-27 20:15:08 +00:00
Evgeny Poberezkin
3e4d4f04ef ios: allow pasting profile image 2023-02-27 17:46:10 +00:00
Evgeny Poberezkin
f6f3d17383 ios: do not show notifications on update events in inactive profiles (#1959) 2023-02-27 16:20:54 +00:00
Evgeny Poberezkin
d5f6b76ec5 core: increase default queue sizes to 1024, fix broadcast bot not to lock when queue is smaller than the number of contacts (#1955) 2023-02-26 16:36:11 +00:00
zenobit
ae75be56ea blog: string fix (#1952) 2023-02-25 17:53:31 +00:00
Evgeny Poberezkin
50b90c4814 core: use 12 bytes IV for WebRTC frame encryption with AES-GCM (#1951)
* core: use 12 bytes IV for WebRTC frame encryption with AES-GCM

* refactor
2023-02-25 17:52:23 +00:00
+shyfire131
6eddb5f30f fix comment syntax in cabal.project.mac (#1948)
Co-authored-by: +shyfire131 <shyfire131@shyfire131.net>
2023-02-24 21:04:46 +00:00
Evgeny Poberezkin
cee8f3a4b6 website internationalization (#1922)
* website Internationalization (#1904)

* added devcontainer config

* internationalization under dev

* internationalization of _data done

* overlays internationalization done

* improved routing

* updated gitignore

* remove .devcontainer

* internationalization in progess
deleted all the intermediate files
added translation of few sections

* remaining website strings are added to translation

* done internationalization
- fully converted to i18n plugin
- wrote bash script for creating a combined translations.json

* internationalization UI done

* a quick fix

* remove jq installation

* Added translation using Weblate (German)

* Translated using Weblate (French)

Currently translated at 100.0% (212 of 212 strings)

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

* Translated using Weblate (German)

Currently translated at 42.9% (91 of 212 strings)

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

* fixes of web Internationalization (#1925)

* a quick fix

* blog route for all languages is shifted to root blog route

* wrote merge_translations.js

* remove language label from dropdown

* update language names

* refactor scripts

* remove catch from script

* Added translation using Weblate (Dutch)

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (Dutch)

Currently translated at 33.0% (70 of 212 strings)

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

* website: internationalization fixes (#1931)

* added devcontainer config

* internationalization under dev

* internationalization of _data done

* overlays internationalization done

* improved routing

* updated gitignore

* remove .devcontainer

* internationalization in progess
deleted all the intermediate files
added translation of few sections

* remaining website strings are added to translation

* done internationalization
- fully converted to i18n plugin
- wrote bash script for creating a combined translations.json

* internationalization UI done

* a quick fix

* blog route for all languages is shifted to root blog route

* wrote merge_translations.js

* remove flag from blog

* updated nav stylings & logo links

* add enabled key

* updated nav dropdown styling

* gave specific lang to i18n plugin.
overlay translations are now working.

* enable nl & nb_NO

* updated nav stylings

* updated contact.js

---------

Co-authored-by: M Sarmad Qadeer <msarmadqadeer@gmail.com>

* Translated using Weblate (German)

Currently translated at 47.6% (101 of 212 strings)

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

* fixed internationalization issues

* updated strings, refactor contact.js

* updated nav stylings for mobile

* a bit smaller padding on mobile

* Added translation using Weblate (Czech)

* Translated using Weblate (Czech)

Currently translated at 100.0% (212 of 212 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (212 of 212 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (212 of 212 strings)

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

* enabled languages

* check/correct (#1949)

---------

Co-authored-by: M Sarmad Qadeer <MSarmadQadeer@gmail.com>
Co-authored-by: Ophiushi <Ophiushi@users.noreply.hosted.weblate.org>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
2023-02-24 21:03:57 +00:00
Evgeny Poberezkin
a2e5733be6 core: update/fix webrtc frame encryption function to return error (#1950)
* core: update/fix webrtc frame encryption function to return error

* ios: update C header

* more tests
2023-02-24 20:55:59 +00:00
Evgeny Poberezkin
5075657c02 ios: update core library 2023-02-23 23:36:39 +00:00
Evgeny Poberezkin
0450b1ace2 mobile: welcome/about page (#1946)
* mobile: welcome/about page

* scroll view (fixes trimmed texts)

* layout

* bigger frame

* minHeight, to allow scroling with large font

---------

Co-authored-by: spacedandy <8711996+spaced4ndy@users.noreply.github.com>
2023-02-21 15:31:41 +00:00
Evgeny Poberezkin
0ebf1da05d core: WebRTC frames encryption (#1942)
* core: WebRTC frames encryption

* test
2023-02-19 23:51:50 +00:00
Evgeny Poberezkin
07ad3edbc2 4.5.3-beta.0: Android 101, iOS 126 2023-02-19 13:42:32 +00:00
Evgeny Poberezkin
b40ed2a7f3 core: 4.5.3.0 2023-02-19 10:09:22 +00:00
Evgeny Poberezkin
29b074607c mobile: add Dutch interface (#1941)
* iOS: add Dutch language

* ios: re-export localizations

* enable Dutch in Android
2023-02-19 08:47:26 +00:00
Evgeny Poberezkin
258a157e44 translations (#1938)
* Translated using Weblate (Italian)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 46.5% (444 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 46.5% (444 of 953 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% (953 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 50.8% (485 of 953 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% (953 of 953 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 0.3% (3 of 891 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 57.0% (544 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 51.6% (460 of 891 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 15.1% (144 of 953 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 15.2% (145 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 14.3% (128 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 15.1% (135 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 14.3% (137 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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 25.1% (224 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.1% (144 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 59.4% (567 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 53.5% (477 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.5% (148 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 29.2% (261 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.6% (149 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 31.6% (282 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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 36.2% (323 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 7.4% (71 of 953 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 41.5% (370 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 53.9% (481 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 57.5% (513 of 891 strings)

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

* Added translation using Weblate (Bulgarian)

* Added translation using Weblate (Bulgarian)

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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 77.2% (688 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 83.9% (748 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 15.9% (152 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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% (891 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (954 of 954 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 7.9% (76 of 954 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 99.8% (953 of 954 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% (891 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 99.8% (953 of 954 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% (891 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 99.8% (953 of 954 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% (891 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Added translation using Weblate (Norwegian Bokmål)

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (German)

Currently translated at 100.0% (954 of 954 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 100.0% (954 of 954 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (891 of 891 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 67.1% (641 of 954 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.7% (150 of 954 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 99.3% (948 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 61.4% (586 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 55.5% (495 of 891 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 27.2% (260 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 42.5% (406 of 954 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 2.0% (18 of 891 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 66.2% (632 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 61.3% (547 of 891 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (891 of 891 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 46.5% (444 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 46.5% (444 of 953 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% (953 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 50.8% (485 of 953 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% (953 of 953 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 0.3% (3 of 891 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 57.0% (544 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 51.6% (460 of 891 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 15.1% (144 of 953 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 15.2% (145 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 14.3% (128 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 15.1% (135 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 14.3% (137 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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 25.1% (224 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.1% (144 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 59.4% (567 of 953 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 53.5% (477 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.5% (148 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 29.2% (261 of 891 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.6% (149 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 31.6% (282 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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 36.2% (323 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 7.4% (71 of 953 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 41.5% (370 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 53.9% (481 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 57.5% (513 of 891 strings)

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

* Added translation using Weblate (Bulgarian)

* Added translation using Weblate (Bulgarian)

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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 77.2% (688 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 83.9% (748 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 15.9% (152 of 953 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (953 of 953 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% (891 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (953 of 953 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (954 of 954 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 7.9% (76 of 954 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 99.8% (953 of 954 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% (891 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 99.8% (953 of 954 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% (891 of 891 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 99.8% (953 of 954 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% (891 of 891 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Added translation using Weblate (Norwegian Bokmål)

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (German)

Currently translated at 100.0% (954 of 954 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 100.0% (954 of 954 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (891 of 891 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 67.1% (641 of 954 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 15.7% (150 of 954 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 99.3% (948 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 61.4% (586 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 55.5% (495 of 891 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 27.2% (260 of 954 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 42.5% (406 of 954 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 2.0% (18 of 891 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 66.2% (632 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 61.3% (547 of 891 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (891 of 891 strings)

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

---------

Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: xqhjay <137847720@qq.com>
Co-authored-by: sith-on-mars <groguko36@pm.me>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: sith-on-mars <groguko36@tuta.io>
Co-authored-by: Bdd55oo <giggzuv9z.eofjx@aleeas.com>
Co-authored-by: Raman <translations.0l5zc@simplelogin.com>
Co-authored-by: LegendaryInfernalFox <0387agimeno@e-itaca.es>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: Ophiushi <Ophiushi@users.noreply.hosted.weblate.org>
Co-authored-by: tomato potato <4ryo49@protonmail.com>
Co-authored-by: Mehmed <pajazetovicmeho@gmail.com>
2023-02-19 08:23:32 +00:00
Evgeny Poberezkin
92d9a1f9f2 ios: export localizations 2023-02-18 19:32:25 +00:00
Evgeny Poberezkin
e5009a58df core: update simplexmq v4.4.1 2023-02-18 19:04:59 +00:00
Evgeny Poberezkin
35a1ce4903 core: separate core options to use in bots (#1937)
* core: separate core options to use in bots

* ci: install pkg-config for mac
2023-02-18 17:39:16 +00:00
Evgeny Poberezkin
7c4c627ee9 terminal: support multiline messages (as JSON strings) (#1936)
* terminal: support for multiline messages

* fix

* fix tests
2023-02-18 15:16:50 +00:00
Evgeny Poberezkin
b7575ec01d core: encrypt/decrypt WebRTC frames (#1935)
* core: encrypt/decrypt WebRTC frames

* swift API

* add decrypt stub

* change name

* remove unused type

* move functions

* update cabal file

* copy bytes from encrypted string
2023-02-16 20:25:37 +00:00
Evgeny Poberezkin
a0351d6f99 apps: update chat bots, readme (#1928)
* apps: update chat bots, readme

* CLI readme

* broadcast bot

* delete messages from non-publishers, better replies, support forwarding low-res images and links

* typo

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>

* change

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2023-02-14 07:57:27 +00:00
JRoberts
6f68840b3a 4.5.2: ios 125, Android 100 2023-02-10 11:43:14 +04:00
JRoberts
2eef858db1 ios: update core library 2023-02-10 11:10:35 +04:00
Evgeny Poberezkin
434315fb08 Merge branch 'stable' 2023-02-09 20:53:05 +00:00
Evgeny Poberezkin
9b495e576c readme: update groups 2023-02-09 20:52:44 +00:00
JRoberts
5405f44f54 core: 4.5.2.0 2023-02-09 16:34:44 +04:00
Stanislav Dmitrenko
53b05974c9 android: limit width + height in chat item view (#1920) 2023-02-09 12:00:33 +00:00
JRoberts
3530022152 ios, android: moderated item content types, CIDeleted type (#1919) 2023-02-09 15:10:35 +04:00
Stanislav Dmitrenko
dc6bab7ae6 android: fixed broken autoscroll when a new message is coming (#1917)
* android: fixed broken autoscroll when a new message is coming

* spelling
2023-02-08 23:10:56 +00:00
Stanislav Dmitrenko
c9b4ce457e android: prevent race when opening chat (#1914)
* android: prevent race when opening chat

* different way of doing things

* change

* change
2023-02-08 19:25:51 +00:00
JRoberts
bd3325a889 core: show/keep message as moderated for moderator (#1916) 2023-02-08 22:29:36 +04:00
JRoberts
9e347484eb core: avoid using wickAckMessage handler on messages leading to connection deletion (#1915) 2023-02-08 21:23:53 +04:00
ishi_sama
894af0602d docs: french (#1905)
* Lang subfolder ; SERVER_fr.md ; fix minor typos

* fix the fix

* fix img src

* CONTRIBUTING_fr

* SQL_fr ; fix rev date

* WEBRTC_fr.md ; rev date

* CLI_fr ; rev date

* fix table content link and sum img src

* fix

* fixing the fix

am i dumb?

* polishing...

* README_fr.md (save)

* Update README_fr.md

* README_fr ; starting SIMPLEX_FR ; link fix

* update README (en+fr)

* Blog README_fr ; translators link

* typo

* SIMPLEX_fr ; fixes

* last fixes

* rename folder

* rename files/links

* update line

* remove ...

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-08 14:03:52 +00:00
Stanislav Dmitrenko
aa6011a196 android: prevent race when changing active user (#1913) 2023-02-08 13:21:55 +00:00
Stanislav Dmitrenko
f24035a99d android: prevent showing system alert after start (Android 13+) (#1909)
* android: prevent showing system alert after start (Android 13+)

* refactor

* added comments and renamed function

* rename

* rename

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-08 10:48:19 +00:00
Stanislav Dmitrenko
c006b8150f ios: ask permission to open profiles (#1910) 2023-02-08 10:39:41 +00:00
Evgeny Poberezkin
9e4499de6d core: allow admins/owners delete member messages (#1869)
* core: allow admins/owners delete member messages

* allow message deletion to admins/owners

* deleted by types, schema

* check role

* fix test, view

* view, tests

* comment

* test timed deletion events

* refactor

* refactor

* refactor

---------

Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
2023-02-08 11:08:53 +04:00
Evgeny Poberezkin
a018e4a581 docs: translation guide (#1911)
* docs: translations

* add doc

* add images, corrections

* spellcheck

* link to translation guide from readme

* change image

* images
2023-02-07 21:57:51 +00:00
Stanislav Dmitrenko
d29fd93ea7 docs: view files from private data directory of Android app (#1907)
* docs: view files from private data directory of Android app

* naming

* spelling

* spelling

* change
2023-02-07 15:17:10 +00:00
Stanislav Dmitrenko
b30c7af3a3 mobile: including fully localized languages only (#1908)
* mobile: including fully localized languages only

* better place for code

* ios: including fully localized languages only

* Revert "ios: including fully localized languages only"

This reverts commit 42a0334d83.
2023-02-07 15:16:34 +00:00
Stanislav Dmitrenko
2798671d22 android: show alert when decode exception happens (#1906) 2023-02-07 12:08:54 +00:00
Stanislav Dmitrenko
0339b399f7 ios: don't go back when system alert appears (#1903) 2023-02-06 16:33:45 +00:00
Stanislav Dmitrenko
d048962959 ios: Fixed screenshot size (#1902) 2023-02-06 16:00:29 +00:00
Stanislav Dmitrenko
4af91c4cae android: fixed size for exported QR code (#1901)
* android: fixed size for exported QR code

* border

* automatic version

* modifier

* make image instead of screenshot

* code folding

* don't use deprecated method

* function refactor

* dropped unneeded variable
2023-02-06 15:34:49 +00:00
Stanislav Dmitrenko
8a445ece90 ios: colored and clickable qr code with logo (#1885)
* ios: colored and clickable qr code with logo

* size of circle

* same padding as in android

* add padding to logo

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-06 08:45:56 +00:00
Stanislav Dmitrenko
5082f5b4a4 android: colored and clickable qr code with logo (#1884)
* android: colored and clickable qr code with logo

* save qr code as jpg for better quality

* bigger logo

* bigger logo (0.16f), low error correction (QR scans ok with up to 0.26f circle size)

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-06 08:45:40 +00:00
Evgeny Poberezkin
c8fae0ec43 blog: typo 2023-02-05 23:46:42 +00:00
Evgeny Poberezkin
d9a8d333f7 4.5.1: Android 99, iOS 124 2023-02-05 23:37:58 +00:00
Evgeny Poberezkin
73f8c543e3 translations (#1900)
* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 26.7% (255 of 954 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (895 of 895 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 8.5% (82 of 954 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 24.4% (219 of 895 strings)

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

* Translated using Weblate (Chinese (Traditional))

Currently translated at 1.8% (18 of 954 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 56.4% (538 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 1.6% (15 of 891 strings)

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

* Added translation using Weblate (Croatian)

* Added translation using Weblate (Croatian)

* Translated using Weblate (Dutch)

Currently translated at 63.6% (607 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 99.6% (950 of 953 strings)

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

* Translated using Weblate (Czech)

Currently translated at 66.1% (589 of 891 strings)

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

* Update translation files

Updated by "Remove blank strings" hook in Weblate.

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

* ios: import localizations

* ios: export localizations

---------

Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: xqhjay <137847720@qq.com>
Co-authored-by: Ophiushi <Ophiushi@users.noreply.hosted.weblate.org>
Co-authored-by: tomato potato <4ryo49@protonmail.com>
Co-authored-by: Albert Bob <vicdorke@gmail.com>
Co-authored-by: Bdd55oo <giggzuv9z.eofjx@aleeas.com>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: Mehmed <pajazetovicmeho@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2023-02-05 22:36:52 +00:00
Evgeny Poberezkin
14945a9296 ios: update core library 2023-02-05 22:30:03 +00:00
Evgeny Poberezkin
155ffd16ec core: 4.5.1.0 2023-02-05 22:06:27 +00:00
sh
1eb1e52912 call.ts: include udp stun/turn (#1892)
* call.ts: include udp stun/turn

* update JS

* show protocol, support TURNS

* mobile: add turn via UDP, remove protocol from view

* remove enums for protocol strings in ICE candidates

* 0.2.3

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-05 21:57:50 +00:00
Evgeny Poberezkin
af173ee5c4 blog: v4.5 (#1886)
* blog: v4.5

* update post, images

* update readme, post
2023-02-05 13:53:41 +00:00
Evgeny Poberezkin
06a2f7e4da mobile: remove option "transfer images faster" (#1891) 2023-02-05 11:25:31 +00:00
Evgeny Poberezkin
958299784d core: update simplexmq (more strict transport host parser 2023-02-04 23:31:01 +00:00
Evgeny Poberezkin
49b6979ff0 core: update simplexmq (not to fail batch subscriptions), terminal: log contact errors with -c option (#1890) 2023-02-04 23:13:20 +00:00
Evgeny Poberezkin
3c493db613 mobile: use TCP for ICE requests of WebRTC calls (#1888)
* ios: support query string parameters in ICE server addresses

* android: support query params in ICE server address, add transport=TCP to default servers
2023-02-04 15:44:39 +00:00
Evgeny Poberezkin
86cc85b3a5 mobile: change default of "transfer images faster/inline" to off, mark as BETA (#1889)
* mobile: change default of "transfer images faster/inline" to off, mark as BETA

* ios: import localizations
2023-02-04 15:19:12 +00:00
Evgeny Poberezkin
0427d2e578 core: prevent failure to acknowledge a group message in case its parsing or saving fails (potential cause for stuck delivery) (#1887) 2023-02-04 12:25:11 +00:00
Evgeny Poberezkin
c90d911d2a 4.5.0: Android 98, iOS 123 2023-02-03 15:19:26 +00:00
Evgeny Poberezkin
2473d14baa core: 4.5.0.4, update simplexmq 2023-02-03 11:32:32 +00:00
Evgeny Poberezkin
a36f2147d8 mobile: current profile button in profile menu opens settings (#1882) 2023-02-03 11:22:17 +00:00
Evgeny Poberezkin
3837e92556 ios: fix advanced network config (#1881) 2023-02-03 11:17:56 +00:00
Evgeny Poberezkin
76505afff2 ios: import/export translations 2023-02-02 23:28:31 +00:00
Evgeny Poberezkin
89c9a01b20 mobile: translations (#1878)
* Translated using Weblate (Russian)

Currently translated at 100.0% (954 of 954 strings)

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

* Translated using Weblate (German)

Currently translated at 98.5% (882 of 895 strings)

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

* Translated using Weblate (Russian)

Currently translated at 100.0% (895 of 895 strings)

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

* Translated using Weblate (French)

Currently translated at 98.5% (882 of 895 strings)

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

* Translated using Weblate (Italian)

Currently translated at 98.5% (882 of 895 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 42.1% (402 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 3.8% (37 of 954 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (954 of 954 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% (895 of 895 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (954 of 954 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% (895 of 895 strings)

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

* Translated using Weblate (Czech)

Currently translated at 3.9% (38 of 954 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (954 of 954 strings)

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

---------

Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: mlanp <github@lang.xyz>
2023-02-02 23:21:08 +00:00
Evgeny Poberezkin
68517cf852 android: disable chat preferences when chat is stopped (#1877) 2023-02-02 21:27:22 +00:00
Stanislav Dmitrenko
fbbad55a0f android: Fix constraints of Compose that could crash the app (#1876)
* android: Fix constraints of Compose that could crash the app

* made constant
2023-02-02 19:46:33 +00:00
Stanislav Dmitrenko
bcca27bfdb ios: show notifications for different users (#1874)
* ios: show notifications for different users

* refactore

* terminate background taks on chat item update

* refactor

* refactor2

* refactor3

* refactor 4

* refactor5

* fix chat item update in Android

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-02 16:09:36 +00:00
Evgeny Poberezkin
c55a7692c5 4.5.0-beta.3: Android 97, iOS 122 2023-02-02 12:16:58 +00:00
Evgeny Poberezkin
a8aa829e4c android: what is new in v45, ios: update texts 2023-02-02 11:20:37 +00:00
Evgeny Poberezkin
d5af03ce18 ios: import/export localizations (#1873)
* ios: import localizations

* ios: export localizations
2023-02-02 10:43:18 +00:00
Evgeny Poberezkin
101ef7a81a translations: updates for user profiles, new languages (#1872)
* Added translation using Weblate (Spanish)

* Added translation using Weblate (Dutch)

* Added translation using Weblate (Dutch)

* Translated using Weblate (Russian)

Currently translated at 100.0% (936 of 936 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% (878 of 878 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 11.0% (103 of 936 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (936 of 936 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% (878 of 878 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 13.8% (130 of 936 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 14.9% (131 of 878 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 13.7% (129 of 936 strings)

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

* Added translation using Weblate (Japanese)

* Added translation using Weblate (Japanese)

* Added translation using Weblate (Hindi)

* Added translation using Weblate (Hindi)

* Added translation using Weblate (Czech)

* Added translation using Weblate (Czech)

* Added translation using Weblate (Polish)

* Added translation using Weblate (Polish)

* Added translation using Weblate (Portuguese (Brazil))

* Added translation using Weblate (Portuguese (Brazil))

* Added translation using Weblate (Spanish)

* Added translation using Weblate (Dutch)

* Added translation using Weblate (Dutch)

* Translated using Weblate (Russian)

Currently translated at 100.0% (936 of 936 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% (878 of 878 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 11.0% (103 of 936 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (936 of 936 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% (878 of 878 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 13.8% (130 of 936 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 14.9% (131 of 878 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 13.7% (129 of 936 strings)

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

* Added translation using Weblate (Japanese)

* Added translation using Weblate (Japanese)

* Added translation using Weblate (Hindi)

* Added translation using Weblate (Hindi)

* Added translation using Weblate (Czech)

* Added translation using Weblate (Czech)

* Added translation using Weblate (Polish)

* Added translation using Weblate (Polish)

* Added translation using Weblate (Portuguese (Brazil))

* Added translation using Weblate (Portuguese (Brazil))

* Translated using Weblate (French)

Currently translated at 100.0% (936 of 936 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (878 of 878 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 17.3% (162 of 936 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 16.2% (143 of 878 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 15.7% (147 of 936 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (939 of 939 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% (878 of 878 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 21.9% (206 of 939 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 20.7% (182 of 878 strings)

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

* Translated using Weblate (French)

Currently translated at 100.0% (939 of 939 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 24.3% (229 of 939 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 7.8% (74 of 939 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 31.2% (294 of 940 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (940 of 940 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 100.0% (940 of 940 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 100.0% (940 of 940 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 12.6% (119 of 940 strings)

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

* Translated using Weblate (Hindi)

Currently translated at 13.5% (127 of 940 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 22.7% (214 of 940 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 21.7% (191 of 878 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 2.5% (24 of 940 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 23.6% (222 of 940 strings)

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 24.3% (214 of 878 strings)

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

---------

Co-authored-by: sith-on-mars <groguko36@pm.me>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: John m <jvanmanen@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Ophiushi <Ophiushi@users.noreply.hosted.weblate.org>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: Raman <translations.0l5zc@simplelogin.com>
Co-authored-by: tomato potato <4ryo49@protonmail.com>
2023-02-02 10:30:40 +00:00
Evgeny Poberezkin
71daeed81a ios: what is new in v4.5 2023-02-02 10:11:11 +00:00
Evgeny Poberezkin
d44324eb4d readme: update weblate link 2023-02-02 09:47:39 +00:00
Evgeny Poberezkin
93d2ef66cf readme: translations (#1871) 2023-02-02 09:41:53 +00:00
Evgeny Poberezkin
8a78943e94 blog: v4.5 release announcement page 2023-02-02 09:00:34 +00:00
Evgeny Poberezkin
d0f0013755 core: 4.5.0.3 2023-02-02 08:20:12 +00:00
Stanislav Dmitrenko
f22ee1a6cf mobile: prevent WebRTC call failure/hanging when webview "failed" state happens before 30 sec timeout (#1866)
* mobile: do not end calls

* better way of continue connection and end with timeout

* making data classes instead of classes for making logs informative

* refactor

* update webrtc package version

* refactor

* fix

* clear conneciton timeout on disconnection

* refactor

* v0.2.1

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-02-01 19:23:28 +00:00
Evgeny Poberezkin
4a58ca60ac core: split tests (#1870) 2023-02-01 17:21:13 +00:00
Evgeny Poberezkin
b206868730 core: add grop member role "observer" (#1868)
* core: add grop member role "observer"

* disable observer role until supported by most clients
2023-02-01 13:57:39 +00:00
402 changed files with 80600 additions and 9037 deletions

View File

@@ -91,6 +91,10 @@ jobs:
echo " extra-lib-dirs: /usr/local/opt/openssl@1.1/lib" >> cabal.project.local
echo " flags: +openssl" >> cabal.project.local
- name: Install pkg-config for Mac
if: matrix.os == 'macos-latest'
run: brew install pkg-config
- name: Unix prepare cabal.project.local for Ubuntu
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-18.04'
shell: bash

4
.gitignore vendored
View File

@@ -45,10 +45,12 @@ tests/tmp
tests/tmp*
logs/
*.devcontainer
# for website
website/node_modules/
website/src/blog/
website/translations.json
website/src/_data/supported_languages.json
website/src/img/images/
website/src/images/
# Generated files

203
README.md
View File

@@ -1,13 +1,29 @@
<img src="images/simplex-chat-logo.svg" alt="SimpleX logo" width="100%">
# SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design!
[![build](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml/badge.svg?branch=stable)](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml)
[![GitHub downloads](https://img.shields.io/github/downloads/simplex-chat/simplex-chat/total)](https://github.com/simplex-chat/simplex-chat/releases)
[![GitHub release](https://img.shields.io/github/v/release/simplex-chat/simplex-chat)](https://github.com/simplex-chat/simplex-chat/releases)
[![Join on Reddit](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat)
[![Follow on Mastodon](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social)](https://mastodon.social/@simplex)
| 19/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md) |
<img src="images/simplex-chat-logo.svg" alt="SimpleX logo" width="100%">
# SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design!
[<img src="./images/trail-of-bits.jpg" height="100">](http://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html) &nbsp;&nbsp;&nbsp; [<img src="./images/privacy-guides.jpg" height="80">](https://www.privacyguides.org/en/real-time-communication/#simplex-chat) &nbsp;&nbsp;&nbsp; [<img src="./images/kuketz-blog.jpg" height="80">](https://www.kuketz-blog.de/simplex-eindruecke-vom-messenger-ohne-identifier/)
## Welcome to SimpleX Chat!
1. 📲 [Install the app](#install-the-app).
2. ↔️ [Connect to the team](#connect-to-the-team-via-the-app) and [join user groups](#join-user-groups).
3. 🤝 [Make a private connection](#make-a-private-connection) with a friend.
4. 🔤 [Help translating SimpleX Chat](#help-translating-simplex-chat).
5. ⚡️ [Contribute](#contribute) and [help us with donations](#help-us-with-donations).
[Learn more about SimpleX Chat](#contents).
## Install the app
[<img src="https://github.com/simplex-chat/.github/blob/master/profile/images/apple_store.svg" alt="iOS app" height="42">](https://apps.apple.com/us/app/simplex-chat/id1605771084)
&nbsp;
[![Android app](https://github.com/simplex-chat/.github/blob/master/profile/images/google_play.svg)](https://play.google.com/store/apps/details?id=chat.simplex.app)
@@ -22,9 +38,87 @@
- 🔐 Double ratchet end-to-end encryption, with additional encryption layer.
- 📱 Mobile apps for Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk)) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084).
- 🚀 [TestFlight preview for iOS](https://testflight.apple.com/join/DWuT2LQu) with the new features 1-2 weeks earlier - **limited to 10,000 users**!
- 🖥 Available as a terminal (console) app / CLI on Linux, MacOS, Windows.
- 🖥 Available as a terminal (console) [app / CLI](#zap-quick-installation-of-a-terminal-app) on Linux, MacOS, Windows.
**NEW**: Security audit by [Trail of Bits](https://www.trailofbits.com/about), the [new website](https://simplex.chat) and v4.2 released! [See the announcement](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md)
## Connect to the team via the app
- to ask any questions
- to suggest any improvements
- to share anything relevant
## Join user groups
You can join an English-speaking users group if you want to ask any questions: [#SimpleX-Group-2](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FQP8zaGjjmlXV-ix_Er4JgJ0lNPYGS1KX%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEApAgBkRZ3x12ayZ7sHrjHQWNMvqzZpWUgM_fFCUdLXwo%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22xWpPXEZZsQp_F7vwAcAYDw%3D%3D%22%7D)
There are groups in other languages, that we have the apps interface translated into. These groups are for testing, and asking questions to other SimpleX Chat users:
[\#SimpleX-DE](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FkIEl7OQzcp-J6aDmjdlQbRJwqkcZE7XR%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAR16PCu02MobRmKAsjzhDWMZcWP9hS8l5AUZi-Gs8z18%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22puYPMCQt11yPUvgmI5jCiw%3D%3D%22%7D) (German-speaking), [\#SimpleX-FR](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FvIHQDxTor53nwnWWTy5cHNwQQAdWN5Hw%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAPdgK1eBnETmgiqEQufbUkydKBJafoRx4iRrtrC2NAGc%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%221FyUryBPza-1ZFFE80Ekbg%3D%3D%22%7D) (French-speaking), [\#SimpleX-RU](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FXZyt3hJmWsycpN7Dqve_wbrAqb6myk1R%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAMFVIoytozTEa_QXOgoZFq_oe0IwZBYKvW50trSFXzXo%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22xz05ngjA3pNIxLZ32a8Vxg%3D%3D%22%7D) (Russian-speaking), [\#SimpleX-IT](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2F0weR-ZgDUl7ruOtI_8TZwEsnJP6UiImA%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAq4PSThO9Fvb5ydF48wB0yNbpzCbuQJCW3vZ9BGUfcxk%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22e-iceLA0SctC62eARgYDWg%3D%3D%22%7D) (Italian-speaking).
You can join either by opening these links in the app or by opening them in a desktop browser and scanning the QR code.
## Make a private connection
You need to share a link with your friend or scan a QR code from their phone, in person or during a video call, to make a connection and start messaging.
The channel through which you share the link does not have to be secure - it is enough that you can confirm who sent you the message and that your SimpleX connection is established.
<img src="https://github.com/simplex-chat/.github/blob/master/profile/images/app1.png" alt="Make a private connection" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/arrow.png" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/app2.png" alt="Conversation" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/arrow.png" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/app3.png" alt="Video call" height="360">
After you connect, you can [verify connection security code](./blog/20230103-simplex-chat-v4.4-disappearing-messages.md#connection-security-verification).
## Help translating SimpleX Chat
Thanks to our users and [Weblate](https://hosted.weblate.org/engage/simplex-chat/), SimpleX Chat apps, website and documents are translated to many other languages.
Join our translators to help SimpleX grow!
|locale|language |contributor|[Android](https://play.google.com/store/apps/details?id=chat.simplex.app) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084)|[website](https://simplex.chat)|Github docs|
|:----:|:-------:|:---------:|:---------:|:---------:|:---------:|
|🇬🇧 en|English | |✓|✓|✓|✓|
|🇨🇿 cs|Čeština |[zen0bit](https://github.com/zen0bit)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/cs/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/cs/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/cs/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/cs/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/cs/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/cs/)|[](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/cs)|
|🇩🇪 de|Deutsch |[mlanp](https://github.com/mlanp)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/de/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/de/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/de/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/de/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/de/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/de/)||
|🇪🇸 es|Español ||[![android app](https://hosted.weblate.org/widgets/simplex-chat/es/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/es/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/es/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/es/)|||
|🇫🇷 fr|Français |[ishi_sama](https://github.com/ishi_sama)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/fr/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fr/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fr/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fr/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fr/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fr/)|[](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/fr)|
|🇮🇹 it|Italiano |[unbranched](https://github.com/unbranched)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/it/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/it/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/it/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/it/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/it/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/it/)||
|🇳🇱 nl|Nederlands|[mika-nl](https://github.com/mika-nl)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/nl/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/nl/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/nl/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/nl/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/nl/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/nl/)||
|🇷🇺 ru|Русский ||[![android app](https://hosted.weblate.org/widgets/simplex-chat/ru/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/ru/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/ru/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/ru/)|||
|🇨🇳 zh-CHS|简体中文|[sith-on-mars](https://github.com/sith-on-mars)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/zh_Hans/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/zh_Hans/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/)|||
Languages in progress: Arabic, Hindi, Japanese, Spanish and [many others](https://hosted.weblate.org/projects/simplex-chat/#languages). We will be adding more languages as some of the already added are completed please suggest new languages, review the [translation guide](./docs/TRANSLATIONS.md) and get in touch with us!
## Contribute
We would love to have you join the development! You can help us with:
- writing a tutorial or recipes about hosting servers, chat bot automations, etc.
- contributing to SimpleX Chat knowledge-base.
- developing features - please connect to us via chat so we can help you get started.
## Help us with donations
Huge thank you to everybody who donated to SimpleX Chat!
We are prioritizing users privacy and security - it would be impossible without your support.
Our pledge to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.
Your donations help us raise more funds any amount, even the price of the cup of coffee, would make a big difference for us.
It is possible to donate via:
- [GitHub](https://github.com/sponsors/simplex-chat) - it is commission-free for us.
- [OpenCollective](https://opencollective.com/simplex-chat) - it charges a commission, and also accepts donations in crypto-currencies.
- Monero address: 8568eeVjaJ1RQ65ZUn9PRQ8ENtqeX9VVhcCYYhnVLxhV4JtBqw42so2VEUDQZNkFfsH5sXCuV7FN8VhRQ21DkNibTZP57Qt
- Bitcoin address: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG
- BCH address: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG
- Ethereum address: 0x83fd788f7241a2be61780ea9dc72d2151e6843e2
- Solana address: 43tWFWDczgAcn4Rzwkpqg2mqwnQETSiTwznmCgA2tf1L
Thank you,
Evgeny
SimpleX Chat founder
## Contents
@@ -36,15 +130,11 @@
- [Users own SimpleX network](#users-own-simplex-network)
- [Frequently asked questions](#frequently-asked-questions)
- [News and updates](#news-and-updates)
- [Make a private connection](#make-a-private-connection)
- [Quick installation of a terminal app](#zap-quick-installation-of-a-terminal-app)
- [SimpleX Platform design](#simplex-platform-design)
- [Privacy: technical details and limitations](#privacy-technical-details-and-limitations)
- [For developers](#for-developers)
- [Roadmap](#roadmap)
- [Join a user group](#join-a-user-group)
- [Contribute](#contribute)
- [Help us with donations](#help-us-with-donations)
- [Disclaimers, Security contact, License](#disclaimers)
## Why privacy matters
@@ -75,16 +165,18 @@ You can use SimpleX with your own servers and still communicate with people usin
## Frequently asked questions
1. _How SimpleX can deliver messages without any user identifiers?_ See [v2 release annoucement](./blog/20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers) explaining how SimpleX works.
1. _How SimpleX can deliver messages without any user identifiers?_ See [v2 release announcement](./blog/20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers) explaining how SimpleX works.
2. _Why should I not just use Signal?_ Signal is a centralised platform that uses phone numbers to identify its users and their contacts. It means that while the content of your messages on Signal is protected with robust end-to-end encryption, there is a large amount of meta-data visible to Signal - who you talk with and when.
2. _Why should I not just use Signal?_ Signal is a centralized platform that uses phone numbers to identify its users and their contacts. It means that while the content of your messages on Signal is protected with robust end-to-end encryption, there is a large amount of meta-data visible to Signal - who you talk with and when.
3. _How is it different from Matrix, Session, Ricochet, Cwtch, etc., that also don't require user identites?_ Although these platforms do not require a _real identity_, they do rely on anonymous user identities to deliver messages it can be, for example, an identity key or a random number. Using a persistent user identity, even anonymous, creates a risk that user's connection graph becomes known to the observers and/or service providers, and it can lead to de-anonymizing some users. If the same user profile is used to connect to two different people via any messenger other than SimpleX, these two people can confirm if they are connected to the same person - they would use the same user identifier in the messages. With SimpleX there is no meta-data in common between your conversations with different contacts - the quality that no other messaging platform has.
3. _How is it different from Matrix, Session, Ricochet, Cwtch, etc., that also don't require user identities?_ Although these platforms do not require a _real identity_, they do rely on anonymous user identities to deliver messages it can be, for example, an identity key or a random number. Using a persistent user identity, even anonymous, creates a risk that user's connection graph becomes known to the observers and/or service providers, and it can lead to de-anonymizing some users. If the same user profile is used to connect to two different people via any messenger other than SimpleX, these two people can confirm if they are connected to the same person - they would use the same user identifier in the messages. With SimpleX there is no meta-data in common between your conversations with different contacts - the quality that no other messaging platform has.
## News and updates
Recent updates:
[Feb 04, 2023. v4.5 released - with multiple user profiles, message draft, transport isolation and Italian interface](./blog/20230204-simplex-chat-v4-5-user-chat-profiles.md).
[Jan 03, 2023. v4.4 released - with disappearing messages, "live" messages, connection security verifications, GIFs and stickers and with French interface language](./blog/20230103-simplex-chat-v4.4-disappearing-messages.md).
[Dec 06, 2022. November reviews and v4.3 released - with instant voice messages, irreversible deletion of sent messages and improved server configuration](./blog/20221206-simplex-chat-v4.3-voice-messages.md).
@@ -93,18 +185,8 @@ Recent updates:
[Sep 28, 2022. v4.0: encrypted local chat database and many other changes](./blog/20220928-simplex-chat-v4-encrypted-database.md).
[Sep 1, 2022. v3.2: incognito mode, support .onion server hostnames, setting contact names, changing color scheme, etc. Implementation audit is arranged for October!](./blog/20220901-simplex-chat-v3.2-incognito-mode.md).
[All updates](./blog)
## Make a private connection
You need to share a link or scan a QR code (in person or during a video call) to make a connection and start messaging.
The channel through which you share the link does not have to be secure - it is enough that you can confirm who sent you the message and that your SimpleX connection is established.
<img src="https://github.com/simplex-chat/.github/blob/master/profile/images/app1.png" alt="Make a private connection" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/arrow.png" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/app2.png" alt="Conversation" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/arrow.png" height="360"> <img src="https://github.com/simplex-chat/.github/blob/master/profile/images/app3.png" alt="Video call" height="360">
## :zap: Quick installation of a terminal app
```sh
@@ -137,7 +219,7 @@ SimpleX Chat is a work in progress we are releasing improvements as they are
What is already implemented:
1. Instead of user profile identifiers used by all other platforms, even the most private ones, SimpleX uses pairwise per-queue identifiers (2 addresses for each unidirectional message queue, with an optional 3rd address for push notificaitons on iOS, 2 queues in each connection between the users). It makes observing the network graph on the application level more difficult, as for `n` users there can be up to `n * (n-1)` message queues.
1. Instead of user profile identifiers used by all other platforms, even the most private ones, SimpleX uses pairwise per-queue identifiers (2 addresses for each unidirectional message queue, with an optional 3rd address for push notifications on iOS, 2 queues in each connection between the users). It makes observing the network graph on the application level more difficult, as for `n` users there can be up to `n * (n-1)` message queues.
2. End-to-end encryption in each message queue using [NaCl cryptobox](https://nacl.cr.yp.to/box.html). This is added to allow redundancy in the future (passing each message via several servers), to avoid having the same ciphertext in different queues (that would only be visible to the attacker if TLS is compromised). The encryption keys used for this encryption are not rotated, instead we are planning to rotate the queues. Curve25519 keys are used for key negotiation.
3. [Double ratchet](https://signal.org/docs/specifications/doubleratchet/) end-to-end encryption in each conversation between two users (or group members). This is the same algorithm that is used in Signal and many other messaging apps; it provides OTR messaging with forward secrecy (each message is encrypted by its own ephemeral key), break-in recovery (the keys are frequently re-negotiated as part of the message exchange). Two pairs of Curve448 keys are used for the initial key agreement, initiating party passes these keys via the connection link, accepting side - in the header of the confirmation message.
4. Additional layer of encryption using NaCL cryptobox for the messages delivered from the server to the recipient. This layer avoids having any ciphertext in common between sent and received traffic of the server inside TLS (and there are no identifiers in common as well).
@@ -147,10 +229,11 @@ What is already implemented:
8. To protect against replay attacks SimpleX servers require [tlsunique channel binding](https://www.rfc-editor.org/rfc/rfc5929.html) as session ID in each client command signed with per-queue ephemeral key.
9. To protect your IP address all SimpleX Chat clients support accessing messaging servers via Tor - see [v3.1 release announcement](./blog/20220808-simplex-chat-v3.1-chat-groups.md) for more details.
10. Local database encryption with passphrase - your contacts, groups and all sent and received messages are stored encrypted. If you used SimpleX Chat before v4.0 you need to enable the encryption via the app settings.
11. Transport isolation - different TCP connections and Tor circuits are used for traffic of different user profiles, optionally - for different contacts and group member connections.
We plan to add soon:
1. Message queue rotation. Currently the queues created between two users are used until the contact is deleted, providing a long-term pairwise identifiers of the conversation. We are planning to add queue rotation to make these identifiers temporary and rotate based on some schedule TBC (e.g., every X messages, or every X hours/days).
1. Automatic message queue rotation. Currently the queues created between two users are used until the queue is manually changed by the user or contact is deleted. We are planning to add automatic queue rotation to make these identifiers temporary and rotate based on some schedule TBC (e.g., every X messages, or every X hours/days).
2. Local files encryption. Currently the images and files you send and receive are stored in the app unencrypted, you can delete them via `Settings / Database passphrase & export`.
3. Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.
@@ -160,7 +243,7 @@ You can:
- use SimpleX Chat library to integrate chat functionality into your mobile apps.
- create chat bots and services in Haskell - see [simple](./apps/simplex-bot/) and more [advanced chat bot example](./apps/simplex-bot-advanced/).
- create chat bots and services in any language running SimpleX Chat terminal CLI as a local WebSocket server. See [TypeScript SimpleX Chat client](./packages/simplex-chat-client/) and [JavaScipt chat bot example](./packages/simplex-chat-client/typescript/examples/squaring-bot.js).
- create chat bots and services in any language running SimpleX Chat terminal CLI as a local WebSocket server. See [TypeScript SimpleX Chat client](./packages/simplex-chat-client/) and [JavaScript chat bot example](./packages/simplex-chat-client/typescript/examples/squaring-bot.js).
- run [simplex-chat terminal CLI](./docs/CLI.md) to execute individual chat commands, e.g. to send messages as part of shell script execution.
If you are considering developing with SimpleX platform please get in touch for any advice and support.
@@ -195,16 +278,19 @@ If you are considering developing with SimpleX platform please get in touch for
- ✅ Disappearing messages (with recipient opt-in per-contact).
- ✅ "Live" messages.
- ✅ Contact verification via a separate out-of-band channel.
- 🏗 Multiple user profiles in the same chat database.
- 🏗 Optionally avoid re-using the same TCP session for multiple connections.
- Multiple user profiles in the same chat database.
- Optionally avoid re-using the same TCP session for multiple connections.
- ✅ Preserve message drafts.
- 🏗 File server to optimize for efficient and private sending of large files.
- 🏗 Improved audio & video calls.
- 🏗 SMP queue redundancy and rotation (manual is supported).
- 🏗 Reduced battery and traffic usage in large groups.
- 🏗 Preserve message drafts.
- 🏗 Support older Android OS and 32-bit CPUs.
- Ephemeral/disappearing/OTR conversations with the existing contacts.
- Access password/pin (with optional alternative access password).
- Local app files encryption.
- Video messages.
- Improved navigation and search in the conversation (expand and scroll to quoted message, scroll to search results, etc.).
- Message delivery confirmation (with sender opt-in or opt-out per contact, TBC).
- Feeds/broadcasts.
- Web widgets for custom interactivity in the chats.
@@ -214,62 +300,9 @@ If you are considering developing with SimpleX platform please get in touch for
- Privacy-preserving identity server for optional DNS-based contact/group addresses to simplify connection and discovery, but not used to deliver messages:
- keep all your contacts and groups even if you lose the domain.
- the server doesn't have information about your contacts and groups.
- Channels server for large groups and broadcast channels.
## Join a user group
You can join a general English-speaking group: [#SimpleX-Group](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FcIS0gu1h0Y8pZpQkDaSz7HZGSHcKpMB9%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAKzzWAJYrVt1zdgRp4pD3FBst6eK7233DJeNElENLJRA%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%228mazMhefXoM5HxWBfZnvwQ%3D%3D%22%7D). Just bear in mind that it has ~300 members now, and that it is fully decentralized, so sending a message and connecting to all members in this group will take some time, only join it if you:
- want to see how larger groups work.
- traffic is not a concern (sending each message is ~5mb).
You can also join a new and smaller English-speaking group if you want to ask questions without too much traffic: [#SimpleX-Group-2](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FQP8zaGjjmlXV-ix_Er4JgJ0lNPYGS1KX%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEApAgBkRZ3x12ayZ7sHrjHQWNMvqzZpWUgM_fFCUdLXwo%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22xWpPXEZZsQp_F7vwAcAYDw%3D%3D%22%7D)
There are also several groups in languages other than English, that we have the apps interface translated into. These groups are for testing, and asking questions to other SimpleX Chat users. We do not always answer questions there, so please ask them in one of the English-speaking groups.
- [\#SimpleX-DE](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FkIEl7OQzcp-J6aDmjdlQbRJwqkcZE7XR%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAR16PCu02MobRmKAsjzhDWMZcWP9hS8l5AUZi-Gs8z18%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22puYPMCQt11yPUvgmI5jCiw%3D%3D%22%7D) (German-speaking).
- [\#SimpleX-FR](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FvIHQDxTor53nwnWWTy5cHNwQQAdWN5Hw%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAPdgK1eBnETmgiqEQufbUkydKBJafoRx4iRrtrC2NAGc%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%221FyUryBPza-1ZFFE80Ekbg%3D%3D%22%7D) (French-speaking).
- [\#SimpleX-RU](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FXZyt3hJmWsycpN7Dqve_wbrAqb6myk1R%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAMFVIoytozTEa_QXOgoZFq_oe0IwZBYKvW50trSFXzXo%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22xz05ngjA3pNIxLZ32a8Vxg%3D%3D%22%7D) (Russian-speaking).
- [\#SimpleX-IT](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2F0weR-ZgDUl7ruOtI_8TZwEsnJP6UiImA%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAq4PSThO9Fvb5ydF48wB0yNbpzCbuQJCW3vZ9BGUfcxk%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22e-iceLA0SctC62eARgYDWg%3D%3D%22%7D) (Italian-speaking).
You can join these groups either by opening these links in the app or by opening them in a desktop browser and scanning QR code.
Join via the app to share what's going on and ask any questions!
## Contribute
We would love to have you join the development! You can contribute to SimpleX Chat with:
- translate UI to your language - we are using [Weblate](https://hosted.weblate.org/projects/simplex-chat/) to translate the interface, please get in touch if you want to contribute!
- translate website homepage - there is a lot of content we would like to share, it would help to bring the new users.
- writing a tutorial or recipes about hosting servers, chat bot automations, etc.
- developing features - please connect to us via chat so we can help you get started.
## Help us with donations
Huge thank you to everybody who donated to SimpleX Chat!
We are prioritizing users privacy and security - it would be impossible without your support.
Our pledge to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.
Your donations help us raise more funds any amount, even the price of the cup of coffee, would make a big difference for us.
It is possible to donate via:
- [GitHub](https://github.com/sponsors/simplex-chat) - it is commission-free for us.
- [OpenCollective](https://opencollective.com/simplex-chat) - it charges a commission, and also accepts donations in crypto-currencies.
- Monero address: 8568eeVjaJ1RQ65ZUn9PRQ8ENtqeX9VVhcCYYhnVLxhV4JtBqw42so2VEUDQZNkFfsH5sXCuV7FN8VhRQ21DkNibTZP57Qt
- Bitcoin address: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG
- BCH address: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG
- Ethereum address: 0x83fd788f7241a2be61780ea9dc72d2151e6843e2
- Solana address: 43tWFWDczgAcn4Rzwkpqg2mqwnQETSiTwznmCgA2tf1L
- please let us know, via GitHub issue or chat, if you want to create a donation in some other cryptocurrency - we will add the address to the list.
Thank you,
Evgeny
SimpleX Chat founder
- Hosting server for large groups, communities and public channels.
- Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
- High capacity multi-node SMP relays.
## Disclaimers

View File

@@ -5,14 +5,14 @@ plugins {
}
android {
compileSdk 32
compileSdk 33
defaultConfig {
applicationId "chat.simplex.app"
minSdk 29
targetSdk 32
versionCode 96
versionName "4.5-beta.2"
targetSdk 33
versionCode 104
versionName "4.6-beta.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk {
@@ -76,6 +76,11 @@ android {
}
jniLibs.useLegacyPackaging = compression_level != "0"
}
def isRelease = gradle.getStartParameter().taskNames.find({ it.toLowerCase().contains("release") }) != null
// if (isRelease) {
// Comma separated list of languages that will be included in the apk
android.defaultConfig.resConfigs("en", "cs", "de", "es", "fr", "it", "nl", "ru", "zh-rCN")
// }
}
dependencies {

View File

@@ -30,6 +30,7 @@
android:label="${app_name}"
android:extractNativeLibs="${extract_native_libs}"
android:supportsRtl="true"
android:localeConfig="@xml/locales_config"
android:theme="@style/Theme.SimpleX">
<!-- Main activity -->

View File

@@ -22,10 +22,12 @@ var TransformOperation;
TransformOperation["Decrypt"] = "decrypt";
})(TransformOperation || (TransformOperation = {}));
let activeCall;
let answerTimeout = 30000;
const processCommand = (function () {
const defaultIceServers = [
{ urls: ["stun:stun.simplex.im:443"] },
{ urls: ["turn:turn.simplex.im:443"], username: "private", credential: "yleob6AVkiNI87hpR94Z" },
{ urls: ["turn:turn.simplex.im:443?transport=udp"], username: "private", credential: "yleob6AVkiNI87hpR94Z" },
{ urls: ["turn:turn.simplex.im:443?transport=tcp"], username: "private", credential: "yleob6AVkiNI87hpR94Z" },
];
function getCallConfig(encodedInsertableStreams, iceServers, relay) {
return {
@@ -100,9 +102,16 @@ const processCommand = (function () {
const iceCandidates = getIceCandidates(pc, config);
const call = { connection: pc, iceCandidates, localMedia: mediaType, localCamera, localStream, remoteStream, aesKey, useWorker };
await setupMediaStreams(call);
let connectionTimeout = setTimeout(connectionHandler, answerTimeout);
pc.addEventListener("connectionstatechange", connectionStateChange);
return call;
async function connectionStateChange() {
// "failed" means the second party did not answer in time (15 sec timeout in Chrome WebView)
// See https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/p2p/base/p2p_constants.cc;l=70)
if (pc.connectionState !== "failed")
connectionHandler();
}
async function connectionHandler() {
sendMessageToNative({
resp: {
type: "connection",
@@ -115,6 +124,7 @@ const processCommand = (function () {
},
});
if (pc.connectionState == "disconnected" || pc.connectionState == "failed") {
clearConnectionTimeout();
pc.removeEventListener("connectionstatechange", connectionStateChange);
if (activeCall) {
setTimeout(() => sendMessageToNative({ resp: { type: "ended" } }), 0);
@@ -122,6 +132,7 @@ const processCommand = (function () {
endCall();
}
else if (pc.connectionState == "connected") {
clearConnectionTimeout();
const stats = (await pc.getStats());
for (const stat of stats.values()) {
const { type, state } = stat;
@@ -141,6 +152,12 @@ const processCommand = (function () {
}
}
}
function clearConnectionTimeout() {
if (connectionTimeout) {
clearTimeout(connectionTimeout);
connectionTimeout = undefined;
}
}
}
function serialize(x) {
return LZString.compressToBase64(JSON.stringify(x));

View File

@@ -3,9 +3,7 @@ package chat.simplex.app
import android.app.Application
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Parcelable
import android.os.*
import android.os.SystemClock.elapsedRealtime
import android.util.Log
import android.view.WindowManager
@@ -68,6 +66,7 @@ class MainActivity: FragmentActivity() {
super.onCreate(savedInstanceState)
// testJson()
val m = vm.chatModel
applyAppLocale(m.controller.appPrefs.appLanguage)
// When call ended and orientation changes, it re-process old intent, it's unneeded.
// Only needed to be processed on first creation of activity
if (savedInstanceState == null) {

View File

@@ -38,6 +38,8 @@ class SimplexApp: Application(), LifecycleEventObserver {
var isAppOnForeground: Boolean = false
val defaultLocale: Locale = Locale.getDefault()
fun initChatController(useKey: String? = null, startChat: Boolean = true) {
val dbKey = useKey ?: DatabaseUtils.useDatabaseKey()
val dbAbsolutePathPrefix = getFilesDirectory(SimplexApp.context)
@@ -101,8 +103,19 @@ class SimplexApp: Application(), LifecycleEventObserver {
isAppOnForeground = true
if (chatModel.chatRunning.value == true) {
kotlin.runCatching {
val chats = chatController.apiGetChats()
chatModel.updateChats(chats)
val currentUserId = chatModel.currentUser.value?.userId
val chats = ArrayList(chatController.apiGetChats())
/** Active user can be changed in background while [ChatController.apiGetChats] is executing */
if (chatModel.currentUser.value?.userId == currentUserId) {
val currentChatId = chatModel.chatId.value
val oldStats = if (currentChatId != null) chatModel.getChat(currentChatId)?.chatStats else null
if (oldStats != null) {
val indexOfCurrentChat = chats.indexOfFirst { it.id == currentChatId }
/** Pass old chatStats because unreadCounter can be changed already while [ChatController.apiGetChats] is executing */
if (indexOfCurrentChat >= 0) chats[indexOfCurrentChat] = chats[indexOfCurrentChat].copy(chatStats = oldStats)
}
chatModel.updateChats(chats)
}
}.onFailure { Log.e(TAG, it.stackTraceToString()) }
}
}

View File

@@ -486,6 +486,24 @@ data class Chat (
val chatItems: List<ChatItem>,
val chatStats: ChatStats = ChatStats(),
) {
val userCanSend: Boolean
get() = when (chatInfo) {
is ChatInfo.Direct -> true
is ChatInfo.Group -> {
val m = chatInfo.groupInfo.membership
m.memberActive && m.memberRole >= GroupMemberRole.Member
}
else -> false
}
val userIsObserver: Boolean get() = when(chatInfo) {
is ChatInfo.Group -> {
val m = chatInfo.groupInfo.membership
m.memberActive && m.memberRole == GroupMemberRole.Observer
}
else -> false
}
val id: String get() = chatInfo.id
@Serializable
@@ -963,11 +981,13 @@ class GroupMemberRef(
@Serializable
enum class GroupMemberRole(val memberRole: String) {
@SerialName("member") Member("member"), // order matters in comparisons
@SerialName("observer") Observer("observer"), // order matters in comparisons
@SerialName("member") Member("member"),
@SerialName("admin") Admin("admin"),
@SerialName("owner") Owner("owner");
val text: String get() = when (this) {
Observer -> generalGetString(R.string.group_member_role_observer)
Member -> generalGetString(R.string.group_member_role_member)
Admin -> generalGetString(R.string.group_member_role_admin)
Owner -> generalGetString(R.string.group_member_role_owner)
@@ -1218,9 +1238,24 @@ data class ChatItem (
when (content) {
is CIContent.SndDeleted -> true
is CIContent.RcvDeleted -> true
is CIContent.SndModerated -> true
is CIContent.RcvModerated -> true
else -> false
}
fun memberToModerate(chatInfo: ChatInfo): Pair<GroupInfo, GroupMember>? {
return if (chatInfo is ChatInfo.Group && chatDir is CIDirection.GroupRcv) {
val m = chatInfo.groupInfo.membership
if (m.memberRole >= GroupMemberRole.Admin && m.memberRole >= chatDir.groupMember.memberRole && meta.itemDeleted == null) {
chatInfo.groupInfo to chatDir.groupMember
} else {
null
}
} else {
null
}
}
private val showNtfDir: Boolean get() = !chatDir.sent
val showNotification: Boolean get() =
@@ -1257,6 +1292,8 @@ data class ChatItem (
is CIContent.SndGroupFeature -> showNtfDir
is CIContent.RcvChatFeatureRejected -> showNtfDir
is CIContent.RcvGroupFeatureRejected -> showNtfDir
is CIContent.SndModerated -> true
is CIContent.RcvModerated -> true
is CIContent.InvalidJSON -> false
}
@@ -1271,14 +1308,14 @@ data class ChatItem (
status: CIStatus = CIStatus.SndNew(),
quotedItem: CIQuote? = null,
file: CIFile? = null,
itemDeleted: Boolean = false,
itemDeleted: CIDeleted? = null,
itemEdited: Boolean = false,
itemTimed: CITimed? = null,
editable: Boolean = true
) =
ChatItem(
chatDir = dir,
meta = CIMeta.getSample(id, ts, text, status, itemDeleted, itemEdited, null, editable),
meta = CIMeta.getSample(id, ts, text, status, itemDeleted, itemEdited, itemTimed, editable),
content = CIContent.SndMsgContent(msgContent = MsgContent.MCText(text)),
quotedItem = quotedItem,
file = file
@@ -1293,7 +1330,7 @@ data class ChatItem (
) =
ChatItem(
chatDir = CIDirection.DirectRcv(),
meta = CIMeta.getSample(id, Clock.System.now(), text, CIStatus.RcvRead(), itemDeleted = false, itemEdited = false, editable = false),
meta = CIMeta.getSample(id, Clock.System.now(), text, CIStatus.RcvRead()),
content = CIContent.RcvMsgContent(msgContent = MsgContent.MCFile(text)),
quotedItem = null,
file = CIFile.getSample(fileName = fileName, fileSize = fileSize, fileStatus = fileStatus)
@@ -1308,7 +1345,7 @@ data class ChatItem (
) =
ChatItem(
chatDir = dir,
meta = CIMeta.getSample(id, ts, text, status, itemDeleted = false, itemEdited = false, editable = false),
meta = CIMeta.getSample(id, ts, text, status),
content = CIContent.RcvDeleted(deleteMode = CIDeleteMode.cidmBroadcast),
quotedItem = null,
file = null
@@ -1317,7 +1354,7 @@ data class ChatItem (
fun getGroupInvitationSample(status: CIGroupInvitationStatus = CIGroupInvitationStatus.Pending) =
ChatItem(
chatDir = CIDirection.DirectRcv(),
meta = CIMeta.getSample(1, Clock.System.now(), "received invitation to join group team as admin", CIStatus.RcvRead(), itemDeleted = false, itemEdited = false, editable = false),
meta = CIMeta.getSample(1, Clock.System.now(), "received invitation to join group team as admin", CIStatus.RcvRead()),
content = CIContent.RcvGroupInvitation(groupInvitation = CIGroupInvitation.getSample(status = status), memberRole = GroupMemberRole.Admin),
quotedItem = null,
file = null
@@ -1326,7 +1363,7 @@ data class ChatItem (
fun getGroupEventSample() =
ChatItem(
chatDir = CIDirection.DirectRcv(),
meta = CIMeta.getSample(1, Clock.System.now(), "group event text", CIStatus.RcvRead(), itemDeleted = false, itemEdited = false, editable = false),
meta = CIMeta.getSample(1, Clock.System.now(), "group event text", CIStatus.RcvRead()),
content = CIContent.RcvGroupEventContent(rcvGroupEvent = RcvGroupEvent.MemberAdded(groupMemberId = 1, profile = Profile.sampleData)),
quotedItem = null,
file = null
@@ -1336,7 +1373,7 @@ data class ChatItem (
val content = CIContent.RcvChatFeature(feature = feature, enabled = enabled, param = null)
return ChatItem(
chatDir = CIDirection.DirectRcv(),
meta = CIMeta.getSample(1, Clock.System.now(), content.text, CIStatus.RcvRead(), itemDeleted = false, itemEdited = false, editable = false),
meta = CIMeta.getSample(1, Clock.System.now(), content.text, CIStatus.RcvRead()),
content = content,
quotedItem = null,
file = null
@@ -1356,7 +1393,7 @@ data class ChatItem (
itemStatus = CIStatus.RcvRead(),
createdAt = Clock.System.now(),
updatedAt = Clock.System.now(),
itemDeleted = false,
itemDeleted = null,
itemEdited = false,
itemTimed = null,
itemLive = false,
@@ -1376,7 +1413,7 @@ data class ChatItem (
itemStatus = CIStatus.RcvRead(),
createdAt = Clock.System.now(),
updatedAt = Clock.System.now(),
itemDeleted = false,
itemDeleted = null,
itemEdited = false,
itemTimed = null,
itemLive = true,
@@ -1421,7 +1458,7 @@ data class CIMeta (
val itemStatus: CIStatus,
val createdAt: Instant,
val updatedAt: Instant,
val itemDeleted: Boolean,
val itemDeleted: CIDeleted?,
val itemEdited: Boolean,
val itemTimed: CITimed?,
val itemLive: Boolean?,
@@ -1446,7 +1483,7 @@ data class CIMeta (
companion object {
fun getSample(
id: Long, ts: Instant, text: String, status: CIStatus = CIStatus.SndNew(),
itemDeleted: Boolean = false, itemEdited: Boolean = false, itemTimed: CITimed? = null, itemLive: Boolean = false, editable: Boolean = true
itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, itemTimed: CITimed? = null, itemLive: Boolean = false, editable: Boolean = true
): CIMeta =
CIMeta(
itemId = id,
@@ -1471,7 +1508,7 @@ data class CIMeta (
itemStatus = CIStatus.SndNew(),
createdAt = Clock.System.now(),
updatedAt = Clock.System.now(),
itemDeleted = false,
itemDeleted = null,
itemEdited = false,
itemTimed = null,
itemLive = false,
@@ -1506,6 +1543,12 @@ sealed class CIStatus {
@Serializable @SerialName("rcvRead") class RcvRead: CIStatus()
}
@Serializable
sealed class CIDeleted {
@Serializable @SerialName("deleted") class Deleted: CIDeleted()
@Serializable @SerialName("moderated") class Moderated(val byGroupMember: GroupMember): CIDeleted()
}
@Serializable
enum class CIDeleteMode(val deleteMode: String) {
@SerialName("internal") cidmInternal("internal"),
@@ -1541,6 +1584,8 @@ sealed class CIContent: ItemContent {
@Serializable @SerialName("sndGroupFeature") class SndGroupFeature(val groupFeature: GroupFeature, val preference: GroupPreference, val param: Int? = null): CIContent() { override val msgContent: MsgContent? get() = null }
@Serializable @SerialName("rcvChatFeatureRejected") class RcvChatFeatureRejected(val feature: ChatFeature): CIContent() { override val msgContent: MsgContent? get() = null }
@Serializable @SerialName("rcvGroupFeatureRejected") class RcvGroupFeatureRejected(val groupFeature: GroupFeature): CIContent() { override val msgContent: MsgContent? get() = null }
@Serializable @SerialName("sndModerated") object SndModerated: CIContent() { override val msgContent: MsgContent? get() = null }
@Serializable @SerialName("rcvModerated") object RcvModerated: CIContent() { override val msgContent: MsgContent? get() = null }
@Serializable @SerialName("invalidJSON") data class InvalidJSON(val json: String): CIContent() { override val msgContent: MsgContent? get() = null }
override val text: String get() = when (this) {
@@ -1565,6 +1610,8 @@ sealed class CIContent: ItemContent {
is SndGroupFeature -> featureText(groupFeature, preference.enable.text, param)
is RcvChatFeatureRejected -> "${feature.text}: ${generalGetString(R.string.feature_received_prohibited)}"
is RcvGroupFeatureRejected -> "${groupFeature.text}: ${generalGetString(R.string.feature_received_prohibited)}"
is SndModerated -> generalGetString(R.string.moderated_description)
is RcvModerated -> generalGetString(R.string.moderated_description)
is InvalidJSON -> "invalid data"
}

View File

@@ -44,11 +44,7 @@ class NtfManager(val context: Context, private val appPreferences: AppPreference
private val msgNtfTimeoutMs = 30000L
init {
manager.createNotificationChannel(NotificationChannel(MessageChannel, generalGetString(R.string.ntf_channel_messages), NotificationManager.IMPORTANCE_HIGH))
manager.createNotificationChannel(callNotificationChannel(CallChannel, generalGetString(R.string.ntf_channel_calls)))
// Remove old channels since they can't be edited
manager.deleteNotificationChannel("chat.simplex.app.CALL_NOTIFICATION")
manager.deleteNotificationChannel("chat.simplex.app.LOCK_SCREEN_CALL_NOTIFICATION")
if (manager.areNotificationsEnabled()) createNtfChannelsMaybeShowAlert()
}
enum class NotificationAction {
@@ -156,7 +152,7 @@ class NtfManager(val context: Context, private val appPreferences: AppPreference
.setGroup(MessageGroup)
.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN)
.setGroupSummary(true)
.setContentIntent(chatPendingIntent(ShowChatsAction, user.userId))
.setContentIntent(chatPendingIntent(ShowChatsAction, null))
.build()
with(NotificationManagerCompat.from(context)) {
@@ -250,7 +246,7 @@ class NtfManager(val context: Context, private val appPreferences: AppPreference
}
}
private fun chatPendingIntent(intentAction: String, userId: Long, chatId: String? = null, broadcast: Boolean = false): PendingIntent {
private fun chatPendingIntent(intentAction: String, userId: Long?, chatId: String? = null, broadcast: Boolean = false): PendingIntent {
Log.d(TAG, "chatPendingIntent for $intentAction")
val uniqueInt = (System.currentTimeMillis() and 0xfffffff).toInt()
var intent = Intent(context, if (!broadcast) MainActivity::class.java else NtfActionReceiver::class.java)
@@ -268,6 +264,21 @@ class NtfManager(val context: Context, private val appPreferences: AppPreference
}
}
/**
* This function creates notifications channels. On Android 13+ calling it for the first time will trigger system alert,
* The alert asks a user to allow or disallow to show notifications for the app. That's why it should be called only when the user
* already saw such alert or when you want to trigger showing the alert.
* On the first app launch the channels will be created after user profile is created. Subsequent calls will create new channels and delete
* old ones if needed
* */
fun createNtfChannelsMaybeShowAlert() {
manager.createNotificationChannel(NotificationChannel(MessageChannel, generalGetString(R.string.ntf_channel_messages), NotificationManager.IMPORTANCE_HIGH))
manager.createNotificationChannel(callNotificationChannel(CallChannel, generalGetString(R.string.ntf_channel_calls)))
// Remove old channels since they can't be edited
manager.deleteNotificationChannel("chat.simplex.app.CALL_NOTIFICATION")
manager.deleteNotificationChannel("chat.simplex.app.LOCK_SCREEN_CALL_NOTIFICATION")
}
/**
* Processes every action specified by [NotificationCompat.Builder.addAction] that comes with [NotificationAction]
* and [ChatInfo.id] as [ChatIdKey] in extra

View File

@@ -88,7 +88,6 @@ class AppPreferences(val context: Context) {
val webrtcIceServers = mkStrPreference(SHARED_PREFS_WEBRTC_ICE_SERVERS, null)
val privacyProtectScreen = mkBoolPreference(SHARED_PREFS_PRIVACY_PROTECT_SCREEN, true)
val privacyAcceptImages = mkBoolPreference(SHARED_PREFS_PRIVACY_ACCEPT_IMAGES, true)
val privacyTransferImagesInline = mkBoolPreference(SHARED_PREFS_PRIVACY_TRANSFER_IMAGES_INLINE, true)
val privacyLinkPreviews = mkBoolPreference(SHARED_PREFS_PRIVACY_LINK_PREVIEWS, true)
private val _simplexLinkMode = mkStrPreference(SHARED_PREFS_PRIVACY_SIMPLEX_LINK_MODE, SimplexLinkMode.default.name)
val simplexLinkMode: SharedPreference<SimplexLinkMode> = SharedPreference(
@@ -134,6 +133,7 @@ class AppPreferences(val context: Context) {
val incognito = mkBoolPreference(SHARED_PREFS_INCOGNITO, false)
val connectViaLinkTab = mkStrPreference(SHARED_PREFS_CONNECT_VIA_LINK_TAB, ConnectViaLinkTab.SCAN.name)
val liveMessageAlertShown = mkBoolPreference(SHARED_PREFS_LIVE_MESSAGE_ALERT_SHOWN, false)
val appLanguage = mkStrPreference(SHARED_PREFS_APP_LANGUAGE, null)
val storeDBPassphrase = mkBoolPreference(SHARED_PREFS_STORE_DB_PASSPHRASE, true)
val initialRandomDBPassphrase = mkBoolPreference(SHARED_PREFS_INITIAL_RANDOM_DB_PASSPHRASE, false)
@@ -215,6 +215,7 @@ class AppPreferences(val context: Context) {
private const val SHARED_PREFS_EXPERIMENTAL_CALLS = "ExperimentalCalls"
private const val SHARED_PREFS_CHAT_ARCHIVE_NAME = "ChatArchiveName"
private const val SHARED_PREFS_CHAT_ARCHIVE_TIME = "ChatArchiveTime"
private const val SHARED_PREFS_APP_LANGUAGE = "AppLanguage"
private const val SHARED_PREFS_CHAT_LAST_START = "ChatLastStart"
private const val SHARED_PREFS_DEVELOPER_TOOLS = "DeveloperTools"
private const val SHARED_PREFS_NETWORK_USE_SOCKS_PROXY = "NetworkUseSocksProxy"
@@ -518,6 +519,13 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
return null
}
suspend fun apiDeleteMemberChatItem(groupId: Long, groupMemberId: Long, itemId: Long): Pair<ChatItem, ChatItem?>? {
val r = sendCmd(CC.ApiDeleteMemberChatItem(groupId, groupMemberId, itemId))
if (r is CR.ChatItemDeleted) return r.deletedChatItem.chatItem to r.toChatItem?.chatItem
Log.e(TAG, "apiDeleteMemberChatItem bad response: ${r.responseType} ${r.details}")
return null
}
private suspend fun getUserSMPServers(): Pair<List<ServerCfg>, List<String>>? {
val userId = chatModel.currentUser.value?.userId ?: run {
Log.e(TAG, "getUserSMPServers: no current user")
@@ -550,7 +558,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
suspend fun testSMPServer(smpServer: String): SMPTestFailure? {
val userId = chatModel.currentUser.value?.userId ?: run { throw Exception("testSMPServer: no current user") }
val r = sendCmd(CC.TestSMPServer(userId, smpServer))
val r = sendCmd(CC.APITestSMPServer(userId, smpServer))
return when (r) {
is CR.SmpTestResult -> r.smpTestFailure
else -> {
@@ -935,7 +943,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
return false
}
suspend fun apiReceiveFile(fileId: Long, inline: Boolean): AChatItem? {
suspend fun apiReceiveFile(fileId: Long, inline: Boolean? = null): AChatItem? {
val r = sendCmd(CC.ReceiveFile(fileId, inline))
return when (r) {
is CR.RcvFileAccepted -> r.chatItem
@@ -1061,9 +1069,9 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
}
}
suspend fun apiCreateGroupLink(groupId: Long): String? {
return when (val r = sendCmd(CC.APICreateGroupLink(groupId))) {
is CR.GroupLinkCreated -> r.connReqContact
suspend fun apiCreateGroupLink(groupId: Long, memberRole: GroupMemberRole = GroupMemberRole.Member): Pair<String, GroupMemberRole>? {
return when (val r = sendCmd(CC.APICreateGroupLink(groupId, memberRole))) {
is CR.GroupLinkCreated -> r.connReqContact to r.memberRole
else -> {
if (!(networkErrorAlert(r))) {
apiErrorAlert("apiCreateGroupLink", generalGetString(R.string.error_creating_link_for_group), r)
@@ -1073,6 +1081,18 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
}
}
suspend fun apiGroupLinkMemberRole(groupId: Long, memberRole: GroupMemberRole = GroupMemberRole.Member): Pair<String, GroupMemberRole>? {
return when (val r = sendCmd(CC.APIGroupLinkMemberRole(groupId, memberRole))) {
is CR.GroupLink -> r.connReqContact to r.memberRole
else -> {
if (!(networkErrorAlert(r))) {
apiErrorAlert("apiGroupLinkMemberRole", generalGetString(R.string.error_updating_link_for_group), r)
}
null
}
}
}
suspend fun apiDeleteGroupLink(groupId: Long): Boolean {
return when (val r = sendCmd(CC.APIDeleteGroupLink(groupId))) {
is CR.GroupLinkDeleted -> true
@@ -1085,9 +1105,9 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
}
}
suspend fun apiGetGroupLink(groupId: Long): String? {
suspend fun apiGetGroupLink(groupId: Long): Pair<String, GroupMemberRole>? {
return when (val r = sendCmd(CC.APIGetGroupLink(groupId))) {
is CR.GroupLink -> r.connReqContact
is CR.GroupLink -> r.connReqContact to r.memberRole
else -> {
Log.e(TAG, "apiGetGroupLink bad response: ${r.responseType} ${r.details}")
null
@@ -1344,6 +1364,10 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
if (active(r.user)) {
chatModel.updateGroup(r.toGroup)
}
is CR.MemberRole ->
if (active(r.user)) {
chatModel.updateGroup(r.groupInfo)
}
is CR.RcvFileStart ->
chatItemSimpleUpdate(r.user, r.chatItem)
is CR.RcvFileComplete ->
@@ -1424,8 +1448,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
}
suspend fun receiveFile(user: User, fileId: Long) {
val inline = appPrefs.privacyTransferImagesInline.get()
val chatItem = apiReceiveFile(fileId, inline)
val chatItem = apiReceiveFile(fileId)
if (chatItem != null) {
chatItemSimpleUpdate(user, chatItem)
}
@@ -1441,8 +1464,11 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
private suspend fun chatItemSimpleUpdate(user: User, aChatItem: AChatItem) {
val cInfo = aChatItem.chatInfo
val cItem = aChatItem.chatItem
if (!active(user) || chatModel.upsertChatItem(cInfo, cItem)) {
ntfManager.notifyMessageReceived(chatModel.currentUser.value!!, cInfo, cItem)
val notify = { ntfManager.notifyMessageReceived(user, cInfo, cItem) }
if (!active(user)) {
notify()
} else if (chatModel.upsertChatItem(cInfo, cItem)) {
notify()
}
}
@@ -1743,6 +1769,7 @@ sealed class CC {
class ApiSendMessage(val type: ChatType, val id: Long, val file: String?, val quotedItemId: Long?, val mc: MsgContent, val live: Boolean): CC()
class ApiUpdateChatItem(val type: ChatType, val id: Long, val itemId: Long, val mc: MsgContent, val live: Boolean): CC()
class ApiDeleteChatItem(val type: ChatType, val id: Long, val itemId: Long, val mode: CIDeleteMode): CC()
class ApiDeleteMemberChatItem(val groupId: Long, val groupMemberId: Long, val itemId: Long): CC()
class ApiNewGroup(val userId: Long, val groupProfile: GroupProfile): CC()
class ApiAddMember(val groupId: Long, val contactId: Long, val memberRole: GroupMemberRole): CC()
class ApiJoinGroup(val groupId: Long): CC()
@@ -1751,12 +1778,13 @@ sealed class CC {
class ApiLeaveGroup(val groupId: Long): CC()
class ApiListMembers(val groupId: Long): CC()
class ApiUpdateGroupProfile(val groupId: Long, val groupProfile: GroupProfile): CC()
class APICreateGroupLink(val groupId: Long): CC()
class APICreateGroupLink(val groupId: Long, val memberRole: GroupMemberRole): CC()
class APIGroupLinkMemberRole(val groupId: Long, val memberRole: GroupMemberRole): CC()
class APIDeleteGroupLink(val groupId: Long): CC()
class APIGetGroupLink(val groupId: Long): CC()
class APIGetUserSMPServers(val userId: Long): CC()
class APISetUserSMPServers(val userId: Long, val smpServers: List<ServerCfg>): CC()
class TestSMPServer(val userId: Long, val smpServer: String): CC()
class APITestSMPServer(val userId: Long, val smpServer: String): CC()
class APISetChatItemTTL(val userId: Long, val seconds: Long?): CC()
class APIGetChatItemTTL(val userId: Long): CC()
class APISetNetworkConfig(val networkConfig: NetCfg): CC()
@@ -1795,7 +1823,7 @@ sealed class CC {
class ApiRejectContact(val contactReqId: Long): CC()
class ApiChatRead(val type: ChatType, val id: Long, val range: ItemRange): CC()
class ApiChatUnread(val type: ChatType, val id: Long, val unreadChat: Boolean): CC()
class ReceiveFile(val fileId: Long, val inline: Boolean): CC()
class ReceiveFile(val fileId: Long, val inline: Boolean?): CC()
class ShowVersion(): CC()
val cmdString: String get() = when (this) {
@@ -1818,6 +1846,7 @@ sealed class CC {
is ApiSendMessage -> "/_send ${chatRef(type, id)} live=${onOff(live)} json ${json.encodeToString(ComposedMessage(file, quotedItemId, mc))}"
is ApiUpdateChatItem -> "/_update item ${chatRef(type, id)} $itemId live=${onOff(live)} ${mc.cmdString}"
is ApiDeleteChatItem -> "/_delete item ${chatRef(type, id)} $itemId ${mode.deleteMode}"
is ApiDeleteMemberChatItem -> "/_delete member item #$groupId $groupMemberId $itemId"
is ApiNewGroup -> "/_group $userId ${json.encodeToString(groupProfile)}"
is ApiAddMember -> "/_add #$groupId $contactId ${memberRole.memberRole}"
is ApiJoinGroup -> "/_join #$groupId"
@@ -1826,12 +1855,13 @@ sealed class CC {
is ApiLeaveGroup -> "/_leave #$groupId"
is ApiListMembers -> "/_members #$groupId"
is ApiUpdateGroupProfile -> "/_group_profile #$groupId ${json.encodeToString(groupProfile)}"
is APICreateGroupLink -> "/_create link #$groupId"
is APICreateGroupLink -> "/_create link #$groupId ${memberRole.name.lowercase()}"
is APIGroupLinkMemberRole -> "/_set link role #$groupId ${memberRole.name.lowercase()}"
is APIDeleteGroupLink -> "/_delete link #$groupId"
is APIGetGroupLink -> "/_get link #$groupId"
is APIGetUserSMPServers -> "/_smp $userId"
is APISetUserSMPServers -> "/_smp $userId ${smpServersStr(smpServers)}"
is TestSMPServer -> "/smp test $userId $smpServer"
is APITestSMPServer -> "/_smp test $userId $smpServer"
is APISetChatItemTTL -> "/_ttl $userId ${chatItemTTLStr(seconds)}"
is APIGetChatItemTTL -> "/_ttl $userId"
is APISetNetworkConfig -> "/_network ${json.encodeToString(networkConfig)}"
@@ -1870,7 +1900,7 @@ sealed class CC {
is ApiCallStatus -> "/_call status @${contact.apiId} ${callStatus.value}"
is ApiChatRead -> "/_read chat ${chatRef(type, id)} from=${range.from} to=${range.to}"
is ApiChatUnread -> "/_unread chat ${chatRef(type, id)} ${onOff(unreadChat)}"
is ReceiveFile -> "/freceive $fileId inline=${onOff(inline)}"
is ReceiveFile -> if (inline == null) "/freceive $fileId" else "/freceive $fileId inline=${onOff(inline)}"
is ShowVersion -> "/version"
}
@@ -1894,6 +1924,7 @@ sealed class CC {
is ApiSendMessage -> "apiSendMessage"
is ApiUpdateChatItem -> "apiUpdateChatItem"
is ApiDeleteChatItem -> "apiDeleteChatItem"
is ApiDeleteMemberChatItem -> "apiDeleteMemberChatItem"
is ApiNewGroup -> "apiNewGroup"
is ApiAddMember -> "apiAddMember"
is ApiJoinGroup -> "apiJoinGroup"
@@ -1903,11 +1934,12 @@ sealed class CC {
is ApiListMembers -> "apiListMembers"
is ApiUpdateGroupProfile -> "apiUpdateGroupProfile"
is APICreateGroupLink -> "apiCreateGroupLink"
is APIGroupLinkMemberRole -> "apiGroupLinkMemberRole"
is APIDeleteGroupLink -> "apiDeleteGroupLink"
is APIGetGroupLink -> "apiGetGroupLink"
is APIGetUserSMPServers -> "apiGetUserSMPServers"
is APISetUserSMPServers -> "apiSetUserSMPServers"
is TestSMPServer -> "testSMPServer"
is APITestSMPServer -> "testSMPServer"
is APISetChatItemTTL -> "apiSetChatItemTTL"
is APIGetChatItemTTL -> "apiGetChatItemTTL"
is APISetNetworkConfig -> "/apiSetNetworkConfig"
@@ -2924,8 +2956,8 @@ sealed class CR {
@Serializable @SerialName("connectedToGroupMember") class ConnectedToGroupMember(val user: User, val groupInfo: GroupInfo, val member: GroupMember): CR()
@Serializable @SerialName("groupRemoved") class GroupRemoved(val user: User, val groupInfo: GroupInfo): CR() // unused
@Serializable @SerialName("groupUpdated") class GroupUpdated(val user: User, val toGroup: GroupInfo): CR()
@Serializable @SerialName("groupLinkCreated") class GroupLinkCreated(val user: User, val groupInfo: GroupInfo, val connReqContact: String): CR()
@Serializable @SerialName("groupLink") class GroupLink(val user: User, val groupInfo: GroupInfo, val connReqContact: String): CR()
@Serializable @SerialName("groupLinkCreated") class GroupLinkCreated(val user: User, val groupInfo: GroupInfo, val connReqContact: String, val memberRole: GroupMemberRole): CR()
@Serializable @SerialName("groupLink") class GroupLink(val user: User, val groupInfo: GroupInfo, val connReqContact: String, val memberRole: GroupMemberRole): CR()
@Serializable @SerialName("groupLinkDeleted") class GroupLinkDeleted(val user: User, val groupInfo: GroupInfo): CR()
// receiving file events
@Serializable @SerialName("rcvFileAccepted") class RcvFileAccepted(val user: User, val chatItem: AChatItem): CR()
@@ -3128,8 +3160,8 @@ sealed class CR {
is ConnectedToGroupMember -> withUser(user, "groupInfo: $groupInfo\nmember: $member")
is GroupRemoved -> withUser(user, json.encodeToString(groupInfo))
is GroupUpdated -> withUser(user, json.encodeToString(toGroup))
is GroupLinkCreated -> withUser(user, "groupInfo: $groupInfo\nconnReqContact: $connReqContact")
is GroupLink -> withUser(user, "groupInfo: $groupInfo\nconnReqContact: $connReqContact")
is GroupLinkCreated -> withUser(user, "groupInfo: $groupInfo\nconnReqContact: $connReqContact\nmemberRole: $memberRole")
is GroupLink -> withUser(user, "groupInfo: $groupInfo\nconnReqContact: $connReqContact\nmemberRole: $memberRole")
is GroupLinkDeleted -> withUser(user, json.encodeToString(groupInfo))
is RcvFileAcceptedSndCancelled -> withUser(user, noDetails())
is RcvFileAccepted -> withUser(user, json.encodeToString(chatItem))

View File

@@ -17,6 +17,7 @@ enum class DefaultTheme {
val DEFAULT_PADDING = 16.dp
val DEFAULT_SPACE_AFTER_ICON = 4.dp
val DEFAULT_PADDING_HALF = DEFAULT_PADDING / 2
val DEFAULT_BOTTOM_PADDING = 48.dp
val DarkColorPalette = darkColors(
primary = SimplexBlue, // If this value changes also need to update #0088ff in string resource files

View File

@@ -83,6 +83,8 @@ fun TerminalLayout(
liveMessageAlertShown = SharedPreference(get = { false }, set = {}),
needToAllowVoiceToContact = false,
allowedVoiceByPrefs = false,
userIsObserver = false,
userCanSend = true,
allowVoiceToContact = {},
sendMessage = sendCommand,
sendLiveMessage = null,

View File

@@ -21,8 +21,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.simplex.app.*
import chat.simplex.app.R
import chat.simplex.app.SimplexService
import chat.simplex.app.model.ChatModel
import chat.simplex.app.model.Profile
import chat.simplex.app.ui.theme.*
@@ -116,6 +116,7 @@ fun createProfile(chatModel: ChatModel, displayName: String, fullName: String, c
if (chatModel.users.isEmpty()) {
chatModel.controller.startChat(user)
chatModel.onboardingStage.value = OnboardingStage.Step3_SetNotificationsMode
SimplexApp.context.chatModel.controller.ntfManager.createNtfChannelsMaybeShowAlert()
} else {
val users = chatModel.controller.listUsers()
chatModel.users.clear()

View File

@@ -3,11 +3,12 @@ package chat.simplex.app.views.call
import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.*
import android.content.pm.ActivityInfo
import android.media.AudioDeviceInfo
import android.media.AudioManager
import android.media.*
import android.os.Build
import android.os.PowerManager
import android.os.PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
import android.util.Log
import android.view.ViewGroup
import android.webkit.*
@@ -19,6 +20,7 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.outlined.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -37,7 +39,7 @@ import androidx.webkit.WebViewClientCompat
import chat.simplex.app.*
import chat.simplex.app.R
import chat.simplex.app.model.*
import chat.simplex.app.ui.theme.SimpleXTheme
import chat.simplex.app.ui.theme.*
import chat.simplex.app.views.helpers.ProfileImage
import chat.simplex.app.views.helpers.withApi
import chat.simplex.app.views.usersettings.NotificationsMode
@@ -53,6 +55,7 @@ fun ActiveCallView(chatModel: ChatModel) {
val call = chatModel.activeCall.value
if (call != null) withApi { chatModel.callManager.endCall(call) }
})
val audioViaBluetooth = rememberSaveable { mutableStateOf(false) }
val ntfModeService = remember { chatModel.controller.appPrefs.notificationsMode.get() == NotificationsMode.SERVICE.name }
LaunchedEffect(Unit) {
// Start service when call happening since it's not already started.
@@ -60,17 +63,48 @@ fun ActiveCallView(chatModel: ChatModel) {
if (!ntfModeService) SimplexService.start(SimplexApp.context)
}
DisposableEffect(Unit) {
val am = SimplexApp.context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
var btDeviceCount = 0
val audioCallback = object: AudioDeviceCallback() {
override fun onAudioDevicesAdded(addedDevices: Array<out AudioDeviceInfo>) {
Log.d(TAG, "Added audio devices: ${addedDevices.map { it.type }}")
super.onAudioDevicesAdded(addedDevices)
val addedCount = addedDevices.count { it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO }
btDeviceCount += addedCount
audioViaBluetooth.value = btDeviceCount > 0
if (addedCount > 0 && chatModel.activeCall.value?.callState == CallState.Connected) {
// Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12
setCallSound(chatModel.activeCall.value?.soundSpeaker ?: return, audioViaBluetooth)
}
}
override fun onAudioDevicesRemoved(removedDevices: Array<out AudioDeviceInfo>) {
Log.d(TAG, "Removed audio devices: ${removedDevices.map { it.type }}")
super.onAudioDevicesRemoved(removedDevices)
val removedCount = removedDevices.count { it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO }
btDeviceCount -= removedCount
audioViaBluetooth.value = btDeviceCount > 0
if (btDeviceCount == 0 && chatModel.activeCall.value?.callState == CallState.Connected) {
// Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12
setCallSound(chatModel.activeCall.value?.soundSpeaker ?: return, audioViaBluetooth)
}
}
}
am.registerAudioDeviceCallback(audioCallback, null)
val pm = (SimplexApp.context.getSystemService(Context.POWER_SERVICE) as PowerManager)
val proximityLock = if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, "proximityLock")
} else {
null
}
proximityLock?.acquire()
onDispose {
// Stop it when call ended
if (!ntfModeService) SimplexService.safeStopService(SimplexApp.context)
// Clear selected communication device to default value after we changed it in call
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val am = SimplexApp.context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.clearCommunicationDevice()
}
dropAudioManagerOverrides()
am.unregisterAudioDeviceCallback(audioCallback)
proximityLock?.release()
}
}
val cxt = LocalContext.current
val scope = rememberCoroutineScope()
Box(Modifier.fillMaxSize()) {
WebRTCView(chatModel.callCommand) { apiMsg ->
@@ -100,6 +134,7 @@ fun ActiveCallView(chatModel: ChatModel) {
val callStatus = json.decodeFromString<WebRTCCallStatus>("\"${r.state.connectionState}\"")
if (callStatus == WebRTCCallStatus.Connected) {
chatModel.activeCall.value = call.copy(callState = CallState.Connected)
setCallSound(call.soundSpeaker, audioViaBluetooth)
}
withApi { chatModel.controller.apiCallStatus(call.contact, callStatus) }
} catch (e: Error) {
@@ -108,8 +143,7 @@ fun ActiveCallView(chatModel: ChatModel) {
is WCallResponse.Connected -> {
chatModel.activeCall.value = call.copy(callState = CallState.Connected, connectionInfo = r.connectionInfo)
scope.launch {
delay(2000L)
setCallSound(cxt, call)
setCallSound(call.soundSpeaker, audioViaBluetooth)
}
}
is WCallResponse.Ended -> {
@@ -143,15 +177,18 @@ fun ActiveCallView(chatModel: ChatModel) {
}
}
val call = chatModel.activeCall.value
if (call != null) ActiveCallOverlay(call, chatModel)
if (call != null) ActiveCallOverlay(call, chatModel, audioViaBluetooth)
}
val context = LocalContext.current
DisposableEffect(Unit) {
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
onDispose {
activity.volumeControlStream = prevVolumeControlStream
// Unlock orientation
activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
}
@@ -159,10 +196,10 @@ fun ActiveCallView(chatModel: ChatModel) {
}
@Composable
private fun ActiveCallOverlay(call: Call, chatModel: ChatModel) {
var cxt = LocalContext.current
private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, audioViaBluetooth: MutableState<Boolean>) {
ActiveCallOverlayLayout(
call = call,
speakerCanBeEnabled = !audioViaBluetooth.value,
dismiss = { withApi { chatModel.callManager.endCall(call) } },
toggleAudio = { chatModel.callCommand.value = WCallCommand.Media(CallMediaType.Audio, enable = !call.audioEnabled) },
toggleVideo = { chatModel.callCommand.value = WCallCommand.Media(CallMediaType.Video, enable = !call.videoEnabled) },
@@ -171,38 +208,55 @@ private fun ActiveCallOverlay(call: Call, chatModel: ChatModel) {
if (call != null) {
call = call.copy(soundSpeaker = !call.soundSpeaker)
chatModel.activeCall.value = call
setCallSound(cxt, call)
setCallSound(call.soundSpeaker, audioViaBluetooth)
}
},
flipCamera = { chatModel.callCommand.value = WCallCommand.Camera(call.localCamera.flipped) }
)
}
private fun setCallSound(cxt: Context, call: Call) {
Log.d(TAG, "setCallSound: set audio mode")
val am = cxt.getSystemService(Context.AUDIO_SERVICE) as AudioManager
if (call.soundSpeaker) {
am.mode = AudioManager.MODE_NORMAL
am.isSpeakerphoneOn = true
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
am.availableCommunicationDevices.firstOrNull { it.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER }?.let {
private fun setCallSound(speaker: Boolean, audioViaBluetooth: MutableState<Boolean>) {
val am = SimplexApp.context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
Log.d(TAG, "setCallSound: set audio mode, speaker enabled: $speaker")
am.mode = AudioManager.MODE_IN_COMMUNICATION
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val btDevice = am.availableCommunicationDevices.lastOrNull { it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO }
val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE
if (btDevice != null) {
am.setCommunicationDevice(btDevice)
} else if (am.communicationDevice?.type != preferredSecondaryDevice) {
am.availableCommunicationDevices.firstOrNull { it.type == preferredSecondaryDevice }?.let {
am.setCommunicationDevice(it)
}
}
} else {
am.mode = AudioManager.MODE_IN_CALL
am.isSpeakerphoneOn = false
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
am.availableCommunicationDevices.firstOrNull { it.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE }?.let {
am.setCommunicationDevice(it)
}
if (audioViaBluetooth.value) {
am.isSpeakerphoneOn = false
am.startBluetoothSco()
} else {
am.stopBluetoothSco()
am.isSpeakerphoneOn = speaker
}
am.isBluetoothScoOn = am.isBluetoothScoAvailableOffCall && audioViaBluetooth.value
}
}
private fun dropAudioManagerOverrides() {
val am = SimplexApp.context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.mode = AudioManager.MODE_NORMAL
// Clear selected communication device to default value after we changed it in call
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
am.clearCommunicationDevice()
} else {
am.isSpeakerphoneOn = false
am.stopBluetoothSco()
}
}
@Composable
private fun ActiveCallOverlayLayout(
call: Call,
speakerCanBeEnabled: Boolean,
dismiss: () -> Unit,
toggleAudio: () -> Unit,
toggleVideo: () -> Unit,
@@ -240,7 +294,7 @@ private fun ActiveCallOverlayLayout(
CallInfoView(call, alignment = Alignment.CenterHorizontally)
}
Spacer(Modifier.fillMaxHeight().weight(1f))
Box(Modifier.fillMaxWidth().padding(bottom = 48.dp), contentAlignment = Alignment.CenterStart) {
Box(Modifier.fillMaxWidth().padding(bottom = DEFAULT_BOTTOM_PADDING), contentAlignment = Alignment.CenterStart) {
Box(Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
IconButton(onClick = dismiss) {
Icon(Icons.Filled.CallEnd, stringResource(R.string.icon_descr_hang_up), tint = Color.Red, modifier = Modifier.size(64.dp))
@@ -251,7 +305,7 @@ private fun ActiveCallOverlayLayout(
}
Box(Modifier.fillMaxWidth(), contentAlignment = Alignment.CenterEnd) {
Box(Modifier.padding(end = 32.dp)) {
ToggleSoundButton(call, toggleSound)
ToggleSoundButton(call, speakerCanBeEnabled, toggleSound)
}
}
}
@@ -261,10 +315,10 @@ private fun ActiveCallOverlayLayout(
}
@Composable
private fun ControlButton(call: Call, icon: ImageVector, @StringRes iconText: Int, action: () -> Unit) {
private fun ControlButton(call: Call, icon: ImageVector, @StringRes iconText: Int, action: () -> Unit, enabled: Boolean = true) {
if (call.hasMedia) {
IconButton(onClick = action) {
Icon(icon, stringResource(iconText), tint = Color(0xFFFFFFD8), modifier = Modifier.size(40.dp))
IconButton(onClick = action, enabled = enabled) {
Icon(icon, stringResource(iconText), tint = if (enabled) Color(0xFFFFFFD8) else HighOrLowlight, modifier = Modifier.size(40.dp))
}
} else {
Spacer(Modifier.size(40.dp))
@@ -281,11 +335,11 @@ private fun ToggleAudioButton(call: Call, toggleAudio: () -> Unit) {
}
@Composable
private fun ToggleSoundButton(call: Call, toggleSound: () -> Unit) {
private fun ToggleSoundButton(call: Call, enabled: Boolean, toggleSound: () -> Unit) {
if (call.soundSpeaker) {
ControlButton(call, Icons.Outlined.VolumeUp, R.string.icon_descr_speaker_off, toggleSound)
ControlButton(call, Icons.Outlined.VolumeUp, R.string.icon_descr_speaker_off, toggleSound, enabled)
} else {
ControlButton(call, Icons.Outlined.VolumeDown, R.string.icon_descr_speaker_on, toggleSound)
ControlButton(call, Icons.Outlined.VolumeDown, R.string.icon_descr_speaker_on, toggleSound, enabled)
}
}
@@ -297,10 +351,10 @@ fun CallInfoView(call: Call, alignment: Alignment.Horizontal) {
InfoText(call.contact.chatViewName, style = MaterialTheme.typography.h2)
InfoText(call.callState.text)
val connInfo =
if (call.connectionInfo == null) ""
else " (${call.connectionInfo.text})"
InfoText(call.encryptionStatus + connInfo)
val connInfo = call.connectionInfo
// val connInfoText = if (connInfo == null) "" else " (${connInfo.text}, ${connInfo.protocolText})"
val connInfoText = if (connInfo == null) "" else " (${connInfo.text})"
InfoText(call.encryptionStatus + connInfoText)
}
}
@@ -480,8 +534,12 @@ fun PreviewActiveCallOverlayVideo() {
callState = CallState.Negotiated,
localMedia = CallMediaType.Video,
peerMedia = CallMediaType.Video,
connectionInfo = ConnectionInfo(RTCIceCandidate(RTCIceCandidateType.Host), RTCIceCandidate(RTCIceCandidateType.Host))
connectionInfo = ConnectionInfo(
RTCIceCandidate(RTCIceCandidateType.Host, "tcp", null),
RTCIceCandidate(RTCIceCandidateType.Host, "tcp", null)
)
),
speakerCanBeEnabled = true,
dismiss = {},
toggleAudio = {},
toggleVideo = {},
@@ -501,8 +559,12 @@ fun PreviewActiveCallOverlayAudio() {
callState = CallState.Negotiated,
localMedia = CallMediaType.Audio,
peerMedia = CallMediaType.Audio,
connectionInfo = ConnectionInfo(RTCIceCandidate(RTCIceCandidateType.Host), RTCIceCandidate(RTCIceCandidateType.Host))
connectionInfo = ConnectionInfo(
RTCIceCandidate(RTCIceCandidateType.Host, "udp", null),
RTCIceCandidate(RTCIceCandidateType.Host, "udp", null)
)
),
speakerCanBeEnabled = true,
dismiss = {},
toggleAudio = {},
toggleVideo = {},

View File

@@ -1,9 +1,10 @@
package chat.simplex.app.views.call
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import chat.simplex.app.R
import chat.simplex.app.SimplexApp
import androidx.compose.ui.text.toUpperCase
import chat.simplex.app.*
import chat.simplex.app.model.Contact
import chat.simplex.app.model.User
import chat.simplex.app.views.helpers.generalGetString
@@ -11,6 +12,8 @@ import kotlinx.datetime.Instant
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.net.URI
import java.util.*
import kotlin.collections.ArrayList
data class Call(
val contact: Contact,
@@ -62,39 +65,39 @@ enum class CallState {
}
}
@Serializable class WVAPICall(val corrId: Int? = null, val command: WCallCommand)
@Serializable class WVAPIMessage(val corrId: Int? = null, val resp: WCallResponse, val command: WCallCommand? = null)
@Serializable data class WVAPICall(val corrId: Int? = null, val command: WCallCommand)
@Serializable data class WVAPIMessage(val corrId: Int? = null, val resp: WCallResponse, val command: WCallCommand? = null)
@Serializable
sealed class WCallCommand {
@Serializable @SerialName("capabilities") object Capabilities: WCallCommand()
@Serializable @SerialName("start") class Start(val media: CallMediaType, val aesKey: String? = null, val iceServers: List<RTCIceServer>? = null, val relay: Boolean? = null): WCallCommand()
@Serializable @SerialName("offer") class Offer(val offer: String, val iceCandidates: String, val media: CallMediaType, val aesKey: String? = null, val iceServers: List<RTCIceServer>? = null, val relay: Boolean? = null): WCallCommand()
@Serializable @SerialName("answer") class Answer (val answer: String, val iceCandidates: String): WCallCommand()
@Serializable @SerialName("ice") class Ice(val iceCandidates: String): WCallCommand()
@Serializable @SerialName("media") class Media(val media: CallMediaType, val enable: Boolean): WCallCommand()
@Serializable @SerialName("camera") class Camera(val camera: VideoCamera): WCallCommand()
@Serializable @SerialName("start") data class Start(val media: CallMediaType, val aesKey: String? = null, val iceServers: List<RTCIceServer>? = null, val relay: Boolean? = null): WCallCommand()
@Serializable @SerialName("offer") data class Offer(val offer: String, val iceCandidates: String, val media: CallMediaType, val aesKey: String? = null, val iceServers: List<RTCIceServer>? = null, val relay: Boolean? = null): WCallCommand()
@Serializable @SerialName("answer") data class Answer (val answer: String, val iceCandidates: String): WCallCommand()
@Serializable @SerialName("ice") data class Ice(val iceCandidates: String): WCallCommand()
@Serializable @SerialName("media") data class Media(val media: CallMediaType, val enable: Boolean): WCallCommand()
@Serializable @SerialName("camera") data class Camera(val camera: VideoCamera): WCallCommand()
@Serializable @SerialName("end") object End: WCallCommand()
}
@Serializable
sealed class WCallResponse {
@Serializable @SerialName("capabilities") class Capabilities(val capabilities: CallCapabilities): WCallResponse()
@Serializable @SerialName("offer") class Offer(val offer: String, val iceCandidates: String, val capabilities: CallCapabilities): WCallResponse()
@Serializable @SerialName("answer") class Answer(val answer: String, val iceCandidates: String): WCallResponse()
@Serializable @SerialName("ice") class Ice(val iceCandidates: String): WCallResponse()
@Serializable @SerialName("connection") class Connection(val state: ConnectionState): WCallResponse()
@Serializable @SerialName("connected") class Connected(val connectionInfo: ConnectionInfo): WCallResponse()
@Serializable @SerialName("capabilities") data class Capabilities(val capabilities: CallCapabilities): WCallResponse()
@Serializable @SerialName("offer") data class Offer(val offer: String, val iceCandidates: String, val capabilities: CallCapabilities): WCallResponse()
@Serializable @SerialName("answer") data class Answer(val answer: String, val iceCandidates: String): WCallResponse()
@Serializable @SerialName("ice") data class Ice(val iceCandidates: String): WCallResponse()
@Serializable @SerialName("connection") data class Connection(val state: ConnectionState): WCallResponse()
@Serializable @SerialName("connected") data class Connected(val connectionInfo: ConnectionInfo): WCallResponse()
@Serializable @SerialName("ended") object Ended: WCallResponse()
@Serializable @SerialName("ok") object Ok: WCallResponse()
@Serializable @SerialName("error") class Error(val message: String): WCallResponse()
@Serializable @SerialName("error") data class Error(val message: String): WCallResponse()
}
@Serializable class WebRTCCallOffer(val callType: CallType, val rtcSession: WebRTCSession)
@Serializable class WebRTCSession(val rtcSession: String, val rtcIceCandidates: String)
@Serializable class WebRTCExtraInfo(val rtcIceCandidates: String)
@Serializable class CallType(val media: CallMediaType, val capabilities: CallCapabilities)
@Serializable class RcvCallInvitation(val user: User, val contact: Contact, val callType: CallType, val sharedKey: String? = null, val callTs: Instant) {
@Serializable data class WebRTCCallOffer(val callType: CallType, val rtcSession: WebRTCSession)
@Serializable data class WebRTCSession(val rtcSession: String, val rtcIceCandidates: String)
@Serializable data class WebRTCExtraInfo(val rtcIceCandidates: String)
@Serializable data class CallType(val media: CallMediaType, val capabilities: CallCapabilities)
@Serializable data class RcvCallInvitation(val user: User, val contact: Contact, val callType: CallType, val sharedKey: String? = null, val callTs: Instant) {
val callTypeText: String get() = generalGetString(when(callType.media) {
CallMediaType.Video -> if (sharedKey == null) R.string.video_call_no_encryption else R.string.encrypted_video_call
CallMediaType.Audio -> if (sharedKey == null) R.string.audio_call_no_encryption else R.string.encrypted_audio_call
@@ -104,19 +107,32 @@ sealed class WCallResponse {
CallMediaType.Audio -> R.string.incoming_audio_call
})
}
@Serializable class CallCapabilities(val encryption: Boolean)
@Serializable class ConnectionInfo(private val localCandidate: RTCIceCandidate?, private val remoteCandidate: RTCIceCandidate?) {
val text: String @Composable get() = when {
localCandidate?.candidateType == RTCIceCandidateType.Host && remoteCandidate?.candidateType == RTCIceCandidateType.Host ->
stringResource(R.string.call_connection_peer_to_peer)
localCandidate?.candidateType == RTCIceCandidateType.Relay && remoteCandidate?.candidateType == RTCIceCandidateType.Relay ->
stringResource(R.string.call_connection_via_relay)
else ->
"${localCandidate?.candidateType?.value ?: "unknown"} / ${remoteCandidate?.candidateType?.value ?: "unknown"}"
@Serializable data class CallCapabilities(val encryption: Boolean)
@Serializable data class ConnectionInfo(private val localCandidate: RTCIceCandidate?, private val remoteCandidate: RTCIceCandidate?) {
val text: String @Composable get() {
val local = localCandidate?.candidateType
val remote = remoteCandidate?.candidateType
return when {
local == RTCIceCandidateType.Host && remote == RTCIceCandidateType.Host ->
stringResource(R.string.call_connection_peer_to_peer)
local == RTCIceCandidateType.Relay && remote == RTCIceCandidateType.Relay ->
stringResource(R.string.call_connection_via_relay)
else ->
"${local?.value ?: "unknown"} / ${remote?.value ?: "unknown"}"
}
}
val protocolText: String get() {
val local = localCandidate?.protocol?.uppercase(Locale.ROOT) ?: "unknown"
val localRelay = localCandidate?.relayProtocol?.uppercase(Locale.ROOT) ?: "unknown"
val remote = remoteCandidate?.protocol?.uppercase(Locale.ROOT) ?: "unknown"
val localText = if (localRelay == local || localCandidate?.relayProtocol == null) local else "$local ($localRelay)"
return if (local == remote) localText else "$localText / $remote"
}
}
// https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate
@Serializable class RTCIceCandidate(val candidateType: RTCIceCandidateType?)
@Serializable data class RTCIceCandidate(val candidateType: RTCIceCandidateType?, val protocol: String?, val relayProtocol: String?)
// https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer
@Serializable data class RTCIceServer(val urls: List<String>, val username: String? = null, val credential: String? = null)
@@ -151,7 +167,7 @@ enum class VideoCamera {
}
@Serializable
class ConnectionState(
data class ConnectionState(
val connectionState: String,
val iceConnectionState: String,
val iceGatheringState: String,
@@ -159,20 +175,22 @@ class ConnectionState(
)
// the servers are expected in this format:
// stun:stun.simplex.im:443
// turn:private:yleob6AVkiNI87hpR94Z@turn.simplex.im:443
// stun:stun.simplex.im:443?transport=tcp
// turn:private:yleob6AVkiNI87hpR94Z@turn.simplex.im:443?transport=tcp
fun parseRTCIceServer(str: String): RTCIceServer? {
var s = replaceScheme(str, "stun:")
s = replaceScheme(s, "turn:")
s = replaceScheme(s, "turns:")
val u = runCatching { URI(s) }.getOrNull()
if (u != null) {
val scheme = u.scheme
val host = u.host
val port = u.port
if (u.path == "" && (scheme == "stun" || scheme == "turn")) {
if (u.path == "" && (scheme == "stun" || scheme == "turn" || scheme == "turns")) {
val userInfo = u.userInfo?.split(":")
val query = if (u.query == null || u.query == "") "" else "?${u.query}"
return RTCIceServer(
urls = listOf("$scheme:$host:$port"),
urls = listOf("$scheme:$host:$port$query"),
username = userInfo?.getOrNull(0),
credential = userInfo?.getOrNull(1)
)

View File

@@ -152,9 +152,14 @@ fun ChatView(chatId: String, chatModel: ChatModel, onComposed: () -> Unit) {
}
} else if (chat.chatInfo is ChatInfo.Group) {
setGroupMembers(chat.chatInfo.groupInfo, chatModel)
var groupLink = chatModel.controller.apiGetGroupLink(chat.chatInfo.groupInfo.groupId)
val link = chatModel.controller.apiGetGroupLink(chat.chatInfo.groupInfo.groupId)
var groupLink = link?.first
var groupLinkMemberRole = link?.second
ModalManager.shared.showModalCloseable(true) { close ->
GroupChatInfoView(chatModel, groupLink, { groupLink = it }, close)
GroupChatInfoView(chatModel, groupLink, groupLinkMemberRole, {
groupLink = it.first;
groupLinkMemberRole = it.second
}, close)
}
}
}
@@ -193,19 +198,34 @@ fun ChatView(chatId: String, chatModel: ChatModel, onComposed: () -> Unit) {
deleteMessage = { itemId, mode ->
withApi {
val cInfo = chat.chatInfo
val r = chatModel.controller.apiDeleteChatItem(
type = cInfo.chatType,
id = cInfo.apiId,
itemId = itemId,
mode = mode
)
if (r != null) {
val toChatItem = r.toChatItem
if (toChatItem == null) {
chatModel.removeChatItem(cInfo, r.deletedChatItem.chatItem)
} else {
chatModel.upsertChatItem(cInfo, toChatItem.chatItem)
}
val toDeleteItem = chatModel.chatItems.firstOrNull { it.id == itemId }
val toModerate = toDeleteItem?.memberToModerate(chat.chatInfo)
val groupInfo = toModerate?.first
val groupMember = toModerate?.second
val deletedChatItem: ChatItem?
val toChatItem: ChatItem?
if (groupInfo != null && groupMember != null) {
val r = chatModel.controller.apiDeleteMemberChatItem(
groupId = groupInfo.groupId,
groupMemberId = groupMember.groupMemberId,
itemId = itemId
)
deletedChatItem = r?.first
toChatItem = r?.second
} else {
val r = chatModel.controller.apiDeleteChatItem(
type = cInfo.chatType,
id = cInfo.apiId,
itemId = itemId,
mode = mode
)
deletedChatItem = r?.deletedChatItem?.chatItem
toChatItem = r?.toChatItem?.chatItem
}
if (toChatItem == null && deletedChatItem != null) {
chatModel.removeChatItem(cInfo, deletedChatItem)
} else if (toChatItem != null) {
chatModel.upsertChatItem(cInfo, toChatItem)
}
}
},
@@ -674,10 +694,18 @@ private fun ScrollToBottom(chatId: ChatId, listState: LazyListState, chatItems:
.distinctUntilChanged()
.filter { listState.layoutInfo.visibleItemsInfo.firstOrNull()?.key != it }
.collect {
if (listState.firstVisibleItemIndex == 0) {
listState.animateScrollToItem(0)
} else {
listState.animateScrollBy(scrollDistance)
try {
if (listState.firstVisibleItemIndex == 0) {
listState.animateScrollToItem(0)
} else {
listState.animateScrollBy(scrollDistance)
}
} catch (e: CancellationException) {
/**
* When you tap and hold a finger on a lazy column with chatItems, and then you receive a message,
* this coroutine will be canceled with the message "Current mutation had a higher priority" because of animatedScroll.
* Which breaks auto-scrolling to bottom. So just ignoring the exception
* */
}
}
}

View File

@@ -17,6 +17,7 @@ import android.util.Log
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContract
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.*
@@ -32,6 +33,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import chat.simplex.app.*
@@ -645,6 +647,9 @@ fun ComposeView(
chatModel.sharedContent.value = null
}
val userCanSend = rememberUpdatedState(chat.userCanSend)
val userIsObserver = rememberUpdatedState(chat.userIsObserver)
Column {
contextItemView()
when {
@@ -656,11 +661,11 @@ fun ComposeView(
modifier = Modifier.padding(end = 8.dp),
verticalAlignment = Alignment.Bottom,
) {
IconButton(showChooseAttachment, enabled = !composeState.value.attachmentDisabled) {
IconButton(showChooseAttachment, enabled = !composeState.value.attachmentDisabled && rememberUpdatedState(chat.userCanSend).value) {
Icon(
Icons.Filled.AttachFile,
contentDescription = stringResource(R.string.attach),
tint = if (!composeState.value.attachmentDisabled) MaterialTheme.colors.primary else HighOrLowlight,
tint = if (!composeState.value.attachmentDisabled && userCanSend.value) MaterialTheme.colors.primary else HighOrLowlight,
modifier = Modifier
.size(28.dp)
.clip(CircleShape)
@@ -698,6 +703,13 @@ fun ComposeView(
}
}
LaunchedEffect(rememberUpdatedState(chat.userCanSend).value) {
if (!chat.userCanSend) {
clearCurrentDraft()
clearState()
}
}
val activity = LocalContext.current as Activity
DisposableEffect(Unit) {
val orientation = activity.resources.configuration.orientation
@@ -733,6 +745,8 @@ fun ComposeView(
needToAllowVoiceToContact,
allowedVoiceByPrefs,
allowVoiceToContact = ::allowVoiceToContact,
userIsObserver = userIsObserver.value,
userCanSend = userCanSend.value,
sendMessage = {
sendMessage()
resetLinkPreview()

View File

@@ -60,6 +60,8 @@ fun SendMsgView(
liveMessageAlertShown: SharedPreference<Boolean>,
needToAllowVoiceToContact: Boolean,
allowedVoiceByPrefs: Boolean,
userIsObserver: Boolean,
userCanSend: Boolean,
allowVoiceToContact: () -> Unit,
sendMessage: () -> Unit,
sendLiveMessage: (suspend () -> Unit)? = null,
@@ -74,10 +76,18 @@ fun SendMsgView(
val showVoiceButton = cs.message.isEmpty() && showVoiceRecordIcon && !composeState.value.editing &&
cs.liveMessage == null && (cs.preview is ComposePreview.NoPreview || recState.value is RecordingState.Started)
val showDeleteTextButton = rememberSaveable { mutableStateOf(false) }
NativeKeyboard(composeState, textStyle, showDeleteTextButton, onMessageChange)
NativeKeyboard(composeState, textStyle, showDeleteTextButton, userIsObserver, onMessageChange)
// Disable clicks on text field
if (cs.preview is ComposePreview.VoicePreview) {
Box(Modifier.matchParentSize().clickable(enabled = false, onClick = { }))
if (cs.preview is ComposePreview.VoicePreview || !userCanSend) {
Box(Modifier
.matchParentSize()
.clickable(enabled = !userCanSend, indication = null, interactionSource = remember { MutableInteractionSource() }, onClick = {
AlertManager.shared.showAlertMsg(
title = generalGetString(R.string.observer_cant_send_message_title),
text = generalGetString(R.string.observer_cant_send_message_desc)
)
})
)
}
if (showDeleteTextButton.value) {
DeleteTextButton(composeState)
@@ -99,11 +109,11 @@ fun SendMsgView(
Row(verticalAlignment = Alignment.CenterVertically) {
val stopRecOnNextClick = remember { mutableStateOf(false) }
when {
needToAllowVoiceToContact || !allowedVoiceByPrefs -> {
DisallowedVoiceButton {
needToAllowVoiceToContact || !allowedVoiceByPrefs || !userCanSend -> {
DisallowedVoiceButton(userCanSend) {
if (needToAllowVoiceToContact) {
showNeedToAllowVoiceAlert(allowVoiceToContact)
} else {
} else if (!allowedVoiceByPrefs) {
showDisabledVoiceAlert(isDirectChat)
}
}
@@ -118,7 +128,7 @@ fun SendMsgView(
&& (cs.preview !is ComposePreview.VoicePreview || !stopRecOnNextClick.value)
&& cs.contextItem is ComposeContextItem.NoContextItem) {
Spacer(Modifier.width(10.dp))
StartLiveMessageButton {
StartLiveMessageButton(userCanSend) {
if (composeState.value.preview is ComposePreview.NoPreview) {
startLiveMessage(scope, sendLiveMessage, updateLiveMessage, sendButtonSize, sendButtonAlpha, composeState, liveMessageAlertShown)
}
@@ -173,6 +183,7 @@ private fun NativeKeyboard(
composeState: MutableState<ComposeState>,
textStyle: MutableState<TextStyle>,
showDeleteTextButton: MutableState<Boolean>,
userIsObserver: Boolean,
onMessageChange: (String) -> Unit
) {
val cs = composeState.value
@@ -253,15 +264,22 @@ private fun NativeKeyboard(
showDeleteTextButton.value = it.lineCount >= 4
}
if (composeState.value.preview is ComposePreview.VoicePreview) {
Text(
generalGetString(R.string.voice_message_send_text),
Modifier.padding(padding),
color = HighOrLowlight,
style = textStyle.value.copy(fontStyle = FontStyle.Italic)
)
ComposeOverlay(R.string.voice_message_send_text, textStyle, padding)
} else if (userIsObserver) {
ComposeOverlay(R.string.you_are_observer, textStyle, padding)
}
}
@Composable
private fun ComposeOverlay(textId: Int, textStyle: MutableState<TextStyle>, padding: PaddingValues) {
Text(
generalGetString(textId),
Modifier.padding(padding),
color = HighOrLowlight,
style = textStyle.value.copy(fontStyle = FontStyle.Italic)
)
}
@Composable
private fun BoxScope.DeleteTextButton(composeState: MutableState<ComposeState>) {
IconButton(
@@ -322,8 +340,8 @@ private fun RecordVoiceView(recState: MutableState<RecordingState>, stopRecOnNex
}
@Composable
private fun DisallowedVoiceButton(onClick: () -> Unit) {
IconButton(onClick, Modifier.size(36.dp)) {
private fun DisallowedVoiceButton(enabled: Boolean, onClick: () -> Unit) {
IconButton(onClick, Modifier.size(36.dp), enabled = enabled) {
Icon(
Icons.Outlined.KeyboardVoice,
stringResource(R.string.icon_descr_record_voice_message),
@@ -454,13 +472,13 @@ private fun SendMsgButton(
}
@Composable
private fun StartLiveMessageButton(onClick: () -> Unit) {
private fun StartLiveMessageButton(enabled: Boolean, onClick: () -> Unit) {
val interactionSource = remember { MutableInteractionSource() }
Box(
modifier = Modifier.requiredSize(36.dp)
.clickable(
onClick = onClick,
enabled = true,
enabled = enabled,
role = Role.Button,
interactionSource = interactionSource,
indication = rememberRipple(bounded = false, radius = 24.dp)
@@ -470,7 +488,7 @@ private fun StartLiveMessageButton(onClick: () -> Unit) {
Icon(
Icons.Filled.Bolt,
stringResource(R.string.icon_descr_send_message),
tint = MaterialTheme.colors.primary,
tint = if (enabled) MaterialTheme.colors.primary else HighOrLowlight,
modifier = Modifier
.size(36.dp)
.padding(4.dp)
@@ -571,6 +589,8 @@ fun PreviewSendMsgView() {
liveMessageAlertShown = SharedPreference(get = { true }, set = { }),
needToAllowVoiceToContact = false,
allowedVoiceByPrefs = true,
userIsObserver = false,
userCanSend = true,
allowVoiceToContact = {},
sendMessage = {},
onMessageChange = { _ -> },
@@ -599,6 +619,8 @@ fun PreviewSendMsgViewEditing() {
liveMessageAlertShown = SharedPreference(get = { true }, set = { }),
needToAllowVoiceToContact = false,
allowedVoiceByPrefs = true,
userIsObserver = false,
userCanSend = true,
allowVoiceToContact = {},
sendMessage = {},
onMessageChange = { _ -> },
@@ -627,6 +649,8 @@ fun PreviewSendMsgViewInProgress() {
liveMessageAlertShown = SharedPreference(get = { true }, set = { }),
needToAllowVoiceToContact = false,
allowedVoiceByPrefs = true,
userIsObserver = false,
userCanSend = true,
allowVoiceToContact = {},
sendMessage = {},
onMessageChange = { _ -> },

View File

@@ -34,7 +34,7 @@ import chat.simplex.app.views.helpers.*
import chat.simplex.app.views.usersettings.*
@Composable
fun GroupChatInfoView(chatModel: ChatModel, groupLink: String?, onGroupLinkUpdated: (String?) -> Unit, close: () -> Unit) {
fun GroupChatInfoView(chatModel: ChatModel, groupLink: String?, groupLinkMemberRole: GroupMemberRole?, onGroupLinkUpdated: (Pair<String?, GroupMemberRole?>) -> Unit, close: () -> Unit) {
BackHandler(onBack = close)
val chat = chatModel.chats.firstOrNull { it.id == chatModel.chatId.value }
val developerTools = chatModel.controller.appPrefs.developerTools.get()
@@ -82,6 +82,9 @@ fun GroupChatInfoView(chatModel: ChatModel, groupLink: String?, onGroupLinkUpdat
editGroupProfile = {
ModalManager.shared.showCustomModal { close -> GroupProfileView(groupInfo, chatModel, close) }
},
addOrEditWelcomeMessage = {
ModalManager.shared.showCustomModal { close -> GroupWelcomeView(chatModel, groupInfo, close) }
},
openPreferences = {
ModalManager.shared.showCustomModal { close ->
GroupPreferencesView(
@@ -95,9 +98,7 @@ fun GroupChatInfoView(chatModel: ChatModel, groupLink: String?, onGroupLinkUpdat
clearChat = { clearChatDialog(chat.chatInfo, chatModel, close) },
leaveGroup = { leaveGroupDialog(groupInfo, chatModel, close) },
manageGroupLink = {
withApi {
ModalManager.shared.showModal { GroupLinkView(chatModel, groupInfo, groupLink, onGroupLinkUpdated) }
}
ModalManager.shared.showModal { GroupLinkView(chatModel, groupInfo, groupLink, groupLinkMemberRole, onGroupLinkUpdated) }
}
)
}
@@ -149,6 +150,7 @@ fun GroupChatInfoLayout(
addMembers: () -> Unit,
showMemberInfo: (GroupMember) -> Unit,
editGroupProfile: () -> Unit,
addOrEditWelcomeMessage: () -> Unit,
openPreferences: () -> Unit,
deleteGroup: () -> Unit,
clearChat: () -> Unit,
@@ -173,6 +175,8 @@ fun GroupChatInfoLayout(
if (groupInfo.canEdit) {
SectionItemView(editGroupProfile) { EditGroupProfileButton() }
SectionDivider()
SectionItemView(addOrEditWelcomeMessage) { AddOrEditWelcomeMessage(groupInfo.groupProfile.description) }
SectionDivider()
}
GroupPreferencesButton(openPreferences)
}
@@ -300,6 +304,7 @@ private fun MemberRow(member: GroupMember, user: Boolean = false) {
verticalAlignment = Alignment.CenterVertically
) {
Row(
Modifier.weight(1f).padding(end = DEFAULT_PADDING),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(4.dp)
) {
@@ -388,6 +393,28 @@ fun EditGroupProfileButton() {
}
}
@Composable
private fun AddOrEditWelcomeMessage(welcomeMessage: String?) {
val text = if (welcomeMessage == null) {
stringResource(R.string.button_add_welcome_message)
} else {
stringResource(R.string.button_welcome_message)
}
Row(
Modifier
.fillMaxSize(),
verticalAlignment = Alignment.CenterVertically
) {
Icon(
Icons.Outlined.MapsUgc,
text,
tint = HighOrLowlight
)
Spacer(Modifier.size(8.dp))
Text(text)
}
}
@Composable
private fun LeaveGroupButton() {
Row(
@@ -433,7 +460,7 @@ fun PreviewGroupChatInfoLayout() {
members = listOf(GroupMember.sampleData, GroupMember.sampleData, GroupMember.sampleData),
developerTools = false,
groupLink = null,
addMembers = {}, showMemberInfo = {}, editGroupProfile = {}, openPreferences = {}, deleteGroup = {}, clearChat = {}, leaveGroup = {}, manageGroupLink = {},
addMembers = {}, showMemberInfo = {}, editGroupProfile = {}, addOrEditWelcomeMessage = {}, openPreferences = {}, deleteGroup = {}, clearChat = {}, leaveGroup = {}, manageGroupLink = {},
)
}
}

View File

@@ -1,6 +1,9 @@
package chat.simplex.app.views.chat.group
import SectionItemView
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
@@ -15,22 +18,26 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.simplex.app.R
import chat.simplex.app.model.ChatModel
import chat.simplex.app.model.GroupInfo
import chat.simplex.app.model.*
import chat.simplex.app.ui.theme.*
import chat.simplex.app.views.helpers.*
import chat.simplex.app.views.newchat.QRCode
@Composable
fun GroupLinkView(chatModel: ChatModel, groupInfo: GroupInfo, connReqContact: String?, onGroupLinkUpdated: (String?) -> Unit) {
fun GroupLinkView(chatModel: ChatModel, groupInfo: GroupInfo, connReqContact: String?, memberRole: GroupMemberRole?, onGroupLinkUpdated: (Pair<String?, GroupMemberRole?>) -> Unit) {
var groupLink by rememberSaveable { mutableStateOf(connReqContact) }
val groupLinkMemberRole = rememberSaveable { mutableStateOf(memberRole) }
var creatingLink by rememberSaveable { mutableStateOf(false) }
val cxt = LocalContext.current
fun createLink() {
creatingLink = true
withApi {
groupLink = chatModel.controller.apiCreateGroupLink(groupInfo.groupId)
onGroupLinkUpdated(groupLink)
val link = chatModel.controller.apiCreateGroupLink(groupInfo.groupId)
if (link != null) {
groupLink = link.first
groupLinkMemberRole.value = link.second
onGroupLinkUpdated(groupLink to groupLinkMemberRole.value)
}
creatingLink = false
}
}
@@ -41,9 +48,24 @@ fun GroupLinkView(chatModel: ChatModel, groupInfo: GroupInfo, connReqContact: St
}
GroupLinkLayout(
groupLink = groupLink,
groupInfo,
groupLinkMemberRole,
creatingLink,
createLink = ::createLink,
share = { shareText(cxt, groupLink ?: return@GroupLinkLayout) },
updateLink = {
val role = groupLinkMemberRole.value
if (role != null) {
withBGApi {
val link = chatModel.controller.apiGroupLinkMemberRole(groupInfo.groupId, role)
if (link != null) {
groupLink = link.first
groupLinkMemberRole.value = link.second
onGroupLinkUpdated(groupLink to groupLinkMemberRole.value)
}
}
}
},
deleteLink = {
AlertManager.shared.showAlertMsg(
title = generalGetString(R.string.delete_link_question),
@@ -54,7 +76,7 @@ fun GroupLinkView(chatModel: ChatModel, groupInfo: GroupInfo, connReqContact: St
val r = chatModel.controller.apiDeleteGroupLink(groupInfo.groupId)
if (r) {
groupLink = null
onGroupLinkUpdated(null)
onGroupLinkUpdated(null to null)
}
}
}
@@ -69,13 +91,18 @@ fun GroupLinkView(chatModel: ChatModel, groupInfo: GroupInfo, connReqContact: St
@Composable
fun GroupLinkLayout(
groupLink: String?,
groupInfo: GroupInfo,
groupLinkMemberRole: MutableState<GroupMemberRole?>,
creatingLink: Boolean,
createLink: () -> Unit,
share: () -> Unit,
updateLink: () -> Unit,
deleteLink: () -> Unit
) {
Column(
Modifier.padding(horizontal = DEFAULT_PADDING),
Modifier
.verticalScroll(rememberScrollState())
.padding(start = DEFAULT_PADDING, bottom = DEFAULT_BOTTOM_PADDING, end = DEFAULT_PADDING),
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.Top
) {
@@ -93,7 +120,17 @@ fun GroupLinkLayout(
if (groupLink == null) {
SimpleButton(stringResource(R.string.button_create_group_link), icon = Icons.Outlined.AddLink, disabled = creatingLink, click = createLink)
} else {
QRCode(groupLink, Modifier.weight(1f, fill = false).aspectRatio(1f))
SectionItemView(padding = PaddingValues(bottom = DEFAULT_PADDING)) {
RoleSelectionRow(groupInfo, groupLinkMemberRole)
}
var initialLaunch by remember { mutableStateOf(true) }
LaunchedEffect(groupLinkMemberRole.value) {
if (!initialLaunch) {
updateLink()
}
initialLaunch = false
}
QRCode(groupLink, Modifier.aspectRatio(1f))
Row(
horizontalArrangement = Arrangement.spacedBy(10.dp),
verticalAlignment = Alignment.CenterVertically,
@@ -116,6 +153,25 @@ fun GroupLinkLayout(
}
}
@Composable
private fun RoleSelectionRow(groupInfo: GroupInfo, selectedRole: MutableState<GroupMemberRole?>, enabled: Boolean = true) {
Row(
Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween
) {
val values = listOf(GroupMemberRole.Member, GroupMemberRole.Observer).map { it to it.text }
ExposedDropDownSettingRow(
generalGetString(R.string.initial_member_role),
values,
selectedRole,
icon = null,
enabled = rememberUpdatedState(enabled),
onSelected = { selectedRole.value = it }
)
}
}
@Composable
fun ProgressIndicator() {
Box(

View File

@@ -0,0 +1,94 @@
package chat.simplex.app.views.chat.group
import SectionItemView
import SectionSpacer
import SectionView
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import chat.simplex.app.R
import chat.simplex.app.model.*
import chat.simplex.app.ui.theme.*
import chat.simplex.app.views.helpers.*
@Composable
fun GroupWelcomeView(m: ChatModel, groupInfo: GroupInfo, close: () -> Unit) {
var groupInfo by remember { mutableStateOf(groupInfo) }
val welcomeText = remember { mutableStateOf(groupInfo.groupProfile.description ?: "") }
fun save(afterSave: () -> Unit = {}) {
withApi {
var welcome: String? = welcomeText.value.trim('\n', ' ')
if (welcome?.length == 0) {
welcome = null
}
val groupProfileUpdated = groupInfo.groupProfile.copy(description = welcome)
val res = m.controller.apiUpdateGroup(groupInfo.groupId, groupProfileUpdated)
if (res != null) {
groupInfo = res
m.updateGroup(res)
welcomeText.value = welcome ?: ""
}
afterSave()
}
}
ModalView(
close = {
if (welcomeText.value == groupInfo.groupProfile.description || (welcomeText.value == "" && groupInfo.groupProfile.description == null)) close()
else showUnsavedChangesAlert({ save(close) }, close)
},
background = if (isInDarkTheme()) MaterialTheme.colors.background else SettingsBackgroundLight
) {
GroupWelcomeLayout(
welcomeText,
groupInfo,
save = ::save
)
}
}
@Composable
private fun GroupWelcomeLayout(
welcomeText: MutableState<String>,
groupInfo: GroupInfo,
save: () -> Unit,
) {
Column(
Modifier.fillMaxWidth().verticalScroll(rememberScrollState()),
) {
AppBarTitle(stringResource(R.string.group_welcome_title))
val welcomeText = remember { welcomeText }
TextEditor(Modifier.padding(horizontal = DEFAULT_PADDING).height(160.dp), text = welcomeText)
SectionSpacer()
SaveButton(
save = save,
disabled = welcomeText.value == groupInfo.groupProfile.description || (welcomeText.value == "" && groupInfo.groupProfile.description == null)
)
}
}
@Composable
private fun SaveButton(save: () -> Unit, disabled: Boolean) {
SectionView {
SectionItemView(save, disabled = disabled) {
Text(stringResource(R.string.save_and_update_group_profile), color = if (disabled) HighOrLowlight else MaterialTheme.colors.primary)
}
}
}
private fun showUnsavedChangesAlert(save: () -> Unit, revert: () -> Unit) {
AlertManager.shared.showAlertDialogStacked(
title = generalGetString(R.string.save_welcome_message_question),
confirmText = generalGetString(R.string.save_and_update_group_profile),
dismissText = generalGetString(R.string.exit_without_saving),
onConfirm = save,
onDismiss = revert,
)
}

View File

@@ -174,14 +174,14 @@ fun CIFileView(
class ChatItemProvider: PreviewParameterProvider<ChatItem> {
private val sentFile = ChatItem(
chatDir = CIDirection.DirectSnd(),
meta = CIMeta.getSample(1, Clock.System.now(), "", CIStatus.SndSent(), itemDeleted = false, itemEdited = true, editable = false),
meta = CIMeta.getSample(1, Clock.System.now(), "", CIStatus.SndSent(), itemEdited = true),
content = CIContent.SndMsgContent(msgContent = MsgContent.MCFile("")),
quotedItem = null,
file = CIFile.getSample(fileStatus = CIFileStatus.SndComplete)
)
private val fileChatItemWtFile = ChatItem(
chatDir = CIDirection.DirectRcv(),
meta = CIMeta.getSample(1, Clock.System.now(), "", CIStatus.RcvRead(), itemDeleted = false, itemEdited = false, editable = false),
meta = CIMeta.getSample(1, Clock.System.now(), "", CIStatus.RcvRead(), ),
content = CIContent.RcvMsgContent(msgContent = MsgContent.MCFile("")),
quotedItem = null,
file = null

View File

@@ -11,6 +11,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@@ -58,7 +59,7 @@ private fun CIMetaText(meta: CIMeta, chatTTL: Int?, color: Color) {
StatusIconText(Icons.Filled.Circle, Color.Transparent)
Spacer(Modifier.width(4.dp))
}
Text(meta.timestampText, color = color, fontSize = 13.sp)
Text(meta.timestampText, color = color, fontSize = 13.sp, maxLines = 1, overflow = TextOverflow.Ellipsis)
}
// the conditions in this function should match CIMetaText

View File

@@ -91,6 +91,14 @@ fun ChatItemView(
}
}
fun moderateMessageQuestionText(): String {
return if (fullDeleteAllowed) {
generalGetString(R.string.moderate_message_will_be_deleted_warning)
} else {
generalGetString(R.string.moderate_message_will_be_marked_warning)
}
}
@Composable
fun MsgContentItemDropdownMenu() {
DropdownMenu(
@@ -98,7 +106,7 @@ fun ChatItemView(
onDismissRequest = { showMenu.value = false },
Modifier.width(220.dp)
) {
if (!cItem.meta.itemDeleted && !live) {
if (cItem.meta.itemDeleted == null && !live) {
ItemAction(stringResource(R.string.reply_verb), Icons.Outlined.Reply, onClick = {
if (composeState.value.editing) {
composeState.value = ComposeState(contextItem = ComposeContextItem.QuotedItem(cItem), useLinkPreviews = useLinkPreviews)
@@ -140,7 +148,7 @@ fun ChatItemView(
showMenu.value = false
})
}
if (cItem.meta.itemDeleted && revealed.value) {
if (cItem.meta.itemDeleted != null && revealed.value) {
ItemAction(
stringResource(R.string.hide_verb),
Icons.Outlined.VisibilityOff,
@@ -153,6 +161,10 @@ fun ChatItemView(
if (!(live && cItem.meta.isLive)) {
DeleteItemAction(cItem, showMenu, questionText = deleteMessageQuestionText(), deleteMessage)
}
val groupInfo = cItem.memberToModerate(cInfo)?.first
if (groupInfo != null) {
ModerateItemAction(cItem, questionText = moderateMessageQuestionText(), showMenu, deleteMessage)
}
}
}
@@ -163,14 +175,16 @@ fun ChatItemView(
onDismissRequest = { showMenu.value = false },
Modifier.width(220.dp)
) {
ItemAction(
stringResource(R.string.reveal_verb),
Icons.Outlined.Visibility,
onClick = {
revealed.value = true
showMenu.value = false
}
)
if (!cItem.isDeletedContent) {
ItemAction(
stringResource(R.string.reveal_verb),
Icons.Outlined.Visibility,
onClick = {
revealed.value = true
showMenu.value = false
}
)
}
DeleteItemAction(cItem, showMenu, questionText = deleteMessageQuestionText(), deleteMessage)
}
}
@@ -178,10 +192,10 @@ fun ChatItemView(
@Composable
fun ContentItem() {
val mc = cItem.content.msgContent
if (cItem.meta.itemDeleted && !revealed.value) {
if (cItem.meta.itemDeleted != null && !revealed.value) {
MarkedDeletedItemView(cItem, cInfo.timedMessagesTTL, showMember = showMember)
MarkedDeletedItemDropdownMenu()
} else if (cItem.quotedItem == null && !cItem.meta.itemDeleted && !cItem.meta.isLive) {
} else if (cItem.quotedItem == null && cItem.meta.itemDeleted == null && !cItem.meta.isLive) {
if (mc is MsgContent.MCText && isShortEmoji(cItem.content.text)) {
EmojiItemView(cItem, cInfo.timedMessagesTTL)
MsgContentItemDropdownMenu()
@@ -238,6 +252,8 @@ fun ChatItemView(
is CIContent.SndGroupFeature -> CIChatFeatureView(cItem, c.groupFeature, c.preference.enable.iconColor)
is CIContent.RcvChatFeatureRejected -> CIChatFeatureView(cItem, c.feature, Color.Red)
is CIContent.RcvGroupFeatureRejected -> CIChatFeatureView(cItem, c.groupFeature, Color.Red)
is CIContent.SndModerated -> MarkedDeletedItemView(cItem, cInfo.timedMessagesTTL, showMember = showMember)
is CIContent.RcvModerated -> MarkedDeletedItemView(cItem, cInfo.timedMessagesTTL, showMember = showMember)
is CIContent.InvalidJSON -> CIInvalidJSONView(c.json)
}
}
@@ -262,6 +278,24 @@ fun DeleteItemAction(
)
}
@Composable
fun ModerateItemAction(
cItem: ChatItem,
questionText: String,
showMenu: MutableState<Boolean>,
deleteMessage: (Long, CIDeleteMode) -> Unit
) {
ItemAction(
stringResource(R.string.moderate_verb),
Icons.Outlined.Flag,
onClick = {
showMenu.value = false
moderateMessageAlertDialog(cItem, questionText, deleteMessage = deleteMessage)
},
color = Color.Red
)
}
@Composable
fun ItemAction(text: String, icon: ImageVector, onClick: () -> Unit, color: Color = MaterialTheme.colors.onBackground) {
DropdownMenuItem(onClick) {
@@ -306,6 +340,18 @@ fun deleteMessageAlertDialog(chatItem: ChatItem, questionText: String, deleteMes
)
}
fun moderateMessageAlertDialog(chatItem: ChatItem, questionText: String, deleteMessage: (Long, CIDeleteMode) -> Unit) {
AlertManager.shared.showAlertDialog(
title = generalGetString(R.string.delete_member_message__question),
text = questionText,
confirmText = generalGetString(R.string.delete_verb),
destructive = true,
onConfirm = {
deleteMessage(chatItem.id, CIDeleteMode.cidmBroadcast)
}
)
}
private fun showMsgDeliveryErrorAlert(description: String) {
AlertManager.shared.showAlertMsg(
title = generalGetString(R.string.message_delivery_error_title),

View File

@@ -1,8 +1,7 @@
package chat.simplex.app.views.chat.item
import android.content.res.Configuration
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.Composable
@@ -19,9 +18,10 @@ import chat.simplex.app.ui.theme.SimpleXTheme
@Composable
fun DeletedItemView(ci: ChatItem, timedMessagesTTL: Int?, showMember: Boolean = false) {
val sent = ci.chatDir.sent
Surface(
shape = RoundedCornerShape(18.dp),
color = ReceivedColorLight,
color = if (sent) SentColorLight else ReceivedColorLight,
) {
Row(
Modifier.padding(horizontal = 12.dp, vertical = 6.dp),

View File

@@ -7,6 +7,7 @@ import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Flag
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -20,6 +21,7 @@ import androidx.compose.ui.platform.UriHandler
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.*
import androidx.compose.ui.unit.*
import androidx.compose.ui.util.fastMap
@@ -28,6 +30,7 @@ import chat.simplex.app.model.*
import chat.simplex.app.ui.theme.*
import chat.simplex.app.views.helpers.*
import kotlinx.datetime.Clock
import kotlin.math.min
val SentColorLight = Color(0x1E45B8FF)
val ReceivedColorLight = Color(0x20B1B0B5)
@@ -74,10 +77,7 @@ fun FramedItemView(
Modifier
.background(if (sent) SentQuoteColorLight else ReceivedQuoteColorLight)
.fillMaxWidth()
.padding(start = 8.dp)
.padding(end = 12.dp)
.padding(top = 6.dp)
.padding(bottom = if (ci.quotedItem == null) 6.dp else 0.dp),
.padding(start = 8.dp, top = 6.dp, end = 12.dp, bottom = if (ci.quotedItem == null) 6.dp else 0.dp),
horizontalArrangement = Arrangement.spacedBy(4.dp),
) {
if (icon != null) {
@@ -95,6 +95,8 @@ fun FramedItemView(
}
},
style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp),
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
}
}
@@ -164,8 +166,12 @@ fun FramedItemView(
Box(contentAlignment = Alignment.BottomEnd) {
Column(Modifier.width(IntrinsicSize.Max)) {
PriorityLayout(Modifier, CHAT_IMAGE_LAYOUT_ID) {
if (ci.meta.itemDeleted) {
FramedItemHeader(stringResource(R.string.marked_deleted_description), true, Icons.Outlined.Delete)
if (ci.meta.itemDeleted != null) {
if (ci.meta.itemDeleted is CIDeleted.Moderated) {
FramedItemHeader(String.format(stringResource(R.string.moderated_item_description), ci.meta.itemDeleted.byGroupMember.chatViewName), true, Icons.Outlined.Flag)
} else {
FramedItemHeader(stringResource(R.string.marked_deleted_description), true, Icons.Outlined.Delete)
}
} else if (ci.meta.isLive) {
FramedItemHeader(stringResource(R.string.live), false)
}
@@ -241,6 +247,12 @@ fun CIMarkdownText(
}
const val CHAT_IMAGE_LAYOUT_ID = "chatImage"
/**
* Equal to [androidx.compose.ui.unit.Constraints.MaxFocusMask], which is 0x3FFFF - 1
* Other values make a crash `java.lang.IllegalArgumentException: Can't represent a width of 123456 and height of 9909 in Constraints`
* See [androidx.compose.ui.unit.Constraints.createConstraints]
* */
const val MAX_SAFE_WIDTH = 0x3FFFF - 1
@Composable
fun PriorityLayout(
@@ -248,6 +260,17 @@ fun PriorityLayout(
priorityLayoutId: String,
content: @Composable () -> Unit
) {
/**
* Limiting max value for height + width in order to not crash the app, see [androidx.compose.ui.unit.Constraints.createConstraints]
* */
fun maxSafeHeight(width: Int) = when { // width bits + height bits should be <= 31
width < 0x1FFF /*MaxNonFocusMask*/ -> 0x3FFFF - 1 /* MaxFocusMask */ // 13 bits width + 18 bits height
width < 0x7FFF /*MinNonFocusMask*/ -> 0xFFFF - 1 /* MinFocusMask */ // 15 bits width + 16 bits height
width < 0xFFFF /*MinFocusMask*/ -> 0x7FFF - 1 /* MinFocusMask */ // 16 bits width + 15 bits height
width < 0x3FFFF /*MaxFocusMask*/ -> 0x1FFF - 1 /* MaxNonFocusMask */ // 18 bits width + 13 bits height
else -> 0x1FFF // shouldn't happen since width is limited already
}
Layout(
content = content,
modifier = modifier
@@ -259,9 +282,11 @@ fun PriorityLayout(
if (it.layoutId == priorityLayoutId)
imagePlaceable!!
else
it.measure(constraints.copy(maxWidth = imagePlaceable?.width ?: constraints.maxWidth)) }
// Limit width for every other element to width of important element and height for a sum of all elements
layout(imagePlaceable?.measuredWidth ?: placeables.maxOf { it.width }, placeables.sumOf { it.height }) {
it.measure(constraints.copy(maxWidth = imagePlaceable?.width ?: min(MAX_SAFE_WIDTH, constraints.maxWidth))) }
// Limit width for every other element to width of important element and height for a sum of all elements.
val width = imagePlaceable?.measuredWidth ?: min(MAX_SAFE_WIDTH, placeables.maxOf { it.width })
val height = minOf(maxSafeHeight(width), placeables.sumOf { it.height })
layout(width, height) {
var y = 0
placeables.forEach {
it.place(0, y)

View File

@@ -10,10 +10,12 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.simplex.app.R
import chat.simplex.app.model.CIDeleted
import chat.simplex.app.model.ChatItem
import chat.simplex.app.ui.theme.HighOrLowlight
import chat.simplex.app.ui.theme.SimpleXTheme
@@ -29,19 +31,30 @@ fun MarkedDeletedItemView(ci: ChatItem, timedMessagesTTL: Int?, showMember: Bool
Modifier.padding(horizontal = 12.dp, vertical = 6.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
buildAnnotatedString {
// appendSender(this, if (showMember) ci.memberDisplayName else null, true) // TODO font size
withStyle(SpanStyle(fontSize = 12.sp, fontStyle = FontStyle.Italic, color = HighOrLowlight)) { append(generalGetString(R.string.marked_deleted_description)) }
},
style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp),
modifier = Modifier.padding(end = 8.dp)
)
if (ci.meta.itemDeleted is CIDeleted.Moderated) {
MarkedDeletedText(String.format(generalGetString(R.string.moderated_item_description), ci.meta.itemDeleted.byGroupMember.chatViewName))
} else {
MarkedDeletedText(generalGetString(R.string.marked_deleted_description))
}
CIMetaView(ci, timedMessagesTTL)
}
}
}
@Composable
private fun MarkedDeletedText(text: String) {
Text(
buildAnnotatedString {
// appendSender(this, if (showMember) ci.memberDisplayName else null, true) // TODO font size
withStyle(SpanStyle(fontSize = 12.sp, fontStyle = FontStyle.Italic, color = HighOrLowlight)) { append(text) }
},
style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp),
modifier = Modifier.padding(end = 8.dp),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
@Preview(showBackground = true)
@Preview(
uiMode = Configuration.UI_MODE_NIGHT_YES,
@@ -51,7 +64,7 @@ fun MarkedDeletedItemView(ci: ChatItem, timedMessagesTTL: Int?, showMember: Bool
fun PreviewMarkedDeletedItemView() {
SimpleXTheme {
DeletedItemView(
ChatItem.getSampleData(itemDeleted = true),
ChatItem.getSampleData(itemDeleted = CIDeleted.Deleted()),
null
)
}

View File

@@ -19,6 +19,7 @@ import androidx.compose.ui.unit.sp
import chat.simplex.app.R
import chat.simplex.app.ui.theme.SimpleXTheme
import chat.simplex.app.views.helpers.annotatedStringResource
import chat.simplex.app.views.helpers.openUriCatching
import chat.simplex.app.views.usersettings.MarkdownHelpView
import chat.simplex.app.views.usersettings.simplexTeamUri
@@ -36,7 +37,7 @@ fun ChatHelpView(addContact: (() -> Unit)? = null) {
Text(
annotatedStringResource(R.string.you_can_connect_to_simplex_chat_founder),
modifier = Modifier.clickable(onClick = {
uriHandler.openUri(simplexTeamUri)
uriHandler.openUriCatching(simplexTeamUri)
}),
lineHeight = 22.sp
)

View File

@@ -132,7 +132,7 @@ private fun OnboardingButtons(openNewChatSheet: () -> Unit) {
Column(Modifier.fillMaxSize().padding(DEFAULT_PADDING), horizontalAlignment = Alignment.End, verticalArrangement = Arrangement.Bottom) {
val uriHandler = LocalUriHandler.current
ConnectButton(generalGetString(R.string.chat_with_developers)) {
uriHandler.openUri(simplexTeamUri)
uriHandler.openUriCatching(simplexTeamUri)
}
Spacer(Modifier.height(DEFAULT_PADDING))
ConnectButton(generalGetString(R.string.tap_to_start_new_chat), openNewChatSheet)

View File

@@ -145,12 +145,12 @@ fun ChatPreviewView(
if (ci != null) {
val (text: CharSequence, inlineTextContent) = when {
chatModelDraftChatId == chat.id && chatModelDraft != null -> remember(chatModelDraft) { messageDraft(chatModelDraft) }
!ci.meta.itemDeleted -> ci.text to null
ci.meta.itemDeleted == null -> ci.text to null
else -> generalGetString(R.string.marked_deleted_description) to null
}
val formattedText = when {
chatModelDraftChatId == chat.id && chatModelDraft != null -> null
!ci.meta.itemDeleted -> ci.formattedText
ci.meta.itemDeleted == null -> ci.formattedText
else -> null
}
MarkdownText(

View File

@@ -97,8 +97,11 @@ fun UserPicker(chatModel: ChatModel, userPickerState: MutableStateFlow<AnimatedV
.background(MaterialTheme.colors.background, MaterialTheme.shapes.medium)
) {
Column(Modifier.weight(1f).verticalScroll(rememberScrollState())) {
users.forEachIndexed { i, u ->
UserProfilePickerItem(u.user, u.unreadCount) {
users.forEach { u ->
UserProfilePickerItem(u.user, u.unreadCount, openSettings = {
openSettings()
userPickerState.value = AnimatedViewState.GONE
}) {
userPickerState.value = AnimatedViewState.HIDING
if (!u.user.activeUser) {
chatModel.chats.clear()
@@ -113,12 +116,10 @@ fun UserPicker(chatModel: ChatModel, userPickerState: MutableStateFlow<AnimatedV
}
}
}
if (i != users.lastIndex) {
Divider(Modifier.requiredHeight(1.dp))
}
Divider(Modifier.requiredHeight(1.dp))
if (u.user.activeUser) Divider(Modifier.requiredHeight(0.5.dp))
}
}
Divider()
SettingsPickerItem {
openSettings()
userPickerState.value = AnimatedViewState.GONE
@@ -128,13 +129,13 @@ fun UserPicker(chatModel: ChatModel, userPickerState: MutableStateFlow<AnimatedV
}
@Composable
fun UserProfilePickerItem(u: User, unreadCount: Int = 0, onLongClick: () -> Unit = {}, onClick: () -> Unit) {
fun UserProfilePickerItem(u: User, unreadCount: Int = 0, onLongClick: () -> Unit = {}, openSettings: () -> Unit = {}, onClick: () -> Unit) {
Row(
Modifier
.fillMaxWidth()
.sizeIn(minHeight = 46.dp)
.combinedClickable(
onClick = if (!u.activeUser) onClick else { {} },
onClick = if (u.activeUser) openSettings else onClick,
onLongClick = onLongClick,
interactionSource = remember { MutableInteractionSource() },
indication = if (!u.activeUser) LocalIndication.current else null

View File

@@ -154,7 +154,7 @@ fun DatabaseLayout(
val operationsDisabled = !stopped || progressIndicator
Column(
Modifier.fillMaxWidth().verticalScroll(rememberScrollState()).padding(bottom = 48.dp),
Modifier.fillMaxWidth().verticalScroll(rememberScrollState()).padding(bottom = DEFAULT_BOTTOM_PADDING),
horizontalAlignment = Alignment.Start,
) {
AppBarTitle(stringResource(R.string.your_chat_database))
@@ -190,7 +190,7 @@ fun DatabaseLayout(
disabled = operationsDisabled
)
SectionDivider()
SettingsPreferenceItem(Icons.Outlined.Backup, stringResource(R.string.full_backup), privacyFullBackup)
AppDataBackupPreference(privacyFullBackup, initialRandomDBPassphrase)
SectionDivider()
SettingsActionItem(
Icons.Outlined.IosShare,
@@ -270,6 +270,36 @@ fun DatabaseLayout(
}
}
@Composable
private fun AppDataBackupPreference(privacyFullBackup: SharedPreference<Boolean>, initialRandomDBPassphrase: SharedPreference<Boolean>) {
SectionItemView {
Row(verticalAlignment = Alignment.CenterVertically) {
Icon(Icons.Outlined.Backup, stringResource(R.string.full_backup), tint = HighOrLowlight)
Spacer(Modifier.padding(horizontal = 4.dp))
val prefState = remember { mutableStateOf(privacyFullBackup.get()) }
Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
Text(stringResource(R.string.full_backup), Modifier.padding(end = 24.dp))
Spacer(Modifier.fillMaxWidth().weight(1f))
Switch(
checked = prefState.value,
onCheckedChange = {
if (initialRandomDBPassphrase.get()) {
exportProhibitedAlert()
} else {
privacyFullBackup.set(it)
prefState.value = it
}
},
colors = SwitchDefaults.colors(
checkedThumbColor = MaterialTheme.colors.primary,
uncheckedThumbColor = HighOrLowlight
)
)
}
}
}
}
private fun setChatItemTTLAlert(
m: ChatModel, selectedChatItemTTL: MutableState<ChatItemTTL>,
progressIndicator: MutableState<Boolean>,

View File

@@ -6,6 +6,7 @@ import android.content.*
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import android.content.pm.PackageManager
import android.graphics.*
import android.graphics.ImageDecoder.DecodeException
import android.net.Uri
import android.provider.MediaStore
import android.util.Base64
@@ -205,21 +206,22 @@ fun GetImageBottomSheet(
val processPickedImage = { uri: Uri? ->
if (uri != null) {
val source = ImageDecoder.createSource(context.contentResolver, uri)
val bitmap = ImageDecoder.decodeBitmap(source)
imageBitmap.value = uri
onImageChange(bitmap)
}
}
val galleryLauncher = rememberLauncherForActivityResult(contract = PickFromGallery()) { processPickedImage(it) }
val galleryLauncherFallback = rememberGetContentLauncher { processPickedImage(it) }
val cameraLauncher = rememberCameraLauncher { uri: Uri? ->
if (uri != null) {
imageBitmap.value = uri
val source = ImageDecoder.createSource(SimplexApp.context.contentResolver, uri)
val bitmap = ImageDecoder.decodeBitmap(source)
onImageChange(bitmap)
try {
val bitmap = ImageDecoder.decodeBitmap(source)
imageBitmap.value = uri
onImageChange(bitmap)
} catch (e: DecodeException) {
Log.e(TAG, "Unable to decode the image: ${e.stackTraceToString()}")
AlertManager.shared.showAlertMsg(
title = generalGetString(R.string.image_decoding_exception_title),
text = generalGetString(R.string.image_decoding_exception_desc)
)
}
}
}
val galleryLauncher = rememberLauncherForActivityResult(contract = PickFromGallery(), processPickedImage)
val galleryLauncherFallback = rememberGetContentLauncher(processPickedImage)
val cameraLauncher = rememberCameraLauncher(processPickedImage)
val permissionLauncher = rememberPermissionLauncher { isGranted: Boolean ->
if (isGranted) {
cameraLauncher.launchWithFallback()

View File

@@ -85,13 +85,14 @@ fun SectionItemView(
click: (() -> Unit)? = null,
minHeight: Dp = 46.dp,
disabled: Boolean = false,
padding: PaddingValues = PaddingValues(horizontal = DEFAULT_PADDING),
content: (@Composable RowScope.() -> Unit)
) {
val modifier = Modifier
.fillMaxWidth()
.sizeIn(minHeight = minHeight)
Row(
if (click == null || disabled) modifier.padding(horizontal = DEFAULT_PADDING) else modifier.clickable(onClick = click).padding(horizontal = DEFAULT_PADDING),
if (click == null || disabled) modifier.padding(padding) else modifier.clickable(onClick = click).padding(padding),
verticalAlignment = Alignment.CenterVertically
) {
content()

View File

@@ -1,11 +1,16 @@
package chat.simplex.app.views.helpers
import android.app.Activity
import android.app.Application
import android.app.LocaleManager
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.res.Configuration
import android.content.res.Resources
import android.graphics.*
import android.graphics.Typeface
import android.net.Uri
import android.os.FileUtils
import android.os.*
import android.provider.OpenableColumns
import android.text.Spanned
import android.text.SpannedString
@@ -28,8 +33,7 @@ import androidx.compose.ui.unit.*
import androidx.core.content.FileProvider
import androidx.core.text.HtmlCompat
import chat.simplex.app.*
import chat.simplex.app.model.CIFile
import chat.simplex.app.model.json
import chat.simplex.app.model.*
import kotlinx.coroutines.*
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
@@ -374,6 +378,24 @@ fun saveAnimImage(context: Context, uri: Uri): String? {
}
}
fun saveTempImageUncompressed(image: Bitmap, asPng: Boolean): File? {
return try {
val ext = if (asPng) "png" else "jpg"
val tmpDir = SimplexApp.context.getDir("temp", Application.MODE_PRIVATE)
return File(tmpDir.absolutePath + File.separator + generateNewFileName(SimplexApp.context, "IMG", ext)).apply {
outputStream().use { out ->
image.compress(if (asPng) Bitmap.CompressFormat.PNG else Bitmap.CompressFormat.JPEG, 85, out)
out.flush()
}
deleteOnExit()
SimplexApp.context.chatModel.filesToDelete.add(this)
}
} catch (e: Exception) {
Log.e(TAG, "Util.kt saveTempImageUncompressed error: ${e.message}")
null
}
}
fun saveFileFromUri(context: Context, uri: Uri): String? {
return try {
val inputStream = context.contentResolver.openInputStream(uri)
@@ -482,3 +504,42 @@ inline fun <reified T> serializableSaver(): Saver<T, *> = Saver(
save = { json.encodeToString(it) },
restore = { json.decodeFromString(it) }
)
fun saveAppLocale(pref: SharedPreference<String?>, activity: Activity, languageCode: String? = null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val localeManager = SimplexApp.context.getSystemService(LocaleManager::class.java)
localeManager.applicationLocales = LocaleList(Locale.forLanguageTag(languageCode ?: return))
} else {
pref.set(languageCode)
if (languageCode == null) {
activity.applyLocale(SimplexApp.context.defaultLocale)
}
activity.recreate()
}
}
fun Activity.applyAppLocale(pref: SharedPreference<String?>) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
val lang = pref.get()
if (lang == null || lang == Locale.getDefault().language) return
applyLocale(Locale.forLanguageTag(lang))
}
}
private fun Activity.applyLocale(locale: Locale) {
Locale.setDefault(locale)
val appConf = Configuration(SimplexApp.context.resources.configuration).apply { setLocale(locale) }
val activityConf = Configuration(resources.configuration).apply { setLocale(locale) }
@Suppress("DEPRECATION")
SimplexApp.context.resources.updateConfiguration(appConf, resources.displayMetrics)
@Suppress("DEPRECATION")
resources.updateConfiguration(activityConf, resources.displayMetrics)
}
fun UriHandler.openUriCatching(uri: String) {
try {
openUri(uri)
} catch (e: ActivityNotFoundException) {
Log.e(TAG, e.stackTraceToString())
}
}

View File

@@ -1,32 +1,100 @@
package chat.simplex.app.views.newchat
import android.graphics.Bitmap
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.*
import androidx.compose.ui.platform.*
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import boofcv.alg.fiducial.qrcode.QrCodeEncoder
import boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage
import androidx.core.graphics.*
import androidx.core.graphics.drawable.toBitmap
import boofcv.alg.drawing.FiducialImageEngine
import boofcv.alg.fiducial.qrcode.*
import boofcv.android.ConvertBitmap
import chat.simplex.app.R
import chat.simplex.app.SimplexApp
import chat.simplex.app.ui.theme.SimpleXTheme
import chat.simplex.app.views.helpers.*
import kotlinx.coroutines.launch
@Composable
fun QRCode(connReq: String, modifier: Modifier = Modifier) {
Image(
bitmap = qrCodeBitmap(connReq, 1024).asImageBitmap(),
contentDescription = stringResource(R.string.image_descr_qr_code),
modifier = modifier
)
fun QRCode(
connReq: String,
modifier: Modifier = Modifier,
tintColor: Color = Color(0xff062d56),
withLogo: Boolean = true
) {
val context = LocalContext.current
val scope = rememberCoroutineScope()
BoxWithConstraints {
val maxWidthInPx = with(LocalDensity.current) { maxWidth.roundToPx() }
val qr = remember(maxWidthInPx, connReq, tintColor, withLogo) {
qrCodeBitmap(connReq, maxWidthInPx).replaceColor(Color.Black.toArgb(), tintColor.toArgb())
.let { if (withLogo) it.addLogo() else it }
.asImageBitmap()
}
Image(
bitmap = qr,
contentDescription = stringResource(R.string.image_descr_qr_code),
modifier
.clickable {
scope.launch {
val image = qrCodeBitmap(connReq, 1024).replaceColor(Color.Black.toArgb(), tintColor.toArgb())
.let { if (withLogo) it.addLogo() else it }
val file = saveTempImageUncompressed(image, false)
if (file != null) {
shareFile(context, "", file.absolutePath)
}
}
}
)
}
}
fun qrCodeBitmap(content: String, size: Int): Bitmap {
val qrCode = QrCodeEncoder().addAutomatic(content).fixate()
val renderer = QrCodeGeneratorImage(5)
fun qrCodeBitmap(content: String, size: Int = 1024): Bitmap {
val qrCode = QrCodeEncoder().addAutomatic(content).setError(QrCode.ErrorLevel.L).fixate()
/** See [QrCodeGeneratorImage.initialize] and [FiducialImageEngine.configure] for size calculation */
val numModules = QrCode.totalModules(qrCode.version)
val borderModule = 1
// val calculatedFinalWidth = (pixelsPerModule * numModules) + 2 * (borderModule * pixelsPerModule)
// size = (x * numModules) + 2 * (borderModule * x)
// size / x = numModules + 2 * borderModule
// x = size / (numModules + 2 * borderModule)
val pixelsPerModule = size / (numModules + 2 * borderModule)
// + 1 to make it with better quality
val renderer = QrCodeGeneratorImage(pixelsPerModule + 1)
renderer.borderModule = borderModule
renderer.render(qrCode)
return ConvertBitmap.grayToBitmap(renderer.gray, Bitmap.Config.RGB_565)
return ConvertBitmap.grayToBitmap(renderer.gray, Bitmap.Config.RGB_565).scale(size, size)
}
fun Bitmap.replaceColor(from: Int, to: Int): Bitmap {
val pixels = IntArray(width * height)
getPixels(pixels, 0, width, 0, 0, width, height)
var i = 0
while (i < pixels.size) {
if (pixels[i] == from) {
pixels[i] = to
}
i++
}
setPixels(pixels, 0, width, 0, 0, width, height)
return this
}
fun Bitmap.addLogo(): Bitmap = applyCanvas {
val radius = (width * 0.16f) / 2
val paint = android.graphics.Paint()
paint.color = android.graphics.Color.WHITE
drawCircle(width / 2f, height / 2f, radius, paint)
val logo = SimplexApp.context.resources.getDrawable(R.mipmap.icon_foreground, null).toBitmap()
val logoSize = (width * 0.24).toInt()
translate((width - logoSize) / 2f, (height - logoSize) / 2f)
drawBitmap(logo, null, android.graphics.Rect(0, 0, logoSize, logoSize), null)
}
@Preview

View File

@@ -36,7 +36,7 @@ fun HowItWorks(user: User?, onboardingStage: MutableState<OnboardingStage?>? = n
val uriHandler = LocalUriHandler.current
Text(
annotatedStringResource(R.string.read_more_in_github_with_link),
modifier = Modifier.padding(bottom = 12.dp).clickable { uriHandler.openUri("https://github.com/simplex-chat/simplex-chat#readme") },
modifier = Modifier.padding(bottom = 12.dp).clickable { uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat#readme") },
lineHeight = 22.sp
)
} else {

View File

@@ -18,8 +18,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.unit.*
import chat.simplex.app.R
import chat.simplex.app.model.ChatModel
import chat.simplex.app.model.User
@@ -47,15 +46,15 @@ fun SimpleXInfoLayout(
.verticalScroll(rememberScrollState())
.padding(horizontal = DEFAULT_PADDING),
) {
Box(Modifier.fillMaxWidth().padding(top = 24.dp, bottom = 8.dp), contentAlignment = Alignment.Center) {
Box(Modifier.fillMaxWidth().padding(top = 8.dp), contentAlignment = Alignment.Center) {
SimpleXLogo()
}
Text(stringResource(R.string.next_generation_of_private_messaging), style = MaterialTheme.typography.h2, modifier = Modifier.padding(bottom = 24.dp), textAlign = TextAlign.Center)
Text(stringResource(R.string.next_generation_of_private_messaging), style = MaterialTheme.typography.h2, modifier = Modifier.padding(bottom = 36.dp).padding(horizontal = 48.dp), textAlign = TextAlign.Center)
InfoRow(painterResource(R.drawable.privacy), R.string.privacy_redefined, R.string.first_platform_without_user_ids)
InfoRow(painterResource(R.drawable.privacy), R.string.privacy_redefined, R.string.first_platform_without_user_ids, width = 80.dp)
InfoRow(painterResource(R.drawable.shield), R.string.immune_to_spam_and_abuse, R.string.people_can_connect_only_via_links_you_share)
InfoRow(painterResource(R.drawable.decentralized), R.string.decentralized, R.string.opensource_protocol_and_code_anybody_can_run_servers)
InfoRow(painterResource(if (isInDarkTheme()) R.drawable.decentralized_light else R.drawable.decentralized), R.string.decentralized, R.string.opensource_protocol_and_code_anybody_can_run_servers)
Spacer(Modifier.fillMaxHeight().weight(1f))
@@ -89,14 +88,14 @@ fun SimpleXLogo() {
}
@Composable
private fun InfoRow(icon: Painter, @StringRes titleId: Int, @StringRes textId: Int) {
Row(Modifier.padding(bottom = 20.dp), verticalAlignment = Alignment.Top) {
private fun InfoRow(icon: Painter, @StringRes titleId: Int, @StringRes textId: Int, width: Dp = 76.dp) {
Row(Modifier.padding(bottom = 27.dp), verticalAlignment = Alignment.Top) {
Image(icon, contentDescription = null, modifier = Modifier
.width(60.dp)
.padding(top = 8.dp, end = 16.dp))
.width(width)
.padding(top = 8.dp, start = 8.dp, end = 24.dp))
Column(horizontalAlignment = Alignment.Start) {
Text(stringResource(titleId), fontWeight = FontWeight.Bold, style = MaterialTheme.typography.h3, lineHeight = 24.sp)
Text(stringResource(textId), lineHeight = 24.sp, style = MaterialTheme.typography.caption)
Text(stringResource(textId), lineHeight = 24.sp, style = MaterialTheme.typography.body1)
}
}
}

View File

@@ -35,7 +35,7 @@ fun WhatsNewView(viaSettings: Boolean = false, close: () -> Unit) {
Icon(
Icons.Outlined.OpenInNew, stringResource(titleId), tint = MaterialTheme.colors.primary,
modifier = Modifier
.clickable { uriHandler.openUri(link) }
.clickable { uriHandler.openUriCatching(link) }
)
}
@@ -226,10 +226,89 @@ private val versionDescriptions: List<VersionDescription> = listOf(
icon = Icons.Outlined.VerifiedUser,
titleId = R.string.v4_4_verify_connection_security,
descrId = R.string.v4_4_verify_connection_security_desc
),
FeatureDescription(
icon = Icons.Outlined.Translate,
titleId = R.string.v4_4_french_interface,
descrId = R.string.v4_4_french_interface_descr
)
)
)
),
VersionDescription(
version = "v4.5",
features = listOf(
FeatureDescription(
icon = Icons.Outlined.ManageAccounts,
titleId = R.string.v4_5_multiple_chat_profiles,
descrId = R.string.v4_5_multiple_chat_profiles_descr
),
FeatureDescription(
icon = Icons.Outlined.EditNote,
titleId = R.string.v4_5_message_draft,
descrId = R.string.v4_5_message_draft_descr
),
FeatureDescription(
icon = Icons.Outlined.SafetyDivider,
titleId = R.string.v4_5_transport_isolation,
descrId = R.string.v4_5_transport_isolation_descr,
link = "https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation"
),
FeatureDescription(
icon = Icons.Outlined.Task,
titleId = R.string.v4_5_private_filenames,
descrId = R.string.v4_5_private_filenames_descr
),
FeatureDescription(
icon = Icons.Outlined.Battery2Bar,
titleId = R.string.v4_5_reduced_battery_usage,
descrId = R.string.v4_5_reduced_battery_usage_descr
),
FeatureDescription(
icon = Icons.Outlined.Translate,
titleId = R.string.v4_5_italian_interface,
descrId = R.string.v4_5_italian_interface_descr,
link = "https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps"
)
)
),
VersionDescription(
version = "v4.6",
features = listOf(
FeatureDescription(
icon = Icons.Outlined.Lock,
titleId = R.string.v4_6_hidden_chat_profiles,
descrId = R.string.v4_6_hidden_chat_profiles_descr
),
FeatureDescription(
icon = Icons.Outlined.Flag,
titleId = R.string.v4_6_group_moderation,
descrId = R.string.v4_6_group_moderation_descr
),
FeatureDescription(
icon = Icons.Outlined.MapsUgc,
titleId = R.string.v4_6_group_welcome_message,
descrId = R.string.v4_6_group_welcome_message_descr
),
FeatureDescription(
icon = Icons.Outlined.Call,
titleId = R.string.v4_6_audio_video_calls,
descrId = R.string.v4_6_audio_video_calls_descr
),
FeatureDescription(
icon = Icons.Outlined.Battery3Bar,
titleId = R.string.v4_6_reduced_battery_usage,
descrId = R.string.v4_6_reduced_battery_usage_descr
),
FeatureDescription(
icon = Icons.Outlined.Translate,
titleId = R.string.v4_6_chinese_spanish_interface,
descrId = R.string.v4_6_chinese_spanish_interface_descr,
link = "https://github.com/simplex-chat/simplex-chat/tree/stable#translate-the-apps"
)
)
),
)
private val lastVersion = versionDescriptions.last().version
fun setLastVersionDefault(m: ChatModel) {

View File

@@ -2,13 +2,20 @@ package chat.simplex.app.views.usersettings
import SectionCustomFooter
import SectionDivider
import SectionItemView
import SectionItemViewSpaceBetween
import SectionItemWithValue
import SectionSpacer
import SectionView
import android.app.Activity
import android.content.ComponentName
import android.content.Intent
import android.content.pm.PackageManager
import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED
import android.net.Uri
import android.os.Build
import android.provider.Settings
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyRow
@@ -17,6 +24,7 @@ import androidx.compose.material.MaterialTheme.colors
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Circle
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
@@ -30,9 +38,13 @@ import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap
import chat.simplex.app.*
import chat.simplex.app.R
import chat.simplex.app.model.ChatModel
import chat.simplex.app.model.SharedPreference
import chat.simplex.app.ui.theme.*
import chat.simplex.app.views.helpers.*
import com.godaddy.android.colorpicker.*
import kotlinx.coroutines.delay
import java.util.*
enum class AppIcon(val resId: Int) {
DEFAULT(R.mipmap.icon),
@@ -40,7 +52,7 @@ enum class AppIcon(val resId: Int) {
}
@Composable
fun AppearanceView() {
fun AppearanceView(m: ChatModel) {
val appIcon = remember { mutableStateOf(findEnabledIcon()) }
fun setAppIcon(newIcon: AppIcon) {
@@ -62,6 +74,7 @@ fun AppearanceView() {
AppearanceLayout(
appIcon,
m.controller.appPrefs.appLanguage,
changeIcon = ::setAppIcon,
editPrimaryColor = { primary ->
ModalManager.shared.showModalCloseable { close ->
@@ -73,6 +86,7 @@ fun AppearanceView() {
@Composable fun AppearanceLayout(
icon: MutableState<AppIcon>,
languagePref: SharedPreference<String?>,
changeIcon: (AppIcon) -> Unit,
editPrimaryColor: (Color) -> Unit,
) {
@@ -81,6 +95,37 @@ fun AppearanceView() {
horizontalAlignment = Alignment.Start,
) {
AppBarTitle(stringResource(R.string.appearance_settings))
SectionView(stringResource(R.string.settings_section_title_language), padding = PaddingValues()) {
val context = LocalContext.current
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
SectionItemWithValue(
generalGetString(R.string.settings_section_title_language).lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString() },
remember { mutableStateOf("system") },
listOf(ValueTitleDesc("system", generalGetString(R.string.change_verb), "")),
onSelected = { openSystemLangPicker(context as? Activity ?: return@SectionItemWithValue) }
)
} else {
val state = rememberSaveable { mutableStateOf(languagePref.get() ?: "system") }
SectionItemView {
LangSelector(state) {
state.value = it
withApi {
delay(200)
val activity = context as? Activity
if (activity != null) {
if (it == "system") {
saveAppLocale(languagePref, activity)
} else {
saveAppLocale(languagePref, activity, it)
}
}
}
}
}
}
}
SectionSpacer()
SectionView(stringResource(R.string.settings_section_title_icon), padding = PaddingValues(horizontal = DEFAULT_PADDING_HALF)) {
LazyRow {
items(AppIcon.values().size, { index -> AppIcon.values()[index] }) { index ->
@@ -179,6 +224,32 @@ fun ColorPicker(initialColor: Color, onColorChanged: (Color) -> Unit) {
)
}
@Composable
private fun LangSelector(state: State<String>, onSelected: (String) -> Unit) {
// Should be the same as in app/build.gradle's `android.defaultConfig.resConfigs`
val supportedLanguages = mapOf(
"system" to generalGetString(R.string.language_system),
"en" to "English",
"cs" to "Čeština",
"de" to "Deutsch",
"es" to "Español",
"fr" to "Français",
"it" to "Italiano",
"nl" to "Nederlands",
"ru" to "Русский",
"zh-CN" to "简体中文"
)
val values by remember { mutableStateOf(supportedLanguages.map { it.key to it.value }) }
ExposedDropDownSettingRow(
generalGetString(R.string.settings_section_title_language).lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString() },
values,
state,
icon = null,
enabled = remember { mutableStateOf(true) },
onSelected = onSelected
)
}
@Composable
private fun ThemeSelector(state: State<DefaultTheme>, onSelected: (DefaultTheme) -> Unit) {
val darkTheme = isSystemInDarkTheme()
@@ -193,6 +264,9 @@ private fun ThemeSelector(state: State<DefaultTheme>, onSelected: (DefaultTheme)
)
}
private fun openSystemLangPicker(activity: Activity) {
activity.startActivity(Intent(Settings.ACTION_APP_LOCALE_SETTINGS, Uri.parse("package:" + SimplexApp.context.packageName)))
}
private fun findEnabledIcon(): AppIcon = AppIcon.values().first { icon ->
SimplexApp.context.packageManager.getComponentEnabledSetting(
@@ -206,6 +280,7 @@ fun PreviewAppearanceSettings() {
SimpleXTheme {
AppearanceLayout(
icon = remember { mutableStateOf(AppIcon.DARK_BLUE) },
languagePref = SharedPreference({ null }, {}),
changeIcon = {},
editPrimaryColor = {},
)

View File

@@ -2,6 +2,7 @@ package chat.simplex.app.views.usersettings
import SectionDivider
import SectionItemView
import SectionTextFooter
import SectionView
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@@ -9,6 +10,7 @@ import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@@ -42,16 +44,23 @@ fun CallSettingsLayout(
AppBarTitle(stringResource(R.string.your_calls))
val lockCallState = remember { mutableStateOf(callOnLockScreen.get()) }
SectionView(stringResource(R.string.settings_section_title_settings)) {
SectionItemView() {
SharedPreferenceToggle(stringResource(R.string.connect_calls_via_relay), webrtcPolicyRelay)
}
SectionItemView(editIceServers) { Text(stringResource(R.string.webrtc_ice_servers)) }
SectionDivider()
val enabled = remember { mutableStateOf(true) }
SectionItemView { LockscreenOpts(lockCallState, enabled, onSelected = { callOnLockScreen.set(it); lockCallState.value = it }) }
SectionDivider()
SectionItemView(editIceServers) { Text(stringResource(R.string.webrtc_ice_servers)) }
SectionItemView() {
SharedPreferenceToggle(stringResource(R.string.always_use_relay), webrtcPolicyRelay)
}
}
SectionTextFooter(
if (remember { webrtcPolicyRelay.state }.value) {
generalGetString(R.string.relay_server_protects_ip)
} else {
generalGetString(R.string.relay_server_if_necessary)
}
)
}
}
@@ -113,7 +122,7 @@ fun SharedPreferenceToggleWithIcon(
) {
val prefState = preferenceState ?: remember { mutableStateOf(preference.get()) }
Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
Text(text, Modifier.padding(end = 4.dp))
Text(text, Modifier.padding(end = 4.dp), color = if (stopped) HighOrLowlight else Color.Unspecified)
Icon(
icon,
null,

View File

@@ -25,6 +25,7 @@ fun NetworkAndServersView(
chatModel: ChatModel,
showModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit),
showSettingsModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit),
showCustomModal: (@Composable (ChatModel, () -> Unit) -> Unit) -> (() -> Unit),
) {
// It's not a state, just a one-time value. Shouldn't be used in any state-related situations
val netCfg = remember { chatModel.controller.getNetCfg() }
@@ -44,6 +45,7 @@ fun NetworkAndServersView(
sessionMode = sessionMode,
showModal = showModal,
showSettingsModal = showSettingsModal,
showCustomModal = showCustomModal,
toggleSocksProxy = { enable ->
if (enable) {
AlertManager.shared.showAlertMsg(
@@ -138,6 +140,7 @@ fun NetworkAndServersView(
sessionMode: MutableState<TransportSessionMode>,
showModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit),
showSettingsModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit),
showCustomModal: (@Composable (ChatModel, () -> Unit) -> Unit) -> (() -> Unit),
toggleSocksProxy: (Boolean) -> Unit,
useOnion: (OnionHosts) -> Unit,
updateSessionMode: (TransportSessionMode) -> Unit,
@@ -149,7 +152,7 @@ fun NetworkAndServersView(
) {
AppBarTitle(stringResource(R.string.network_and_servers))
SectionView(generalGetString(R.string.settings_section_title_messages)) {
SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.smp_servers), showSettingsModal { SMPServersView(it) })
SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.smp_servers), showCustomModal { m, close -> SMPServersView(m, close) })
SectionDivider()
SectionItemView {
UseSocksProxySwitch(networkUseSocksProxy, toggleSocksProxy)
@@ -297,6 +300,7 @@ fun PreviewNetworkAndServersLayout() {
networkUseSocksProxy = remember { mutableStateOf(true) },
showModal = { {} },
showSettingsModal = { {} },
showCustomModal = { {} },
toggleSocksProxy = {},
onionHosts = remember { mutableStateOf(OnionHosts.PREFER) },
sessionMode = remember { mutableStateOf(TransportSessionMode.User) },

View File

@@ -13,7 +13,6 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource
import androidx.fragment.app.FragmentActivity
import chat.simplex.app.R
@@ -51,8 +50,6 @@ fun PrivacySettingsView(
SectionView(stringResource(R.string.settings_section_title_chats)) {
SettingsPreferenceItem(Icons.Outlined.Image, stringResource(R.string.auto_accept_images), chatModel.controller.appPrefs.privacyAcceptImages)
SectionDivider()
SettingsPreferenceItem(Icons.Outlined.ImageAspectRatio, stringResource(R.string.transfer_images_faster), chatModel.controller.appPrefs.privacyTransferImagesInline)
SectionDivider()
SettingsPreferenceItem(Icons.Outlined.TravelExplore, stringResource(R.string.send_link_previews), chatModel.controller.appPrefs.privacyLinkPreviews)
SectionDivider()
SectionItemView { SimpleXLinkOptions(chatModel.simplexLinkMode, onSelected = {

View File

@@ -198,7 +198,7 @@ private fun howToButton() {
val uriHandler = LocalUriHandler.current
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.clickable { uriHandler.openUri("https://github.com/simplex-chat/simplex-chat/blob/stable/docs/WEBRTC.md#configure-mobile-apps") }
modifier = Modifier.clickable { uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat/blob/stable/docs/WEBRTC.md#configure-mobile-apps") }
) {
Text(stringResource(R.string.how_to), color = MaterialTheme.colors.primary)
Icon(

View File

@@ -27,7 +27,7 @@ import chat.simplex.app.views.helpers.*
import kotlinx.coroutines.launch
@Composable
fun SMPServersView(m: ChatModel) {
fun SMPServersView(m: ChatModel, close: () -> Unit) {
var servers by remember {
mutableStateOf(m.userSMPServersUnsaved.value ?: m.userSMPServers.value ?: emptyList())
}
@@ -72,83 +72,90 @@ fun SMPServersView(m: ChatModel) {
}
}
val scope = rememberCoroutineScope()
SMPServersLayout(
testing = testing.value,
servers = servers,
serversUnchanged = serversUnchanged.value,
saveDisabled = saveDisabled.value,
allServersDisabled = allServersDisabled.value,
m.currentUser.value,
addServer = {
AlertManager.shared.showAlertDialogButtonsColumn(
title = generalGetString(R.string.smp_servers_add),
buttons = {
Column {
SectionItemView({
AlertManager.shared.hideAlert()
servers = servers + ServerCfg.empty
// No saving until something will be changed on the next screen to prevent blank servers on the list
showServer(servers.last())
}) {
Text(stringResource(R.string.smp_servers_enter_manually))
}
SectionItemView({
AlertManager.shared.hideAlert()
ModalManager.shared.showModalCloseable { close ->
ScanSMPServer {
close()
servers = servers + it
m.userSMPServersUnsaved.value = servers
ModalView(
close = {
if (saveDisabled.value) close()
else showUnsavedChangesAlert({ saveSMPServers(servers, m, close) }, close)
},
background = if (isInDarkTheme()) MaterialTheme.colors.background else SettingsBackgroundLight
) {
SMPServersLayout(
testing = testing.value,
servers = servers,
serversUnchanged = serversUnchanged.value,
saveDisabled = saveDisabled.value,
allServersDisabled = allServersDisabled.value,
m.currentUser.value,
addServer = {
AlertManager.shared.showAlertDialogButtonsColumn(
title = generalGetString(R.string.smp_servers_add),
buttons = {
Column {
SectionItemView({
AlertManager.shared.hideAlert()
servers = servers + ServerCfg.empty
// No saving until something will be changed on the next screen to prevent blank servers on the list
showServer(servers.last())
}) {
Text(stringResource(R.string.smp_servers_enter_manually))
}
SectionItemView({
AlertManager.shared.hideAlert()
ModalManager.shared.showModalCloseable { close ->
ScanSMPServer {
close()
servers = servers + it
m.userSMPServersUnsaved.value = servers
}
}
}
) {
Text(stringResource(R.string.smp_servers_scan_qr))
}
val hasAllPresets = hasAllPresets(servers, m)
if (!hasAllPresets) {
SectionItemView({
AlertManager.shared.hideAlert()
servers = (servers + addAllPresets(servers, m)).sortedByDescending { it.preset }
}) {
Text(stringResource(R.string.smp_servers_preset_add), color = MaterialTheme.colors.onBackground)
}
}
}
) {
Text(stringResource(R.string.smp_servers_scan_qr))
}
val hasAllPresets = hasAllPresets(servers, m)
if (!hasAllPresets) {
SectionItemView({
AlertManager.shared.hideAlert()
servers = (servers + addAllPresets(servers, m)).sortedByDescending { it.preset }
}) {
Text(stringResource(R.string.smp_servers_preset_add), color = MaterialTheme.colors.onBackground)
}
}
}
)
},
testServers = {
scope.launch {
testServers(testing, servers, m) {
servers = it
m.userSMPServersUnsaved.value = servers
}
}
)
},
testServers = {
scope.launch {
testServers(testing, servers, m) {
servers = it
m.userSMPServersUnsaved.value = servers
}
}
},
resetServers = {
servers = m.userSMPServers.value ?: emptyList()
m.userSMPServersUnsaved.value = null
},
saveSMPServers = {
saveSMPServers(servers, m)
},
showServer = ::showServer,
)
},
resetServers = {
servers = m.userSMPServers.value ?: emptyList()
m.userSMPServersUnsaved.value = null
},
saveSMPServers = {
saveSMPServers(servers, m)
},
showServer = ::showServer,
)
if (testing.value) {
Box(
Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
CircularProgressIndicator(
Modifier
.padding(horizontal = 2.dp)
.size(30.dp),
color = HighOrLowlight,
strokeWidth = 2.5.dp
)
if (testing.value) {
Box(
Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
CircularProgressIndicator(
Modifier
.padding(horizontal = 2.dp)
.size(30.dp),
color = HighOrLowlight,
strokeWidth = 2.5.dp
)
}
}
}
}
@@ -247,7 +254,7 @@ private fun HowToButton() {
SettingsActionItem(
Icons.Outlined.OpenInNew,
stringResource(R.string.how_to_use_your_servers),
{ uriHandler.openUri("https://github.com/simplex-chat/simplex-chat/blob/stable/docs/SERVER.md") },
{ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat/blob/stable/docs/SERVER.md") },
textColor = MaterialTheme.colors.primary,
iconColor = MaterialTheme.colors.primary
)
@@ -324,12 +331,22 @@ private suspend fun runServersTest(servers: List<ServerCfg>, m: ChatModel, onUpd
return fs
}
private fun saveSMPServers(servers: List<ServerCfg>, m: ChatModel) {
private fun saveSMPServers(servers: List<ServerCfg>, m: ChatModel, afterSave: () -> Unit = {}) {
withApi {
if (m.controller.setUserSMPServers(servers)) {
m.userSMPServers.value = servers
m.userSMPServersUnsaved.value = null
}
afterSave()
}
}
private fun showUnsavedChangesAlert(save: () -> Unit, revert: () -> Unit) {
AlertManager.shared.showAlertDialogStacked(
title = generalGetString(R.string.smp_save_servers_question),
confirmText = generalGetString(R.string.save_verb),
dismissText = generalGetString(R.string.exit_without_saving),
onConfirm = save,
onDismiss = revert,
)
}

View File

@@ -141,26 +141,26 @@ fun SettingsLayout(
ProfilePreview(profile, stopped = stopped)
}
SectionDivider()
SettingsActionItem(Icons.Outlined.HowToReg, stringResource(R.string.your_chat_profiles), { withAuth { showSettingsModal { UserProfilesView(it) }() } }, disabled = stopped)
SettingsActionItem(Icons.Outlined.ManageAccounts, stringResource(R.string.your_chat_profiles), { withAuth { showSettingsModal { UserProfilesView(it) }() } }, disabled = stopped)
SectionDivider()
SettingsIncognitoActionItem(incognitoPref, incognito, stopped) { showModal { IncognitoView() }() }
SectionDivider()
SettingsActionItem(Icons.Outlined.QrCode, stringResource(R.string.your_simplex_contact_address), showModal { CreateLinkView(it, CreateLinkTab.LONG_TERM) }, disabled = stopped)
SectionDivider()
ChatPreferencesItem(showCustomModal)
ChatPreferencesItem(showCustomModal, stopped = stopped)
}
SectionSpacer()
SectionView(stringResource(R.string.settings_section_title_settings)) {
SettingsActionItem(Icons.Outlined.Bolt, stringResource(R.string.notifications), showSettingsModal { NotificationsSettingsView(it) }, disabled = stopped)
SectionDivider()
SettingsActionItem(Icons.Outlined.WifiTethering, stringResource(R.string.network_and_servers), showSettingsModal { NetworkAndServersView(it, showModal, showSettingsModal) }, disabled = stopped)
SettingsActionItem(Icons.Outlined.WifiTethering, stringResource(R.string.network_and_servers), showSettingsModal { NetworkAndServersView(it, showModal, showSettingsModal, showCustomModal) }, disabled = stopped)
SectionDivider()
SettingsActionItem(Icons.Outlined.Videocam, stringResource(R.string.settings_audio_video_calls), showSettingsModal { CallSettingsView(it, showModal) }, disabled = stopped)
SectionDivider()
SettingsActionItem(Icons.Outlined.Lock, stringResource(R.string.privacy_and_security), showSettingsModal { PrivacySettingsView(it, setPerformLA) }, disabled = stopped)
SectionDivider()
SettingsActionItem(Icons.Outlined.LightMode, stringResource(R.string.appearance_settings), showSettingsModal { AppearanceView() }, disabled = stopped)
SettingsActionItem(Icons.Outlined.LightMode, stringResource(R.string.appearance_settings), showSettingsModal { AppearanceView(it) }, disabled = stopped)
SectionDivider()
DatabaseItem(encrypted, showSettingsModal { DatabaseView(it, showSettingsModal) }, stopped)
}
@@ -173,9 +173,9 @@ fun SettingsLayout(
SectionDivider()
SettingsActionItem(Icons.Outlined.Info, stringResource(R.string.about_simplex_chat), showModal { SimpleXInfo(it, onboarding = false) })
SectionDivider()
SettingsActionItem(Icons.Outlined.Tag, stringResource(R.string.chat_with_the_founder), { uriHandler.openUri(simplexTeamUri) }, textColor = MaterialTheme.colors.primary, disabled = stopped)
SettingsActionItem(Icons.Outlined.Tag, stringResource(R.string.chat_with_the_founder), { uriHandler.openUriCatching(simplexTeamUri) }, textColor = MaterialTheme.colors.primary, disabled = stopped)
SectionDivider()
SettingsActionItem(Icons.Outlined.Email, stringResource(R.string.send_us_an_email), { uriHandler.openUri("mailto:chat@simplex.chat") }, textColor = MaterialTheme.colors.primary)
SettingsActionItem(Icons.Outlined.Email, stringResource(R.string.send_us_an_email), { uriHandler.openUriCatching("mailto:chat@simplex.chat") }, textColor = MaterialTheme.colors.primary)
}
SectionSpacer()
@@ -270,17 +270,18 @@ fun MaintainIncognitoState(chatModel: ChatModel) {
}
}
@Composable fun ChatPreferencesItem(showCustomModal: ((@Composable (ChatModel, () -> Unit) -> Unit) -> (() -> Unit))) {
@Composable fun ChatPreferencesItem(showCustomModal: ((@Composable (ChatModel, () -> Unit) -> Unit) -> (() -> Unit)), stopped: Boolean) {
SettingsActionItem(
Icons.Outlined.ToggleOn,
stringResource(R.string.chat_preferences),
click = {
click = if (stopped) null else ({
withApi {
showCustomModal { m, close ->
PreferencesView(m, m.currentUser.value ?: return@showCustomModal, close)
}()
}
}
}),
disabled = stopped
)
}
@@ -312,7 +313,7 @@ fun MaintainIncognitoState(chatModel: ChatModel) {
}
@Composable private fun ContributeItem(uriHandler: UriHandler) {
SectionItemView({ uriHandler.openUri("https://github.com/simplex-chat/simplex-chat#contribute") }) {
SectionItemView({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat#contribute") }) {
Icon(
Icons.Outlined.Keyboard,
contentDescription = "GitHub",
@@ -325,8 +326,8 @@ fun MaintainIncognitoState(chatModel: ChatModel) {
@Composable private fun RateAppItem(uriHandler: UriHandler) {
SectionItemView({
runCatching { uriHandler.openUri("market://details?id=chat.simplex.app") }
.onFailure { uriHandler.openUri("https://play.google.com/store/apps/details?id=chat.simplex.app") }
runCatching { uriHandler.openUriCatching("market://details?id=chat.simplex.app") }
.onFailure { uriHandler.openUriCatching("https://play.google.com/store/apps/details?id=chat.simplex.app") }
}
) {
Icon(
@@ -340,7 +341,7 @@ fun MaintainIncognitoState(chatModel: ChatModel) {
}
@Composable private fun StarOnGithubItem(uriHandler: UriHandler) {
SectionItemView({ uriHandler.openUri("https://github.com/simplex-chat/simplex-chat") }) {
SectionItemView({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat") }) {
Icon(
painter = painterResource(id = R.drawable.ic_github),
contentDescription = "GitHub",
@@ -364,7 +365,7 @@ fun MaintainIncognitoState(chatModel: ChatModel) {
}
@Composable private fun InstallTerminalAppItem(uriHandler: UriHandler) {
SectionItemView({ uriHandler.openUri("https://github.com/simplex-chat/simplex-chat") }) {
SectionItemView({ uriHandler.openUriCatching("https://github.com/simplex-chat/simplex-chat") }) {
Icon(
painter = painterResource(id = R.drawable.ic_github),
contentDescription = "GitHub",
@@ -438,7 +439,7 @@ fun SettingsPreferenceItemWithInfo(
pref: SharedPreference<Boolean>,
prefState: MutableState<Boolean>? = null
) {
SectionItemView(onClickInfo) {
SectionItemView(if (stopped) null else onClickInfo) {
Row(verticalAlignment = Alignment.CenterVertically) {
Icon(icon, text, tint = if (stopped) HighOrLowlight else iconTint)
Spacer(Modifier.padding(horizontal = 4.dp))

View File

@@ -24,6 +24,7 @@ fun VersionInfoView(info: CoreVersionInfo) {
Text(String.format(stringResource(R.string.app_version_code), BuildConfig.VERSION_CODE))
Text(String.format(stringResource(R.string.core_version), info.version))
Text(String.format(stringResource(R.string.core_build_timestamp), info.buildTimestamp))
Text(String.format(stringResource(R.string.core_simplexmq_version), info.simplexmqVersion, info.simplexmqCommit.substring(startIndex = 0, endIndex = 7)))
val simplexmqCommit = if (info.simplexmqCommit.length >= 7) info.simplexmqCommit.substring(startIndex = 0, endIndex = 7) else info.simplexmqCommit
Text(String.format(stringResource(R.string.core_simplexmq_version), info.simplexmqVersion, simplexmqCommit))
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="accept_contact_button">اقبل</string>
<string name="about_simplex_chat">عن <xliff:g id="appNameFull"> ٍSimpleX </xliff:g></string>
<string name="a_plus_b">a + b</string>
<string name="accept">اقبل</string>
<string name="chat_item_ttl_week">اسبوع 1</string>
<string name="chat_item_ttl_month">شهر 1</string>
<string name="color_primary">لون تمييزي</string>
<string name="chat_item_ttl_day">يوم 1</string>
<string name="accept_feature">اقبل</string>
<string name="about_simplex">عن SimpleX</string>
<string name="above_then_preposition_continuation">أعلاه ، ثم:</string>
<string name="accept_call_on_lock_screen">اقبل</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">لا يمكن التراجع عن هذا الإجراء - سيتم فقد ملف التعريف وجهات الاتصال والرسائل والملفات الخاصة بك بشكل نهائي.</string>
<string name="alert_message_no_group">هذه المجموعة لم تعد موجودة.</string>
<string name="this_QR_code_is_not_a_link">رمز QR هذا ليس رابطًا!</string>
<string name="next_generation_of_private_messaging">الجيل القادم من الرسائل الخاصة</string>
<string name="delete_files_and_media_desc">لا يمكن التراجع عن هذا الإجراء - سيتم حذف جميع الملفات والوسائط المستلمة والمرسلة. ستبقى الصور منخفضة الدقة.</string>
<string name="enable_automatic_deletion_message">لا يمكن التراجع عن هذا الإجراء - سيتم حذف الرسائل المرسلة والمستلمة قبل التحديد. قد تأخذ عدة دقائق.</string>
<string name="messages_section_description">ينطبق هذا الإعداد على الرسائل الموجودة في ملف تعريف الدردشة الحالي الخاص بك</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">منصة الرسائل والتطبيقات تحمي خصوصيتك وأمنك.</string>
<string name="profile_is_only_shared_with_your_contacts">يتم مشاركة ملف التعريف مع جهات الاتصال الخاصة بك فقط.</string>
<string name="member_role_will_be_changed_with_notification">سيتم تغيير الدور إلى \"%s\". سيتم إبلاغ كل فرد في المجموعة.</string>
<string name="member_role_will_be_changed_with_invitation">سيتم تغيير الدور إلى \"%s\". سيتلقى العضو دعوة جديدة.</string>
<string name="smp_servers_per_user">خوادم الاتصالات الجديدة لملف تعريف الدردشة الحالي الخاص بك</string>
<string name="switch_receiving_address_desc">هذه الميزة تجريبية! ستعمل فقط إذا كان لدى العميل الآخر الإصدار 4.2 مثبتًا. يجب أن ترى الرسالة في المحادثة بمجرد اكتمال تغيير العنوان - يرجى التحقق من أنه لا يزال بإمكانك تلقي الرسائل من جهة الاتصال هذه (أو عضو المجموعة).</string>
<string name="this_link_is_not_a_valid_connection_link">هذا الارتباط ليس ارتباط اتصال صالح!</string>
</resources>

View File

@@ -0,0 +1,984 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="allow_voice_messages_only_if">Povolte hlasové zprávy, pouze pokud je váš kontakt povolí.</string>
<string name="allow_to_send_disappearing">Mizící zprávy povoleny.</string>
<string name="allow_to_send_voice">Hlasové zprávy povoleny.</string>
<string name="v4_2_group_links_desc">Správci mohou vytvářet odkazy pro připojení ke skupinám.</string>
<string name="accept_contact_button">Přijmout</string>
<string name="smp_servers_preset_add">Přidejte přednastavené servery</string>
<string name="network_settings">Pokročilá nastavení sítě</string>
<string name="accept">Přijmout</string>
<string name="smp_servers_add">Přidat server…</string>
<string name="network_enable_socks_info">Přistupovat k serverům přes SOCKS proxy na portu 9050\? Před povolením této možnosti musí být spuštěna proxy.</string>
<string name="accept_feature">Přijmout</string>
<string name="allow_your_contacts_to_send_disappearing_messages">Umožněte svým kontaktům odesílat mizící zprávy.</string>
<string name="about_simplex_chat">O <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="smp_servers_add_to_another_device">Přidat do jiného zařízení</string>
<string name="accept_requests">Přijímat žádosti</string>
<string name="allow_verb">Povolit</string>
<string name="allow_voice_messages_question">Povolit hlasové zprávy\?</string>
<string name="about_simplex">O SimpleX</string>
<string name="a_plus_b">a + b</string>
<string name="accept_call_on_lock_screen">Přijmout</string>
<string name="chat_item_ttl_day">1 dni</string>
<string name="group_member_role_admin">správce</string>
<string name="users_add">Přidat profil</string>
<string name="users_delete_all_chats_deleted">Všechny chaty a zprávy budou smazány tuto akci nelze vrátit zpět!</string>
<string name="allow_disappearing_messages_only_if">Povolte mizící zprávy, pouze pokud to váš kontakt povolí.</string>
<string name="v4_3_improved_server_configuration_desc">Přidejte servery skenováním QR kódů.</string>
<string name="chat_item_ttl_month">1 měsíci</string>
<string name="chat_item_ttl_week">1 týdnu</string>
<string name="callstatus_accepted">přijatý hovor</string>
<string name="accept_contact_incognito_button">Přijmout inkognito</string>
<string name="accept_connection_request__question">Přijmout žádost o připojení\?</string>
<string name="all_group_members_will_remain_connected">Všichni členové skupiny zůstanou připojeni.</string>
<string name="allow_irreversible_message_deletion_only_if">Povolte nevratné smazání zprávy pouze v případě, že vám to váš kontakt dovolí.</string>
<string name="allow_direct_messages">Přímé zprávy členům povoleny.</string>
<string name="allow_to_delete_messages">Nevratné mazání odeslaných zpráv povoleno.</string>
<string name="clear_chat_warning">Všechny zprávy budou smazány tuto akci nelze vrátit zpět! Zprávy budou smazány POUZE pro vás.</string>
<string name="allow_your_contacts_irreversibly_delete">Umožněte svým kontaktům nevratně odstranit odeslané zprávy.</string>
<string name="allow_your_contacts_to_send_voice_messages">Povolte svým kontaktům odesílání hlasových zpráv.</string>
<string name="button_create_group_link">Vytvořit odkaz</string>
<string name="delete_link_question">Smazat odkaz\?</string>
<string name="button_send_direct_message">Odeslat přímou zprávu</string>
<string name="member_info_section_title_member">ČLEN</string>
<string name="change_member_role_question">Změnit roli ve skupině\?</string>
<string name="info_row_connection">Připoj</string>
<string name="conn_level_desc_indirect">nepřímé (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<string name="conn_stats_section_title_servers">SERVERY</string>
<string name="receiving_via">Příjímáno přez</string>
<string name="create_secret_group_title">Vytvoření tajné skupiny</string>
<string name="group_display_name_field">Zobrazení názvu skupiny:</string>
<string name="group_full_name_field">Úplný název skupiny:</string>
<string name="group_main_profile_sent">Váš chat profil bude zaslán členům skupiny</string>
<string name="group_profile_is_stored_on_members_devices">Profil skupiny je uložen v zařízeních členů, nikoli na serverech.</string>
<string name="network_options_save">Uložit</string>
<string name="update_network_settings_question">Aktualizovat nastavení sítě\?</string>
<string name="incognito">Inkognito</string>
<string name="incognito_random_profile">Váš náhodný profil</string>
<string name="incognito_random_profile_description">Vašemu kontaktu bude zaslán náhodný profil</string>
<string name="save_color">Uložit barvu</string>
<string name="reset_color">Obnovit barvu</string>
<string name="color_primary">Zbarvení</string>
<string name="chat_preferences_you_allow">Povolujete</string>
<string name="chat_preferences_default">výchozí (%s)</string>
<string name="chat_preferences_yes">ano</string>
<string name="chat_preferences_no">ne</string>
<string name="chat_preferences_always">vždy</string>
<string name="set_group_preferences">Nastavení skupinových předvoleb</string>
<string name="your_preferences">Vaše preference</string>
<string name="timed_messages">Mizící zprávy</string>
<string name="feature_enabled_for_contact">povoleno pro kontakt</string>
<string name="feature_received_prohibited">přijaté, zakázané</string>
<string name="both_you_and_your_contact_can_send_disappearing">Vy i váš kontakt můžete posílat mizící zprávy.</string>
<string name="only_your_contact_can_send_disappearing">Zmizelé zprávy může odesílat pouze váš kontakt.</string>
<string name="only_you_can_delete_messages">Nevratně mazat zprávy můžete pouze vy (váš kontakt je může označit ke smazání).</string>
<string name="message_deletion_prohibited">Nevratné mazání zpráv je v tomto chatu zakázáno.</string>
<string name="prohibit_direct_messages">Přímé zprávy členům zakázány.</string>
<string name="ttl_sec">%d sec</string>
<string name="ttl_s">%ds</string>
<string name="ttl_min">%d min</string>
<string name="ttl_hour">%d hodinu</string>
<string name="feature_offered_item_with_param">offered %s: %2s</string>
<string name="v4_2_group_links">Odkazy na skupiny</string>
<string name="v4_3_voice_messages">Hlasové zprávy</string>
<string name="v4_3_irreversible_message_deletion_desc">Vaše kontakty mohou povolit úplné mazání zpráv.</string>
<string name="v4_4_disappearing_messages">Mizící zprávy</string>
<string name="v4_4_verify_connection_security_desc">Porovnejte bezpečnostní kódy se svými kontakty.</string>
<string name="app_name"><xliff:g id="appName">SimpleX</xliff:g></string>
<string name="thousand_abbreviation">k</string>
<string name="connect_via_contact_link">Připojit se odkazem\?</string>
<string name="connect_via_invitation_link">Připojit se pozvánkou\?</string>
<string name="connect_via_group_link">Připojit se odkazem skupiny\?</string>
<string name="profile_will_be_sent_to_contact_sending_link">Váš profil bude odeslán kontaktu, od kterého jste obdrželi tento odkaz.</string>
<string name="server_connected">připojeno</string>
<string name="server_error">chyba</string>
<string name="server_connecting">připojení</string>
<string name="trying_to_connect_to_server_to_receive_messages">Pokus o připojení k serveru používanému pro příjem zpráv od tohoto kontaktu.</string>
<string name="deleted_description">smazáno</string>
<string name="invalid_chat">neplatný chat</string>
<string name="invalid_data">neplatná data</string>
<string name="connection_local_display_name">spojení <xliff:g id="connection ID" example="1">%1$d</xliff:g></string>
<string name="display_name_connection_established">spojení navázáno</string>
<string name="display_name_invited_to_connect">pozvánka k připojení</string>
<string name="display_name_connecting">připojení…</string>
<string name="description_you_shared_one_time_link">sdíleli jste jednorázový odkaz</string>
<string name="description_you_shared_one_time_link_incognito">sdíleli jste jednorázový odkaz inkognito</string>
<string name="description_via_group_link">prostřednictvím skupinového odkazu</string>
<string name="description_via_contact_address_link">prostřednictvím odkazu</string>
<string name="description_via_contact_address_link_incognito">inkognito přes odkaz</string>
<string name="description_via_one_time_link">jednorázovým odkazem</string>
<string name="description_via_one_time_link_incognito">inkognito jednorázovým odkazem</string>
<string name="simplex_link_contact">SimpleX adresa</string>
<string name="simplex_link_invitation">Jednorázová pozvánka SimpleX</string>
<string name="simplex_link_group">Skupinový odkaz SimpleX</string>
<string name="simplex_link_connection">prostřednictvím <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g></string>
<string name="simplex_link_mode">Odkazy na SimpleX</string>
<string name="simplex_link_mode_description">Popis</string>
<string name="simplex_link_mode_full">Úplný odkaz</string>
<string name="simplex_link_mode_browser">Prostřednictvím prohlížeče</string>
<string name="simplex_link_mode_browser_warning">Otevření odkazu v prohlížeči může snížit soukromí a bezpečnost připojení. Nedůvěryhodné odkazy SimpleX budou červené.</string>
<string name="error_saving_smp_servers">Chyba ukládání serverů SMP</string>
<string name="error_setting_network_config">Chyba změny konfigurace sítě</string>
<string name="failed_to_parse_chat_title">Nepodařilo se načíst chat</string>
<string name="failed_to_parse_chats_title">Nepodařilo se načíst chaty</string>
<string name="contact_developers">Aktualizujte aplikaci a kontaktujte vývojáře.</string>
<string name="connection_timeout">Časový limit připojení</string>
<string name="connection_error">Chyba připojení</string>
<string name="network_error_desc">Zkontrolujte prosím své síťové připojení pomocí <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g> a zkuste to znovu.</string>
<string name="error_sending_message">Chyba odesílání zprávy</string>
<string name="error_adding_members">Chyba přidávání členů</string>
<string name="contact_already_exists">Kontakt již existuje</string>
<string name="you_are_already_connected_to_vName_via_this_link">Jste již připojeni k <xliff:g id="contactName" example="Alice">%1$s!</xliff:g>.</string>
<string name="invalid_connection_link">Neplatný odkaz na spojení</string>
<string name="error_accepting_contact_request">Chyba příjmu požadavku od kontaktu</string>
<string name="error_changing_address">Chyba změny adresy</string>
<string name="settings_notifications_mode_title">Oznamovací služba</string>
<string name="notifications_mode_service_desc">Služba na pozadí je spuštěna vždy - oznámení se zobrazí, jakmile jsou zprávy k dispozici.</string>
<string name="notification_preview_mode_message">Text zprávy</string>
<string name="notification_preview_mode_contact">Jméno kontaktu</string>
<string name="notification_preview_mode_hidden">Skryté</string>
<string name="notification_preview_mode_message_desc">Zobrazí kontakt a zprávu</string>
<string name="notification_contact_connected">Připojen</string>
<string name="la_notice_title_simplex_lock">SimpleX Zámek</string>
<string name="auth_log_in_using_credential">Přihlásit pomocí ověření</string>
<string name="auth_enable_simplex_lock">Zapnout zámek SimpleX</string>
<string name="reply_verb">Odpověď</string>
<string name="share_verb">Sdílet</string>
<string name="copy_verb">Kopírovat</string>
<string name="icon_descr_received_msg_status_unread">nepřečteno</string>
<string name="personal_welcome">Vítejte <xliff:g>%1$s</xliff:g>!</string>
<string name="welcome">Vítejte!</string>
<string name="this_text_is_available_in_settings">Tento text je k dispozici v nastavení</string>
<string name="icon_descr_sent_msg_status_send_failed">odeslání se nezdařilo</string>
<string name="share_file">Sdílet soubor…</string>
<string name="attach">Připojit</string>
<string name="icon_descr_context">Kontextová ikona</string>
<string name="image_decoding_exception_desc">Obrázek nelze dekódovat. Zkuste prosím použít jiný obrázek nebo kontaktujte vývojáře.</string>
<string name="image_descr">Obrázek</string>
<string name="icon_descr_waiting_for_image">Čekání na obrázek</string>
<string name="icon_descr_asked_to_receive">Požádáno o přijetí obrázku</string>
<string name="icon_descr_image_snd_complete">Obrázek odeslán</string>
<string name="waiting_for_image">Čekám na obrázek</string>
<string name="image_will_be_received_when_contact_is_online">Obrázek bude přijat, až bude váš kontakt online, vyčkejte prosím nebo se podívejte později!</string>
<string name="contact_sent_large_file">Váš kontakt odeslal soubor, který je větší než aktuálně podporovaná maximální velikost (<xliff:g id="maxFileSize">%1$s</xliff:g>).</string>
<string name="maximum_supported_file_size">V současné době je maximální podporovaná velikost souboru <xliff:g id="maxFileSize">%1$s</xliff:g>.</string>
<string name="error_saving_file">Chyba ukládání souboru</string>
<string name="voice_message">Hlasová zpráva</string>
<string name="voice_message_send_text">Hlasová zpráva…</string>
<string name="icon_descr_server_status_connected">Připojeno</string>
<string name="icon_descr_server_status_disconnected">Odpojeno</string>
<string name="icon_descr_server_status_error">Chyba</string>
<string name="switch_receiving_address_desc">Tato funkce je experimentální! Bude fungovat pouze v případě, že druhý klient má nainstalovanou verzi 4.2. Po dokončení změny adresy by se měla v konverzaci zobrazit zpráva - zkontrolujte, zda můžete od tohoto kontaktu (nebo člena skupiny) stále přijímat zprávy.</string>
<string name="switch_receiving_address_question">Přepnout přijímací adresu\?</string>
<string name="send_verb">Poslat</string>
<string name="you_need_to_allow_to_send_voice">Abyste mohli odesílat hlasové zprávy, musíte svému kontaktu odesílání hlasových zpráv povolit.</string>
<string name="icon_descr_cancel_live_message">Zrušit živou zprávu</string>
<string name="back">Zpět</string>
<string name="cancel_verb">Zrušit</string>
<string name="reset_verb">Obnovit</string>
<string name="ok">OK</string>
<string name="no_details">bez podrobností</string>
<string name="add_contact">Jednorázová pozvánka</string>
<string name="copied">Zkopírováno</string>
<string name="add_contact_or_create_group">Nová konverzace</string>
<string name="create_group">Vytvořit tajnou skupinu</string>
<string name="to_share_with_your_contact">(sdílet s kontaktem)</string>
<string name="only_stored_on_members_devices">(uloženo pouze členy skupiny)</string>
<string name="toast_permission_denied">Oprávnění zamítnuto!</string>
<string name="use_camera_button">Použít fotoaparát</string>
<string name="from_gallery_button">Z Galerie</string>
<string name="choose_file">Vybrat soubor</string>
<string name="to_start_a_new_chat_help_header">Pro zahájení nové konverzace</string>
<string name="chat_help_tap_button">Klepněte na tlačítko</string>
<string name="above_then_preposition_continuation">potom:</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>Přidejte nový kontakt</b>: vytvořte jednorázý QR kód pro váš kontakt.</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>Naskenujte QR kód</b>: připojíte se ke kontaktu, který vám QR kód ukázal.</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 počítač: naskenujte QR kód z aplikace přez <b>Skenovat QR kód</b>.</string>
<string name="clear_chat_question">Vyčistit chat\?</string>
<string name="clear_verb">Vyčistit</string>
<string name="mark_read">Označit jako přečteno</string>
<string name="mark_unread">Označit jako nepřečteno</string>
<string name="mute_chat">Ztlumit</string>
<string name="unmute_chat">Zrušit ztlumení</string>
<string name="you_invited_your_contact">Pozvali jste kontakt</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">Kontakt, se kterým jste tento odkaz sdíleli, se NEBUDE moci připojit!</string>
<string name="connection_you_accepted_will_be_cancelled">Připojení, které jste přijali, bude zrušeno!</string>
<string name="icon_descr_help">help</string>
<string name="icon_descr_simplex_team"><xliff:g id="appName">SimpleX</xliff:g> Tým</string>
<string name="icon_descr_address"><xliff:g id="appName">SimpleX</xliff:g> Adresa</string>
<string name="you_will_be_connected_when_group_host_device_is_online">Ke skupině budete připojeni, až bude zařízení hostitele skupiny online, vyčkejte prosím nebo se podívejte později!</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">Budete připojeni, jakmile bude vaše žádost o připojení přijata, vyčkejte prosím nebo se podívejte později!</string>
<string name="connection_request_sent">Požadavek na připojení byl odeslán!</string>
<string name="your_profile_will_be_sent">Váš chat profil bude odeslán vašemu kontaktu</string>
<string name="create_one_time_link">Vytvořit jednorázovou pozvánku</string>
<string name="one_time_link">Jednorázová pozvánka</string>
<string name="security_code">Bezpečnostní kód</string>
<string name="is_verified">%s je ověřeno</string>
<string name="chat_console">Chat konzole</string>
<string name="smp_servers">SMP servery</string>
<string name="smp_servers_preset_address">Přednastavená adresa serveru</string>
<string name="smp_servers_test_failed">Test serveru se nezdařil!</string>
<string name="smp_servers_test_some_failed">Některé servery neprošly testem:</string>
<string name="smp_servers_scan_qr">Naskenujte QR kód serveru</string>
<string name="smp_servers_enter_manually">Zadejte server ručně</string>
<string name="smp_servers_invalid_address">Neplatná adresa serveru!</string>
<string name="smp_servers_check_address">Zkontrolujte adresu serveru a zkuste to znovu.</string>
<string name="smp_servers_delete_server">Smazat server</string>
<string name="contribute">Přispět</string>
<string name="how_to">Jak</string>
<string name="how_to_use_your_servers">Jak používat servery</string>
<string name="your_ICE_servers">Vaše servery ICE</string>
<string name="configure_ICE_servers">Konfigurace serverů ICE</string>
<string name="network_settings_title">Nastavení sítě</string>
<string name="network_enable_socks">Použít proxy server SOCKS\?</string>
<string name="network_disable_socks">Použít přímé připojení k internetu\?</string>
<string name="network_use_onion_hosts_no">Ne</string>
<string name="network_use_onion_hosts_no_desc_in_alert">Onion hostitelé nebudou použiti.</string>
<string name="network_session_mode_user">Chat profil</string>
<string name="network_session_mode_entity">Připojení</string>
<string name="core_simplexmq_version">simplexmq: v%s (%2s)</string>
<string name="create_address">Vytvořit adresu</string>
<string name="accept_automatically">Automaticky</string>
<string name="section_title_welcome_message">UVÍTACÍ ZPRÁVA</string>
<string name="save_and_notify_group_members">Uložit a upozornit členy skupiny</string>
<string name="exit_without_saving">Ukončit bez uložení</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">Platforma pro zasílání zpráv a aplikace chránící vaše soukromí a bezpečnost.</string>
<string name="create_profile">Vytvořit profil</string>
<string name="profile_is_only_shared_with_your_contacts">Profil je sdílen pouze s vašimi kontakty.</string>
<string name="display_name_cannot_contain_whitespace">Zobrazované jméno nesmí obsahovat mezery.</string>
<string name="bold">tučně</string>
<string name="callstatus_in_progress">probíhající hovor</string>
<string name="decentralized">Decentralizovaná</string>
<string name="how_it_works">Jak to funguje</string>
<string name="how_simplex_works">Jak funguje <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Pouze klientská zařízení ukládají uživatelské profily, kontakty, skupiny a zprávy odesílané pomocí <b>2 vrstvého koncového šifrování</b>.</string>
<string name="onboarding_notifications_mode_title">Oznámení</string>
<string name="onboarding_notifications_mode_periodic">Pravidelné</string>
<string name="ignore">Ignorovat</string>
<string name="call_already_ended">Hovor již skončil!</string>
<string name="icon_descr_video_call">video hovor</string>
<string name="icon_descr_audio_call">audio hovor</string>
<string name="settings_audio_video_calls">Audio a video hovory</string>
<string name="call_on_lock_screen">Hovory na uzamčené obrazovce:</string>
<string name="open_simplex_chat_to_accept_call">Otevřete <xliff:g id="appNameFull">SimpleX Chat</xliff:g> pro přijetí hovoru</string>
<string name="allow_accepting_calls_from_lock_screen">Povolte volání ze zamčené obrazovky prostřednictvím Nastavení.</string>
<string name="open_verb">Otevřený</string>
<string name="icon_descr_audio_on">Zvuk zapnut</string>
<string name="icon_descr_speaker_off">Reproduktor vypnut</string>
<string name="icon_descr_speaker_on">Reproduktor zapnut</string>
<string name="icon_descr_call_progress">Probíhající hovor</string>
<string name="auto_accept_images">Automaticky přijímat obrázky</string>
<string name="settings_section_title_settings">NASTAVENÍ</string>
<string name="settings_section_title_help">NÁPOVĚDA</string>
<string name="settings_section_title_device">ZAŘÍZENÍ</string>
<string name="settings_section_title_chats">CHATY</string>
<string name="settings_experimental_features">Experimentální funkce</string>
<string name="settings_section_title_socks">SOCKS PROXY</string>
<string name="settings_section_title_icon">IKONA APLIKACE</string>
<string name="settings_section_title_themes">TÉMATA</string>
<string name="settings_section_title_messages">ZPRÁVY</string>
<string name="settings_section_title_calls">VOLÁNÍ</string>
<string name="export_database">Export databáze</string>
<string name="import_database">Import databáze</string>
<string name="delete_database">Smazat databázi</string>
<string name="error_exporting_chat_database">Chyba exportu chat databáze</string>
<string name="import_database_confirmation">Import</string>
<string name="restart_the_app_to_use_imported_chat_database">Restartujte aplikaci, abyste mohli používat importovanou chat databázi.</string>
<string name="delete_chat_profile_question">Smazat chat profil\?</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Tuto akci nelze vzít zpět! Váš profil, kontakty, zprávy a soubory budou nenávratně ztraceny.</string>
<string name="restart_the_app_to_create_a_new_chat_profile">Restartujte aplikaci a vytvořte nový chat profil.</string>
<string name="you_must_use_the_most_recent_version_of_database">Nejnovější verzi chat databáze musíte používat POUZE v jednom zařízení, jinak se může stát, že přestanete přijímat zprávy od některých kontaktů.</string>
<string name="stop_chat_to_enable_database_actions">Zastavte chat a povolte akce s databází.</string>
<string name="files_and_media_section">Soubory a média</string>
<string name="delete_files_and_media_question">Smazat soubory a média\?</string>
<string name="delete_messages">Odstranit zprávy</string>
<string name="remove_passphrase_from_keychain">Odstranit frázi z úložiště klíčů\?</string>
<string name="notifications_will_be_hidden">Oznámení budou doručována pouze do doby, než se aplikace zastaví!</string>
<string name="remove_passphrase">Odstranit</string>
<string name="update_database">Aktualizovat</string>
<string name="current_passphrase">Aktuální fráze…</string>
<string name="update_database_passphrase">Aktualizovat přístupovou frázi</string>
<string name="enter_correct_current_passphrase">Zadejte prosím správnou aktuální přístupovou frázi.</string>
<string name="database_is_not_encrypted">Chat databáze není šifrována - nastavte přístupovou frázi pro její ochranu.</string>
<string name="keychain_is_storing_securely">K bezpečnému uložení přístupové fráze slouží úložiště klíčů Android - umožňuje fungování služby oznámení.</string>
<string name="impossible_to_recover_passphrase"><b>Upozornění</b>: pokud přístupovou frázi ztratíte, NEBUDE možné ji obnovit ani změnit.</string>
<string name="database_will_be_encrypted_and_passphrase_stored">Databáze bude šifrována a přístupová fráze bude uložena v úložišti klíčů.</string>
<string name="store_passphrase_securely">Heslo uložte bezpečně, v případě jeho ztráty jej NEBUDE možné změnit.</string>
<string name="file_with_path">Soubor: %s</string>
<string name="database_passphrase_is_required">Pro otevření chatu je vyžadována přístupová fráze.</string>
<string name="unknown_error">Neznámá chyba</string>
<string name="open_chat">Otevřete chat</string>
<string name="restore_database">Obnovte zálohu databáze</string>
<string name="restore_database_alert_desc">Po obnovení zálohy databáze zadejte předchozí frázi. Tuto akci nelze vrátit zpět.</string>
<string name="chat_is_stopped_indication">Chat je zastaven</string>
<string name="chat_archive_header">Chat se archivuje</string>
<string name="delete_chat_archive_question">Smazat chat archiv\?</string>
<string name="join_group_question">Připojit se ke skupině\?</string>
<string name="join_group_button">Připojte se na</string>
<string name="leave_group_button">Opustit</string>
<string name="icon_descr_add_members">Pozvat členy</string>
<string name="alert_title_no_group">Skupina nebyla nalezena!</string>
<string name="alert_title_cant_invite_contacts">Nelze pozvat kontakty!</string>
<string name="snd_group_event_changed_member_role">změnili jste roli %s na %s</string>
<string name="snd_group_event_changed_role_for_yourself">změnili jste svou roli na %s</string>
<string name="snd_group_event_member_deleted">odebrali jste <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="snd_group_event_user_left">odešli jste</string>
<string name="rcv_conn_event_switch_queue_phase_completed">změnila se vaše adresa</string>
<string name="icon_descr_expand_role">Rozšířit výběr rolí</string>
<string name="invite_prohibited">Nelze pozvat kontakt!</string>
<string name="failed_to_create_user_duplicate_desc">Již máte chat profil se stejným názvem. Zvolte prosím jiné jméno.</string>
<string name="smp_server_test_create_queue">Vytvořit frontu</string>
<string name="smp_server_test_secure_queue">Zabezpečit frontu</string>
<string name="service_notifications">Okamžitá oznámení!</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b>V nastavení ji lze vypnout</b> - oznámení se budou zobrazovat pokud aplikace běží.</string>
<string name="turn_off_battery_optimization">Chcete-li ji používat, <b>vypněte optimalizaci baterie</b> pro <xliff:g id="appName">SimpleX</xliff:g> v dalším dialogu. V opačném případě budou oznámení vypnuta.</string>
<string name="periodic_notifications_desc">Aplikace pravidelně načítá nové zprávy - denně spotřebuje několik procent baterie. Aplikace nepoužívá push oznámení - data ze zařízení nejsou odesílána na servery.</string>
<string name="enter_passphrase_notification_title">Je vyžadována přístupová fráze</string>
<string name="enter_passphrase_notification_desc">Chcete-li dostávat oznámení, zadejte přístupovou frázi do databáze.</string>
<string name="database_initialization_error_title">Nelze načíst databázi</string>
<string name="hide_notification">Skrýt</string>
<string name="ntf_channel_calls">Volání SimpleX Chat</string>
<string name="notification_preview_new_message">nová zpráva</string>
<string name="notification_new_contact_request">Žádost o nový kontakt</string>
<string name="delete_message_cannot_be_undone_warning">Zpráva bude smazána - nelze to vzít zpět!</string>
<string name="confirm_verb">Potvrdit</string>
<string name="send_us_an_email">Pošlete nám e-mail</string>
<string name="chat_lock">Zámek SimpleX</string>
<string name="install_simplex_chat_for_terminal">Instalovat <xliff:g id="appNameFull">SimpleX Chat</xliff:g> terminál</string>
<string name="star_on_github">Hvězdu na GitHubu</string>
<string name="rate_the_app">Ohodnoťte aplikaci</string>
<string name="your_SMP_servers">Vaše servery SMP</string>
<string name="network_disable_socks_info">Pokud potvrdíte, budou servery zasílající zprávy vidět vaši IP adresu a váš poskytovatel - ke kterým serverům se připojujete.</string>
<string name="colored">barevné</string>
<string name="secret">tajné</string>
<string name="callstatus_calling">volání…</string>
<string name="callstate_connected">připojen</string>
<string name="callstate_ended">ukončen</string>
<string name="next_generation_of_private_messaging">Příští generace soukromé komunikace</string>
<string name="people_can_connect_only_via_links_you_share">Lidé se s vámi mohou spojit pouze prostřednictvím odkazu, který sdílíte.</string>
<string name="integrity_msg_bad_hash">špatný kontrolní součet zprávy</string>
<string name="chat_database_imported">Chat databáze importována</string>
<string name="new_passphrase">Nová přístupová fráze…</string>
<string name="save_passphrase_and_open_chat">Uložte frázi a otevřete chat</string>
<string name="chat_archive_section">CHAT ARCHIV</string>
<string name="no_contacts_selected">Nebyl vybrán žádný kontakt</string>
<string name="invite_prohibited_description">Snažíte se pozvat kontakt se kterým jste sdíleli inkognito profil, do skupiny ve které používáte svůj hlavní profil</string>
<string name="info_row_group">Skupina</string>
<string name="network_options_revert">Vrátit</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">Aktualizací nastavení se klient znovu připojí ke všem serverům.</string>
<string name="accept_feature_set_1_day">Nastavit 1 den</string>
<string name="connection_error_auth">Chyba spojení (AUTH)</string>
<string name="sender_may_have_deleted_the_connection_request">Odesílatel možná smazal požadavek připojení</string>
<string name="error_smp_test_server_auth">Server vyžaduje autorizaci pro vytváření front, zkontrolujte heslo</string>
<string name="smp_server_test_delete_queue">Odstranit frontu</string>
<string name="delete_group_menu_action">Smazat</string>
<string name="delete_pending_connection__question">Smazat čekající připojení\?</string>
<string name="icon_descr_settings">Nastavení</string>
<string name="image_descr_qr_code">QR kód</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">Váš kontakt může z aplikace naskenovat QR kód.</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">Pokud se nemůžete setkat osobně, ukažte ve <b>videohovoru QR kód</b> nebo sdílejte odkaz.</string>
<string name="scan_code">Skenovat kód</string>
<string name="incorrect_code">Nesprávný bezpečnostní kód!</string>
<string name="scan_code_from_contacts_app">Naskenujte bezpečnostní kód z aplikace vašeho kontaktu.</string>
<string name="mark_code_verified">Označit jako ověřený</string>
<string name="clear_verification">Jasné ověření</string>
<string name="to_verify_compare">Chcete-li ověřit koncové šifrování u svého kontaktu, porovnejte (nebo naskenujte) kód na svých zařízeních.</string>
<string name="your_settings">Vaše nastavení</string>
<string name="your_simplex_contact_address">Vaše adresa <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="database_passphrase_and_export">Heslo databáze a export</string>
<string name="your_chat_profiles">Chat profily</string>
<string name="chat_with_the_founder">Zaslat otázky a nápady</string>
<string name="smp_servers_test_server">Test serveru</string>
<string name="enter_one_ICE_server_per_line">Servery ICE (jeden na řádek)</string>
<string name="network_use_onion_hosts_required_desc">Pro připojení budou vyžadováni Onion hostitelé.</string>
<string name="update_network_session_mode_question">Aktualizovat režim dopravní izolace\?</string>
<string name="app_version_code">Sestavení aplikace: %s</string>
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">Můžete sdílet svou adresu jako odkaz nebo jako QR kód - kdokoli se k vám bude moci připojit. O své kontakty nepřijdete, pokud ji později smažete.</string>
<string name="share_link">Sdílet odkaz</string>
<string name="delete_address">Smazat adresu</string>
<string name="full_name__field">Celé jméno:</string>
<string name="your_current_profile">Váš současný profil</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery">Pro zachování vašeho soukromí používá aplikace místo push oznámení <b><xliff:g id="appName">SimpleX</xliff:g> službu na pozadí</b> - denně využije několik procent baterie.</string>
<string name="periodic_notifications">Pravidelná oznámení</string>
<string name="simplex_service_notification_title"><xliff:g id="appNameFull">SimpleX Chat</xliff:g> služba</string>
<string name="simplex_service_notification_text">Příjem zpráv…</string>
<string name="ntf_channel_messages">Zprávy SimpleX Chat</string>
<string name="settings_notification_preview_mode_title">Zobrazení náhledu</string>
<string name="settings_notification_preview_title">Náhled oznámení</string>
<string name="notifications_mode_off">Spuštěna při otevřené aplikaci</string>
<string name="notifications_mode_periodic">Spouští se pravidelně</string>
<string name="notifications_mode_service">Vždy zapnuta</string>
<string name="notifications_mode_periodic_desc">Každých 10 minut kontroluje nové zprávy, po dobu až 1 minuty</string>
<string name="notification_preview_mode_contact_desc">Zobrazí pouze kontakt</string>
<string name="notification_preview_somebody">Skrytý kontakt:</string>
<string name="la_notice_turn_on">Zapněte funkci</string>
<string name="auth_simplex_lock_turned_on">Zámek SimpleX zapnut</string>
<string name="auth_unlock">Odemknout</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Ověřování zařízení není povoleno. Jakmile povolíte ověřování zařízení, můžete zámek SimpleX Lock zapnout prostřednictvím Nastavení.</string>
<string name="auth_device_authentication_is_disabled_turning_off">Ověřování zařízení je zakázáno. Zámek SimpleX je vypnut.</string>
<string name="edit_verb">Upravit</string>
<string name="delete_verb">Smazat</string>
<string name="for_everybody">Pro všechny</string>
<string name="icon_descr_sent_msg_status_sent">odesláno</string>
<string name="contact_connection_pending">připojování…</string>
<string name="images_limit_desc">Současně lze odeslat pouze 10 obrázků</string>
<string name="image_decoding_exception_title">Chyba dekódování</string>
<string name="image_saved">Obrázek uložen do galerie</string>
<string name="icon_descr_file">Soubor</string>
<string name="large_file">Velký soubor!</string>
<string name="file_will_be_received_when_contact_is_online">Soubor bude přijat, až bude váš kontakt online, vyčkejte prosím, nebo se podívejte později!</string>
<string name="file_saved">Soubor uložen</string>
<string name="file_not_found">Soubor nenalezen</string>
<string name="voice_message_with_duration">Hlasová zpráva (<xliff:g id="duration">%1$s</xliff:g>)</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">Kontakt a všechny zprávy budou smazány - nelze to vzít zpět!</string>
<string name="button_delete_contact">Smazat kontakt</string>
<string name="text_field_set_contact_placeholder">Nastavení jména kontaktu…</string>
<string name="view_security_code">Zobrazení bezpečnostního kódu</string>
<string name="icon_descr_record_voice_message">Nahrát hlasovou zprávu</string>
<string name="voice_messages_prohibited">Hlasové zprávy jsou zakázány!</string>
<string name="ask_your_contact_to_enable_voice">Prosím, požádejte kontaktní osobu, aby umožnila odesílání hlasových zpráv.</string>
<string name="send_live_message_desc">Poslat živou zprávu - zpráva se bude aktualizovat pro příjemce během psaní.</string>
<string name="share_one_time_link">Vytvořit jednorázovou pozvánku</string>
<string name="scan_QR_code">Skenovat QR kód</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">( skenovat nebo vložit ze schránky)</string>
<string name="edit_image">Upravit obrázek</string>
<string name="delete_image">Smazat obrázek</string>
<string name="callstatus_error">chyba volání</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">Protokol a kód s otevřeným zdrojovým kódem - servery může provozovat kdokoli.</string>
<string name="create_your_profile">Vytvořte si svůj profil</string>
<string name="make_private_connection">Vytvořte si soukromé připojení</string>
<string name="encrypted_video_call">Videohovor šifrovaný e2e</string>
<string name="encrypted_audio_call">e2e šifrovaný audio hovor</string>
<string name="status_contact_has_e2e_encryption">kontakt má šifrování e2e</string>
<string name="status_contact_has_no_e2e_encryption">kontakt nemá šifrování e2e</string>
<string name="call_connection_peer_to_peer">peer-to-peer</string>
<string name="call_connection_via_relay">přes relé</string>
<string name="icon_descr_hang_up">Zavěsit</string>
<string name="icon_descr_video_off">Video vypnuto</string>
<string name="icon_descr_video_on">Video zapnuto</string>
<string name="icon_descr_audio_off">Zvuk vypnutý</string>
<string name="integrity_msg_bad_id">špatné ID zprávy</string>
<string name="integrity_msg_duplicate">duplicitní zpráva</string>
<string name="alert_title_skipped_messages">Přeskočené zprávy</string>
<string name="privacy_and_security">Ochrana osobních údajů a zabezpečení</string>
<string name="your_privacy">Vaše soukromí</string>
<string name="protect_app_screen">Skrývat aplikaci</string>
<string name="send_link_previews">Odesílat náhledy odkazů</string>
<string name="full_backup">Zálohovat data aplikace</string>
<string name="confirm_new_passphrase">Potvrdit frázi…</string>
<string name="error_with_info">Chyba: %s</string>
<string name="leave_group_question">Opustit skupinu\?</string>
<string name="icon_descr_group_inactive">Skupina je neaktivní</string>
<string name="rcv_group_event_member_left">odešel</string>
<string name="clear_contacts_selection_button">Vyčistit</string>
<string name="switch_verb">Přepnout</string>
<string name="member_role_will_be_changed_with_notification">Role bude změněna na \"%s\". Všichni ve skupině budou informováni.</string>
<string name="error_removing_member">Chyba odebírání člena</string>
<string name="error_saving_group_profile">Chyba ukládání profilu skupiny</string>
<string name="network_option_seconds_label">vteřin</string>
<string name="incognito_info_allows">Umožňuje mít v jednom chat profilu mnoho anonymních spojení bez sdílení údajů mezi nimi.</string>
<string name="incognito_info_share">Pokud s někým sdílíte inkognito profil, bude použit pro skupiny, do kterých vás pozve.</string>
<string name="theme_system">Systémové</string>
<string name="voice_messages">Hlasové zprávy</string>
<string name="both_you_and_your_contacts_can_delete">Vy i váš kontakt můžete nevratně mazat odeslané zprávy.</string>
<string name="ttl_m">%dm</string>
<string name="ttl_mth">%dmth</string>
<string name="ttl_hours">%d hodin</string>
<string name="ttl_h">%dh</string>
<string name="ttl_d">%dd</string>
<string name="v4_2_security_assessment">Posouzení bezpečnosti</string>
<string name="v4_2_security_assessment_desc">Bezpečnost SimpleX Chat byla prověřena společností Trail of Bits.</string>
<string name="v4_3_irreversible_message_deletion">Nevratné mazání zpráv</string>
<string name="v4_3_improved_server_configuration">Vylepšena konfigurace serveru</string>
<string name="v4_3_improved_privacy_and_security">Vylepšena ochrana soukromí a zabezpečení</string>
<string name="v4_3_improved_privacy_and_security_desc">Skryta obrazovka aplikace v posledních aplikacích.</string>
<string name="v4_4_disappearing_messages_desc">Odeslané zprávy se po uplynutí nastavené doby odstraní.</string>
<string name="v4_4_live_messages">Živé zprávy</string>
<string name="v4_4_live_messages_desc">Příjemci uvidí aktualizaci během psaní.</string>
<string name="v4_4_verify_connection_security">Ověření zabezpečení připojení</string>
<string name="v4_4_french_interface">Francouzské rozhraní</string>
<string name="v4_4_french_interface_descr">Díky uživatelům - překládejte prostřednictvím Weblate!</string>
<string name="v4_5_multiple_chat_profiles">Více chat profilů</string>
<string name="v4_5_multiple_chat_profiles_descr">Různá jména, avataři a izolace přenosu.</string>
<string name="v4_5_message_draft">Návrh zpráv</string>
<string name="v4_5_message_draft_descr">Zachování posledního návrhu zprávy s přílohami.</string>
<string name="v4_5_transport_isolation">Izolace přenosu</string>
<string name="v4_5_transport_isolation_descr">Podle chat profilu (výchozí) nebo podle připojení (BETA).</string>
<string name="you_will_join_group">Připojíte se ke skupině, na kterou odkazuje tento odkaz, a spojíte se s jejími členy.</string>
<string name="connect_via_link_verb">Připojení</string>
<string name="connected_to_server_to_receive_messages_from_contact">Jste připojeni k serveru, který se používá k přijímání zpráv od tohoto kontaktu.</string>
<string name="trying_to_connect_to_server_to_receive_messages_with_error">Pokoušíte se připojit k serveru používaném pro příjem zpráv od tohoto kontaktu (chyba: <xliff:g id="errorMsg">%1$s</xliff:g>).</string>
<string name="marked_deleted_description">označit jako smazáno</string>
<string name="sending_files_not_yet_supported">Odesílání souborů zatím není podporováno</string>
<string name="receiving_files_not_yet_supported">Přijímání souborů zatím není podporováno</string>
<string name="sender_you_pronoun">ty</string>
<string name="unknown_message_format">neznámý formát zprávy</string>
<string name="invalid_message_format">neplatný formát zprávy</string>
<string name="live">ŽIVĚ</string>
<string name="description_via_group_link_incognito">inkognito přes skupinový odkaz</string>
<string name="ensure_smp_server_address_are_correct_format_and_unique">Ujistěte se, že adresy serverů SMP jsou ve správném formátu, oddělené na řádcích a nejsou duplicitní.</string>
<string name="failed_to_create_user_title">Chyba vytváření profilu!</string>
<string name="failed_to_create_user_duplicate_title">Duplicitní zobrazované jméno!</string>
<string name="failed_to_active_user_title">Chyba přepínání profilu!</string>
<string name="error_joining_group">Chyba připojování ke skupině</string>
<string name="cannot_receive_file">Nelze přijmout soubor</string>
<string name="sender_cancelled_file_transfer">Odesílatel zrušil přenos souboru.</string>
<string name="error_receiving_file">Chyba příjmu souboru</string>
<string name="error_creating_address">Chyba vytváření adresy</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Zkontrolujte, zda jste použili správný odkaz, nebo požádejte kontakt, aby vám poslal jiný.</string>
<string name="connection_error_auth_desc">Pokud váš kontakt neodstranil připojení nebo tento odkaz již nebyl použit, může se jednat o chybu nahlaste ji.
\nChcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu na připojení a zkontrolujte, zda máte stabilní připojení k síti.</string>
<string name="error_deleting_contact">Chyba mazání kontaktu</string>
<string name="error_deleting_group">Chyba mazání skupiny</string>
<string name="error_deleting_contact_request">Chyba mazání žádosti kontaktu</string>
<string name="error_deleting_pending_contact_connection">Chyba mazání probíhajícího připojení kontaktu</string>
<string name="error_smp_test_failed_at_step">Test selhal v kroku %s.</string>
<string name="error_smp_test_certificate">Je možné, že otisk certifikátu v adrese serveru je nesprávný.</string>
<string name="smp_server_test_connect">Připojit</string>
<string name="smp_server_test_disconnect">Odpojit</string>
<string name="error_deleting_user">Chyba mazání uživatelského profilu</string>
<string name="icon_descr_instant_notifications">Okamžitá oznámení</string>
<string name="service_notifications_disabled">Okamžitá oznámení jsou vypnutá!</string>
<string name="turning_off_service_and_periodic">Je aktivní optimalizace baterie, která vypíná službu na pozadí a pravidelné požadavky na nové zprávy. Můžete ji znovu povolit prostřednictvím nastavení.</string>
<string name="periodic_notifications_disabled">Pravidelná oznámení jsou vypnuta!</string>
<string name="database_initialization_error_desc">Databáze nefunguje správně. Klepnutím se dozvíte více</string>
<string name="notifications_mode_off_desc">Aplikace může přijímat oznámení pouze při svém běhu, žádná služba na pozadí nebude spuštěna</string>
<string name="notification_display_mode_hidden_desc">Skryje kontakt i zprávu</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">Chcete-li chránit své informace, zapněte zámek SimpleX Lock.
\nPřed zapnutím této funkce budete vyzváni k dokončení ověření.</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">Při spuštění, nebo obnovení aplikace po 30 sekundách, budete vyzváni k odemčení.</string>
<string name="auth_disable_simplex_lock">Vypnout zámek SimpleX</string>
<string name="auth_confirm_credential">Potvrďte vzor</string>
<string name="auth_unavailable">Ověřování není k dispozici</string>
<string name="auth_stop_chat">Zastavit chat</string>
<string name="auth_open_chat_console">Otevřete chat konzoli</string>
<string name="message_delivery_error_title">Chyba doručení zprávy</string>
<string name="message_delivery_error_desc">Tento kontakt s největší pravděpodobností smazal spojení s vámi.</string>
<string name="save_verb">Uložit</string>
<string name="reveal_verb">Odhalit</string>
<string name="hide_verb">Skrýt</string>
<string name="delete_message__question">Smazat zprávu\?</string>
<string name="delete_message_mark_deleted_warning">Zpráva bude označena ke smazání. Příjemce (příjemci) bude moci tuto zprávu odhalit.</string>
<string name="for_me_only">Smazat pro mě</string>
<string name="icon_descr_edited">upraveno</string>
<string name="icon_descr_sent_msg_status_unauthorized_send">neautorizované odeslání</string>
<string name="group_preview_you_are_invited">jste pozváni do skupiny</string>
<string name="group_preview_join_as">připojit jako %s</string>
<string name="group_connection_pending">připojuji…</string>
<string name="tap_to_start_new_chat">Začněte nový chat</string>
<string name="chat_with_developers">Chat s vývojáři</string>
<string name="you_have_no_chats">Nemáte žádné konverzace</string>
<string name="icon_descr_cancel_image_preview">Zrušit náhled obrázku</string>
<string name="share_message">Sdílet zprávu…</string>
<string name="share_image">Sdílet obrázek…</string>
<string name="icon_descr_cancel_file_preview">Zrušit náhled souboru</string>
<string name="images_limit_title">Příliš mnoho obrázků!</string>
<string name="waiting_for_file">Čekání na soubor</string>
<string name="notifications">Oznámení</string>
<string name="delete_contact_question">Smazat kontakt\?</string>
<string name="icon_descr_server_status_pending">Čeká na vyřízení</string>
<string name="verify_security_code">Ověřit bezpečnostní kód</string>
<string name="icon_descr_send_message">Odeslat zprávu</string>
<string name="only_group_owners_can_enable_voice">Pouze majitelé skupin mohou povolit zasílání hlasových zpráv.</string>
<string name="send_live_message">Odeslat živou zprávu</string>
<string name="live_message">Živá zpráva!</string>
<string name="connect_via_link_or_qr">Připojit se prostřednictvím odkazu / QR kódu</string>
<string name="thank_you_for_installing_simplex">Děkujeme za instalaci <xliff:g id="appNameFull">SimpleX Chat</xliff:g>!</string>
<string name="you_can_connect_to_simplex_chat_founder">Můžete se <font color="#0088ff">připojit k <xliff:g id="appNameFull">SimpleX Chat</xliff:g> vývojářům, položit jim případné dotazy a získat aktualizace</font>.</string>
<string name="to_connect_via_link_title">Připojení prostřednictvím odkazu</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Pokud jste dostali <xliff:g id="appName">SimpleX Chat</xliff:g> pozvánku, můžete ji otevřít v prohlížeči:</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Pokud zvolíte odmítnutí, odesílatel NEBUDE upozorněn.</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app">📱 telefon: <b>Otevřete v mobilní aplikaci</b>, potom klikněte na <b>Připojit</b>.</string>
<string name="reject_contact_button">Odmítnout</string>
<string name="clear_chat_button">Smazat chat</string>
<string name="clear_chat_menu_action">Vyčistit</string>
<string name="delete_contact_menu_action">Smazat</string>
<string name="set_contact_name">Nastavit jméno kontaktu</string>
<string name="you_accepted_connection">Přijali jste spojení</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">K dokončení připojení, musí být váš kontakt online.
\nToto připojení můžete zrušit a kontakt odebrat (a zkusit to později s novým odkazem).</string>
<string name="contact_wants_to_connect_with_you">Chce se s vámi spojit!</string>
<string name="icon_descr_profile_image_placeholder">Zástupný symbol profilového obrázku</string>
<string name="image_descr_profile_image">profilový obrázek</string>
<string name="icon_descr_close_button">Tlačítko Zavřít</string>
<string name="alert_title_contact_connection_pending">Kontakt ještě není připojen!</string>
<string name="image_descr_link_preview">náhled odkazu</string>
<string name="icon_descr_cancel_link_preview">Zrušit náhled odkazu</string>
<string name="image_descr_simplex_logo"><xliff:g id="appName">SimpleX</xliff:g> Logo</string>
<string name="icon_descr_email">E-mail</string>
<string name="icon_descr_more_button">Více</string>
<string name="show_QR_code">Zobrazit QR kód</string>
<string name="invalid_QR_code">Neplatný QR kód</string>
<string name="this_QR_code_is_not_a_link">Tento QR kód není odkaz!</string>
<string name="invalid_contact_link">Neplatný odkaz!</string>
<string name="this_link_is_not_a_valid_connection_link">Tento odkaz není platným odkazem pro připojení!</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">Pokud se nemůžete setkat osobně, můžete <b>skenovat QR kód ve videohovoru</b> nebo může váš kontakt sdílet pozvánku.</string>
<string name="connect_via_link">Připojte se prostřednictvím odkazu</string>
<string name="connect_button">Připojit</string>
<string name="paste_button">Vložit</string>
<string name="this_string_is_not_a_connection_link">Tento řetězec není odkazem na připojení!</string>
<string name="you_can_also_connect_by_clicking_the_link">Můžete se také připojit kliknutím na odkaz. Pokud se otevře v prohlížeči, klikněte na tlačítko <b>Otevřít v mobilní aplikaci</b>.</string>
<string name="is_not_verified">%s není ověřeno</string>
<string name="how_to_use_simplex_chat">Návod k použití</string>
<string name="markdown_help">Nápověda k markdown</string>
<string name="smp_servers_save">Uložit servery</string>
<string name="markdown_in_messages">Markdown ve zprávách</string>
<string name="smp_servers_test_servers">Testovat servery</string>
<string name="smp_servers_preset_server">Přednastavený server</string>
<string name="smp_servers_your_server">Váš server</string>
<string name="smp_servers_your_server_address">Adresa vašeho serveru</string>
<string name="smp_servers_use_server">Použít server</string>
<string name="smp_servers_use_server_for_new_conn">Použít pro nová připojení</string>
<string name="smp_servers_per_user">Servery pro nová připojení vašeho aktuálního chat profilu.</string>
<string name="use_simplex_chat_servers__question">Použít <xliff:g id="appNameFull">SimpleX Chat</xliff:g> servery\?</string>
<string name="using_simplex_chat_servers">Použití <xliff:g id="appNameFull">SimpleX Chat</xliff:g> serverů.</string>
<string name="saved_ICE_servers_will_be_removed">Uložené servery WebRTC ICE budou odstraněny.</string>
<string name="error_saving_ICE_servers">Chyba ukládání serverů ICE</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">Ujistěte se, že adresy serverů WebRTC ICE jsou ve správném formátu, oddělené na řádcích a nejsou duplicitní.</string>
<string name="save_servers_button">Uložit</string>
<string name="network_and_servers">Síť a servery</string>
<string name="network_socks_toggle">Použít proxy server SOCKS (port 9050)</string>
<string name="update_onion_hosts_settings_question">Aktualizovat nastavení hostitelů .onion\?</string>
<string name="network_use_onion_hosts">Použít hostitele .onion</string>
<string name="network_use_onion_hosts_prefer">Když bude dostupný</string>
<string name="network_use_onion_hosts_required">Povinné</string>
<string name="network_use_onion_hosts_prefer_desc">Onion hostitelé budou použiti, pokud jsou k dispozici.</string>
<string name="network_use_onion_hosts_no_desc">Onion hostitelé nebudou použiti.</string>
<string name="network_use_onion_hosts_prefer_desc_in_alert">Onion hostitelé budou použiti, pokud jsou k dispozici.</string>
<string name="network_use_onion_hosts_required_desc_in_alert">Pro připojení budou vyžadováni Onion hostitelé.</string>
<string name="network_session_mode_transport_isolation">Izolace přenosu</string>
<string name="network_session_mode_user_description">A separate TCP connection (and SOCKS credential) will be used <b>for each chat profile you have in the app</b>.</string>
<string name="network_session_mode_entity_description">Oddělit TCP připojení (a SOCKS pověření) bude použito <b>pro všechny kontakty a členy skupin</b>.
\n<b>Upozornění</b>: Pokud máte mnoho připojení, může být spotřeba baterie a provoz podstatně vyšší a některá připojení mohou selhat.</string>
<string name="appearance_settings">Vzhled</string>
<string name="app_version_title">Verze aplikace</string>
<string name="app_version_name">Verze aplikace: v%s</string>
<string name="core_version">Verze jádra: v%s</string>
<string name="core_build_timestamp">Jádro sestaveno: %s</string>
<string name="delete_address__question">Smazat adresu\?</string>
<string name="all_your_contacts_will_remain_connected">Všechny vaše kontakty zůstanou připojeny.</string>
<string name="contact_requests">Žádosti o kontakt</string>
<string name="display_name__field">Zobrazované jméno:</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Váš profil je uložen v zařízení a je sdílen pouze s vašimi kontakty.
\n
\n<xliff:g id="appName">SimpleX</xliff:g> servery váš profil vidět nemohou.</string>
<string name="save_preferences_question">Uložit předvolby\?</string>
<string name="save_and_notify_contact">Uložit a upozornit kontakt</string>
<string name="save_and_notify_contacts">Uložit a upozornit kontakty</string>
<string name="you_control_your_chat">Kontrolujete chat!</string>
<string name="we_do_not_store_contacts_or_messages_on_servers">Na serverech neukládáme žádné vaše kontakty ani zprávy (po doručení).</string>
<string name="your_profile_is_stored_on_your_device">Váš profil, kontakty a doručené zprávy jsou uloženy ve vašem zařízení.</string>
<string name="display_name">Zobrazované jméno</string>
<string name="full_name_optional__prompt">Celé jméno (volitelné)</string>
<string name="create_profile_button">Vytvořit</string>
<string name="how_to_use_markdown">Jak používat markdown</string>
<string name="you_can_use_markdown_to_format_messages__prompt">K formátování zpráv můžete použít markdown:</string>
<string name="italic">kurzíva</string>
<string name="strikethrough">přeškrtnout</string>
<string name="callstatus_missed">zmeškané volání</string>
<string name="callstatus_rejected">odmítnutý hovor</string>
<string name="callstatus_connecting">spojovací hovor…</string>
<string name="callstatus_ended">hovor ukončen <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="callstate_starting">začíná…</string>
<string name="callstate_waiting_for_answer">čeká na odpověď…</string>
<string name="callstate_waiting_for_confirmation">čekání na potvrzení…</string>
<string name="callstate_received_answer">obdržel odpověď…</string>
<string name="callstate_received_confirmation">obdržel potvrzení…</string>
<string name="callstate_connecting">připojení…</string>
<string name="privacy_redefined">Nové vymezení soukromí</string>
<string name="first_platform_without_user_ids">1. platforma bez jakýchkoliv uživatelských identifikátorů soukromá již od návrhu.</string>
<string name="immune_to_spam_and_abuse">Odolná vůči spamu a zneužití</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">K ochraně soukromí, místo uživatelských ID užívaných všemi ostatními platformami, <xliff:g id="appName">SimpleX</xliff:g> používá identifikátory pro fronty zpráv, zvlášť pro každý z vašich kontaktů.</string>
<string name="many_people_asked_how_can_it_deliver">Mnoho lidí se ptá: <i>když <xliff:g id="appName">SimpleX</xliff:g> nemá žádný identifikátor uživatelů, jak může doručovat zprávy\?</i></string>
<string name="you_control_servers_to_receive_your_contacts_to_send">Vy určujete, přes které servery <b>přijímat</b> zprávy, vaše kontakty servery, které používáte k zasílání zpráv.</string>
<string name="read_more_in_github">Další informace najdete v našem repozitáři na GitHubu.</string>
<string name="read_more_in_github_with_link">Další informace najdete v našem <font color="#0088ff">úložišti GitHub</font>.</string>
<string name="use_chat">Použijte chat</string>
<string name="onboarding_notifications_mode_subtitle">Lze změnit později v nastavení.</string>
<string name="onboarding_notifications_mode_off">Když aplikace běží</string>
<string name="onboarding_notifications_mode_service">Okamžité</string>
<string name="onboarding_notifications_mode_off_desc"><b>Nejlepší pro baterii</b>. Budete přijímat oznámení pouze když aplikace běží, služba na pozadí NEBUDE použita.</string>
<string name="onboarding_notifications_mode_periodic_desc"><b>Dobré pro baterii</b>. Služba na pozadí bude kontrolovat nové zprávy každých 10 minut. Můžete zmeškat hovory a naléhavé zprávy.</string>
<string name="onboarding_notifications_mode_service_desc"><b>Využívá více baterie</b>! Služba na pozadí je vždy spuštěna - oznámení se zobrazí, jakmile jsou zprávy k dispozici.</string>
<string name="paste_the_link_you_received">Vložení přijatého odkazu</string>
<string name="incoming_video_call">Příchozí videohovor</string>
<string name="incoming_audio_call">Příchozí zvukový hovor</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g> se s vámi chce spojit prostřednictvím</string>
<string name="video_call_no_encryption">videohovoru (nešifrovaného e2e).</string>
<string name="audio_call_no_encryption">zvukový hovor (nešifrováno e2e)</string>
<string name="reject">Odmítnout</string>
<string name="your_calls">Vaše hovory</string>
<string name="always_use_relay">Spojení přes relé</string>
<string name="show_call_on_lock_screen">Zobrazit</string>
<string name="no_call_on_lock_screen">Zakázat</string>
<string name="your_ice_servers">Vaše servery ICE</string>
<string name="webrtc_ice_servers">WebRTC servery ICE</string>
<string name="relay_server_protects_ip">Přenosový server chrání vaši IP adresu, ale může sledovat dobu trvání hovoru.</string>
<string name="relay_server_if_necessary">Přenosový server se používá pouze v případě potřeby. Jiná strana může sledovat vaši IP adresu.</string>
<string name="status_no_e2e_encryption">bez šifrování e2e</string>
<string name="icon_descr_flip_camera">Druhý foťák</string>
<string name="icon_descr_call_pending_sent">Čekající hovor</string>
<string name="icon_descr_call_missed">Zmeškaný hovor</string>
<string name="icon_descr_call_rejected">Odmítnutý hovor</string>
<string name="icon_descr_call_connecting">Spojování hovoru</string>
<string name="icon_descr_call_ended">Skončený hovor</string>
<string name="answer_call">Přijmout hovor</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g> přeskočená zpráva (zprávy)</string>
<string name="alert_text_skipped_messages_it_can_happen_when">Může se to stát, když:
\n1. Zprávy na serveru vyprší, pokud nebyly přijaty po dobu 30 dnů,
\n2. Server, který používáte pro příjem zpráv od tohoto kontaktu, byl aktualizován a restartován.
\n3. Spojení je narušeno.
\nPřipojte se k vývojářům prostřednictvím Nastavení, abyste mohli dostávat aktualizace o serverech.
\nBudeme přidávat redundantní servery, abychom zabránili ztrátě zpráv.</string>
<string name="settings_section_title_you">VY</string>
<string name="settings_section_title_support">PODPOŘIT SIMPLEX CHAT</string>
<string name="settings_section_title_develop">VÝVOJ</string>
<string name="settings_developer_tools">Nástroje pro vývojáře</string>
<string name="settings_section_title_incognito">inkognito mód</string>
<string name="your_chat_database">Chat databáze</string>
<string name="run_chat_section">SPUSTIT CHAT</string>
<string name="chat_is_running">Chat je spuštěn</string>
<string name="chat_is_stopped">Chat je zastaven</string>
<string name="chat_database_section">CHAT DATABÁZE</string>
<string name="database_passphrase">přístupová fráze databáze</string>
<string name="new_database_archive">Archiv nové databáze</string>
<string name="old_database_archive">Archiv staré databáze</string>
<string name="error_starting_chat">Chyba spouštění chatu</string>
<string name="stop_chat_question">Zastavit chat\?</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">Zastavte chat pro export, import nebo smazání chat databáze. Během zastavení, nebudete moci přijímat ani odesílat zprávy.</string>
<string name="stop_chat_confirmation">Zastavit</string>
<string name="set_password_to_export">Nastavte přístupovou frázi pro export</string>
<string name="set_password_to_export_desc">Databáze je šifrována pomocí náhodné přístupové fráze. Před exportem ji změňte.</string>
<string name="error_stopping_chat">Chyba zastavování chatu</string>
<string name="import_database_question">Importovat chat databázi\?</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Vaše aktuální chat databáze bude SMAZÁNA a NAHRAZENA importovanou databází.
\nTuto akci nelze vzít zpět - vaše profily, kontakty, zprávy a soubory budou nenávratně ztraceny.</string>
<string name="error_deleting_database">Chyba mazání chat databáze</string>
<string name="error_importing_database">Chyba importu chat databáze</string>
<string name="chat_database_deleted">Chat databáze odstraněna</string>
<string name="delete_files_and_media_for_all_users">Odstranit soubory všech chat profilů</string>
<string name="delete_files_and_media_all">Odstranit všechny soubory</string>
<string name="delete_files_and_media_desc">Tuto akci nelze vrátit zpět - všechny přijaté a odeslané soubory a média budou smazány. Obrázky s nízkým rozlišením zůstanou zachovány.</string>
<string name="no_received_app_files">Žádné přijaté ani odeslané soubory</string>
<string name="total_files_count_and_size">%d soubor(ů) s celkovou velikostí %s</string>
<string name="chat_item_ttl_none">nikdy</string>
<string name="chat_item_ttl_seconds">%s vteřin(y)</string>
<string name="messages_section_title">Zprávy</string>
<string name="messages_section_description">Toto nastavení se vztahuje na zprávy ve vašem aktuálním chat profilu.</string>
<string name="delete_messages_after">Smazat zprávy po</string>
<string name="enable_automatic_deletion_question">Povolit automatické mazání zpráv\?</string>
<string name="enable_automatic_deletion_message">Tuto akci nelze vzít zpět - zprávy odeslané a přijaté dříve, než bylo zvoleno, budou smazány. Může to trvat několik minut.</string>
<string name="error_changing_message_deletion">Chyba změny nastavení</string>
<string name="save_passphrase_in_keychain">Uložit frázi do úložiště klíčů</string>
<string name="database_encrypted">Databáze šifrována!</string>
<string name="error_encrypting_database">Chyba šifrování databáze</string>
<string name="encrypt_database">Šifrovat</string>
<string name="encrypted_with_random_passphrase">Databáze je šifrována pomocí náhodné přístupové fráze, musíte ji změnit.</string>
<string name="keychain_allows_to_receive_ntfs">K bezpečnému uložení přístupové fráze se použije úložiště klíčů Android, po restartování aplikace nebo změně přístupové fráze - umožní přijímání oznámení.</string>
<string name="you_have_to_enter_passphrase_every_time">Musíte zadat přístupovou frázi při každém spuštění aplikace - není uložena v zařízení.</string>
<string name="encrypt_database_question">Šifrovat databázi\?</string>
<string name="change_database_passphrase_question">Změnit přístupovou frázi databáze\?</string>
<string name="database_will_be_encrypted">Databáze bude šifrována.</string>
<string name="database_encryption_will_be_updated">Přístupová fráze databáze bude aktualizována a uložena do úložiště klíčů.</string>
<string name="database_passphrase_will_be_updated">Přístupová fráze databáze bude aktualizována.</string>
<string name="store_passphrase_securely_without_recover">Uložte prosím bezpečně přístupovou frázi, pokud ji ztratíte, NEBUDE možné přistupovat k chatu.</string>
<string name="wrong_passphrase">Špatná přístupová fráze k databázi</string>
<string name="encrypted_database">Šifrovaná databáze</string>
<string name="database_error">Chyba databáze</string>
<string name="keychain_error">Chyba klíčenky</string>
<string name="passphrase_is_different">Přístupová fráze databáze se liší od té uložené v klíčence.</string>
<string name="cannot_access_keychain">Nelze získat přístup ke klíčence pro uložení přístupová fráze k databázi.</string>
<string name="unknown_database_error_with_info">Neznámá chyba databáze: %s</string>
<string name="wrong_passphrase_title">Špatná přístupová fráze!</string>
<string name="enter_correct_passphrase">Zadejte správnou přístupovou frázi.</string>
<string name="enter_passphrase">Zadejte přístupovou frázi…</string>
<string name="database_backup_can_be_restored">Pokus o změnu přístupové fráze databáze nebyl dokončen.</string>
<string name="restore_database_alert_title">Obnovit zálohu databáze\?</string>
<string name="restore_database_alert_confirm">Obnovit</string>
<string name="database_restore_error">Chyba obnovení databáze</string>
<string name="restore_passphrase_not_found_desc">Heslo nebylo v klíčence nalezeno, zadejte jej prosím ručně. K této situaci mohlo dojít, pokud jste obnovili data aplikace pomocí zálohovacího nástroje. Pokud tomu tak není, obraťte se na vývojáře.</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Chat můžete spustit v Nastavení / Databáze nebo restartováním aplikace.</string>
<string name="save_archive">Uložit archiv</string>
<string name="delete_archive">Smazat archiv</string>
<string name="group_invitation_item_description">pozvánka do skupiny <xliff:g id="group_name">%1$s</xliff:g></string>
<string name="archive_created_on_ts">Vytvořeno dne <xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">Jste zváni do skupiny. Připojte se k členům skupiny.</string>
<string name="join_group_incognito_button">Připojit se inkognito</string>
<string name="joining_group">Připojit ke skupině</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">Připojili jste se k této skupině. Připojení k pozvání člena skupiny.</string>
<string name="you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved">Přestanete dostávat zprávy z této skupiny. Chat historie bude zachována.</string>
<string name="alert_title_group_invitation_expired">Platnost pozvánky vypršela!</string>
<string name="alert_message_group_invitation_expired">Pozvánka do skupiny již není platná, byla odstraněna odesílatelem.</string>
<string name="alert_message_no_group">Tato skupina již neexistuje.</string>
<string name="alert_title_cant_invite_contacts_descr">Pro tuto skupinu používáte anonymní profil - abyste zabránili sdílení svého hlavního profilu, není pozvání kontaktů povoleno.</string>
<string name="you_sent_group_invitation">Odeslali jste pozvánku do skupiny</string>
<string name="you_are_invited_to_group">Jste pozváni do skupiny</string>
<string name="group_invitation_tap_to_join">Klepnutím se připojíte</string>
<string name="group_invitation_tap_to_join_incognito">Klepnutím se připojíte inkognito</string>
<string name="you_joined_this_group">Připojili jste se k této skupině</string>
<string name="you_rejected_group_invitation">Odmítli jste pozvánku do skupiny</string>
<string name="group_invitation_expired">Platnost pozvánky do skupiny vypršela</string>
<string name="rcv_group_event_member_added">pozvaný <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="rcv_group_event_member_connected">připojen</string>
<string name="rcv_group_event_changed_member_role">změnil roli %s na %s</string>
<string name="rcv_group_event_changed_your_role">změnil svou roli na %s</string>
<string name="rcv_group_event_member_deleted">odstraněn <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="rcv_group_event_user_deleted">odstranil vás</string>
<string name="rcv_group_event_group_deleted">skupina odstraněna</string>
<string name="rcv_group_event_updated_group_profile">aktualizoval profil skupiny</string>
<string name="rcv_group_event_invited_via_your_group_link">pozváni prostřednictvím odkazu na vaši skupinu</string>
<string name="snd_group_event_group_profile_updated">profil skupiny aktualizován</string>
<string name="rcv_conn_event_switch_queue_phase_changing">změna adresy…</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">změnili jste adresu pro %s</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">změna adresy pro %s…</string>
<string name="snd_conn_event_switch_queue_phase_completed">změnili jste adresu</string>
<string name="snd_conn_event_switch_queue_phase_changing">změna adresy…</string>
<string name="group_member_role_member">člen</string>
<string name="group_member_role_owner">vlastník</string>
<string name="group_member_status_removed">odstraněn</string>
<string name="group_member_status_left">odešel</string>
<string name="group_member_status_group_deleted">skupina smazána</string>
<string name="group_member_status_invited">pozván</string>
<string name="group_member_status_introduced">představen (zaveden)</string>
<string name="group_member_status_intro_invitation">připojení (pozvánka na představení)</string>
<string name="group_member_status_accepted">připojen (přijat)</string>
<string name="group_member_status_announced">připojen (oznámen)</string>
<string name="group_member_status_connected">připojen</string>
<string name="group_member_status_complete">komplet</string>
<string name="group_member_status_creator">tvůrce</string>
<string name="group_member_status_connecting">připojování</string>
<string name="no_contacts_to_add">Žádné kontakty k přidání</string>
<string name="new_member_role">Nová role člena</string>
<string name="invite_to_group_button">Pozvat do skupiny</string>
<string name="skip_inviting_button">Přeskočit pozvání členů</string>
<string name="select_contacts">Vybrat kontakty</string>
<string name="icon_descr_contact_checked">Zkontrolované kontakty</string>
<string name="num_contacts_selected"><xliff:g id="num_contacts">%1$s</xliff:g> kontakt(y) vybrán(y)</string>
<string name="button_add_members">Pozvat členy</string>
<string name="group_info_section_title_num_members"><xliff:g id="num_members">%1$s</xliff:g> MEMBERS</string>
<string name="group_info_member_you">vy: <xliff:g id="group_info_you">%1$s</xliff:g></string>
<string name="button_delete_group">Smazat skupinu</string>
<string name="delete_group_question">Smazat skupinu\?</string>
<string name="delete_group_for_all_members_cannot_undo_warning">Skupina bude smazána pro všechny členy - nelze to vzít zpět!</string>
<string name="delete_group_for_self_cannot_undo_warning">Skupina bude smazána pouze pro vás - toto nelze vzít zpět!</string>
<string name="button_leave_group">Opustit skupinu</string>
<string name="button_edit_group_profile">Upravit profil skupiny</string>
<string name="group_link">Odkaz skupiny</string>
<string name="create_group_link">Vytvořit odkaz skupiny</string>
<string name="delete_link">Smazat odkaz</string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">Můžete sdílet odkaz nebo QR kód - ke skupině se bude moci připojit kdokoli. O členy skupiny nepřijdete, pokud ji později odstraníte.</string>
<string name="error_creating_link_for_group">Chyba vytváření odkazu skupiny</string>
<string name="error_deleting_link_for_group">Chyba odstraňování odkazu skupiny</string>
<string name="only_group_owners_can_change_prefs">Předvolby skupiny mohou měnit pouze vlastníci skupiny.</string>
<string name="section_title_for_console">PRO KONSOLE</string>
<string name="info_row_local_name">Místní název</string>
<string name="info_row_database_id">ID databáze</string>
<string name="button_remove_member">Odstranit člena</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">Člen bude odstraněn ze skupiny - toto nelze vzít zpět!</string>
<string name="remove_member_confirmation">Odstranit</string>
<string name="role_in_group">Role</string>
<string name="change_role">Změnit roli</string>
<string name="change_verb">Změnit</string>
<string name="member_role_will_be_changed_with_invitation">Role bude změněna na \"%s\". Člen obdrží novou pozvánku.</string>
<string name="error_changing_role">Chyba změny role</string>
<string name="conn_level_desc_direct">přímo</string>
<string name="sending_via">Odesíláno přez</string>
<string name="network_status">Stav sítě</string>
<string name="switch_receiving_address">Přepínač přijímací adresy</string>
<string name="group_is_decentralized">Skupina je plně decentralizovaná - viditelná pouze pro členy.</string>
<string name="group_unsupported_incognito_main_profile_sent">Zde není podporován režim inkognito - členům skupiny bude zaslán váš hlavní profil.</string>
<string name="save_group_profile">Uložení profilu skupiny</string>
<string name="network_options_reset_to_defaults">Obnovit výchozí nastavení</string>
<string name="network_option_tcp_connection_timeout">Časový limit připojení TCP</string>
<string name="network_option_protocol_timeout">Časový limit protokolu</string>
<string name="network_option_ping_interval">Interval PING</string>
<string name="network_option_ping_count">Počet PING</string>
<string name="network_option_enable_tcp_keep_alive">Povolit TCP keep-alive</string>
<string name="update_network_settings_confirmation">Aktualizovat</string>
<string name="users_delete_question">Smazat chat profil\?</string>
<string name="users_delete_profile_for">Smazat chat profil pro</string>
<string name="users_delete_with_connections">Profil a připojení k serveru</string>
<string name="users_delete_data_only">Pouze místní data profilu</string>
<string name="incognito_random_profile_from_contact_description">Náhodný profil bude zaslán kontaktu, od kterého jste obdrželi tento odkaz.</string>
<string name="incognito_info_protects">Režim inkognito chrání soukromí vašeho hlavního profilu, jména a obrázku - pro každý nový kontakt je vytvořen nový náhodný profil.</string>
<string name="incognito_info_find">Chcete-li najít profil použitý pro inkognito připojení, klepněte na název kontaktu nebo skupiny v horní části.</string>
<string name="theme_light">Světlé</string>
<string name="theme_dark">Tmavé</string>
<string name="theme">Téma</string>
<string name="chat_preferences_contact_allows">Kontakt povolen</string>
<string name="chat_preferences_on">zapnuto</string>
<string name="chat_preferences_off">vypnuto</string>
<string name="chat_preferences">Chat předvolby</string>
<string name="contact_preferences">Předvolby kontaktu</string>
<string name="group_preferences">Předvolby skupiny</string>
<string name="direct_messages">Přímé zprávy</string>
<string name="full_deletion">Mazání všem</string>
<string name="feature_enabled">zapnuty</string>
<string name="feature_enabled_for_you">povoleno vám</string>
<string name="feature_off">vypnuty</string>
<string name="prohibit_sending_disappearing_messages">Mizící zprávy zakázány.</string>
<string name="contacts_can_mark_messages_for_deletion">Kontakty mohou označit zprávy ke smazání; vy je budete moci zobrazit.</string>
<string name="prohibit_sending_voice_messages">Hlasové zprávy zakázány.</string>
<string name="only_you_can_send_disappearing">Pouze vy můžete odesílat mizící zprávy.</string>
<string name="disappearing_prohibited_in_this_chat">Mizící zprávy jsou v tomto chatu zakázány.</string>
<string name="only_your_contact_can_delete">Nevratně mazat zprávy může pouze váš kontakt (vy je můžete označit ke smazání).</string>
<string name="both_you_and_your_contact_can_send_voice">Hlasové zprávy můžete posílat vy i váš kontakt.</string>
<string name="only_you_can_send_voice">Hlasové zprávy můžete posílat pouze vy.</string>
<string name="only_your_contact_can_send_voice">Hlasové zprávy může odesílat pouze váš kontakt.</string>
<string name="voice_prohibited_in_this_chat">Hlasové zprávy jsou v tomto chatu zakázány.</string>
<string name="prohibit_sending_disappearing">Posílání mizících zpráv zakázáno.</string>
<string name="prohibit_message_deletion">Nevratné mazání odeslaných zpráv zakázáno.</string>
<string name="prohibit_sending_voice">Hlasové zprávy zakázány.</string>
<string name="group_members_can_send_disappearing">Členové skupiny mohou posílat mizící zprávy.</string>
<string name="disappearing_messages_are_prohibited">Mizící zprávy jsou v této skupině zakázány.</string>
<string name="group_members_can_send_dms">Členové skupiny mohou posílat přímé zprávy.</string>
<string name="direct_messages_are_prohibited_in_chat">Přímé zprávy mezi členy jsou v této skupině zakázány.</string>
<string name="group_members_can_delete">Členové skupiny mohou nevratně mazat odeslané zprávy.</string>
<string name="message_deletion_prohibited_in_chat">Nevratné mazání zpráv je v této skupině zakázáno.</string>
<string name="group_members_can_send_voice">Členové skupiny mohou posílat hlasové zprávy.</string>
<string name="voice_messages_are_prohibited">Hlasové zprávy jsou v této skupině zakázány.</string>
<string name="delete_after">Smazat za</string>
<string name="ttl_month">%d měsíc</string>
<string name="ttl_months">%d měsíců</string>
<string name="ttl_day">%d den</string>
<string name="ttl_days">%d dnů</string>
<string name="ttl_week">%d týden</string>
<string name="ttl_weeks">%d týdnů</string>
<string name="ttl_w">%dw</string>
<string name="feature_offered_item">nabízeno %s</string>
<string name="feature_cancelled_item">zrušeno %s</string>
<string name="whats_new">Co je nového</string>
<string name="new_in_version">Novinky %s</string>
<string name="v4_2_auto_accept_contact_requests">Automatické přijímání žádostí o kontakt</string>
<string name="v4_2_auto_accept_contact_requests_desc">Volitelná uvítací zpráva.</string>
<string name="v4_3_voice_messages_desc">Max. 40 sekund, přijímá se okamžitě.</string>
<string name="v4_5_private_filenames">Soukromé názvy souborů</string>
<string name="v4_5_private_filenames_descr">Pro ochranu časového pásma, obrazové/hlasové soubory používají UTC.</string>
<string name="v4_5_reduced_battery_usage">Snížení spotřeby baterie</string>
<string name="v4_5_reduced_battery_usage_descr">Další vylepšení se chystají již brzy!</string>
<string name="v4_5_italian_interface">Italské rozhraní</string>
<string name="v4_5_italian_interface_descr">Díky uživatelům - překládejte prostřednictvím Weblate!</string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">Budete připojeni, jakmile bude zařízení vašeho kontaktu online, vyčkejte prosím nebo se podívejte později!</string>
<string name="your_contact_address">Vaše adresa</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">Váš chat profil bude odeslán
\nvašemu kontaktu</string>
<string name="your_chat_profiles_stored_locally">Vaše chat profily jsou uloženy lokálně, pouze ve vašem zařízení.</string>
<string name="your_chats">Vaše konverzace</string>
<string name="paste_connection_link_below_to_connect">Do níže uvedeného pole vložte odkaz, který jste obdrželi pro spojení s kontaktem.</string>
<string name="share_invitation_link">Sdílet pozvánku</string>
<string name="status_e2e_encrypted">koncově šifrované</string>
<string name="moderated_description">moderované</string>
<string name="moderated_item_description">moderovaný %s</string>
<string name="delete_member_message__question">Smazat zprávu člena\?</string>
<string name="moderate_verb">moderovaný</string>
<string name="observer_cant_send_message_desc">Kontaktujte prosím správce skupiny.</string>
<string name="you_are_observer">jste pozorovatel</string>
<string name="group_member_role_observer">pozorovatel</string>
<string name="moderate_message_will_be_deleted_warning">Zpráva bude smazána pro všechny členy.</string>
<string name="moderate_message_will_be_marked_warning">Zpráva bude pro všechny členy označena jako moderovaná.</string>
<string name="observer_cant_send_message_title">Nemůžete posílat zprávy!</string>
<string name="error_updating_link_for_group">Chyba aktualizace odkazu skupiny</string>
<string name="initial_member_role">Počáteční role</string>
<string name="language_system">Systém</string>
</resources>

View File

@@ -328,11 +328,12 @@
<string name="you_will_be_connected_when_your_contacts_device_is_online">Sie werden verbunden, sobald das Endgerät Ihres Kontakts online ist. Bitte warten oder schauen Sie später nochmal nach!</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">Zeigen Sie Ihrem Kontakt den QR-Code aus der App zum Scannen.</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">Wenn Sie sich nicht persönlich treffen können, können Sie <b>den QR-Code während eines Videoanrufs anzeigen</b> oder einen Einladungslink über einen anderen Kanal mit Ihrem Kontakt teilen.</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">Ihr Chat-Profil wird\nan Ihren Kontakt gesendet.</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">Ihr Chat-Profil wird
\nan Ihren Kontakt gesendet</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">Wenn Sie sich nicht persönlich treffen können, können Sie <b>den QR-Code während eines Videoanrufs scannen</b> oder Ihr Kontakt kann einen Einladungslink über einen anderen Kanal mit Ihnen teilen.</string>
<string name="share_invitation_link">Einladungslink teilen</string>
<string name="paste_connection_link_below_to_connect">Fügen Sie den erhaltenen Link in das Feld unten ein, um sich mit Ihrem Kontakt zu verbinden.</string>
<string name="your_profile_will_be_sent">Ihr Chat-Profil wird an Ihren Kontakt gesendet.</string>
<string name="your_profile_will_be_sent">Ihr Chat-Profil wird an Ihren Kontakt gesendet</string>
<!-- PasteToConnect.kt -->
<string name="connect_via_link">Über einen Link verbinden</string>
<string name="connect_button">Verbinden</string>
@@ -426,7 +427,7 @@
<!-- User profile details - UserProfileView.kt -->
<string name="display_name__field">Angezeigter Name:</string>
<string name="full_name__field">"Vollständiger Name:</string>
<string name="your_current_profile">Mein Chat-Profil</string>
<string name="your_current_profile">Mein aktuelles Chat-Profil</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Ihr Profil wird auf Ihrem Gerät gespeichert und nur mit Ihren Kontakten geteilt.\n\n<xliff:g id="appName">SimpleX</xliff:g>-Server können Ihr Profil nicht sehen.</string>
<string name="edit_image">Bild bearbeiten</string>
<string name="delete_image">Bild löschen</string>
@@ -512,13 +513,15 @@
<!-- Call settings -->
<string name="settings_audio_video_calls">Audio- &amp; Videoanrufe</string>
<string name="your_calls">Ihre Anrufe</string>
<string name="connect_calls_via_relay">Über ein Relais verbinden</string>
<string name="always_use_relay">Über ein Relais verbinden</string>
<string name="call_on_lock_screen">Anrufe auf Sperrbildschirm:</string>
<string name="accept_call_on_lock_screen">Akzeptieren</string>
<string name="show_call_on_lock_screen">Anzeigen</string>
<string name="no_call_on_lock_screen">Deaktivieren</string>
<string name="your_ice_servers">Ihre ICE-Server</string>
<string name="webrtc_ice_servers">WebRTC ICE-Server</string>
<string name="relay_server_protects_ip">Relais-Server schützen Ihre IP-Adresse, aber sie können die Anrufdauer erfassen.</string>
<string name="relay_server_if_necessary">Relais-Server werden nur genutzt, wenn sie benötigt werden. Ihre IP-Adresse kann von Anderen erfasst werden.</string>
<!-- Call Lock Screen -->
<string name="open_simplex_chat_to_accept_call">Öffnen Sie <xliff:g id="appNameFull">SimpleX Chat</xliff:g>, um den Anruf anzunehmen.</string>
<string name="allow_accepting_calls_from_lock_screen">Aktivieren Sie Anrufe vom Sperrbildschirm über die Einstellungen.</string>
@@ -558,7 +561,6 @@
<string name="your_privacy">Meine Privatsphäre</string>
<string name="protect_app_screen">App-Bildschirm schützen</string>
<string name="auto_accept_images">Bilder automatisch akzeptieren</string>
<string name="transfer_images_faster">Bilder schneller übertragen</string>
<string name="send_link_previews">Link-Vorschau senden</string>
<string name="full_backup">App-Datensicherung</string>
<!-- Settings sections -->
@@ -598,14 +600,15 @@
<string name="error_stopping_chat">Fehler beim Beenden des Chats</string>
<string name="error_exporting_chat_database">Fehler beim Exportieren der Chat-Datenbank</string>
<string name="import_database_question">Chat-Datenbank importieren?</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Ihre aktuelle Chat-Datenbank wird GELÖSCHT und durch die Importierte ERSETZT.\nDiese Aktion kann nicht rückgängig gemacht werden - Ihr Profil und Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Ihre aktuelle Chat-Datenbank wird GELÖSCHT und durch die Importierte ERSETZT.
\nDiese Aktion kann nicht rückgängig gemacht werden - Ihr Profil, Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.</string>
<string name="import_database_confirmation">Importieren</string>
<string name="error_deleting_database">Fehler beim Löschen der Chat-Datenbank</string>
<string name="error_importing_database">Fehler beim Importieren der Chat-Datenbank</string>
<string name="chat_database_imported">Chat-Datenbank importiert</string>
<string name="restart_the_app_to_use_imported_chat_database">Starten Sie die App neu, um die importierte Chat-Datenbank zu verwenden.</string>
<string name="delete_chat_profile_question">Chat-Profil löschen?</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Diese Aktion kann nicht rückgängig gemacht werden - Ihr Profil und Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Diese Aktion kann nicht rückgängig gemacht werden - Ihr Profil, Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.</string>
<string name="chat_database_deleted">Chat-Datenbank gelöscht</string>
<string name="restart_the_app_to_create_a_new_chat_profile">Starten Sie die App neu, um ein neues Chat-Profil zu erstellen.</string>
<string name="you_must_use_the_most_recent_version_of_database">Sie dürfen die neueste Version Ihrer Chat-Datenbank NUR auf einem Gerät verwenden, andernfalls erhalten Sie möglicherweise keine Nachrichten mehr von einigen Ihrer Kontakte.</string>
@@ -991,4 +994,65 @@
<string name="feature_offered_item">beginne %s</string>
<string name="feature_offered_item_with_param">beginne %s: %2s</string>
<string name="feature_cancelled_item">beende %s</string>
<string name="core_simplexmq_version">simplexmq Version: v%s (%2s)</string>
<string name="delete_files_and_media_all">Alle Dateien löschen</string>
<string name="messages_section_title">Nachrichten</string>
<string name="app_version_code">App Build: %s</string>
<string name="app_version_title">App Version</string>
<string name="app_version_name">App Version: v%s</string>
<string name="core_build_timestamp">Core übersetzt am: %s</string>
<string name="core_version">Core Version: v%s</string>
<string name="users_add">Profil hinzufügen</string>
<string name="users_delete_all_chats_deleted">Alle Chats und Nachrichten werden gelöscht! Dies kann nicht rückgängig gemacht werden!</string>
<string name="users_delete_profile_for">Chat-Profil löschen für</string>
<string name="network_option_ping_count">PING Zähler</string>
<string name="update_network_session_mode_question">Transport-Isolations-Modus aktualisieren\?</string>
<string name="smp_servers_per_user">Server der neuen Verbindungen von Ihrem aktuellen Chat-Profil</string>
<string name="files_and_media_section">Dateien &amp; Medien</string>
<string name="network_session_mode_transport_isolation">Transport-Isolation</string>
<string name="users_delete_question">Chat-Profil löschen\?</string>
<string name="error_deleting_user">Fehler beim Löschen des Benutzerprofils</string>
<string name="your_chat_profiles">Meine Chat-Profile</string>
<string name="network_session_mode_entity">Verbindung</string>
<string name="network_session_mode_user">Chat-Profil</string>
<string name="delete_files_and_media_for_all_users">Dateien für alle Chat-Profile löschen</string>
<string name="network_session_mode_entity_description"><b>Für jeden Kontakt und jedes Gruppenmitglied</b> wird eine separate TCP-Verbindung (und SOCKS-Berechtigung) genutzt.
\n
\n<b>Bitte beachten Sie</b>: Wenn Sie viele Verbindung haben, kann der Batterieverbrauch und die Datennutzung wesentlich höher sein und einige Verbindungen können scheitern.</string>
<string name="network_session_mode_user_description"><b>Für jedes von Ihnen in der App genutzte Chat-Profil</b> wird eine separate TCP-Verbindung (und SOCKS-Berechtigung) genutzt.</string>
<string name="users_delete_data_only">Nur lokale Profildaten</string>
<string name="users_delete_with_connections">Profil und Serververbindungen</string>
<string name="messages_section_description">Diese Einstellung gilt für Nachrichten in Ihrem aktuellen Chat-Profil</string>
<string name="your_chat_profiles_stored_locally">Ihre Chat-Profile werden nur lokal auf Ihrem Endgerät gespeichert</string>
<string name="failed_to_create_user_duplicate_title">Doppelter Anzeigename!</string>
<string name="failed_to_create_user_title">Fehler beim Erstellen des Profils!</string>
<string name="failed_to_active_user_title">Fehler beim Umschalten des Profils!</string>
<string name="failed_to_create_user_duplicate_desc">Sie haben schon ein Chat-Profil mit dem gleichen Anzeigenamen. Bitte wählen Sie einen anderen Namen aus.</string>
<string name="v4_5_multiple_chat_profiles">Mehrere Chat-Profile</string>
<string name="v4_5_reduced_battery_usage">Reduzierter Batterieverbrauch</string>
<string name="v4_5_private_filenames">Neutrale Dateinamen</string>
<string name="v4_5_message_draft_descr">Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren.</string>
<string name="v4_5_transport_isolation_descr">Per Chat-Profil (Voreinstellung) oder per Verbindung (BETA).</string>
<string name="v4_5_italian_interface">Italienische Bedienoberfläche</string>
<string name="v4_4_french_interface">Französische Bedienoberfläche</string>
<string name="v4_5_message_draft">Nachrichtenentwurf</string>
<string name="v4_5_reduced_battery_usage_descr">Weitere Verbesserungen sind bald verfügbar!</string>
<string name="v4_5_multiple_chat_profiles_descr">Unterschiedliche Namen, Avatare und Transport-Isolation.</string>
<string name="v4_5_transport_isolation">Transport-Isolation</string>
<string name="v4_5_italian_interface_descr">Dank der Nutzer - Tragen Sie per Weblate bei!</string>
<string name="v4_4_french_interface_descr">Dank der Nutzer - Tragen Sie per Weblate bei!</string>
<string name="v4_5_private_filenames_descr">Bild- und Sprachdateinamen enthalten UTC, um Informationen zur Zeitzone zu schützen.</string>
<string name="moderated_description">Moderiert</string>
<string name="moderated_item_description">Von %s moderiert</string>
<string name="moderate_verb">Moderieren</string>
<string name="moderate_message_will_be_marked_warning">Diese Nachricht wird für alle Mitglieder als moderiert gekennzeichnet.</string>
<string name="you_are_observer">Sie sind Beobachter</string>
<string name="observer_cant_send_message_title">Sie können keine Nachrichten versenden!</string>
<string name="group_member_role_observer">Beobachter</string>
<string name="initial_member_role">Anfängliche Rolle</string>
<string name="delete_member_message__question">Nachricht des Mitglieds löschen\?</string>
<string name="error_updating_link_for_group">Fehler beim Aktualisieren des Gruppen-Links</string>
<string name="observer_cant_send_message_desc">Bitte kontaktieren Sie den Gruppen-Administrator.</string>
<string name="moderate_message_will_be_deleted_warning">Diese Nachricht wird für alle Gruppenmitglieder gelöscht.</string>
<string name="language_system">System</string>
</resources>

View File

@@ -1,2 +1,982 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="auth_unavailable">Autenticación no disponible</string>
<string name="accept_contact_button">Aceptar</string>
<string name="network_settings">Configuración de red avanzada</string>
<string name="onboarding_notifications_mode_off_desc"><b>Mejor para la batería</b>. Recibirás notificaciones sólo cuando la aplicación se esté ejecutando, el servicio NO se usará en segundo plano.</string>
<string name="onboarding_notifications_mode_periodic_desc"><b>Bueno para la batería</b>. El servicio en segundo plano comprueba si hay mensajes nuevos cada 10 minutos. Puedes perderte llamadas y mensajes urgentes.</string>
<string name="accept_call_on_lock_screen">Aceptar</string>
<string name="full_backup">Copia de seguridad de los datos de la aplicación</string>
<string name="chat_item_ttl_day">un dia</string>
<string name="chat_item_ttl_month">un mes</string>
<string name="chat_item_ttl_week">una semana</string>
<string name="allow_disappearing_messages_only_if">Permitir que desaparezcan los mensajes sólo si su contacto lo permite.</string>
<string name="v4_3_improved_server_configuration_desc">Añadir servidores escaneando códigos QR.</string>
<string name="smp_servers_preset_add">Añadir servidores predefinidos</string>
<string name="all_group_members_will_remain_connected">Todos los miembros del grupo permanecerán conectados.</string>
<string name="allow_irreversible_message_deletion_only_if">Permitir la eliminación irreversible de mensajes sólo si tu contacto también lo permite para tí.</string>
<string name="keychain_allows_to_receive_ntfs">Android Keystore se usará para almacenar de forma segura la frase de contraseña después de reiniciar la aplicación o cambiar la frase de contraseña - permitirá recibir notificaciones.</string>
<string name="allow_your_contacts_to_send_disappearing_messages">Permitir a tus contactos enviar mensajes que desaparecen.</string>
<string name="allow_your_contacts_to_send_voice_messages">Permitir a tus contactos enviar mensajes de voz.</string>
<string name="chat_preferences_always">siempre</string>
<string name="notifications_mode_off_desc">La aplicación sólo puede recibir notificaciones cuando se está ejecutando, no se iniciará ningún servicio en segundo plano.</string>
<string name="settings_section_title_icon">ICONO DE LA APLICACIÓN</string>
<string name="incognito_random_profile_from_contact_description">Se enviará un perfil aleatorio al contacto del que recibió este enlace</string>
<string name="turning_off_service_and_periodic">La optimización de la batería está activa, desactivando el servicio en segundo plano y las solicitudes periódicas de nuevos mensajes. Puedes volver a activarlos en Configuración.</string>
<string name="notifications_mode_service_desc">El servicio en segundo plano está siempre en funcionamiento las notificaciones se mostrarán en cuanto los mensajes estén disponibles.</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b>Se puede desactivar en Configuración</b> las notificaciones se seguirán mostrando mientras la app esté en funcionamiento.</string>
<string name="notifications_mode_service">Siempre activo</string>
<string name="allow_verb">Permitir</string>
<string name="above_then_preposition_continuation">arriba, entonces:</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>Añadir nuevo contacto</b>: para crear tu código QR de un solo uso para tu contacto.</string>
<string name="accept_connection_request__question">¿Aceptar solicitud de conexión\?</string>
<string name="accept_contact_incognito_button">Aceptar incógnito</string>
<string name="clear_chat_warning">Se eliminarán todos los mensajes SOLO para tí. ¡No puede deshacerse!</string>
<string name="smp_servers_add">Añadir servidor…</string>
<string name="network_enable_socks_info">¿Acceder a los servidores a través del proxy SOCKS en el puerto 9050\? El proxy debe iniciarse antes de activar esta opción.</string>
<string name="all_your_contacts_will_remain_connected">Todos tus contactos permanecerán conectados.</string>
<string name="appearance_settings">Apariencia</string>
<string name="app_version_title">Versión</string>
<string name="network_session_mode_user_description">Se usará una conexión TCP independiente (y una credencial SOCKS) <b>para cada perfil de chat que tengas en la aplicación</b>.</string>
<string name="network_session_mode_entity_description">Se usará una conexión TCP independiente (y una credencial SOCKS) <b>para cada contacto y miembro del grupo</b>.
\n<b>Ten en cuenta</b>: si tienes muchas conexiones, tu consumo de batería y tráfico puede ser sustancialmente mayor y algunas conexiones pueden fallar.</string>
<string name="a_plus_b">a + b</string>
<string name="about_simplex">Acerca de SimpleX</string>
<string name="bold">negrita</string>
<string name="callstatus_accepted">llamada aceptada</string>
<string name="accept">Aceptar</string>
<string name="audio_call_no_encryption">llamada de audio (sin cifrado e2e)</string>
<string name="icon_descr_audio_call">llamada de audio</string>
<string name="settings_audio_video_calls">Llamadas de audio y vídeo</string>
<string name="icon_descr_audio_off">Audio desactivado</string>
<string name="icon_descr_audio_on">Audio activado</string>
<string name="integrity_msg_bad_id">ID de mensaje erróneo</string>
<string name="auto_accept_images">Aceptar automáticamente imágenes</string>
<string name="users_delete_all_chats_deleted">Se eliminarán todos los chats y mensajes. ¡No puede deshacerse!</string>
<string name="accept_feature">Aceptar</string>
<string name="allow_to_send_disappearing">Permitir enviar mensajes temporales.</string>
<string name="keychain_is_storing_securely">Android Keystore se utiliza para almacenar de forma segura la frase de contraseña - permite que el servicio de notificación funcione.</string>
<string name="users_add">Añadir perfil</string>
<string name="incognito_random_profile_description">Se enviará un perfil aleatorio a tu contacto</string>
<string name="color_primary">Acento</string>
<string name="allow_your_contacts_irreversibly_delete">Permitir a tus contactos eliminar irreversiblemente los mensajes enviados.</string>
<string name="allow_voice_messages_only_if">Permitir mensajes de voz sólo si tu contacto los permite.</string>
<string name="allow_direct_messages">Permitir el envío de mensajes directos a los miembros.</string>
<string name="allow_to_delete_messages">Permitir la eliminación irreversible de los mensajes enviados.</string>
<string name="allow_to_send_voice">Permitir enviar mensajes de voz.</string>
<string name="v4_2_group_links_desc">Los administradores pueden crear los enlaces para unirse a los grupos.</string>
<string name="v4_2_auto_accept_contact_requests">Aceptar automáticamente solicitudes del contacto</string>
<string name="attach">Adjuntar</string>
<string name="integrity_msg_bad_hash">hash de mensaje erróneo</string>
<string name="answer_call">Responder llamada</string>
<string name="group_member_role_admin">administrador</string>
<string name="allow_voice_messages_question">¿Permitir mensajes de voz\?</string>
<string name="back">Volver</string>
<string name="about_simplex_chat">Sobre <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="smp_servers_add_to_another_device">Añadir a otro dispositivo</string>
<string name="app_version_name">Versión de la aplicación: v%s</string>
<string name="accept_requests">Aceptar solicitudes</string>
<string name="accept_automatically">Automáticamente</string>
<string name="icon_descr_asked_to_receive">Solicita recibir la imagen</string>
<string name="impossible_to_recover_passphrase"><b>Ten en cuenta</b>: NO podrás recuperar o cambiar la contraseña si la pierdes.</string>
<string name="both_you_and_your_contact_can_send_voice">Tanto tú como tu contacto podéis enviar mensajes de voz.</string>
<string name="onboarding_notifications_mode_service_desc"><b>¡Usa más batería!</b> El servicio en segundo plano está siempre en funcionamiento - las notificaciones se mostrarán tan pronto como los mensajes estén disponibles.</string>
<string name="both_you_and_your_contacts_can_delete">Tanto tú como tu contacto podéis eliminar de forma irreversible los mensajes enviados.</string>
<string name="both_you_and_your_contact_can_send_disappearing">Tanto tú como tu contacto podéis enviar mensajes temporales.</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>Escanear código QR</b>: para conectar con tu contacto que te muestre código QR.</string>
<string name="create_profile_button">Crear</string>
<string name="create_one_time_link">Crear enlace único de invitación</string>
<string name="create_group">Crear grupo secreto</string>
<string name="database_passphrase_will_be_updated">La contraseña de cifrado de la base de datos será actualizada.</string>
<string name="info_row_database_id">ID de la base de datos</string>
<string name="direct_messages_are_prohibited_in_chat">Los mensajes directos entre miembros del grupo están prohibidos.</string>
<string name="passphrase_is_different">La contraseña es distinta a la almacenada en Keystore</string>
<string name="database_will_be_encrypted_and_passphrase_stored">La base de datos será cifrada y la contraseña se guardará en Keystore.</string>
<string name="delete_contact_question">¿Eliminar contacto\?</string>
<string name="delete_message__question">Eliminar mensaje\?</string>
<string name="delete_chat_profile_question">¿Eliminar el perfil de chat\?</string>
<string name="rcv_group_event_group_deleted">grupo eliminado</string>
<string name="delete_group_question">¿Eliminar grupo\?</string>
<string name="delete_messages_after">Eliminar mensaje después</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Autenticación de dispositivo desactivada. Puedes habilitar SimpleX Lock en Configuración, después de activar la autenticación de dispositivo.</string>
<string name="no_call_on_lock_screen">Desactivar</string>
<string name="disappearing_prohibited_in_this_chat">Los mensajes temporales están prohibidos en este chat.</string>
<string name="disappearing_messages_are_prohibited">Los mensajes temporales están prohibidos en este grupo.</string>
<string name="display_name_cannot_contain_whitespace">El nombre mostrado no puede contener espacios en blanco.</string>
<string name="encrypted_video_call">Videollamada con cifrado e2e</string>
<string name="display_name_connection_established">conexión establecida</string>
<string name="simplex_link_mode_description">Descripción</string>
<string name="smp_server_test_connect">Conectar</string>
<string name="notification_contact_connected">Conectado</string>
<string name="auth_disable_simplex_lock">Desactivar SimpleX Lock</string>
<string name="auth_device_authentication_is_disabled_turning_off">Autenticación de dispositivo desactivada. SimpleX Lock deshabilitado.</string>
<string name="maximum_supported_file_size">El tamaño máximo de archivo admitido es <xliff:g id="maxFileSize">%1$s</xliff:g></string>
<string name="clear_verification">Eliminar verificación</string>
<string name="create_profile">Crear perfil</string>
<string name="encrypted_audio_call">llamada con cifrado e2e</string>
<string name="status_e2e_encrypted">Cifrado e2e</string>
<string name="integrity_msg_duplicate">mensaje duplicado</string>
<string name="settings_section_title_develop">DESARROLLO</string>
<string name="settings_developer_tools">Herramientas desarrollo</string>
<string name="delete_files_and_media_for_all_users">Eliminar archivos para todos los perfiles de chat</string>
<string name="delete_messages">Eliminar mensaje</string>
<string name="database_encrypted">¡Base de datos cifrada!</string>
<string name="encrypted_with_random_passphrase">La base de datos está cifrada con una contraseña aleatoria, puedes cambiarla.</string>
<string name="database_error">Error en base de datos</string>
<string name="database_passphrase_is_required">Para abrir la aplicación se requiere la contraseña de la base de datos</string>
<string name="rcv_group_event_member_connected">conectado</string>
<string name="button_create_group_link">Crear enlace</string>
<string name="delete_link_question">¿Eliminar enlace\?</string>
<string name="timed_messages">Mensajes temporales</string>
<string name="direct_messages">Mensajes directos</string>
<string name="ttl_m">%dm</string>
<string name="ttl_month">%d mes</string>
<string name="ttl_months">%d meses</string>
<string name="ttl_mth">%dmes</string>
<string name="ttl_h">%dh</string>
<string name="ttl_hours">%d horas</string>
<string name="ttl_week">%d semana</string>
<string name="ttl_weeks">%d semanas</string>
<string name="v4_4_disappearing_messages">Mensajes temporales</string>
<string name="auth_confirm_credential">Canfirma tus credenciales</string>
<string name="group_member_status_introduced">conectando (presentado)</string>
<string name="group_member_status_intro_invitation">conectando (invitación de presentación )</string>
<string name="group_member_status_accepted">conectando (aceptado)</string>
<string name="group_member_status_announced">conectando (anunciado)</string>
<string name="connection_local_display_name">conexión&lt;xliff:g xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\" id=\"connection ID\" example=\"1\"&gt;</string>
<string name="connect_via_link_or_qr">Conectar mediante enlace / Código QR</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">El contacto y todos los mensajes serán eliminados. ¡No puede deshacerse!</string>
<string name="icon_descr_contact_checked">Contacto verificado</string>
<string name="status_contact_has_e2e_encryption">El contacto dispone de cifrado e2e</string>
<string name="smp_server_test_disconnect">Desconectar</string>
<string name="notification_preview_mode_contact">Nombre del contacto</string>
<string name="copy_verb">Copiar</string>
<string name="create_your_profile">Crear tu perfil</string>
<string name="always_use_relay">Conectar mediante relay</string>
<string name="set_password_to_export_desc">La base de datos está cifrada con una contraseña aleatoria. Cámbiala antes de exportar.</string>
<string name="total_files_count_and_size">%d archivo(s) con tamaño total de %s</string>
<string name="enable_automatic_deletion_question">¿Activar eliminación automática de mensajes\?</string>
<string name="contact_preferences">Preferencias de contacto</string>
<string name="ttl_s">%ds</string>
<string name="delete_after">Eliminar después</string>
<string name="ttl_sec">%d seg</string>
<string name="contact_already_exists">El contácto ya existe</string>
<string name="connection_error_auth">Error de conexión (Autenticación)</string>
<string name="for_me_only">Eliminar para mí</string>
<string name="icon_descr_server_status_disconnected">Desconectado</string>
<string name="icon_descr_server_status_connected">Conectado</string>
<string name="copied">Copiado en portapapeles</string>
<string name="share_one_time_link">Crear enlace único de invitación</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 PC: escanéa el código QR desde la app mediante <b>Escanéo de código QR </b></string>
<string name="delete_contact_menu_action">Eliminar</string>
<string name="delete_group_menu_action">Eliminar</string>
<string name="alert_title_contact_connection_pending">¡El contacto aun no se ha conectado!</string>
<string name="delete_pending_connection__question">¿Eliminar conexion pendiente\?</string>
<string name="icon_descr_close_button">Botón cerrar</string>
<string name="connection_request_sent">¡Solicitud de conexión enviada!</string>
<string name="network_session_mode_entity">Conexión</string>
<string name="callstatus_connecting">conectando llamada…</string>
<string name="allow_accepting_calls_from_lock_screen">Activar llamadas desde la pantalla de bloqueo en Configuración</string>
<string name="database_encryption_will_be_updated">La contraseña de cifrado de la base de datos será actualizada y almacenada en Keystore.</string>
<string name="group_member_status_connecting">conectando</string>
<string name="group_member_status_creator">creador</string>
<string name="ttl_min">%d min</string>
<string name="connection_timeout">Tiempo de conexión expirado</string>
<string name="failed_to_create_user_duplicate_title">¡Nombre mostrado duplicado!</string>
<string name="connection_error">Error de conexión</string>
<string name="smp_server_test_create_queue">Crear cola</string>
<string name="smp_server_test_delete_queue">Eliminar cola</string>
<string name="notification_preview_somebody">Contacto oculto:</string>
<string name="delete_verb">Eliminar</string>
<string name="edit_verb">Editar</string>
<string name="delete_member_message__question">¿Eliminar el mensaje de miembro\?</string>
<string name="icon_descr_edited">editado</string>
<string name="image_decoding_exception_title">Error de decodificación</string>
<string name="create_address">Crear dirección</string>
<string name="delete_address">Eliminar dirección</string>
<string name="delete_address__question">¿Eliminar la dirección\?</string>
<string name="display_name__field">Nombre mostrado:</string>
<string name="callstate_connecting">conectando…</string>
<string name="decentralized">Descentralizado</string>
<string name="database_will_be_encrypted">La base de datos será cifrada.</string>
<string name="delete_chat_archive_question">¿Eliminar archivo del chat\?</string>
<string name="create_group_link">Crear enlace de grupo</string>
<string name="delete_link">Eliminar enlace</string>
<string name="users_delete_question">¿Eliminar el perfil de chat\?</string>
<string name="ttl_hour">%d hora</string>
<string name="ttl_day">%d día</string>
<string name="v4_5_multiple_chat_profiles_descr">Nombre y avatar diferentes, aislamiento de transporte.</string>
<string name="button_delete_contact">Eliminar contacto</string>
<string name="smp_servers_delete_server">Eliminar servidor</string>
<string name="display_name">Nombre Mostrado</string>
<string name="callstate_connected">conectado</string>
<string name="settings_section_title_device">DISPOSITIVO</string>
<string name="database_passphrase">Contraseña base de datos</string>
<string name="delete_database">Eliminar base de datos</string>
<string name="delete_files_and_media_all">Eliminar todos los archivos</string>
<string name="current_passphrase">Contraseña actual…</string>
<string name="button_delete_group">Eliminar grupo</string>
<string name="button_edit_group_profile">Editar perfil de grupo</string>
<string name="info_row_connection">Conexión</string>
<string name="users_delete_profile_for">Eliminar el perfil de chat para</string>
<string name="theme_dark">Oscuro</string>
<string name="ttl_d">%dd</string>
<string name="ttl_days">%d días</string>
<string name="delete_files_and_media_question">¿Eliminar archivos y multimedia\?</string>
<string name="archive_created_on_ts">Creado: <xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="delete_archive">Eliminar archivo</string>
<string name="group_member_status_connected">conectado</string>
<string name="conn_level_desc_direct">directo</string>
<string name="chat_preferences_contact_allows">El contacto permite</string>
<string name="chat_preferences_default">predefinido (%s)</string>
<string name="full_deletion">Eliminar para todos</string>
<string name="feature_enabled">activado</string>
<string name="contacts_can_mark_messages_for_deletion">El contacto puede marcar los mensajes para eliminar; tu podrás verlos.</string>
<string name="ttl_w">%ds</string>
<string name="deleted_description">eliminado</string>
<string name="connect_via_contact_link">¿Conectar mediante enlace de contacto\?</string>
<string name="connect_via_group_link">¿Conectar mediante enlace de grupo\?</string>
<string name="connect_via_invitation_link">¿Conectar mediante enlace de invitación\?</string>
<string name="connect_via_link_verb">Conectar</string>
<string name="server_connected">conectado</string>
<string name="server_connecting">conectando</string>
<string name="display_name_connecting">conectando…</string>
<string name="contact_connection_pending">conectando…</string>
<string name="group_connection_pending">conectando…</string>
<string name="icon_descr_context">Icono contextual</string>
<string name="status_contact_has_no_e2e_encryption">El contacto no dispone de cifrado e2e</string>
<string name="icon_descr_call_connecting">Conectando llamada</string>
<string name="create_secret_group_title">Crear grupo secreto</string>
<string name="icon_descr_email">Email</string>
<string name="connect_button">Conectar</string>
<string name="connect_via_link">Conectar mediante enlace</string>
<string name="database_passphrase_and_export">Contraseña y exportar la base de datos</string>
<string name="contribute">Contribuye</string>
<string name="core_build_timestamp">Core compilado: %s</string>
<string name="core_version">Core versión: v%s</string>
<string name="contact_requests">Solicitud del contacto</string>
<string name="delete_image">Eliminar imagen</string>
<string name="edit_image">Editar imagen</string>
<string name="settings_section_title_chats">CHATS</string>
<string name="change_verb">Cambiar</string>
<string name="notifications_mode_periodic_desc">Comprueba mensajes nuevos de hasta un minuto cada 10 minutos</string>
<string name="clear_contacts_selection_button">Limpiar</string>
<string name="change_member_role_question">¿Cambiar rol de grupo\?</string>
<string name="v4_4_verify_connection_security_desc">Compara los códigos de seguridad con tus contactos</string>
<string name="choose_file">Elije archivo</string>
<string name="clear_verb">Limpiar</string>
<string name="clear_chat_button">Limpiar chat</string>
<string name="configure_ICE_servers">Configurar servidores ICE</string>
<string name="callstatus_ended">Llamada terminada <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="callstatus_error">error en la llamada</string>
<string name="callstatus_calling">llamando</string>
<string name="callstatus_in_progress">llamada en curso</string>
<string name="colored">coloreado</string>
<string name="rcv_group_event_changed_your_role">su rol a cambiado a %s</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">cambiando dirección por %s</string>
<string name="group_member_status_complete">completado</string>
<string name="invite_prohibited">¡No se puede invitar el contacto!</string>
<string name="cannot_receive_file">No se puede recibir el archivo</string>
<string name="database_initialization_error_title">No se puede iniciar la base de datos</string>
<string name="clear_chat_question">Limpiar chat\?</string>
<string name="network_session_mode_user">Perfil de Chat</string>
<string name="chat_is_stopped_indication">El chat está detenido</string>
<string name="rcv_group_event_changed_member_role">rol de %s cambiado a %s</string>
<string name="change_role">Cambiar rol</string>
<string name="v4_5_transport_isolation_descr">A través del perfil de chat (por defecto) or a través de conexión (BETA)</string>
<string name="snd_conn_event_switch_queue_phase_changing">cambiando dirección…</string>
<string name="chat_preferences">Preferencias de chat</string>
<string name="feature_cancelled_item">cancelado %s</string>
<string name="chat_is_stopped">El chat está detenido</string>
<string name="settings_section_title_calls">LLAMADAS</string>
<string name="chat_is_running">El chat está en ejecución</string>
<string name="rcv_conn_event_switch_queue_phase_changing">cambiando dirección…</string>
<string name="chat_with_developers">habla con los desarrolladores</string>
<string name="icon_descr_cancel_file_preview">Cancelar vista previa del archivo</string>
<string name="icon_descr_cancel_image_preview">Cancelar vista previa de la imagen</string>
<string name="icon_descr_call_ended">Llamada terminada</string>
<string name="icon_descr_call_progress">Llamada en curso</string>
<string name="change_database_passphrase_question">¿Cambiar contraseña de la base de datos\?</string>
<string name="cannot_access_keychain">No se puede acceder a Keystore para guardar la base de datos de contraseñas</string>
<string name="chat_archive_header">Archivo del chat</string>
<string name="chat_archive_section">ARCHIVOS DE CHAT</string>
<string name="cancel_verb">Cancelar</string>
<string name="icon_descr_cancel_live_message">Cancelar mensaje en directo</string>
<string name="confirm_verb">Confirmar</string>
<string name="clear_chat_menu_action">Limpiar</string>
<string name="app_version_code">Build de la aplicación</string>
<string name="call_already_ended">¡La llamada ha terminado!</string>
<string name="rcv_conn_event_switch_queue_phase_completed">su dirección ha cambiado para tí</string>
<string name="icon_descr_cancel_link_preview">cancelar vista previa del enlace</string>
<string name="call_on_lock_screen">Llamadas en la ventana de bloqueo</string>
<string name="alert_title_cant_invite_contacts">¡No se puede invitar a los contactos!</string>
<string name="chat_console">Consola del chat</string>
<string name="chat_database_section">BASE DE DATOS DE CHAT</string>
<string name="chat_database_deleted">Base de datos eliminada</string>
<string name="chat_database_imported">Base de datos importada</string>
<string name="smp_servers_check_address">Comprueba la dirección del servidor e inténtalo de nuevo.</string>
<string name="confirm_new_passphrase">Confirma la contraseña nueva…</string>
<string name="network_disable_socks_info">Si confirmas los servidores de mensajería podrán ver tu IP, y tu proveedor de acceso a internet a qué servidores te estás conectando.</string>
<string name="image_saved">Imagen guardada en la Galería</string>
<string name="file_will_be_received_when_contact_is_online">El archivo se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde.</string>
<string name="add_contact">Enlace único de invitación</string>
<string name="paste_the_link_you_received">Pegar enlace recibido</string>
<string name="error_saving_group_profile">Error guardando perfil de grupo</string>
<string name="exit_without_saving">Salir sin guardar</string>
<string name="file_saved">Archivo guardado</string>
<string name="icon_descr_flip_camera">Voltear la cámara</string>
<string name="group_invitation_expired">Invitación de grupo caducada</string>
<string name="alert_message_group_invitation_expired">La invitación al grupo ya no es válida, ha sido eliminada por el remitente.</string>
<string name="delete_group_for_self_cannot_undo_warning">El grupo se eliminará para tí. ¡No puede deshacerse!</string>
<string name="how_to_use_markdown">Cómo usar el marcador</string>
<string name="description_via_one_time_link_incognito">Incógnito mediante enlace único</string>
<string name="simplex_link_contact">Dirección de contacto SimpleX</string>
<string name="error_saving_smp_servers">Error guardando servidores SMP</string>
<string name="simplex_link_mode_browser_warning">Abrir el enlace en el navegador puede reducir la privacidad y seguridad de la conexión. Los enlaces SimpleX que no son de confianza aparecerán en rojo.</string>
<string name="error_setting_network_config">Error al actualizar la configuración de red</string>
<string name="error_creating_address">Error creando dirección</string>
<string name="error_deleting_user">Error eliminando perfil de usuario</string>
<string name="auth_enable_simplex_lock">Activar SimpleX Lock</string>
<string name="one_time_link">Enlace único de invitación</string>
<string name="smp_servers">Servidores SMP</string>
<string name="settings_experimental_features">Características experimentales</string>
<string name="error_importing_database">Error importando la base de datos</string>
<string name="error_changing_message_deletion">Error cambiando configuración</string>
<string name="file_with_path">Archivo: %s</string>
<string name="failed_to_active_user_title">¡Error cambiando perfil!</string>
<string name="smp_servers_enter_manually">Introduce el servidor manualmente</string>
<string name="how_to_use_your_servers">Cómo usar tus servidores</string>
<string name="error_stopping_chat">Error deteniendo el chat</string>
<string name="enter_correct_passphrase">Introduce la contraseña correcta.</string>
<string name="enter_passphrase">Introduce la contraseña…</string>
<string name="icon_descr_group_inactive">Grupo inactivo</string>
<string name="group_member_status_group_deleted">grupo eliminado</string>
<string name="group_members_can_send_disappearing">Los miembros del grupo pueden enviar mensajes temporales.</string>
<string name="v4_2_group_links">Enlaces de grupo</string>
<string name="invalid_connection_link">Enlace de conexión no válido</string>
<string name="error_accepting_contact_request">Error aceptando la solicitud del contacto</string>
<string name="error_changing_address">Error cambiando la dirección</string>
<string name="error_saving_file">Error al guardar archivo</string>
<string name="icon_descr_server_status_error">Error</string>
<string name="from_gallery_button">De la Galería</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Si has recibido el enlace de invitación a <xliff:g id="appName">SimpleX Chat</xliff:g>, puedes abrirlo en tu navegador:</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Si eliges rechazar, el remitente NO será notificado.</string>
<string name="invalid_contact_link">¡Enlace no válido!</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">Si no puedes reunirte en persona, puedes <b>escanear el código QR en la videollamada</b>, o tu contacto puede compartir un enlace de invitación.</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">Si no puedes reunirte en persona, <b>muestra el código QR en la videollamada</b>, o comparte el enlace.</string>
<string name="how_to">Cómo</string>
<string name="ignore">Ignorar</string>
<string name="error_deleting_database">Error eliminando la base de datos</string>
<string name="encrypted_database">Base de datos cifrada</string>
<string name="error_removing_member">Error eliminando miembro</string>
<string name="group_members_can_send_voice">Los miembros del grupo pueden mandar mensajes de voz.</string>
<string name="description_via_contact_address_link_incognito">Incógnito mediante enlace de dirección del contacto</string>
<string name="failed_to_create_user_title">Error creando perfil!</string>
<string name="failed_to_parse_chat_title">No se pudo cargar el chat</string>
<string name="failed_to_parse_chats_title">No se pudieron cargar los chats</string>
<string name="simplex_link_mode_full">Enlace completo</string>
<string name="error_deleting_contact">Error eliminando contacto</string>
<string name="error_joining_group">Error uniéndose al grupo</string>
<string name="error_receiving_file">Error recibiendo archivo</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Comprueba que has usado el enlace correcto o pide a tu contacto que te envíe otro.</string>
<string name="error_deleting_contact_request">Error eliminando la solicitud de contacto</string>
<string name="error_deleting_group">Error al eliminar grupo</string>
<string name="error_deleting_pending_contact_connection">Error al eliminar conexión de contacto pendiente</string>
<string name="hide_notification">Ocultar</string>
<string name="notification_preview_mode_hidden">Oculto</string>
<string name="notification_display_mode_hidden_desc">Ocultar contacto y mensaje</string>
<string name="hide_verb">Ocultar</string>
<string name="for_everybody">Para todos</string>
<string name="icon_descr_file">Archivo</string>
<string name="icon_descr_image_snd_complete">Imagen enviada</string>
<string name="image_will_be_received_when_contact_is_online">La imagen se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde.</string>
<string name="image_descr_link_preview">vista previa del enlace</string>
<string name="error_saving_ICE_servers">Error guardando servidores ICE</string>
<string name="enter_one_ICE_server_per_line">Servidores ICE (uno por línea)</string>
<string name="full_name__field">Nombre completo:</string>
<string name="people_can_connect_only_via_links_you_share">Las personas pueden conectarse contigo solo mediante los enlaces que compartes.</string>
<string name="how_simplex_works">Cómo funciona <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="icon_descr_hang_up">Colgar</string>
<string name="files_and_media_section">Archivo y multimedia</string>
<string name="alert_title_no_group">¡Grupo no encontrado!</string>
<string name="snd_group_event_group_profile_updated">perfil de grupo actualizado</string>
<string name="error_creating_link_for_group">Error al crear enlace de grupo</string>
<string name="error_deleting_link_for_group">Error al eliminar enlace de grupo</string>
<string name="feature_enabled_for_contact">activado para el contacto</string>
<string name="v4_4_french_interface">Interfaz en francés</string>
<string name="image_descr">Imagen</string>
<string name="file_not_found">Archivo no encontrado</string>
<string name="how_to_use_simplex_chat">Cómo usar</string>
<string name="full_name_optional__prompt">Nombre completo (opcional)</string>
<string name="callstate_ended">finalizado</string>
<string name="settings_section_title_help">AYUDA</string>
<string name="export_database">Exportar base de datos</string>
<string name="error_exporting_chat_database">Error exportando la base de datos</string>
<string name="error_starting_chat">Error iniciando chat</string>
<string name="rcv_group_event_invited_via_your_group_link">Invitado mediante tu enlace de grupo</string>
<string name="error_updating_link_for_group">Error actualizando el enlace de grupo</string>
<string name="section_title_for_console">PARA CONSOLA</string>
<string name="error_changing_role">Error cambiando rol</string>
<string name="conn_stats_section_title_servers">SERVIDORES</string>
<string name="group_display_name_field">Nombre mostrado del grupo:</string>
<string name="group_preferences">Preferencias del grupo</string>
<string name="group_members_can_send_dms">Los miembros del grupo pueden enviar mensajes directos.</string>
<string name="group_members_can_delete">Los miembros del grupo pueden eliminar mensajes de forma irreversible.</string>
<string name="v4_3_improved_privacy_and_security_desc">Ocultar pantalla de aplicaciones en aplicaciones recientes.</string>
<string name="encrypt_database">Cifrar</string>
<string name="icon_descr_expand_role">Ampliar la selección de roles</string>
<string name="delete_group_for_all_members_cannot_undo_warning">El grupo se eliminará para todos los miembros. ¡No puede deshacerse!</string>
<string name="network_option_enable_tcp_keep_alive">Activar TCP keep-alive</string>
<string name="feature_enabled_for_you">activado para tí</string>
<string name="server_error">error</string>
<string name="description_via_group_link_incognito">Incógnito mediante enlace de grupo</string>
<string name="error_adding_members">Error al añadir miembro(s)</string>
<string name="error_sending_message">Error enviando mensaje</string>
<string name="error_encrypting_database">Error cifrando la base de datos</string>
<string name="encrypt_database_question">¿Cifrar base de datos\?</string>
<string name="error_with_info">Error: %s</string>
<string name="group_link">Enlace de grupo</string>
<string name="info_row_group">Grupo</string>
<string name="group_full_name_field">Nombre completo del grupo:</string>
<string name="group_profile_is_stored_on_members_devices">El perfil de grupo se almacena en los dispositivos, no en los servidores.</string>
<string name="icon_descr_help">ayuda</string>
<string name="paste_connection_link_below_to_connect">Pega el enlace que has recibido en el recuadro para conectar con tu contacto.</string>
<string name="share_link">Compartir enlace</string>
<string name="how_it_works">Cómo funciona</string>
<string name="delete_message_cannot_be_undone_warning">El mensaje se eliminará. ¡No puede deshacerse!</string>
<string name="incognito_info_protects">El modo incógnito protege la identidad del perfil principal, por cada contacto nuevo se genera un perfil nuevo aleatorio.</string>
<string name="turn_off_battery_optimization">Para poder usarse <b>deshabilita la optimización de batería</b> para <xliff:g id="appName">SimpleX</xliff:g> en el siguiente cuadro de diálogo. De lo contrario las notificaciones estarán desactivadas.</string>
<string name="install_simplex_chat_for_terminal">Instalar <xliff:g id="appNameFull">SimpleX Chat</xliff:g> para terminal</string>
<string name="group_invitation_item_description">invitación al grupo <xliff:g id="group_name">%1$s</xliff:g></string>
<string name="rcv_group_event_member_added">invitado <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="incognito_info_allows">Permite tener muchas conexiones anónimas sin datos compartidos entre estas en un único perfil de chat.</string>
<string name="invite_to_group_button">Invitar al grupo</string>
<string name="to_verify_compare">Para comprobar el cifrado de extremo a extremo con su contacto compare (o escanee) el código en sus dispositivos.</string>
<string name="database_is_not_encrypted">La base de datos no está cifrada. Establece una contraseña para protegerla.</string>
<string name="ensure_smp_server_address_are_correct_format_and_unique">Asegúrate de que las direcciones del servidor SMP tienen el formato correcto, están separadas por líneas y no duplicadas.</string>
<string name="icon_descr_instant_notifications">Notificación instantánea</string>
<string name="network_settings_title">Configuración de red</string>
<string name="network_use_onion_hosts_no_desc_in_alert">No se usarán hosts .onion</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Sólo los dispositivos cliente almacenan perfiles de usuario, contactos, grupos y mensajes enviados con <b>cifrado de extremo a extremo de 2 capas</b> .</string>
<string name="onboarding_notifications_mode_subtitle">Puede cambiarse más tarde en Configuración.</string>
<string name="onboarding_notifications_mode_service">Instantánea</string>
<string name="join_group_button">Únete</string>
<string name="join_group_incognito_button">Únete en modo incógnito</string>
<string name="conn_level_desc_indirect">indirecto (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<string name="theme_light">Claro</string>
<string name="chat_preferences_on">Activado</string>
<string name="message_deletion_prohibited">La eliminación irreversible de mensajes está prohibida en este chat.</string>
<string name="message_deletion_prohibited_in_chat">La eliminación irreversible de mensajes está prohibida en este grupo.</string>
<string name="v4_3_improved_server_configuration">Configuración del servidor mejorada</string>
<string name="alert_text_skipped_messages_it_can_happen_when">Esto puede suceder cuando:
\n1. Los mensajes caducan en el servidor si no se han recibido durante 30 días.
\n2. El servidor que utiliza para recibir los mensajes de este contacto fue actualizado y reiniciado.
\n3. La conexión está comprometida.
\nPor favor, contacta con los desarrolladores a través del menú Configuración para recibir actualizaciones sobre los servidores.
\nAñadiremos redundancia de servidores para evitar la pérdida de mensajes.</string>
<string name="notification_preview_mode_message">Texto del mensaje</string>
<string name="member_info_section_title_member">MIEMBRO</string>
<string name="chat_item_ttl_none">nunca</string>
<string name="network_use_onion_hosts_required_desc_in_alert">Se requieren hosts .onion para la conexión</string>
<string name="network_use_onion_hosts_no_desc">No se usarán hosts .onion</string>
<string name="settings_notification_preview_title">Vista previa de notificación</string>
<string name="alert_title_group_invitation_expired">¡Invitación caducada!</string>
<string name="group_member_status_left">ha salido</string>
<string name="v4_4_live_messages">Mensajes en vivo</string>
<string name="service_notifications">Notificación instantánea</string>
<string name="settings_notifications_mode_title">Servicio de notificaciones</string>
<string name="delete_message_mark_deleted_warning">El mensaje se marcará para eliminar. El destinatario o destinatarios podrán revelar este mensaje.</string>
<string name="live_message">¡Mensaje en vivo!</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app">📱 móvil: pulse <b>Abrir en aplicación móvil</b>, después pulse <b>Conectar</b> en la aplicación.</string>
<string name="mark_read">Marcar como leído</string>
<string name="mark_unread">Marcar como no leído</string>
<string name="invalid_QR_code">Código QR inválido</string>
<string name="incorrect_code">¡Código de seguridad incorrecto!</string>
<string name="markdown_in_messages">Marcadores en mensajes</string>
<string name="network_use_onion_hosts_no">No</string>
<string name="callstatus_missed">llamada perdida</string>
<string name="import_database_confirmation">Importar</string>
<string name="snd_group_event_changed_role_for_yourself">has cambiado tu rol a %s</string>
<string name="button_add_members">Invitar miembros</string>
<string name="no_contacts_selected">Ningún contacto seleccionado</string>
<string name="feature_offered_item">ofrecido %s</string>
<string name="feature_offered_item_with_param">ofrecido %s: %2s</string>
<string name="moderated_item_description">moderado por %s</string>
<string name="invalid_chat">chat no válido</string>
<string name="invalid_data">datos no válidos</string>
<string name="invalid_message_format">formato de mensaje no válido</string>
<string name="live">EN VIVO</string>
<string name="moderated_description">moderado</string>
<string name="display_name_invited_to_connect">invitado a conectarse</string>
<string name="service_notifications_disabled">¡Las notificaciones instantáneas están desactivadas!</string>
<string name="notification_preview_new_message">mensaje nuevo</string>
<string name="notification_new_contact_request">Nueva solicitud de contacto</string>
<string name="auth_log_in_using_credential">Inicie sesión con sus credenciales</string>
<string name="message_delivery_error_title">Error en la entrega del mensaje</string>
<string name="message_delivery_error_desc">Lo más probable es que este contacto haya eliminado la conexión contigo.</string>
<string name="moderate_verb">Moderar</string>
<string name="group_preview_join_as">unirse como %s</string>
<string name="images_limit_desc">Sólo se pueden enviar 10 imágenes al mismo tiempo</string>
<string name="large_file">¡Archivo grande!</string>
<string name="mute_chat">Silenciar</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">Asegúrate de que las direcciones del servidor WebRTC ICE tienen el formato correcto, están separadas por líneas y no duplicadas.</string>
<string name="network_use_onion_hosts_required_desc">Se requieren hosts .onion para la conexión</string>
<string name="network_use_onion_hosts_prefer_desc_in_alert">Se usarán hosts .onion cuando estén disponibles.</string>
<string name="immune_to_spam_and_abuse">Inmune a spam y abuso</string>
<string name="many_people_asked_how_can_it_deliver">Muchos se preguntarán: <i>si <xliff:g id="appName">SimpleX</xliff:g> no tiene identificadores de usuario, ¿cómo puede entregar los mensajes\?</i></string>
<string name="incoming_video_call">Videollamada entrante</string>
<string name="snd_group_event_user_left">has salido</string>
<string name="snd_conn_event_switch_queue_phase_completed">has cambiado la dirección</string>
<string name="feature_off">apagado</string>
<string name="v4_3_irreversible_message_deletion">Eliminación del mensaje irreversible</string>
<string name="v4_3_voice_messages_desc">Máximo 40 segundos, recibido al instante.</string>
<string name="v4_5_italian_interface">Interfaz en italiano</string>
<string name="v4_5_message_draft">Borrador de mensaje</string>
<string name="v4_5_reduced_battery_usage_descr">¡Pronto habrá más mejoras!</string>
<string name="v4_5_multiple_chat_profiles">Múltiples perfiles de chat</string>
<string name="notifications">Notificaciones</string>
<string name="no_details">sin detalles</string>
<string name="ok">OK</string>
<string name="only_stored_on_members_devices">(sólo almacenado por miembros del grupo)</string>
<string name="markdown_help">Ayuda marcadores</string>
<string name="network_and_servers">Redes y servidores</string>
<string name="network_use_onion_hosts_prefer_desc">Se usarán hosts .onion cuando estén disponibles.</string>
<string name="italic">cursiva</string>
<string name="incoming_audio_call">Llamada entrante</string>
<string name="video_call_no_encryption">videollamada (sin cifrado e2e)</string>
<string name="status_no_e2e_encryption">sin cifrado e2e</string>
<string name="import_database">Importar base de datos</string>
<string name="settings_section_title_messages">MENSAJES</string>
<string name="import_database_question">¿Importar base de datos\?</string>
<string name="no_received_app_files">Sin archivos recibidos o enviados</string>
<string name="messages_section_title">Mensajes</string>
<string name="new_passphrase">Contraseña nueva…</string>
<string name="join_group_question">¿Unirse al grupo\?</string>
<string name="joining_group">Únete al grupo</string>
<string name="keychain_error">Error en Keystore</string>
<string name="icon_descr_add_members">Invitar miembros</string>
<string name="group_member_role_observer">observador</string>
<string name="group_member_role_member">miembro</string>
<string name="group_member_status_removed">eliminado</string>
<string name="group_member_status_invited">invitado</string>
<string name="no_contacts_to_add">Sin contactos que añadir</string>
<string name="new_member_role">Nuevo rol de miembro</string>
<string name="initial_member_role">Rol inicial</string>
<string name="info_row_local_name">Nombre local</string>
<string name="network_status">Estado de la red</string>
<string name="incognito">Incógnito</string>
<string name="chat_preferences_off">apagado</string>
<string name="new_in_version">Nuevo en %s</string>
<string name="v4_3_improved_privacy_and_security">Seguridad y privacidad mejoradas</string>
<string name="settings_section_title_incognito">Modo incógnito</string>
<string name="new_database_archive">Nuevo archivo de base de datos</string>
<string name="old_database_archive">Archivo de base de datos antiguo</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">has cambiado la dirección por %s</string>
<string name="rcv_group_event_member_left">ha salido</string>
<string name="button_leave_group">Salir del grupo</string>
<string name="only_group_owners_can_change_prefs">Sólo los propietarios del grupo pueden cambiar las preferencias de grupo.</string>
<string name="users_delete_data_only">Sólo datos del perfil local</string>
<string name="chat_preferences_no">no</string>
<string name="thousand_abbreviation">k</string>
<string name="marked_deleted_description">marcado eliminado</string>
<string name="icon_descr_call_missed">Llamada perdida</string>
<string name="notifications_will_be_hidden">¡Las notificaciones seguirán enviándose hasta que la aplicación se detenga!</string>
<string name="leave_group_button">Salir</string>
<string name="leave_group_question">¿Salir del grupo\?</string>
<string name="group_member_role_owner">propietario</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">El miembro será eliminado del grupo. ¡No puede deshacerse!</string>
<string name="only_group_owners_can_enable_voice">Sólo los propietarios del grupo pueden activar los mensajes de voz.</string>
<string name="group_unsupported_incognito_main_profile_sent">El modo incógnito no se admite aquí, tu perfil principal aparecerá en miembros del grupo</string>
<string name="icon_descr_more_button">Más</string>
<string name="mark_code_verified">Marcar como verificado</string>
<string name="smp_servers_invalid_address">¡Dirección de servidor no válida!</string>
<string name="make_private_connection">Establecer una conexión privada</string>
<string name="network_error_desc">Comprueba su conexión de red con <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g> e inténtelo de nuevo.</string>
<string name="sender_may_have_deleted_the_connection_request">El remitente puede haber eliminado la solicitud de conexión.</string>
<string name="error_smp_test_certificate">Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta</string>
<string name="reply_verb">Responder</string>
<string name="save_passphrase_in_keychain">Guardar contraseña en Keystore</string>
<string name="database_restore_error">Error al restaurar la base de datos</string>
<string name="select_contacts">Seleccionar contactos</string>
<string name="save_group_profile">Guardar perfil de grupo</string>
<string name="reset_color">Restablecer colores</string>
<string name="only_you_can_send_disappearing">Sólo tú puedes enviar mensajes temporales</string>
<string name="only_your_contact_can_send_disappearing">Sólo tu contacto puede enviar mensajes temporales.</string>
<string name="prohibit_sending_voice">Prohibir el envío de mensajes de voz.</string>
<string name="notifications_mode_off">Se ejecuta cuando la aplicación está abierta</string>
<string name="auth_open_chat_console">Abrir la consola de chat</string>
<string name="save_verb">Guardar</string>
<string name="restore_database_alert_confirm">Restaurar</string>
<string name="network_options_save">Guardar</string>
<string name="prohibit_message_deletion">Prohibir la eliminación irreversible de mensajes.</string>
<string name="v4_4_live_messages_desc">Los destinatarios ven la actualizacion mientras escribes.</string>
<string name="icon_descr_send_message">Enviar Mensaje</string>
<string name="toast_permission_denied">¡Permiso denegado!</string>
<string name="scan_code">Escanear código</string>
<string name="saved_ICE_servers_will_be_removed">Se eliminarán los servidores WebRTC ICE guardados.</string>
<string name="callstatus_rejected">llamada rechazada</string>
<string name="secret">secreto</string>
<string name="open_simplex_chat_to_accept_call">Abrir <xliff:g id="appNameFull">SimpleX Chat</xliff:g> para aceptar llamada</string>
<string name="network_options_reset_to_defaults">Restablecer valores por defecto</string>
<string name="save_color">Guardar color</string>
<string name="icon_descr_server_status_pending">Pendiente</string>
<string name="periodic_notifications">Notificaciones periódicas</string>
<string name="store_passphrase_securely">Guarda la contraseña de forma segura, NO podrás cambiarla si la pierdes.</string>
<string name="restart_the_app_to_create_a_new_chat_profile">Reinicia la aplicación para crear un nuevo perfil de chat.</string>
<string name="restore_database_alert_title">¿Restaurar copia de seguridad de la base de datos\?</string>
<string name="onboarding_notifications_mode_title">Notificaciones privadas</string>
<string name="image_descr_profile_image">imagen del perfil</string>
<string name="prohibit_sending_voice_messages">Prohibir el envío de mensajes de voz.</string>
<string name="protect_app_screen">Proteger la pantalla de la aplicación</string>
<string name="read_more_in_github_with_link">Más información en nuestro <font color="#0088ff">repositorio GitHub</font> .</string>
<string name="icon_descr_record_voice_message">Grabar mensaje de voz</string>
<string name="rcv_group_event_member_deleted">eliminado <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="send_link_previews">Enviar previsualizaciones de enlaces</string>
<string name="send_live_message_desc">Envía un mensaje en vivo: se actualizará para el(los) destinatario(s) a medida que se escribe</string>
<string name="icon_descr_sent_msg_status_send_failed">error de envío</string>
<string name="sending_via">Enviando mediante</string>
<string name="contact_developers">Actualiza la aplicación y ponte en contacto con los desarrolladores.</string>
<string name="sender_cancelled_file_transfer">El remitente ha cancelado la transferencia de archivos.</string>
<string name="smp_server_test_secure_queue">Cola segura</string>
<string name="enter_passphrase_notification_title">Se necesita contraseña</string>
<string name="periodic_notifications_disabled">Notificaciones periódicas desactivadas</string>
<string name="simplex_service_notification_text">Recibiendo mensajes…</string>
<string name="reveal_verb">Revelar</string>
<string name="icon_descr_sent_msg_status_sent">enviado</string>
<string name="reject_contact_button">Rechazar</string>
<string name="network_use_onion_hosts_required">Obligatorio</string>
<string name="save_and_notify_contacts">Guardar y notificar contactos</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">Protocolo y código abiertos: cualquiera puede usar los servidores.</string>
<string name="role_in_group">Rol</string>
<string name="network_options_revert">Revertir</string>
<string name="network_option_ping_interval">Intervalo PING</string>
<string name="network_option_ping_count">Contador PING</string>
<string name="only_your_contact_can_delete">Sólo tu contacto puede eliminar mensajes de forma irreversible (tu puedes marcar para eliminar).</string>
<string name="v4_5_message_draft_descr">Conserva el último borrador del mensaje con los datos adjuntos.</string>
<string name="v4_5_private_filenames">Nombres de archivos privados</string>
<string name="v4_5_reduced_battery_usage">Reducción del uso de la batería</string>
<string name="observer_cant_send_message_desc">Póngase en contacto con el administrador del grupo.</string>
<string name="ask_your_contact_to_enable_voice">Solicita que tu contacto habilite el envío de mensajes de voz.</string>
<string name="send_live_message">Enviar mensaje en vivo</string>
<string name="scan_QR_code">Escanear código QR</string>
<string name="send_verb">Enviar</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(escanear o pegar desde el portapapeles)</string>
<string name="icon_descr_profile_image_placeholder">Espacio reservado para la imagen del perfil</string>
<string name="image_descr_qr_code">Código QR</string>
<string name="chat_with_the_founder">Envía consultas e ideas</string>
<string name="smp_servers_preset_address">Dirección del servidor predefinida</string>
<string name="send_us_an_email">Contacta por email</string>
<string name="rate_the_app">Valora la aplicación</string>
<string name="save_servers_button">Guardar</string>
<string name="callstate_received_answer">respuesta recibida…</string>
<string name="callstate_received_confirmation">confirmación recibida…</string>
<string name="onboarding_notifications_mode_periodic">Periódico</string>
<string name="privacy_redefined">Privacidad redefinida</string>
<string name="read_more_in_github">Más información en nuestro repositorio GitHub.</string>
<string name="reject">Rechazar</string>
<string name="open_verb">Abrir</string>
<string name="icon_descr_call_pending_sent">Llamada pendiente</string>
<string name="privacy_and_security">Privacidad y seguridad</string>
<string name="store_passphrase_securely_without_recover">Guarda la contraseña de forma segura, NO podrás acceder al chat si la pierdes.</string>
<string name="save_archive">Guardar archivo</string>
<string name="restore_database_alert_desc">Introduce la contraseña anterior después de restaurar la copia de seguridad de la base de datos. Esta acción no se puede deshacer.</string>
<string name="rcv_group_event_user_deleted">te ha eliminado</string>
<string name="receiving_via">Recibiendo mediante</string>
<string name="network_option_protocol_timeout">Tiempo de espera del protocolo</string>
<string name="network_option_seconds_label">seg</string>
<string name="users_delete_with_connections">Perfil y conexiones de servidor</string>
<string name="prohibit_sending_disappearing_messages">Prohibir el envío de mensajes temporales</string>
<string name="only_you_can_send_voice">Sólo tú puedes enviar mensajes de voz.</string>
<string name="only_your_contact_can_send_voice">Sólo tu contacto puede enviar mensajes de voz.</string>
<string name="run_chat_section">EJECUTAR CHAT</string>
<string name="restart_the_app_to_use_imported_chat_database">Reinicia la aplicación para poder usar la base de datos importada.</string>
<string name="enter_correct_current_passphrase">Introduce la contraseña actual correcta.</string>
<string name="feature_received_prohibited">recepción prohibida</string>
<string name="only_you_can_delete_messages">Sólo tú puedes eliminar mensajes de forma irreversible (tu contacto puede marcar para eliminar).</string>
<string name="prohibit_direct_messages">Prohibir el envío de mensajes directos a los miembros.</string>
<string name="prohibit_sending_disappearing">Prohibir el envío de mensajes temporales</string>
<string name="v4_2_security_assessment">Evaluación de la seguridad</string>
<string name="receiving_files_not_yet_supported">la recepción de archivos aún no está disponible</string>
<string name="sending_files_not_yet_supported">el envío de archivos aún no está disponible</string>
<string name="call_connection_peer_to_peer">entre particulares</string>
<string name="icon_descr_call_rejected">Llamada rechazada</string>
<string name="remove_passphrase">Eliminar</string>
<string name="remove_passphrase_from_keychain">¿Eliminar contraseña de Keystore\?</string>
<string name="open_chat">Abrir chat</string>
<string name="restore_database">Restaurar copia de seguridad de la base de datos</string>
<string name="save_passphrase_and_open_chat">Guardar contraseña y abrir el chat</string>
<string name="restore_passphrase_not_found_desc">La contraseña no se ha encontrado en Keystore, introdúzcala manualmente. Esto puede haber ocurrido si has restaurado los datos de la aplicación con una herramienta de copia de seguridad. Si no es así, ponte en contacto con los desarrolladores.</string>
<string name="remove_member_confirmation">Eliminar</string>
<string name="button_remove_member">Eliminar miembro</string>
<string name="button_send_direct_message">Enviar mensaje directo</string>
<string name="reset_verb">Restablecer</string>
<string name="paste_button">Pegar</string>
<string name="security_code">Código de seguridad</string>
<string name="scan_code_from_contacts_app">Escanea el código de seguridad desde la aplicación de tu contacto.</string>
<string name="smp_servers_save">Guardar servidores</string>
<string name="smp_servers_scan_qr">Escanear código QR del servidor</string>
<string name="smp_servers_preset_server">Servidor predefinido</string>
<string name="save_and_notify_contact">Guardar y notificar contacto</string>
<string name="save_preferences_question">¿Guardar preferencias\?</string>
<string name="save_and_notify_group_members">Guardar y notificar a los miembros del grupo</string>
<string name="connection_error_auth_desc">A menos que tu contacto haya eliminado la conexión o que este enlace ya se haya utilizado, podría tratarse de un error. Por favor, notifícalo.
\nPara conectarte, pide a tu contacto que cree otro enlace de conexión y comprueba que tienes buena conexión de red.</string>
<string name="periodic_notifications_desc">La aplicación recoge nuevos mensajes periódicamente por lo que utiliza un pequeño porcentaje de la batería al día. La aplicación no hace uso de notificaciones automáticas: los datos de tu dispositivo no se envían a los servidores.</string>
<string name="la_notice_title_simplex_lock">Bloqueo SimpleX</string>
<string name="auth_unlock">Desbloquear</string>
<string name="this_text_is_available_in_settings">Este texto está disponible en Configuración</string>
<string name="switch_receiving_address_desc">¡Experimental! Sólo funcionará si el otro cliente tiene instalada la versión 4.2. Deberías ver el mensaje en la conversación una vez completado el cambio de dirección. Comprueba que puedes seguir recibiendo mensajes de este contacto (o miembro del grupo).</string>
<string name="chat_lock">Bloqueo SimpleX</string>
<string name="using_simplex_chat_servers">Usando servidores <xliff:g id="appNameFull">SimpleX Chat</xliff:g>.</string>
<string name="network_session_mode_transport_isolation">Aislamiento de transporte</string>
<string name="strikethrough">tachado</string>
<string name="use_chat">Usar Chat</string>
<string name="settings_section_title_socks">PROXY SOCKS</string>
<string name="settings_section_title_themes">TEMAS</string>
<string name="stop_chat_confirmation">Detener</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Esta acción no se puede deshacer. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente.</string>
<string name="skip_inviting_button">Omitir invitación a miembros</string>
<string name="settings_notification_preview_mode_title">Mostrar vista previa</string>
<string name="la_notice_turn_on">Activar</string>
<string name="share_verb">Compartir</string>
<string name="icon_descr_sent_msg_status_unauthorized_send">envío no autorizado</string>
<string name="set_contact_name">Introduce el nombre del contacto</string>
<string name="network_socks_toggle">Usar proxy SOCKS (puerto 9050)</string>
<string name="unknown_error">Error desconocido</string>
<string name="member_role_will_be_changed_with_notification">El rol cambiará a \"%s\". Se notificará a todos los miembros del grupo.</string>
<string name="v4_2_security_assessment_desc">La seguridad de SimpleX Chat fue auditada por Trail of Bits.</string>
<string name="v4_4_disappearing_messages_desc">Los mensajes enviados se eliminarán una vez transcurrido el tiempo establecido.</string>
<string name="ntf_channel_messages">Mensajes de chat SimpleX</string>
<string name="icon_descr_received_msg_status_unread">no leído</string>
<string name="text_field_set_contact_placeholder">Introduce el nombre del contacto…</string>
<string name="switch_receiving_address_question">¿Cambiar dirección de recepción\?</string>
<string name="use_camera_button">Usar cámara</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">¡El contacto con el que has compartido este enlace NO podrá conectarse!</string>
<string name="show_QR_code">Mostrar código QR</string>
<string name="this_link_is_not_a_valid_connection_link">¡El enlace no es un enlace de conexión válido!</string>
<string name="this_QR_code_is_not_a_link">¡El código QR no es un enlace!</string>
<string name="share_invitation_link">Compartir enlace de invitación</string>
<string name="update_network_session_mode_question">¿Actualizar el modo de aislamiento de transporte\?</string>
<string name="icon_descr_speaker_on">Altavoz activado</string>
<string name="stop_chat_to_enable_database_actions">Detener Chat para habilitar acciones sobre la base de datos.</string>
<string name="connection_you_accepted_will_be_cancelled">¡La conexión que has aceptado se cancelará!</string>
<string name="database_initialization_error_desc">La base de datos no funciona correctamente. Pulsa para obtener más información</string>
<string name="moderate_message_will_be_marked_warning">El mensaje será marcado como moderado para todos los miembros.</string>
<string name="next_generation_of_private_messaging">La próxima generación de mensajería privada</string>
<string name="delete_files_and_media_desc">Esta acción no se puede deshacer. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.</string>
<string name="enable_automatic_deletion_message">Esta acción no se puede deshacer. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos.</string>
<string name="messages_section_description">Esta configuración se aplica a los mensajes en su perfil actual de Chat</string>
<string name="this_string_is_not_a_connection_link">¡Esta cadena no es un enlace de conexión!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery">Para preservar tu privacidad, en lugar de notificaciones automáticas la aplicación cuenta con un <b>servicio en segundo plano<xliff:g id="appName">SimpleX</xliff:g></b>, utiliza un pequeño porcentaje de la batería al día.</string>
<string name="icon_descr_settings">Configuración</string>
<string name="icon_descr_speaker_off">Altavoz apagado</string>
<string name="add_contact_or_create_group">Inciar chat nuevo</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">Detener Chat para exportar, importar o eliminar la base de datos del chat. No podrá recibir ni enviar mensajes mientras el chat esté detenido.</string>
<string name="thank_you_for_installing_simplex">Gracias por instalar <xliff:g id="appNameFull">SimpleX Chat</xliff:g>!</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Para proteger la privacidad, en lugar de los identificadores de usuario que utilizan el resto de plataformas, <xliff:g id="appName">SimpleX</xliff:g> dispone de identificadores para las colas de mensajes, independientes para cada uno de tus contactos.</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">Para proteger tu información, activa SimpleX Lock.
\nSe te pedirá que completes la autenticación antes de activar esta función.</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">Al actualizar la configuración, el cliente se reconectará a todos los servidores.</string>
<string name="use_simplex_chat_servers__question">¿Usar servidores <xliff:g id="appNameFull">SimpleX Chat</xliff:g>\?</string>
<string name="simplex_link_group">Enlace de grupo SimpleX</string>
<string name="simplex_link_invitation">Invitación única SimpleX</string>
<string name="simplex_link_mode">Enlaces SimpleX</string>
<string name="error_smp_test_server_auth">El servidor requiere autorización para crear colas, comprueba la contraseña</string>
<string name="enter_passphrase_notification_desc">Para recibir notificaciones, introduce la contraseña de la base de datos</string>
<string name="ntf_channel_calls">Llamadas de chat SimpleX</string>
<string name="notifications_mode_periodic">Se inicia periódicamente</string>
<string name="notification_preview_mode_message_desc">Mostrar contacto y mensaje</string>
<string name="notification_preview_mode_contact_desc">Mostrar sólo contacto</string>
<string name="auth_simplex_lock_turned_on">Bloqueo SimpleX activado</string>
<string name="auth_stop_chat">Detener chat</string>
<string name="moderate_message_will_be_deleted_warning">El mensaje se eliminará para todos los miembros.</string>
<string name="share_file">Compartir archivo…</string>
<string name="images_limit_title">¡Demasiadas imágenes!</string>
<string name="image_decoding_exception_desc">La imagen no se puede decodificar. Pruebe otra imagen o pónte en contacto con los desarrolladores.</string>
<string name="network_enable_socks">¿Usa proxy SOCKS\?</string>
<string name="network_use_onion_hosts">Usar hosts .onion</string>
<string name="core_simplexmq_version">simplexmq: v%s (%2s)</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">La plataforma de mensajería y aplicaciones que protege tu privacidad y seguridad.</string>
<string name="first_platform_without_user_ids">La primera plataforma sin identificadores de usuario: diseñada para la privacidad.</string>
<string name="alert_message_no_group">Este grupo ya no existe.</string>
<string name="incognito_info_find">Para encontrar el perfil usado en una conexión en modo incógnito, pulsa el nombre del contacto o del grupo en la parte superior del chat.</string>
<string name="accept_feature_set_1_day">Establecer 1 día</string>
<string name="v4_4_french_interface_descr">Gracias a los usuarios: ¡contribuye a través de Weblate!</string>
<string name="v4_5_italian_interface_descr">Gracias a los usuarios: ¡contribuye a través de Weblate!</string>
<string name="v4_5_private_filenames_descr">Para proteger la zona horaria, los archivos de imagen/voz usan la hora UTC.</string>
<string name="v4_5_transport_isolation">Aislamiento de transporte</string>
<string name="to_share_with_your_contact">(para compartir con tu contacto)</string>
<string name="unmute_chat">Activar audio</string>
<string name="is_verified">%s está verificado</string>
<string name="is_not_verified">%s no está verificado</string>
<string name="smp_servers_test_server">Probar servidor</string>
<string name="smp_servers_test_servers">Probar servidores</string>
<string name="star_on_github">Comienza en GitHub</string>
<string name="smp_servers_per_user">Los servidores para nuevas conexiones de tu perfil de Chat actual</string>
<string name="network_disable_socks">¿Usar conexión directa a Internet\?</string>
<string name="update_onion_hosts_settings_question">¿Actualizar la configuración de los hosts .onion\?</string>
<string name="profile_is_only_shared_with_your_contacts">El perfil sólo se comparte con tus contactos.</string>
<string name="callstate_starting">inicializando…</string>
<string name="alert_title_skipped_messages">Mensajes omitidos</string>
<string name="settings_section_title_settings">CONFIGURACIÓN</string>
<string name="stop_chat_question">¿Detener Chat\?</string>
<string name="chat_item_ttl_seconds">%s segundo(s)</string>
<string name="group_invitation_tap_to_join">Pulsa para unirse</string>
<string name="rcv_group_event_updated_group_profile">perfil de grupo actualizado</string>
<string name="network_option_tcp_connection_timeout">Tiempo de espera de la conexión TCP agotado</string>
<string name="theme">Tema</string>
<string name="set_group_preferences">Establecer preferencias de grupo</string>
<string name="settings_section_title_support">SOPORTE SIMPLEX CHAT</string>
<string name="set_password_to_export">Seleccióna contraseña para exportar</string>
<string name="update_database">Actualizar</string>
<string name="update_database_passphrase">Actualizar contraseña base de datos</string>
<string name="group_invitation_tap_to_join_incognito">Pulsa para unirte en modo incógnito</string>
<string name="switch_verb">Cambiar</string>
<string name="member_role_will_be_changed_with_invitation">El rol cambiará a \"%s\". El miembro recibirá una nueva invitación.</string>
<string name="update_network_settings_confirmation">Actualizar</string>
<string name="update_network_settings_question">¿Actualizar la configuración de red\?</string>
<string name="trying_to_connect_to_server_to_receive_messages">Intentando conectar con el servidor utilizado para recibir mensajes de este contacto.</string>
<string name="unknown_message_format">formato de mensaje desconocido</string>
<string name="trying_to_connect_to_server_to_receive_messages_with_error">Intentando conectar con el servidor utilizado para recibir mensajes de este contacto (error: <xliff:g id="errorMsg">%1$s</xliff:g> ).</string>
<string name="error_smp_test_failed_at_step">Prueba fallida en el paso %s.</string>
<string name="tap_to_start_new_chat">Pulsa para iniciar chat nuevo</string>
<string name="share_message">Compartir mensaje…</string>
<string name="share_image">Compartir imagen…</string>
<string name="show_call_on_lock_screen">Mostrar</string>
<string name="unknown_database_error_with_info">Error desconocido en la base de datos: %s</string>
<string name="database_backup_can_be_restored">El intento de cambiar la contraseña de la base de datos no se ha completado.</string>
<string name="chat_help_tap_button">Pulsa el botón</string>
<string name="to_start_a_new_chat_help_header">Para iniciar un chat nuevo</string>
<string name="switch_receiving_address">Cambiar dirección de recepción</string>
<string name="group_is_decentralized">El grupo está totalmente descentralizado: sólo es visible para los miembros.</string>
<string name="to_connect_via_link_title">Para conectarse mediante enlace</string>
<string name="smp_servers_test_failed">¡Error en prueba del servidor!</string>
<string name="smp_servers_test_some_failed">Algunos servidores no superaron la prueba:</string>
<string name="smp_servers_use_server">Usar servidor</string>
<string name="smp_servers_use_server_for_new_conn">Usar para conexiones nuevas</string>
<string name="theme_system">Sistema</string>
<string name="description_via_one_time_link">mediante enlace único</string>
<string name="your_chats">Tus chats</string>
<string name="voice_message_send_text">Mensaje de voz…</string>
<string name="your_contact_address">Tu dirección de contacto</string>
<string name="icon_descr_video_off">Desactivar vídeo</string>
<string name="icon_descr_video_on">Activar vídeo</string>
<string name="wrong_passphrase">Contraseña de base de datos incorrecta</string>
<string name="wrong_passphrase_title">¡Contraseña incorrecta!</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">Te has unido a este grupo. Conectando con miembro del grupo invitado.</string>
<string name="alert_title_cant_invite_contacts_descr">Estás utilizando un perfil incógnito para este grupo. Para evitar compartir tu perfil principal, invitar contactos no está permitido</string>
<string name="you_are_invited_to_group">Has sido invitado al grupo</string>
<string name="v4_3_voice_messages">Mensajes de voz</string>
<string name="v4_3_irreversible_message_deletion_desc">Tus contactos pueden permitir la eliminación completa de mensajes.</string>
<string name="you_control_servers_to_receive_your_contacts_to_send">Tú controlas a través de qué servidor(es) <b>recibes</b> los mensajes. Tus contactos controlan a través de qué servidor(es) <b>envías</b> tus mensajes.</string>
<string name="voice_messages">Mensajes de voz</string>
<string name="voice_messages_are_prohibited">Los mensajes de voz están prohibidos en este grupo.</string>
<string name="v4_4_verify_connection_security">Comprobar la seguridad de la conexión</string>
<string name="you_are_already_connected_to_vName_via_this_link">¡Ya estás conectado a <xliff:g id="contactName" example="Alice">%1$s! </xliff:g>.</string>
<string name="welcome">¡Bienvenido!</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">Tu perfil de chat será enviado
\na tu contacto</string>
<string name="your_ICE_servers">Tus servidores ICE</string>
<string name="you_rejected_group_invitation">Has rechazado la invitación del grupo.</string>
<string name="snd_group_event_changed_member_role">has cambiado el rol de %s a %s</string>
<string name="call_connection_via_relay">mediante servidor de retransmisión</string>
<string name="contact_wants_to_connect_with_you">¡quiere contactar contigo!</string>
<string name="voice_message">Mensaje de voz</string>
<string name="waiting_for_image">Esperando imagen</string>
<string name="webrtc_ice_servers">Servidores WebRTC ICE</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g> quiere conectarse contigo mediante</string>
<string name="failed_to_create_user_duplicate_desc">Tienes un perfil de chat con el mismo nombre mostrado. Debes elegir otro nombre.</string>
<string name="you_can_also_connect_by_clicking_the_link">También puedes conectarte haciendo clic en el enlace. Si se abre en el navegador, haz clic en <b>Abrir en aplicación móvil</b>.</string>
<string name="you_can_connect_to_simplex_chat_founder">Puedes <font color="#0088ff">conectar con los desarrolladores de <xliff:g id="appNameFull">SimpleX Chat</xliff:g> para hacer cualquier pregunta y recibir actualizaciones</font>.</string>
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">Puedes compartir tu dirección como enlace o como código QR: cualquiera podrá conectarse contigo. Si lo eliminas más tarde tus contactos no se perderán.</string>
<string name="observer_cant_send_message_title">¡No puedes enviar mensajes!</string>
<string name="you_can_use_markdown_to_format_messages__prompt">Puedes usar marcadores para dar formato a los mensajes:</string>
<string name="you_must_use_the_most_recent_version_of_database">Debes usar la versión más reciente de tu base de datos SÓLO en un dispositivo, de lo contrario podrías dejar de recibir mensajes de algunos contactos.</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">Tu contacto debe estar en línea para que se complete la conexión.
\nPuedes cancelar esta conexión y eliminar el contacto (e intentarlo más tarde con un enlace nuevo).</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">La base de datos actual será ELIMINADA y SUSTITUIDA por la importada.
\nEsta acción no se puede deshacer. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente.</string>
<string name="incognito_random_profile">Tu perfil aleatorio</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">Te conectarás cuando se acepte tu solicitud de conexión, por favor espere o compruébalo más tarde.</string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">Te conectarás cuando el dispositivo de tu contacto esté en línea, por favor espera o compruébalo más tarde.</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">Se te pedirá identificarte cuándo inicies o continues usando la aplicación tras 30 segundos en segundo plano.</string>
<string name="invite_prohibited_description">Estás intentando invitar a un contacto con el que has compartido un perfil incógnito, al grupo en el que utilizas tu perfil principal</string>
<string name="simplex_link_mode_browser">mediante navegador</string>
<string name="simplex_link_connection">mediante <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g></string>
<string name="simplex_service_notification_title">Servicio <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="personal_welcome">¡Bienvenido <xliff:g>%1$s</xliff:g> !</string>
<string name="group_preview_you_are_invited">has sido invitado al grupo</string>
<string name="waiting_for_file">Esperando archivo</string>
<string name="icon_descr_waiting_for_image">Esperando imagen</string>
<string name="voice_message_with_duration">Mensaje de voz (<xliff:g id="duration">%1$s</xliff:g> )</string>
<string name="network_use_onion_hosts_prefer">Cuando esté disponible</string>
<string name="we_do_not_store_contacts_or_messages_on_servers">No almacenamos ninguno de tus contactos o mensajes (una vez entregados) en los servidores.</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">Has sido invitado al grupo. Únete para conectarte con los miembros del grupo.</string>
<string name="snd_group_event_member_deleted">has eliminado <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="group_info_member_you">Tú: <xliff:g id="group_info_you">%1$s</xliff:g></string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">Puedes compartir un enlace o un código QR: cualquiera podrá unirse al grupo. Si lo eliminas más tarde los miembros del grupo no se perderán.</string>
<string name="incognito_info_share">Cuando compartes un perfil incógnito con alguien, este perfil se usará para los grupos a los que te inviten.</string>
<string name="your_preferences">Tus preferencias</string>
<string name="v4_2_auto_accept_contact_requests_desc">Con mensaje de bienvenida opcional.</string>
<string name="you_are_observer">Tu rol es observador</string>
<string name="verify_security_code">Comprobar código de seguridad</string>
<string name="you_accepted_connection">Has aceptado la conexión</string>
<string name="you_invited_your_contact">Has invitado a tu contacto</string>
<string name="you_will_be_connected_when_group_host_device_is_online">Te conectarás al grupo cuando el dispositivo del anfitrión esté en línea, por favor espera o compruébalo más tarde.</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">Tu contacto puede escanear el código QR desde la aplicación.</string>
<string name="your_settings">Tu configuración</string>
<string name="your_SMP_servers">Tus servidores SMP</string>
<string name="you_control_your_chat">¡Tú controlas tu chat!</string>
<string name="your_profile_is_stored_on_your_device">Tu perfil, contactos y mensajes entregados se almacenan en tu dispositivo.</string>
<string name="callstate_waiting_for_answer">esperando respuesta…</string>
<string name="callstate_waiting_for_confirmation">esperando confirmación…</string>
<string name="onboarding_notifications_mode_off">Cuando la aplicación se está ejecutando</string>
<string name="icon_descr_video_call">Videollamada</string>
<string name="your_calls">Tus llamadas</string>
<string name="your_ice_servers">Tus servidores ICE</string>
<string name="your_privacy">Tu privacidad</string>
<string name="settings_section_title_you">TU</string>
<string name="your_chat_database">Base de datos de Chat</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">Puedes iniciar el chat en Configuración / Base de datos o reiniciando la aplicación.</string>
<string name="you_sent_group_invitation">Has enviado una invitación de grupo</string>
<string name="num_contacts_selected"><xliff:g id="num_contacts">%1$s</xliff:g> contacto(s) seleccionado(s)</string>
<string name="group_info_section_title_num_members"><xliff:g id="num_members"> %1$s </xliff:g> MIEMBROS</string>
<string name="your_chat_profiles_stored_locally">Tus perfiles de chat se almacenan localmente, sólo en tu dispositivo</string>
<string name="voice_prohibited_in_this_chat">Los mensajes de voz están prohibidos en este chat.</string>
<string name="whats_new">Novedades</string>
<string name="you_have_to_enter_passphrase_every_time">La contraseña no se almacena en el dispositivo, tienes que introducirla cada vez que inicies la aplicación.</string>
<string name="you_joined_this_group">Te has unido a este grupo</string>
<string name="chat_preferences_yes"></string>
<string name="chat_preferences_you_allow">Permites</string>
<string name="app_name"><xliff:g id="appName">SimpleX</xliff:g></string>
<string name="profile_will_be_sent_to_contact_sending_link">Tu perfil se enviará al contacto del que has recibido este enlace.</string>
<string name="you_will_join_group">Te unirás al grupo al que hace referencia este enlace y te conectarás con sus miembros.</string>
<string name="sender_you_pronoun"></string>
<string name="connected_to_server_to_receive_messages_from_contact">Estás conectado al servidor utilizado para recibir mensajes de este contacto.</string>
<string name="description_via_contact_address_link">mediante enlace de dirección de contacto</string>
<string name="description_via_group_link">mediante enlace de grupo</string>
<string name="description_you_shared_one_time_link">has compartido un enlace único</string>
<string name="description_you_shared_one_time_link_incognito">has compartido un enlace único en módo incógnito</string>
<string name="you_have_no_chats">No tienes chats</string>
<string name="contact_sent_large_file">El contacto ha enviado un archivo mayor al máximo admitido (<xliff:g id="maxFileSize">%1$s</xliff:g> ).</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g> mensaje(s) omitido(s)</string>
<string name="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á.</string>
<string name="view_security_code">Ver código de seguridad</string>
<string name="you_need_to_allow_to_send_voice">Para poder enviar mensajes de voz debes permitir que tu contacto pueda enviarlos.</string>
<string name="voice_messages_prohibited">¡Mensajes de voz prohibidos!</string>
<string name="group_main_profile_sent">Tu perfil de chat se enviará a los miembros del grupo</string>
<string name="icon_descr_address">Dirección <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="image_descr_simplex_logo">Logo <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="icon_descr_simplex_team">Equipo <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="your_profile_will_be_sent">Tu perfil de chat se enviará a tu contacto</string>
<string name="your_chat_profiles">Tus perfiles de chat</string>
<string name="your_simplex_contact_address">Tu dirección de contacto <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="smp_servers_your_server">Tu servidor</string>
<string name="smp_servers_your_server_address">Dirección de tu servidor</string>
<string name="section_title_welcome_message">MENSAJE DE BIENVENIDA</string>
<string name="your_current_profile">Tu perfil actual</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Tu perfil se almacena en tu dispositivo y sólo se comparte con tus contactos.
\n
\nLos servidores <xliff:g id="appName">SimpleX</xliff:g> no pueden ver tu perfil.</string>
<string name="language_system">Sistema</string>
</resources>

View File

@@ -143,7 +143,7 @@
<string name="group_preview_join_as">rejoindre en tant que %s</string>
<string name="group_preview_you_are_invited">vous êtes invité·e au groupe</string>
<string name="chat_with_developers">Discuter avec les développeurs</string>
<string name="tap_to_start_new_chat">Appuyez pour commencer un nouveau chat</string>
<string name="tap_to_start_new_chat">Appuyez ici pour démarrer une nouvelle discussion</string>
<string name="you_have_no_chats">Vous n\'avez aucune discussion</string>
<string name="images_limit_title">Trop dimages !</string>
<string name="share_file">Partager le fichier…</string>
@@ -598,12 +598,14 @@
<string name="incoming_audio_call">Appel audio entrant</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g> veut se connecter à vous via</string>
<string name="your_calls">Vos appels</string>
<string name="connect_calls_via_relay">Se connecter via relais</string>
<string name="always_use_relay">Se connecter via relais</string>
<string name="call_on_lock_screen">Appels en écran verrouillé :</string>
<string name="show_call_on_lock_screen">Montrer</string>
<string name="no_call_on_lock_screen">Désactiver</string>
<string name="your_ice_servers">Vos serveurs ICE</string>
<string name="webrtc_ice_servers">Serveurs WebRTC ICE</string>
<string name="relay_server_protects_ip">Le serveur relais protège votre adresse IP, mais il peut observer la durée de l\'appel.</string>
<string name="relay_server_if_necessary">Le serveur relais n\'est utilisé que si nécessaire. Un tiers peut observer votre adresse IP.</string>
<string name="open_simplex_chat_to_accept_call">Ouvrez <xliff:g id="appNameFull">SimpleX Chat</xliff:g> pour décrocher</string>
<string name="status_no_e2e_encryption">sans chiffrement de bout en bout</string>
<string name="status_contact_has_e2e_encryption">Ce contact a le chiffrement de bout en bout</string>
@@ -623,7 +625,6 @@
<string name="privacy_and_security">Vie privée et sécurité</string>
<string name="protect_app_screen">Protéger l\'écran de l\'app</string>
<string name="auto_accept_images">Images auto-acceptées</string>
<string name="transfer_images_faster">Transfert d\'images plus rapide</string>
<string name="full_backup">Sauvegarde des données de l\'app</string>
<string name="settings_section_title_you">VOUS</string>
<string name="settings_section_title_help">AIDE</string>
@@ -927,4 +928,57 @@
<string name="core_build_timestamp">Cœur compilé le : %s</string>
<string name="core_version">Version du cœur : v%s</string>
<string name="network_option_ping_count">Nombre de PING</string>
<string name="users_delete_all_chats_deleted">Toutes les discussions et tous les messages seront supprimés - il est impossible de revenir en arrière !</string>
<string name="delete_files_and_media_all">Effacer tous les fichiers</string>
<string name="users_delete_profile_for">Supprimer le profil de chat pour</string>
<string name="network_session_mode_user_description">Une connexion TCP distincte (et un identifiant SOCKS) sera utilisée <b>pour chaque profil de chat que vous avez dans l\'application</b>.</string>
<string name="users_delete_question">Supprimer le profil du chat \?</string>
<string name="files_and_media_section">Fichiers &amp; médias</string>
<string name="messages_section_title">Messages</string>
<string name="smp_servers_per_user">Les serveurs pour les nouvelles connexions de votre profil de chat actuel</string>
<string name="messages_section_description">Ce paramètre s\'applique aux messages de votre profil de chat actuel</string>
<string name="network_session_mode_entity">Connexion</string>
<string name="delete_files_and_media_for_all_users">Effacer les fichiers de tous les profils de chat</string>
<string name="users_delete_with_connections">Profil et connexions au serveur</string>
<string name="network_session_mode_transport_isolation">Isolement du transport</string>
<string name="update_network_session_mode_question">Mettre à jour le mode d\'isolation du transport \?</string>
<string name="your_chat_profiles_stored_locally">Vos profils de chat sont stockés localement, uniquement sur votre appareil</string>
<string name="network_session_mode_entity_description">Une connexion TCP distincte (et identifiant SOCKS) sera utilisée <b>pour chaque contact et membre de groupe</b>.
\n<b>Veuillez noter</b> : si vous avez de nombreuses connexions, votre consommation de batterie et de réseau peut être nettement plus élevée et certaines liaisons peuvent échouer.</string>
<string name="network_session_mode_user">Profil de chat</string>
<string name="users_add">Ajouter un profil</string>
<string name="users_delete_data_only">Données de profil local uniquement</string>
<string name="error_deleting_user">Erreur lors de la suppression du profil utilisateur</string>
<string name="your_chat_profiles">Vos profils de chat</string>
<string name="failed_to_active_user_title">Erreur lors du changement de profil !</string>
<string name="failed_to_create_user_title">Erreur lors de la création du profil !</string>
<string name="failed_to_create_user_duplicate_desc">Vous avez déjà un profil de chat avec ce même nom affiché. Veuillez choisir un autre nom.</string>
<string name="failed_to_create_user_duplicate_title">Nom d\'affichage en double !</string>
<string name="v4_4_french_interface">Interface en français</string>
<string name="v4_5_transport_isolation_descr">Par profil de chat (par défaut) ou par connexion (BETA).</string>
<string name="v4_5_italian_interface">Interface en italien</string>
<string name="v4_5_message_draft">Brouillon de message</string>
<string name="v4_5_reduced_battery_usage_descr">Plus d\'améliorations à venir !</string>
<string name="v4_5_multiple_chat_profiles">Différents profils de chat</string>
<string name="v4_5_message_draft_descr">Conserver le brouillon du dernier message, avec les pièces jointes.</string>
<string name="v4_5_reduced_battery_usage">Réduction de la consommation de batterie</string>
<string name="v4_5_private_filenames">Noms de fichiers privés</string>
<string name="v4_5_italian_interface_descr">Merci aux utilisateurs - contribuez via Weblate !</string>
<string name="v4_4_french_interface_descr">Merci aux utilisateurs - contribuez via Weblate !</string>
<string name="v4_5_private_filenames_descr">Pour préserver le fuseau horaire, les fichiers image/voix utilisent le système UTC.</string>
<string name="v4_5_transport_isolation">Isolation du transport</string>
<string name="v4_5_multiple_chat_profiles_descr">Différents noms, avatars et mode d\'isolation de transport.</string>
<string name="moderated_description">modéré</string>
<string name="moderated_item_description">modéré par %s</string>
<string name="delete_member_message__question">Supprimer le message de ce membre \?</string>
<string name="moderate_verb">Modéré</string>
<string name="moderate_message_will_be_deleted_warning">Le message sera supprimé pour tous les membres.</string>
<string name="moderate_message_will_be_marked_warning">Le message sera marqué comme modéré pour tous les membres.</string>
<string name="you_are_observer">vous êtes observateur</string>
<string name="error_updating_link_for_group">Erreur lors de la mise à jour du lien de groupe</string>
<string name="initial_member_role">Rôle initial</string>
<string name="observer_cant_send_message_desc">Veuillez contacter l\'administrateur du groupe.</string>
<string name="observer_cant_send_message_title">Vous ne pouvez pas envoyer de messages !</string>
<string name="group_member_role_observer">observateur</string>
<string name="language_system">Système</string>
</resources>

View File

@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="share_image">चित्र साझा करें…</string>
<string name="chat_preferences_off">बंद</string>
<string name="accept_feature_set_1_day">1 दिन निर्धारित करें</string>
<string name="v4_3_improved_server_configuration_desc">क्यूआर संहिता स्कैन करके सर्वर जोड़ें।</string>
<string name="group_preview_you_are_invited">आपको समूह में आमंत्रित किया जाता है</string>
<string name="icon_descr_server_status_connected">जुड़े हुए</string>
<string name="use_camera_button">कैमरे का प्रयोग करें</string>
<string name="above_then_preposition_continuation">ऊपर,तब:</string>
<string name="accept_contact_button">स्वीकार करना</string>
<string name="connect_button">जुडिये</string>
<string name="your_contact_address">आपका संपर्क पता</string>
<string name="smp_servers_add_to_another_device">दूसरे उपकरण में जोड़ें</string>
<string name="bold">निडर</string>
<string name="answer_call">कॉल का उत्तर दें</string>
<string name="settings_section_title_you">तुम</string>
<string name="settings_section_title_settings">समायोजन</string>
<string name="chat_item_ttl_month">1 महीना</string>
<string name="rcv_group_event_member_connected">जुड़े हुए</string>
<string name="group_member_role_admin">व्यवस्थापक</string>
<string name="all_group_members_will_remain_connected">समूह के सभी सदस्य जुड़े रहेंगे।</string>
<string name="change_verb">परिवर्तन</string>
<string name="sending_via">माध्यम से भेजा जा रहा है</string>
<string name="feature_off">बंद</string>
<string name="whats_new">नया क्या है</string>
<string name="v4_2_group_links_desc">व्यवस्थापक समूहों में शामिल होने के लिए लिंक बना सकते हैं।</string>
<string name="chat_item_ttl_day">1 दिन</string>
<string name="chat_item_ttl_week">1 सप्ताह</string>
<string name="about_simplex">सिंपलएक्स के बारे में</string>
<string name="about_simplex_chat">बारे में <xliff:g id="appNameFull">सिंप्लेक्स चैट</xliff:g></string>
<string name="accept_call_on_lock_screen">स्वीकार करना</string>
<string name="accept">स्वीकार करना</string>
<string name="accept_feature">स्वीकार करना</string>
<string name="accept_connection_request__question">संबंध अनुरोध स्वीकार करें\?</string>
<string name="callstatus_accepted">स्वीकृत कॉल</string>
<string name="accept_contact_incognito_button">गुप्त स्वीकार करें</string>
<string name="accept_requests">निवेदन स्वीकार करो</string>
<string name="smp_servers_preset_add">पूर्वनिर्धारित सर्वर जोड़ें</string>
<string name="users_add">प्रोफ़ाइल जोड़ें</string>
<string name="smp_servers_add">सर्वर जोड़े…</string>
<string name="notifications_mode_service">हमेशा बने रहें</string>
<string name="attach">संलग्न करना</string>
<string name="network_settings">उन्नत संजाल समायोजन</string>
<string name="users_delete_all_chats_deleted">सभी बातचीत और संदेश हटा दिए जाएंगे - इसे पूर्ववत नहीं किया जा सकता!</string>
<string name="chat_preferences_always">हमेशा</string>
<string name="allow_verb">अनुमति देना</string>
<string name="appearance_settings">दिखावट</string>
<string name="cancel_verb">रद्द करना</string>
<string name="icon_descr_cancel_file_preview">फ़ाइल पूर्वावलोकन रद्द करें</string>
<string name="icon_descr_cancel_image_preview">छवि पूर्वावलोकन रद्द करें</string>
<string name="clear_verb">साफ़</string>
<string name="colored">रंगीन</string>
<string name="callstate_connected">जुड़े हुए</string>
<string name="smp_server_test_connect">जुडिये</string>
<string name="connect_via_link_verb">जुडिये</string>
<string name="server_connected">जुड़े हुए</string>
<string name="group_member_role_owner">स्वामी</string>
<string name="group_member_status_connected">जुड़े हुए</string>
<string name="notification_contact_connected">जुड़े हुए</string>
<string name="you_joined_this_group">आप इस समूह में शामिल हो गए</string>
<string name="group_info_member_you">तुम: <xliff:g id="group_info_you">%1$s</xliff:g></string>
<string name="you_are_invited_to_group">आपको समूह में आमंत्रित किया जाता है</string>
<string name="snd_conn_event_switch_queue_phase_completed">तुमने पता बदल लिया</string>
<string name="snd_group_event_user_left">आप चले गए</string>
<string name="unknown_error">अज्ञात त्रुटि</string>
<string name="chat_preferences_you_allow">आप आज्ञा दें</string>
<string name="welcome">स्वागत!</string>
<string name="la_notice_turn_on">चालू करो</string>
<string name="section_title_welcome_message">स्वागत संदेश</string>
<string name="unknown_message_format">अज्ञात संदेश प्रारूप</string>
<string name="personal_welcome">स्वागत <xliff:g>%1$s</xliff:g>!</string>
<string name="callstate_starting">शुरुआत</string>
<string name="send_verb">भेजना</string>
<string name="save_color">रंग बचाओ</string>
<string name="share_verb">साझा करना</string>
<string name="reject_contact_button">अस्वीकार</string>
<string name="network_use_onion_hosts_required">आवश्यक</string>
<string name="reject">अस्वीकार</string>
<string name="open_verb">खुला</string>
<string name="group_member_status_removed">निकाला गया</string>
<string name="rcv_group_event_member_deleted">निकाला गया <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="reply_verb">जवाब दे दो</string>
<string name="leave_group_button">छोड़ना</string>
<string name="mark_read">पढ़ा हुआ चिह्नित करें</string>
<string name="icon_descr_more_button">अधिक</string>
<string name="network_use_onion_hosts_no">नहीं</string>
<string name="chat_item_ttl_none">कभी नहीं</string>
<string name="group_member_status_invited">आमंत्रित</string>
<string name="delete_after">बाद मिटा दें</string>
<string name="display_name_invited_to_connect">जुड़ने के लिए आमंत्रित किया</string>
<string name="rcv_group_event_invited_via_your_group_link">आपके समूह लिंक के माध्यम से आमंत्रित किया गया</string>
<string name="rcv_group_event_member_added">आमंत्रित <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="icon_descr_add_members">सदस्यों को आमंत्रित करो</string>
<string name="v4_3_irreversible_message_deletion">अपरिवर्तनीय संदेश विलोपन</string>
<string name="button_add_members">सदस्यों को आमंत्रित करो</string>
<string name="invite_to_group_button">समूह में आमंत्रित करें</string>
<string name="message_deletion_prohibited_in_chat">इस समूह में अपरिवर्तनीय संदेश हटाना प्रतिबंधित है।</string>
<string name="italic">तिरछा</string>
<string name="join_group_button">प्रवेश लेना</string>
<string name="join_group_incognito_button">गुप्त में शामिल हों</string>
<string name="joining_group">समूह में शामिल होना</string>
<string name="join_group_question">समूह में शामिल हों\?</string>
<string name="thousand_abbreviation"></string>
<string name="keychain_error">चाबी का गुच्छा त्रुटि</string>
<string name="button_leave_group">समूह छोड़ दें</string>
<string name="leave_group_question">समूह छोड़ दें</string>
<string name="rcv_group_event_member_left">बाएं</string>
<string name="group_member_status_left">बाएं</string>
<string name="theme_light">प्रकाश</string>
<string name="info_row_local_name">स्थानीय नाम</string>
<string name="users_delete_data_only">केवल स्थानीय प्रोफ़ाइल डेटा</string>
<string name="auth_log_in_using_credential">अपने क्रेडेंशियल का उपयोग करके लॉग इन करें</string>
<string name="make_private_connection">एक निजी संबंध बनाओ</string>
<string name="marked_deleted_description">मिटाया हुआ चिह्नित किया गया</string>
<string name="mark_unread">अपठित को चिह्नित करें</string>
<string name="v4_3_voice_messages_desc">अधिकतम 40 सेकंड, तुरन्त प्राप्त हुआ।</string>
<string name="you_sent_group_invitation">आपने समूह आमंत्रण भेजा</string>
<string name="message_delivery_error_desc">सबसे अधिक संभावना है कि इस संपर्क ने आपके साथ संबंध हटा दिया है।</string>
<string name="mute_chat">मूक</string>
<string name="network_status">नेटवर्क की स्थिति</string>
<string name="notification_new_contact_request">नया संपर्क अनुरोध</string>
<string name="delete_files_and_media_all">सभी फाइलों को मिटा दें</string>
<string name="delete_archive">संग्रह हटा देना</string>
<string name="new_database_archive">नया डेटाबेस संग्रह</string>
<string name="new_member_role">नए सदस्य की भूमिका</string>
<string name="settings_notifications_mode_title">अधिसूचना सेवा</string>
<string name="notification_preview_new_message">नया सन्देश</string>
<string name="no_contacts_to_add">जोड़ने के लिए कोई संपर्क नहीं है</string>
<string name="chat_preferences_no">नहीं</string>
<string name="no_contacts_selected">कोई संपर्क नहीं चुना गया</string>
<string name="no_details">कोई विवरण नहीं</string>
<string name="settings_notification_preview_title">अधिसूचना पूर्वावलोकन</string>
<string name="notifications">सूचनाएं</string>
<string name="full_deletion">सभी के लिए हटाएं</string>
<string name="delete_chat_archive_question">लिखचीत संग्रह हटा दे\?</string>
<string name="delete_chat_profile_question">चैट प्रोफ़ाइल हटाएं\?</string>
<string name="users_delete_question">चैट प्रोफ़ाइल हटाएं\?</string>
<string name="users_delete_profile_for">के लिए चैट प्रोफ़ाइल हटाएं</string>
<string name="button_delete_contact">संपर्क मिटा दें</string>
<string name="deleted_description">हटाए गए</string>
<string name="delete_contact_question">संपर्क मिटा दें\?</string>
<string name="rcv_group_event_group_deleted">हटाए गए समूह</string>
<string name="delete_image">छवि हटाएं</string>
<string name="button_delete_group">समूह हटाएं</string>
<string name="for_me_only">मेरे लिए हटाएं</string>
<string name="hide_verb">छिपाना</string>
<string name="both_you_and_your_contacts_can_delete">आप और आपका संपर्क दोनों भेजे गए संदेशों को अपरिवर्तनीय रूप से हटा सकते हैं।</string>
<string name="message_deletion_prohibited">इस चैट में अपरिवर्तनीय संदेश हटाना प्रतिबंधित है।</string>
<string name="chat_with_the_founder">प्रश्न और विचार भेजें</string>
<string name="send_us_an_email">हमें ईमेल भेजें</string>
<string name="display_name">प्रदर्शित होने वाला नाम</string>
<string name="confirm_verb">पुष्टि करना</string>
<string name="you_accepted_connection">आपने कनेक्शन स्वीकार किया</string>
<string name="contribute">योगदान देना</string>
<string name="both_you_and_your_contact_can_send_disappearing">आप और आपका संपर्क दोनों गायब होने वाले संदेश भेज सकते हैं।</string>
<string name="allow_to_send_disappearing">गायब होने वाले संदेश भेजने की अनुमति दें।</string>
<string name="prohibit_sending_disappearing">गायब होने वाले संदेश भेजने पर रोक लगाएं।</string>
<string name="how_to_use_simplex_chat">इसका उपयोग कैसे करना है</string>
<string name="group_member_status_group_deleted">समूह हटाया गया</string>
<string name="delete_message_cannot_be_undone_warning">संदेश हटा दिया जाएगा - इसे पूर्ववत नहीं किया जा सकता!</string>
<string name="message_delivery_error_title">संदेश वितरण त्रुटि</string>
<string name="group_display_name_field">समूह प्रदर्शन नाम:</string>
<string name="group_full_name_field">समूह का पूरा नाम:</string>
<string name="group_invitation_expired">समूह आमंत्रण समाप्त हो गया</string>
<string name="v4_3_irreversible_message_deletion_desc">आपके संपर्क पूर्ण संदेश को हटाने की अनुमति दे सकते हैं।</string>
<string name="new_in_version">%s में नया</string>
<string name="icon_descr_group_inactive">समूह निष्क्रिय</string>
<string name="delete_group_menu_action">मिटाना</string>
<string name="delete_contact_menu_action">मिटाना</string>
<string name="create_your_profile">अपना प्रोफ़ाइल बनाए</string>
<string name="set_contact_name">संपर्क नाम सेट करें</string>
<string name="icon_descr_email">ईमेल</string>
<string name="callstate_received_answer">जवाब मिला…</string>
<string name="use_chat">चैट का प्रयोग करें</string>
<string name="error_with_info">गलती: %s</string>
<string name="delete_messages_after">संदेशों को बाद में हटाएं</string>
<string name="image_descr">छवि</string>
<string name="icon_descr_server_status_error">गलती</string>
<string name="restore_database_alert_confirm">वापस लौटाना</string>
<string name="a_plus_b">ए + बी</string>
<string name="incognito_random_profile">आपका यादृच्छिक प्रोफ़ाइल</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -378,7 +378,7 @@
<string name="icon_descr_call_progress">Chiamata in corso</string>
<string name="call_on_lock_screen">Chiamate sulla schermata di blocco:</string>
<string name="icon_descr_call_connecting">Connessione chiamata</string>
<string name="connect_calls_via_relay">Connetti via relay</string>
<string name="always_use_relay">Connetti via relay</string>
<string name="status_contact_has_e2e_encryption">il contatto ha la crittografia e2e</string>
<string name="status_contact_has_no_e2e_encryption">il contatto non ha la crittografia e2e</string>
<string name="no_call_on_lock_screen">Disattiva</string>
@@ -613,7 +613,7 @@
<string name="your_contact_address">Il tuo indirizzo di contatto</string>
<string name="smp_servers_your_server">Il tuo server</string>
<string name="smp_servers_your_server_address">L\'indirizzo del tuo server</string>
<string name="your_simplex_contact_address">Il tuo indirizzo di contatto di <xliff:g id="appName">SimpleX</xliff:g>.</string>
<string name="your_simplex_contact_address">Il tuo indirizzo di contatto di <xliff:g id="appName">SimpleX</xliff:g></string>
<string name="network_disable_socks_info">Se confermi, i server di messaggistica saranno in grado di vedere il tuo indirizzo IP e il tuo fornitore, a quali server ti stai connettendo.</string>
<string name="install_simplex_chat_for_terminal">Installa <xliff:g id="appNameFull">SimpleX Chat</xliff:g> per terminale</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">Assicurati che gli indirizzi dei server WebRTC ICE siano nel formato corretto, uno per riga e non doppi.</string>
@@ -663,7 +663,7 @@
<string name="section_title_welcome_message">MESSAGGIO DI BENVENUTO</string>
<string name="you_can_use_markdown_to_format_messages__prompt">Puoi usare il markdown per formattare i messaggi:</string>
<string name="you_control_your_chat">Sei tu a controllare la tua chat!</string>
<string name="your_current_profile">Il tuo profilo di chat</string>
<string name="your_current_profile">Il tuo profilo attuale</string>
<string name="your_profile_is_stored_on_your_device">Il tuo profilo, i contatti e i messaggi recapitati sono memorizzati sul tuo dispositivo.</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Il tuo profilo è memorizzato sul tuo dispositivo e condiviso solo con i tuoi contatti.
\n
@@ -718,6 +718,8 @@
<string name="icon_descr_video_off">Video off</string>
<string name="icon_descr_video_on">Video on</string>
<string name="webrtc_ice_servers">Server WebRTC ICE</string>
<string name="relay_server_protects_ip">Il server relay protegge il tuo indirizzo IP, ma può osservare la durata della chiamata.</string>
<string name="relay_server_if_necessary">Il server relay viene usato solo se necessario. Un altro utente può osservare il tuo indirizzo IP.</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g> messaggio/i saltato/i</string>
<string name="your_calls">Le tue chiamate</string>
<string name="your_ice_servers">I tuoi server ICE</string>
@@ -742,7 +744,6 @@
<string name="settings_section_title_support">SUPPORTA SIMPLEX CHAT</string>
<string name="settings_section_title_themes">TEMI</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Questa azione non può essere annullata: il tuo profilo, i contatti, i messaggi e i file andranno persi in modo irreversibile.</string>
<string name="transfer_images_faster">Trasferisci immagini più velocemente</string>
<string name="settings_section_title_you">TU</string>
<string name="your_chat_database">Il tuo database della chat</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Il tuo attuale database di chat verrà ELIMINATO e SOSTITUITO con quello importato.
@@ -927,4 +928,57 @@
<string name="app_version_code">Build dell\'app: %s</string>
<string name="app_version_name">Versione app: v%s</string>
<string name="core_build_timestamp">Core compilato il: %s</string>
<string name="smp_servers_per_user">I server per le nuove connessioni del profilo di chat attuale</string>
<string name="users_add">Aggiungi profilo</string>
<string name="users_delete_question">Eliminare il profilo di chat\?</string>
<string name="network_session_mode_user_description">Verrà usata una connessione TCP separata (e le credenziali SOCKS) <b> per ogni profilo di chat presente nell\'app</b>.</string>
<string name="delete_files_and_media_all">Elimina tutti i file</string>
<string name="users_delete_data_only">Solo dati del profilo locale</string>
<string name="messages_section_title">Messaggi</string>
<string name="files_and_media_section">File e multimediali</string>
<string name="update_network_session_mode_question">Aggiornare la modalità di isolamento del trasporto\?</string>
<string name="users_delete_all_chats_deleted">Tutte le chat e i messaggi verranno eliminati. Non è reversibile!</string>
<string name="network_session_mode_user">Profilo di chat</string>
<string name="network_session_mode_entity_description">Verrà usata una connessione TCP separata (e le credenziali SOCKS) <b> per ogni contatto e membro del gruppo </b>.
\n<b> Nota: </b>: se hai molte connessioni, il consumo di batteria e traffico può essere notevolmente superiore e alcune connessioni potrebbero fallire.</string>
<string name="network_session_mode_entity">Connessione</string>
<string name="messages_section_description">Questa impostazione si applica ai messaggi del profilo di chat attuale</string>
<string name="network_session_mode_transport_isolation">Isolamento del trasporto</string>
<string name="users_delete_profile_for">Elimina il profilo di chat per</string>
<string name="delete_files_and_media_for_all_users">Elimina i file per tutti i profili di chat</string>
<string name="failed_to_active_user_title">Errore nel cambio di profilo!</string>
<string name="failed_to_create_user_title">Errore nella creazione del profilo!</string>
<string name="your_chat_profiles_stored_locally">I tuoi profili di chat sono memorizzati localmente, solo sul tuo dispositivo</string>
<string name="error_deleting_user">Errore nell\'eliminazione del profilo utente</string>
<string name="users_delete_with_connections">Profilo e connessioni al server</string>
<string name="your_chat_profiles">I tuoi profili di chat</string>
<string name="failed_to_create_user_duplicate_desc">Hai già un profilo chat con lo stesso nome da mostrare. Scegli un altro nome.</string>
<string name="failed_to_create_user_duplicate_title">Nome da mostrare doppio!</string>
<string name="v4_5_italian_interface_descr">Grazie agli utenti contribuite via Weblate!</string>
<string name="v4_4_french_interface">Interfaccia francese</string>
<string name="v4_5_italian_interface">Interfaccia italiana</string>
<string name="v4_5_message_draft">Bozza dei messaggi</string>
<string name="v4_5_message_draft_descr">Conserva la bozza dell\'ultimo messaggio, con gli allegati.</string>
<string name="v4_5_private_filenames">Nomi di file privati</string>
<string name="v4_5_transport_isolation_descr">Per profilo di chat (predefinito) o per connessione (BETA).</string>
<string name="v4_5_reduced_battery_usage_descr">Altri miglioramenti sono in arrivo!</string>
<string name="v4_5_multiple_chat_profiles">Profili di chat multipli</string>
<string name="v4_5_reduced_battery_usage">Consumo di batteria ridotto</string>
<string name="v4_4_french_interface_descr">Grazie agli utenti contribuite via Weblate!</string>
<string name="v4_5_transport_isolation">Isolamento del trasporto</string>
<string name="v4_5_private_filenames_descr">Per proteggere il fuso orario, i file immagine/vocali usano UTC.</string>
<string name="v4_5_multiple_chat_profiles_descr">Nomi e avatar diversi, isolamento del trasporto.</string>
<string name="moderated_description">moderato</string>
<string name="moderated_item_description">moderato da %s</string>
<string name="delete_member_message__question">Eliminare il messaggio del membro\?</string>
<string name="moderate_verb">Modera</string>
<string name="moderate_message_will_be_deleted_warning">Il messaggio verrà eliminato per tutti i membri.</string>
<string name="moderate_message_will_be_marked_warning">Il messaggio sarà segnato come moderato per tutti i membri.</string>
<string name="you_are_observer">sei un osservatore</string>
<string name="initial_member_role">Ruolo iniziale</string>
<string name="error_updating_link_for_group">Errore nell\'aggiornamento del link del gruppo</string>
<string name="group_member_role_observer">osservatore</string>
<string name="observer_cant_send_message_desc">Contatta l\'amministratore del gruppo.</string>
<string name="observer_cant_send_message_title">Non puoi inviare messaggi!</string>
<string name="language_system">Sistema</string>
</resources>

View File

@@ -0,0 +1,964 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="chat_item_ttl_day">1日</string>
<string name="chat_item_ttl_week">1週間</string>
<string name="callstatus_accepted">受けた通話</string>
<string name="smp_servers_preset_add">既存サーバを追加</string>
<string name="group_member_role_admin">管理者</string>
<string name="v4_2_group_links_desc">管理者はグループの参加リンクを発行できます。</string>
<string name="network_settings">ネットワーク詳細設定</string>
<string name="chat_item_ttl_month">1ヶ月</string>
<string name="about_simplex">SimpleXについて</string>
<string name="a_plus_b">a + b</string>
<string name="about_simplex_chat"><xliff:g id="appNameFull">SimpleX Chat</xliff:g>について</string>
<string name="color_primary">アクセント色</string>
<string name="accept_contact_button">承諾</string>
<string name="accept_connection_request__question">繋がりを承諾しますか?</string>
<string name="accept">承諾</string>
<string name="accept_feature">承諾</string>
<string name="accept_call_on_lock_screen">承諾</string>
<string name="accept_contact_incognito_button">シークレットモードで承諾</string>
<string name="v4_3_improved_server_configuration_desc">QRコードでサーバを追加</string>
<string name="smp_servers_add_to_another_device">別の端末に追加</string>
<string name="users_add">プロフィールを追加</string>
<string name="smp_servers_add">サーバを追加…</string>
<string name="network_enable_socks_info">SOCKSプロキシ(ポート9050)経由で接続しますか?(※設定する前にプロキシ起動が必要※)</string>
<string name="users_delete_all_chats_deleted">全チャットとメッセージが削除されます(※元に戻せません※)</string>
<string name="allow_your_contacts_to_send_voice_messages">送信相手からの音声メッセージを許可する。</string>
<string name="both_you_and_your_contact_can_send_voice">あなたと連絡相手が音声メッセージを送信できます。</string>
<string name="onboarding_notifications_mode_periodic_desc"><b>電池省エネに良い</b>バックグラウンド機能で10分毎に新着メッセージを確認します。通話と緊急メッセージを見逃す可能性があります。</string>
<string name="icon_descr_audio_off">音声オフ</string>
<string name="attach">添付する</string>
<string name="app_version_code">アプリ・ビルド番号: %s</string>
<string name="all_your_contacts_will_remain_connected">あなたの連絡先が繋がったまま継続します。</string>
<string name="accept_requests">リクエストを承諾</string>
<string name="accept_automatically">自動的に</string>
<string name="icon_descr_audio_on">音声オン</string>
<string name="integrity_msg_bad_hash">メッセージのハッシュ値問題</string>
<string name="integrity_msg_bad_id">メッセージIDの問題</string>
<string name="allow_verb">許可</string>
<string name="allow_voice_messages_question">音声メッセージを許可しますか?</string>
<string name="back">戻る</string>
<string name="appearance_settings">見た目</string>
<string name="app_version_title">アプリのバージョン</string>
<string name="app_version_name">アプリのバージョン: v%s</string>
<string name="network_session_mode_user_description"><b>アプリ内の各チャットプロフィールに、</b>.連絡先毎にそれぞれのTCP接続(とSOCKS資格情報)が使われます。</string>
<string name="network_session_mode_entity_description"><b>各連絡先とグループに、</b>それぞれのTCP接続(とSOCKS資格情報)が使われます。
\n<b>※注意※</b> 接続が多かったら、電池とデータの使用量が増えて、切断する可能性もあります。</string>
<string name="bold">太文字</string>
<string name="icon_descr_audio_call">音声通話</string>
<string name="settings_audio_video_calls">音声とビデオ通話</string>
<string name="impossible_to_recover_passphrase"><b>※注意※</b>:喪失したら、パスフレーズの回復・変更ができません。</string>
<string name="all_group_members_will_remain_connected">グループ全員の接続が継続します。</string>
<string name="allow_your_contacts_to_send_disappearing_messages">送信相手が消えるメッセージを送るのを許可する。</string>
<string name="allow_your_contacts_irreversibly_delete">送信相手が永久メッセージ削除するのを許可する。</string>
<string name="allow_voice_messages_only_if">送信相手も音声メッセージを許可する時のみに許可する。</string>
<string name="both_you_and_your_contact_can_send_disappearing">あなたと連絡相手が消えるメッセージを送信できます。</string>
<string name="v4_2_auto_accept_contact_requests">連絡先を自動的に承諾</string>
<string name="chat_preferences_always">常に</string>
<string name="notifications_mode_service">常にオン</string>
<string name="clear_chat_warning">全てのメッセージが削除されます(※注意:元に戻せません!※)。削除されるのは片方あなたのメッセージのみ</string>
<string name="allow_disappearing_messages_only_if">送信相手も消えるメッセージ機能を許可する時のみに許可する。</string>
<string name="allow_irreversible_message_deletion_only_if">送信相手も永久メッセージ削除を許可する時のみに許可する。</string>
<string name="allow_to_delete_messages">送信済みメッセージの永久削除を許可</string>
<string name="allow_to_send_disappearing">消えるメッセージの送信を許可</string>
<string name="allow_direct_messages">メンバーへのダイレクトメッセージを許可</string>
<string name="allow_to_send_voice">音声メッセージの送信を許可</string>
<string name="notifications_mode_off_desc">アクティブの時のみに通知が出ます。バックグラウンド通知サービスは起動されません。</string>
<string name="keychain_is_storing_securely">Androidキーストアはパスフレーズの保管に使われます。通知機能に必要です。</string>
<string name="keychain_allows_to_receive_ntfs">再起動時とパスフレーズ変更時にAndroidキーストアがパスフレーズの保管に使われます。通知機能に必要です。</string>
<string name="answer_call">通話に応答</string>
<string name="settings_section_title_icon">アプリのアイコン</string>
<string name="full_backup">アプリデータのバックアップ</string>
<string name="incognito_random_profile_from_contact_description">このリンクの送信元にランダムなプロフィール(ダミー)が送られます。</string>
<string name="incognito_random_profile_description">連絡先にランダムなプロフィール(ダミー)が送られます。</string>
<string name="audio_call_no_encryption">音声通話 (エンドツーエンド暗号化なし)</string>
<string name="icon_descr_asked_to_receive">画像受信を依頼しました。</string>
<string name="auth_unavailable">認証不可能</string>
<string name="auto_accept_images">画像を自動的に受信</string>
<string name="notifications_mode_service_desc">バックグラウンド機能が常にオンで、メッセージが到着次第に通知が出ます。</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>新しい連絡先を追加</b>使い捨てのQRコードを発行</string>
<string name="turning_off_service_and_periodic">電池省エネをオンに、バックグラウンド機能と定期的な受信依頼をオフにします。設定メニューにて変更できます。</string>
<string name="onboarding_notifications_mode_off_desc"><b>電池消費が最少</b>:アプリがアクティブ時のみに通知が出ます。</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b>設定メニューにてオフにできます。</b> アプリがアクティブ時に通知が出ます。</string>
<string name="both_you_and_your_contacts_can_delete">あなたと連絡相手が送信済みメッセージを永久削除できます。</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>QRコードを読み込み</b>連絡相手のQRコードをスキャンすると繋がります。</string>
<string name="chat_archive_section">チャットのアーカイブ</string>
<string name="delete_chat_archive_question">チャットのアーカイブを削除しますか?</string>
<string name="join_group_incognito_button">シークレットモードで参加</string>
<string name="group_member_status_intro_invitation">接続待ち (招待)</string>
<string name="group_member_status_accepted">接続待ち (承諾済み)</string>
<string name="group_member_status_creator">作成者</string>
<string name="no_contacts_selected">連絡先が選択されてません</string>
<string name="delete_link_question">リンクを削除しますか?</string>
<string name="section_title_for_console">コンソール</string>
<string name="info_row_local_name">ローカルネーム</string>
<string name="member_info_section_title_member">メンバー</string>
<string name="network_options_reset_to_defaults">既定に戻す</string>
<string name="network_option_ping_count">PING回数</string>
<string name="users_delete_profile_for">チャットのプロフィールを削除</string>
<string name="reset_color">既定色に戻す</string>
<string name="group_preferences">グループの設定</string>
<string name="feature_off">オフ</string>
<string name="prohibit_sending_voice_messages">音声メッセージを使用禁止にする。</string>
<string name="only_you_can_send_voice">音声メッセージを送れるのはあなただけです。</string>
<string name="delete_after">次の期間が経ったら削除:</string>
<string name="ttl_sec">%d 秒</string>
<string name="ttl_m">%d分</string>
<string name="v4_2_group_links">グループのリンク</string>
<string name="thousand_abbreviation">k</string>
<string name="connect_via_link_verb">接続</string>
<string name="server_connected">接続中</string>
<string name="server_error">エラー</string>
<string name="server_connecting">接続待ち</string>
<string name="invalid_data">無効なデータ</string>
<string name="invalid_chat">無効なチャット</string>
<string name="live">ライブ (リアルタイム)</string>
<string name="marked_deleted_description">削除済みとマークされました。</string>
<string name="receiving_files_not_yet_supported">ファイルの受信機能はまだ対応されてません。</string>
<string name="display_name_invited_to_connect">招待済み</string>
<string name="failed_to_parse_chat_title">チャット読み込みに失敗</string>
<string name="failed_to_parse_chats_title">チャット読み込みに失敗</string>
<string name="contact_developers">アプリを更新し、開発者にご連絡ください。</string>
<string name="service_notifications">即時通知!</string>
<string name="service_notifications_disabled">即時通知が無効になってます!</string>
<string name="enter_passphrase_notification_title">暗証フレーズが必要</string>
<string name="notification_preview_mode_hidden">プライベート</string>
<string name="notification_preview_mode_contact">連絡先の名前</string>
<string name="notification_preview_somebody">連絡先が非表示:</string>
<string name="auth_open_chat_console">チャットのコンソールを開く</string>
<string name="delete_verb">削除する</string>
<string name="file_saved">ファイルを保存しました</string>
<string name="delete_contact_question">連絡先を削除しますか?</string>
<string name="connect_via_link_or_qr">リンク・QRコード経由で繋がる</string>
<string name="mark_code_verified">検証済みにマーク</string>
<string name="how_to">使い方</string>
<string name="network_use_onion_hosts_required">必須</string>
<string name="incoming_video_call">ビデオ通話着信</string>
<string name="paste_the_link_you_received">頂いたリンクを貼り付ける</string>
<string name="icon_descr_hang_up">通話を切る</string>
<string name="messages_section_title">メッセージ</string>
<string name="rcv_group_event_invited_via_your_group_link">グループリンク経由で招待された</string>
<string name="message_deletion_prohibited">このチャットではメッセージの完全削除が使用禁止です。</string>
<string name="incognito_info_allows">一つのチャットプロフィールで複数の匿名な接続を立ち上げ、それぞれのデータを別々に共通を防ぐことができます。</string>
<string name="onboarding_notifications_mode_subtitle">後でも設定で変えられます。</string>
<string name="error_changing_address">アドレス変更にエラー発生</string>
<string name="error_creating_link_for_group">グループリンク発行にエラー発生</string>
<string name="error_changing_role">役割変更にエラー発生</string>
<string name="error_exporting_chat_database">チャットデータベースのエキスポートにエラー発生</string>
<string name="error_saving_smp_servers">SMPサーバ保存にエラー発生</string>
<string name="error_saving_ICE_servers">ICEサーバ保存にエラー発生</string>
<string name="error_setting_network_config">ネットワーク設定の更新にエラー発生</string>
<string name="icon_descr_file">ファイル</string>
<string name="simplex_link_mode_full">フルリンク</string>
<string name="group_full_name_field">グループのフルネーム:</string>
<string name="group_invitation_expired">グループ招待が期限切れ</string>
<string name="icon_descr_group_inactive">非アクティブなグループ</string>
<string name="group_members_can_send_voice">グループのメンバーが音声メッセージを送信できます。</string>
<string name="group_members_can_delete">グループのメンバーがメッセージを完全削除することができます。</string>
<string name="group_profile_is_stored_on_members_devices">グループのプロフィールはサーバではなく、メンバーの端末に保存されます。</string>
<string name="snd_group_event_group_profile_updated">グループのプロフィールが更新されました。</string>
<string name="notification_display_mode_hidden_desc">連絡先とメッセージ内容をプライベートにする。</string>
<string name="icon_descr_instant_notifications">即時通知</string>
<string name="ensure_smp_server_address_are_correct_format_and_unique">SMPサーバのアドレスを正しく1行ずつに分けて、重複しないように、形式もご確認ください。</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">WebRTC ICEサーバのアドレスを正しく1行ずつに分けて、重複しないように、形式もご確認ください。</string>
<string name="many_people_asked_how_can_it_deliver">よく聞かれるのは、 <i>if <xliff:g id="appName">SimpleX</xliff:g> にユーザIDがなければ、メッセージをどうやって届けるのでしょうかと。</i></string>
<string name="how_simplex_works"><xliff:g id="appName">SimpleX</xliff:g> の仕様</string>
<string name="icon_descr_call_progress">通話中</string>
<string name="onboarding_notifications_mode_service_desc"><b>電池消費がより高い</b>!非アクティブ時でもバックグラウンドのサービスが常に稼働します(着信次第に通知がすぐに出ます)。</string>
<string name="callstatus_calling">発信中</string>
<string name="callstatus_ended">通話終了 <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="icon_descr_call_ended">通話が終了しました。</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">直接会えない時は、 <b>ビデオ通話中にQRコードを見せてもらうか</b>、招待リンクを送ってもらえば相手に繋がります。</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">メンバーをグループから除名する (※元に戻せません※)</string>
<string name="message_delivery_error_title">メッセージ送信エラー</string>
<string name="call_on_lock_screen">通話をロック画面に表示</string>
<string name="icon_descr_cancel_link_preview">リンクのプレビューを中止</string>
<string name="icon_descr_cancel_live_message">ライブメッセージを中止</string>
<string name="change_member_role_question">グループの役割を変えますか?</string>
<string name="cannot_receive_file">ファイル受信ができません。</string>
<string name="invite_prohibited">連絡先を招待できません!</string>
<string name="change_verb">変更</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">直接会えない時は、 <b>ビデオ通話にてQRコードを見せるか</b>、招待リンクを送って、相手に繋がります。</string>
<string name="rcv_conn_event_switch_queue_phase_completed">あなたのアドレスを変えました。</string>
<string name="snd_conn_event_switch_queue_phase_changing">アドレスを変更しています…</string>
<string name="chat_database_section">チャットのデータベース</string>
<string name="chat_is_stopped_indication">チャットが停止してます。</string>
<string name="network_disable_socks_info">承諾すると、メッセージのサーバがIPアドレス、ISP、接続サーバを特定できます。</string>
<string name="chat_preferences">チャット設定</string>
<string name="clear_chat_button">消す</string>
<string name="icon_descr_close_button">閉じるボタン</string>
<string name="clear_verification">検証を消す</string>
<string name="image_saved">画像をギャラリーに保存しました。</string>
<string name="choose_file">ファイルを選ぶ</string>
<string name="clear_chat_menu_action">消す</string>
<string name="image_will_be_received_when_contact_is_online">連絡先がオンラインになったら受信されます。しばらくお待ちください。</string>
<string name="v4_4_verify_connection_security_desc">連絡先とセキュリティコードを確認</string>
<string name="install_simplex_chat_for_terminal">ターミナル版の <xliff:g id="appNameFull">SimpleX Chat</xliff:g> をインストール</string>
<string name="v4_3_improved_server_configuration">サーバ設定の向上</string>
<string name="v4_3_improved_privacy_and_security">プライバシーとセキュリティ強化</string>
<string name="settings_section_title_incognito">シークレットモード</string>
<string name="group_unsupported_incognito_main_profile_sent">ここではシークレットモードが無効です。メインのプロフィールがグループのメンバーに送られます。</string>
<string name="new_in_version">%s バージョンアップで新しい</string>
<string name="new_passphrase">新しい暗証フレーズ</string>
<string name="chat_item_ttl_none">一度も</string>
<string name="notification_preview_new_message">新しいメッセージ</string>
<string name="network_use_onion_hosts_no">いいえ</string>
<string name="notifications">通知</string>
<string name="chat_preferences_off">オフ</string>
<string name="callstate_connecting">接続待ち…</string>
<string name="notification_contact_connected">接続中</string>
<string name="contact_connection_pending">接続待ち…</string>
<string name="display_name_connection_established">接続済み</string>
<string name="connect_via_link">リンク経由で繋がる。</string>
<string name="connection_error">接続エラー</string>
<string name="network_use_onion_hosts_required_desc_in_alert">接続にオニオンのホストが必要となります。</string>
<string name="group_member_status_introduced">接続待ち (紹介済み)</string>
<string name="connection_error_auth">接続エラー (AUTH)</string>
<string name="connection_timeout">接続タイムアウト</string>
<string name="connection_request_sent">接続リクエストを送信しました!</string>
<string name="connection_local_display_name">接続 <xliff:g id="connection ID" example="1">%1$d</xliff:g></string>
<string name="connect_via_contact_link">連絡先リンク経由で繋がりますか?</string>
<string name="connect_via_group_link">グループリンク経由で繋がりますか?</string>
<string name="connect_via_invitation_link">招待リンク経由で繋がりますか?</string>
<string name="status_contact_has_e2e_encryption">連絡先はエンドツーエンド暗号化があります。</string>
<string name="description_via_group_link_incognito">グループリンク経由でシークレットモード</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">連絡先と全メッセージが削除されます (※元に戻せません※)</string>
<string name="contact_preferences">連絡先の設定</string>
<string name="status_contact_has_no_e2e_encryption">連絡先はエンドツーエンド暗号化がありません。</string>
<string name="alert_title_contact_connection_pending">連絡先がまだ繋がってません!</string>
<string name="contact_requests">連絡先のリクエスト</string>
<string name="icon_descr_context">追加情報アイコン</string>
<string name="network_use_onion_hosts_prefer_desc">オニオンのホストが利用可能時に使われます。</string>
<string name="network_use_onion_hosts_no_desc">オニオンのホストが使われません。</string>
<string name="network_use_onion_hosts_prefer_desc_in_alert">オニオンのホストが利用可能時に使われます。</string>
<string name="images_limit_desc">画像を1回で最大10枚を送信できます。</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages"><b>2層エンドツーエンド暗号化</b>で送信されたプロフィール、連絡先、グループ、メッセージは、クライント端末にしか保存されません。</string>
<string name="only_group_owners_can_change_prefs">グループ設定を変えられるのはグループのオーナーだけです。</string>
<string name="only_group_owners_can_enable_voice">音声メッセージを利用可能に設定できるのはグループのオーナーだけです。</string>
<string name="create_profile">プロフィールを作成する</string>
<string name="only_you_can_delete_messages">メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。</string>
<string name="create_your_profile">プロフィールを作成する</string>
<string name="only_your_contact_can_delete">メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。</string>
<string name="open_chat">チャットを開く</string>
<string name="only_your_contact_can_send_voice">音声メッセージを送れるのはあなたの連絡相手だけです。</string>
<string name="database_encryption_will_be_updated">データベース暗号化の暗号フレーズが更新され、キーストア (暗証キー保管庫)に保存されます。</string>
<string name="database_error">データベースエラー</string>
<string name="set_password_to_export_desc">データベースはランダムな暗証フレーズで暗号化済みです。エキスポートする前に更新してください。</string>
<string name="passphrase_is_different">データベース暗証フレーズはキーストア (暗証キー保管庫) に保存された暗証フレーズと異なります。</string>
<string name="ttl_d">%d日</string>
<string name="ttl_day">%d 日</string>
<string name="delete_group_menu_action">削除</string>
<string name="incoming_audio_call">音声通話着信</string>
<string name="button_delete_contact">連絡先を削除</string>
<string name="open_simplex_chat_to_accept_call">通話を受けるには <xliff:g id="appNameFull">SimpleX Chat</xliff:g> を開きます。</string>
<string name="deleted_description">削除完了</string>
<string name="delete_files_and_media_for_all_users">全チャットプロフィールのファイルを削除</string>
<string name="full_deletion">全員分を削除</string>
<string name="for_me_only">自分側で削除</string>
<string name="delete_image">画像を削除</string>
<string name="group_invitation_item_description">グループへの招待 <xliff:g id="group_name">%1$s</xliff:g></string>
<string name="invalid_connection_link">無効な繋がりリンク</string>
<string name="smp_servers_invalid_address">無効なサーバアドレス</string>
<string name="invalid_message_format">無効なメッセージのフォーマット</string>
<string name="simplex_link_mode_description">説明</string>
<string name="alert_title_group_invitation_expired">招待が期限切れました!</string>
<string name="smp_servers_delete_server">サーバを削除</string>
<string name="auth_device_authentication_is_disabled_turning_off">端末認証がオフです。SimpleXロックを解除します。</string>
<string name="direct_messages_are_prohibited_in_chat">このグループではメンバー間のダイレクトメッセージが使用禁止です。</string>
<string name="disappearing_messages_are_prohibited">このグループでは消えるメッセージが使用禁止です。</string>
<string name="ttl_min">%d 分</string>
<string name="ttl_weeks">%d 週</string>
<string name="network_option_enable_tcp_keep_alive">TCP keep-aliveを有効にする</string>
<string name="icon_descr_email">メール</string>
<string name="allow_accepting_calls_from_lock_screen">設定メニューでロック画面からの通話を有効にできます。</string>
<string name="people_can_connect_only_via_links_you_share">あなたと繋がることができるのは、あなたからリンクを頂いた方のみです。</string>
<string name="icon_descr_profile_image_placeholder">仮のプロフィール画像</string>
<string name="image_descr_qr_code">QRコード</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">リンクが正しいかどうかご確認ください。または、連絡相手にもう一度リンクをお求めください。</string>
<string name="network_error_desc"><xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g> との接続を確認し、もう一度お試しください。</string>
<string name="enter_correct_current_passphrase">現在の正しい暗証フレーズを入力してください。</string>
<string name="smp_servers_preset_server">プレセットサーバ</string>
<string name="smp_servers_preset_address">プレセットサーバのアドレス</string>
<string name="display_name_connecting">接続待ち…</string>
<string name="description_via_contact_address_link_incognito">連絡先リンク経由でシークレットモード</string>
<string name="description_via_one_time_link_incognito">使い捨てリンク経由でシークレットモード</string>
<string name="moderated_description">モデレーターによって介入済み</string>
<string name="simplex_link_mode_browser_warning">ブラウザでリンクを開くと接続のプライバシーとセキュリティが下がる可能性があります。信頼されないSimpleXリンクは読み込まれません。</string>
<string name="error_joining_group">グループ参加にエラー発生</string>
<string name="error_sending_message">メッセージ送信にエラー発生</string>
<string name="error_accepting_contact_request">連絡先リクエストの承諾にエラー発生</string>
<string name="error_receiving_file">ファイル受信にエラー発生</string>
<string name="error_deleting_contact">連絡先の削除にエラー発生</string>
<string name="error_deleting_group">グループ削除にエラー発生</string>
<string name="error_deleting_pending_contact_connection">接続待ちの連絡先削除にエラー発生</string>
<string name="error_smp_test_certificate">サーバアドレスの証明証IDが正しくないかもしれません。</string>
<string name="smp_server_test_connect">接続</string>
<string name="error_deleting_user">ユーザのプロフィール削除にエラー発生</string>
<string name="periodic_notifications">定期的な通知</string>
<string name="periodic_notifications_disabled">定期的な通知が無効となってます!</string>
<string name="auth_disable_simplex_lock">SimpleXロックを無効にする</string>
<string name="auth_enable_simplex_lock">SimpleXロックを有効にする</string>
<string name="auth_log_in_using_credential">ログイン情報でアクセス</string>
<string name="auth_confirm_credential">アクセス情報を確認</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">端末認証が起動してません。起動したら、設定でSimpleXロックをオンにできます。</string>
<string name="message_delivery_error_desc">恐らくこの連絡先があなたとの接続を削除されました。</string>
<string name="for_everybody">全員用</string>
<string name="error_saving_file">ファイル保存にエラー発生</string>
<string name="icon_descr_server_status_connected">接続中</string>
<string name="icon_descr_server_status_pending">確認待ち</string>
<string name="cancel_verb">中止</string>
<string name="add_contact">使い捨ての招待リンク</string>
<string name="icon_descr_record_voice_message">音声メッセージを録音</string>
<string name="from_gallery_button">ギャラリーから</string>
<string name="delete_contact_menu_action">削除</string>
<string name="icon_descr_help">ヘルプ</string>
<string name="invalid_contact_link">無効なリンク!</string>
<string name="invalid_QR_code">無効なQRコード</string>
<string name="icon_descr_more_button">つづき</string>
<string name="paste_connection_link_below_to_connect">連絡相手から頂いたリンクを以下の入力欄に貼り付けて繋がります。</string>
<string name="incorrect_code">誤ったセキュリティコード!</string>
<string name="paste_button">貼り付け</string>
<string name="chat_console">チャットのコンソール</string>
<string name="configure_ICE_servers">ICEサーバを設定</string>
<string name="how_to_use_your_servers">自分のサーバの使い方</string>
<string name="enter_one_ICE_server_per_line">ICEサーバ (1行に1サーバ)</string>
<string name="network_and_servers">ネットワークとサーバ</string>
<string name="network_settings_title">ネットワーク設定</string>
<string name="network_use_onion_hosts_no_desc_in_alert">オニオンのホストが使われません。</string>
<string name="delete_address">アドレスを削除</string>
<string name="exit_without_saving">保存せずに閉じる</string>
<string name="display_name_cannot_contain_whitespace">表示の名前には空白が使用できません。</string>
<string name="how_to_use_markdown">マークダウン (書式) の使い方</string>
<string name="italic">イタリック文字</string>
<string name="callstatus_rejected">拒否した通話</string>
<string name="callstatus_error">通話エラー</string>
<string name="callstatus_in_progress">通話中</string>
<string name="callstate_connected">接続中</string>
<string name="callstatus_connecting">発信中…</string>
<string name="callstate_ended">終了</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">プロトコル技術とコードはオープンソースで、どなたでもご自分のサーバを運用できます。</string>
<string name="privacy_redefined">プライバシーの基準を新境地に</string>
<string name="how_it_works">技術の説明</string>
<string name="make_private_connection">プライベートな接続をする</string>
<string name="onboarding_notifications_mode_title">プライベートな通知</string>
<string name="read_more_in_github_with_link"><font color="#0088ff">GitHubリポジトリ</font>で詳細をご確認ください。</string>
<string name="read_more_in_github">GitHubリポジトリで詳細をご確認ください。</string>
<string name="encrypted_video_call">エンドツーエンド暗号化済みビデオ通話</string>
<string name="no_call_on_lock_screen">無効にする</string>
<string name="status_no_e2e_encryption">エンドツーエンド暗号化がありません</string>
<string name="open_verb">開く</string>
<string name="icon_descr_call_connecting">発信中</string>
<string name="icon_descr_flip_camera">カメラ切り替え</string>
<string name="icon_descr_call_missed">不在着信</string>
<string name="icon_descr_call_rejected">拒否した通話</string>
<string name="settings_section_title_develop">開発</string>
<string name="integrity_msg_duplicate">重複メッセージ</string>
<string name="settings_section_title_help">ヘルプ</string>
<string name="protect_app_screen">アプリ画面を守る</string>
<string name="settings_section_title_chats">チャット</string>
<string name="settings_developer_tools">開発ツール</string>
<string name="settings_experimental_features">β機能</string>
<string name="settings_section_title_messages">メッセージ</string>
<string name="settings_section_title_calls">通話</string>
<string name="chat_is_running">チャットは稼働中</string>
<string name="chat_is_stopped">チャットが停止してます。</string>
<string name="database_passphrase">データベース暗証フレーズ</string>
<string name="export_database">データベースをエキスポート</string>
<string name="delete_database">データベースを削除</string>
<string name="import_database">データベースを読み込みますか?</string>
<string name="new_database_archive">新しいデータベースのアーカイブ</string>
<string name="old_database_archive">過去のデータベースアーカイブ</string>
<string name="delete_files_and_media_all">ファイルを全て削除</string>
<string name="delete_files_and_media_question">ファイルとメディアを削除しますか?</string>
<string name="total_files_count_and_size">%d ファイル|合計: %s</string>
<string name="encrypt_database">暗号化する</string>
<string name="remove_passphrase">削除</string>
<string name="current_passphrase">現在の暗証フレーズ</string>
<string name="encrypted_with_random_passphrase">データベースはランダムな暗証フレーズで暗号化済みで、変更可能です。</string>
<string name="change_database_passphrase_question">データベースの暗証フレーズを更新しますか?</string>
<string name="database_will_be_encrypted">データベースが暗号化されます。</string>
<string name="database_will_be_encrypted_and_passphrase_stored">データベースが暗号化され、暗証フレーズがキーストア (暗証キー保管庫) にほぞんされます。</string>
<string name="cannot_access_keychain">キーストア (暗証キーの保管庫) にアクセスできないため、データベースのパスワードが保存できません。</string>
<string name="database_passphrase_will_be_updated">データベース暗号化の暗号フレーズが更新されます。</string>
<string name="database_passphrase_is_required">チャットを開くにはデータベース暗証フレーズが必要です。</string>
<string name="file_with_path">ファイル: %s</string>
<string name="archive_created_on_ts">作成日時 \u0020<xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="delete_archive">アーカイブを削除</string>
<string name="join_group_button">参加</string>
<string name="join_group_question">グループに参加しますか?</string>
<string name="joining_group">グループに参加</string>
<string name="leave_group_button">脱退</string>
<string name="leave_group_question">グループを脱退しますか?</string>
<string name="alert_message_group_invitation_expired">グループ招待が無効となり、送信元によって取り消されました。</string>
<string name="alert_title_no_group">グループが見つかりません!</string>
<string name="alert_title_cant_invite_contacts">連絡先を招待できません!</string>
<string name="rcv_group_event_group_deleted">削除されたグループ</string>
<string name="rcv_conn_event_switch_queue_phase_changing">アドレスを変更しています…</string>
<string name="clear_contacts_selection_button">選択を取り消す</string>
<string name="group_member_status_complete">完了</string>
<string name="group_member_status_connected">接続中</string>
<string name="group_member_status_announced">接続待ち (アナウンス済み)</string>
<string name="icon_descr_contact_checked">連絡先が確認済み</string>
<string name="delete_group_question">グループを削除をしますか?</string>
<string name="delete_link">リンクを削除</string>
<string name="group_member_status_group_deleted">グループ削除済み</string>
<string name="delete_group_for_all_members_cannot_undo_warning">全員にとってグループが削除されます (※元に戻せません※)</string>
<string name="group_member_status_invited">招待済み</string>
<string name="button_add_members">メンバーを招待する</string>
<string name="group_member_status_left">脱退しました。</string>
<string name="group_member_role_member">メンバー</string>
<string name="group_member_status_removed">除名されました</string>
<string name="button_remove_member">メンバーを除名する</string>
<string name="change_role">役割変更</string>
<string name="info_row_connection">接続</string>
<string name="conn_level_desc_direct">ダイレクト</string>
<string name="receiving_via">経由で受信</string>
<string name="create_secret_group_title">シークレットグループを作成する</string>
<string name="group_display_name_field">グループの表示名前</string>
<string name="network_status">ネットワーク状況</string>
<string name="network_option_ping_interval">PING間合い</string>
<string name="network_option_protocol_timeout">プロトコル・タイムアウト</string>
<string name="theme_dark">ダークモード</string>
<string name="chat_preferences_contact_allows">連絡先の任意で</string>
<string name="feature_enabled_for_contact">連絡先に有効</string>
<string name="feature_enabled_for_you">あなたに有効</string>
<string name="only_your_contact_can_send_disappearing">消えるメッセージを送れるのはあなたの連絡相手だけです。</string>
<string name="group_members_can_send_dms">グループのメンバーがダイレクトメッセージを送信できます。</string>
<string name="message_deletion_prohibited_in_chat">このグループではメッセージの完全削除が使用禁止です。</string>
<string name="ttl_days">%d 日</string>
<string name="ttl_month">%d 月</string>
<string name="ttl_w">%d週</string>
<string name="ttl_week">%d 週</string>
<string name="v4_4_live_messages_desc">あなたが入力しながら、送信先が更新に気づきます。</string>
<string name="v4_5_italian_interface">イタリア語UI</string>
<string name="contact_already_exists">連絡先が既に存在します。</string>
<string name="error_creating_address">アドレス作成にエラー発生</string>
<string name="error_deleting_contact_request">連絡先リクエスト削除にエラー発生</string>
<string name="hide_notification">プライベートにする</string>
<string name="settings_notifications_mode_title">通知サービス</string>
<string name="notifications_mode_periodic_desc">10分毎に新しいメッセージを1分間確認する。</string>
<string name="icon_descr_edited">編集済み</string>
<string name="icon_descr_cancel_image_preview">画像のプレビューを中止</string>
<string name="chat_with_developers">開発者とチャット</string>
<string name="image_decoding_exception_title">デコードエラー</string>
<string name="image_descr">画像</string>
<string name="icon_descr_server_status_disconnected">切断されました。</string>
<string name="icon_descr_server_status_error">エラー</string>
<string name="ok">OK</string>
<string name="toast_permission_denied">許可がありません!</string>
<string name="clear_verb">消す</string>
<string name="image_descr_link_preview">リンクプレビュー画像</string>
<string name="image_descr_profile_image">プロフィール画像</string>
<string name="markdown_in_messages">メッセージのマークダウン (書式編集)</string>
<string name="smp_servers_check_address">サーバのアドレスを確認してから再度試してください。</string>
<string name="contribute">貢献する</string>
<string name="rate_the_app">アプリを評価</string>
<string name="network_session_mode_user">チャットのプロフィール</string>
<string name="network_session_mode_entity">接続</string>
<string name="core_version">コアのバージョン: v%s</string>
<string name="edit_image">画像を編集</string>
<string name="callstatus_missed">不在着信</string>
<string name="always_use_relay">リレー経由で繋がる。</string>
<string name="status_e2e_encrypted">エンドツーエンド暗号化済み</string>
<string name="chat_database_deleted">チャットのデータベースが削除されました。</string>
<string name="delete_messages_after">次の期間が経ったら、メッセージを削除:</string>
<string name="enable_automatic_deletion_question">自動メッセージ削除を有効にしますか?</string>
<string name="remove_passphrase_from_keychain">キーストア (暗証キー保管庫) を削除しますか?</string>
<string name="database_encrypted">データベースは暗号化済み!</string>
<string name="error_encrypting_database">データベース暗号化ににエラー発生</string>
<string name="confirm_new_passphrase">新しい暗証フレーズを確認…</string>
<string name="encrypt_database_question">データベースを暗号化しますか?</string>
<string name="store_passphrase_securely_without_recover">暗証フレーズを失くさないように保管してください。失くすとチャットにアクセスできなくなります。</string>
<string name="enter_correct_passphrase">正しい暗証フレーズを入力</string>
<string name="enter_passphrase">暗証フレーズを入力</string>
<string name="restore_passphrase_not_found_desc">キーストア (暗証キー保管庫) に暗証フレーズが見つかりません。入力してください。アプリのデータをバックアップのツールで復元させると暗証フレーズが見つかりかねます。そうではない場合は開発者にご連絡ください。</string>
<string name="button_create_group_link">リンクを発行する</string>
<string name="info_row_group">グループ</string>
<string name="error_saving_group_profile">グループのプロフィール保存にエラー発生</string>
<string name="feature_enabled">有効</string>
<string name="group_members_can_send_disappearing">グループのメンバーが消えるメッセージを送信できます。</string>
<string name="ttl_mth">%d月</string>
<string name="v4_3_irreversible_message_deletion">メッセージの完全削除</string>
<string name="v4_3_voice_messages_desc">最大40秒、即受信。</string>
<string name="v4_3_improved_privacy_and_security_desc">起動中アプリリストに出ないようにする。</string>
<string name="v4_4_live_messages">ライブメッセージ</string>
<string name="remove_member_confirmation">除名</string>
<string name="rcv_group_event_member_deleted">除名されました: <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="reply_verb">返信する</string>
<string name="failed_to_create_user_duplicate_title">表示の名前が重複してます!</string>
<string name="failed_to_create_user_title">プロフィール作成にエラー発生</string>
<string name="failed_to_active_user_title">プロフィール切り替えにエラー発生</string>
<string name="error_adding_members">メンバー追加にエラー発生</string>
<string name="smp_server_test_create_queue">サーバの待ち行列を作成する</string>
<string name="smp_server_test_delete_queue">待ち行列を削除</string>
<string name="smp_server_test_disconnect">切断</string>
<string name="turn_off_battery_optimization">利用するには次の画面にてSimpleXに対する <b>電気省電力の設定をオフ</b> for <xliff:g id="appName">SimpleX</xliff:g> してください。そうしないと通知が無効になります。</string>
<string name="database_initialization_error_title">データベースを起動できません。</string>
<string name="settings_notification_preview_title">通知のプレビュー</string>
<string name="simplex_service_notification_text">メッセージ受信中…</string>
<string name="notification_preview_mode_message">メッセージ内容</string>
<string name="notification_new_contact_request">新しい繋がりのリクエスト</string>
<string name="copy_verb">コピー</string>
<string name="delete_message__question">メッセージを削除しますか?</string>
<string name="edit_verb">編集する</string>
<string name="hide_verb">プライベートにする</string>
<string name="delete_message_cannot_be_undone_warning">メッセージが削除されます (※元に戻せません※)</string>
<string name="delete_message_mark_deleted_warning">メッセージが削除対象となります。宛先にはメッセージの解読ができます。</string>
<string name="icon_descr_cancel_file_preview">ファイルのプレビューを中止</string>
<string name="group_connection_pending">接続待ち…</string>
<string name="group_preview_join_as">%s として参加</string>
<string name="icon_descr_image_snd_complete">画像送信済み</string>
<string name="maximum_supported_file_size">現在、ファイルサイズの最上限は <xliff:g id="maxFileSize">%1$s</xliff:g></string>
<string name="large_file">大型ファイル!</string>
<string name="file_not_found">ファイルが見つかりません</string>
<string name="file_will_be_received_when_contact_is_online">連絡先がオンラインになったら受信されます。しばらくお待ちください。</string>
<string name="live_message">ライブメッセージ!</string>
<string name="ask_your_contact_to_enable_voice">音声メッセージを有効にするように連絡相手に要求してください。</string>
<string name="confirm_verb">確認</string>
<string name="no_details">詳細がありません</string>
<string name="reset_verb">戻す</string>
<string name="copied">クリップボードにコピー完了</string>
<string name="share_one_time_link">使い捨てリンクを発行する</string>
<string name="create_group">シークレットグループを作成する</string>
<string name="only_stored_on_members_devices">(グループのメンバーのみに保存されてます)</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 デスクトップ: <b>「QRコードを読み取る」</b>経由でアプリに表示されるQRコードを読み取る</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser"><xliff:g id="appName">SimpleX Chat</xliff:g> の招待リンクをもらったら、ブラウザで開けます:</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app">📱 携帯: <b>「アプリで開く」</b>をタップし、 アプリ内で<b>「接続」</b>をタップする。</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">拒否しても、相手には知らされません。</string>
<string name="reject_contact_button">拒否</string>
<string name="clear_chat_question">チャットを消しますか?</string>
<string name="mark_read">既読にする</string>
<string name="mark_unread">未読にする</string>
<string name="mute_chat">ミュート</string>
<string name="delete_pending_connection__question">接続待ちの繋がりを削除しますか?</string>
<string name="connect_button">接続</string>
<string name="create_one_time_link">使い捨てリンクを発行する</string>
<string name="one_time_link">使い捨ての招待リンク</string>
<string name="database_passphrase_and_export">データベース暗証フレーズとエキスポート</string>
<string name="how_to_use_simplex_chat">使い方</string>
<string name="markdown_help">マークダウン (書式編集) ガイド</string>
<string name="smp_servers_enter_manually">サーバを手動で入力</string>
<string name="network_use_onion_hosts_required_desc">接続にオニオンのホストが必要となります。</string>
<string name="core_build_timestamp">コアのビルド@: %s</string>
<string name="create_address">アドレスを作成</string>
<string name="delete_address__question">アドレスを削除しますか?</string>
<string name="display_name__field">表示の名前:</string>
<string name="full_name__field">フルネーム:</string>
<string name="create_profile_button">作成</string>
<string name="display_name">表示の名前</string>
<string name="full_name_optional__prompt">フルネーム (任意)</string>
<string name="colored">色付き</string>
<string name="callstate_received_answer">応答</string>
<string name="decentralized">分散型</string>
<string name="immune_to_spam_and_abuse">スパムや悪質送信を完全防止</string>
<string name="onboarding_notifications_mode_service">即時</string>
<string name="onboarding_notifications_mode_periodic">定期的</string>
<string name="call_already_ended">通話は既に終了してます!</string>
<string name="encrypted_audio_call">エンドツーエンド暗号化済みの音声通話</string>
<string name="ignore">無視</string>
<string name="reject">拒否</string>
<string name="call_connection_peer_to_peer">P2P</string>
<string name="privacy_and_security">プライバシーとセキュリティ</string>
<string name="alert_text_skipped_messages_it_can_happen_when">次の場合に起こりうる:
\n① メッセージが受信せずにサーバに溜まって30日が経つ場合
\n② 連絡相手からメッセージが送信中に、ご利用の受信サーバが更新・再起動する場合
\n③ 接続が不安定の場合
\nサーバの更新情報をご希望でしたら、設定にて開発者とお繋ぎください。
\nメッセージの喪失を防ぐために、サーバ冗長性を向上してまいります。</string>
<string name="settings_section_title_device">端末</string>
<string name="no_received_app_files">送受信済みのファイルがありません</string>
<string name="delete_messages">メッセージを削除</string>
<string name="chat_archive_header">チャットのアーカイブ</string>
<string name="rcv_group_event_member_connected">接続中</string>
<string name="rcv_group_event_user_deleted">あなたを除名しました。</string>
<string name="group_link">グループのリンク</string>
<string name="info_row_database_id">データベースID</string>
<string name="error_deleting_link_for_group">グループリンク削除にエラー発生</string>
<string name="users_delete_question">チャットのプロフィールを削除しますか?</string>
<string name="users_delete_data_only">ローカルなプロフィールデータのみ</string>
<string name="users_delete_with_connections">プロフィールとサーバ接続</string>
<string name="theme_light">ライトテーマ</string>
<string name="chat_preferences_default">デフォルト (%s)</string>
<string name="prohibit_sending_disappearing_messages">消えるメッセージを使用禁止にする。</string>
<string name="contacts_can_mark_messages_for_deletion">連絡先はメッセージを削除対象とすることができます。あなたには閲覧可能です。</string>
<string name="only_you_can_send_disappearing">消えるメッセージを送れるのはあなただけです。</string>
<string name="prohibit_message_deletion">メッセージの完全削除を使用禁止にする。</string>
<string name="prohibit_sending_voice">音声メッセージを使用禁止にする。</string>
<string name="feature_cancelled_item">中止されました %s</string>
<string name="v4_4_disappearing_messages">消えるメッセージ</string>
<string name="v4_5_transport_isolation_descr">チャットのプロフィール (既存設定)、または接続 (β機能設定) による</string>
<string name="v4_5_multiple_chat_profiles_descr">異なった名前、アバター、トランスポート隔離。</string>
<string name="v4_4_french_interface">フランス語UI</string>
<string name="v4_5_message_draft">メッセージの下書き</string>
<string name="v4_5_reduced_battery_usage_descr">まだまだ改善してまいります!</string>
<string name="v4_5_multiple_chat_profiles">複数チャットのプロフィール</string>
<string name="v4_5_message_draft_descr">添付を含めて、下書きを保存する。</string>
<string name="v4_5_private_filenames">プライベートなファイル名</string>
<string name="v4_5_reduced_battery_usage">電池使用量低減</string>
<string name="error_removing_member">メンバー除名にエラー発生</string>
<string name="conn_level_desc_indirect">関節 (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<string name="incognito">シークレットモード</string>
<string name="incognito_info_protects">シークレットモードとは、メインのプロフィールとプロフィール画像を守るために、新しい連絡先を追加する時に、その連絡先に対してランダムなプロフィールが作成されるという対策です。</string>
<string name="chat_preferences_no">いいえ</string>
<string name="chat_preferences_on">オン</string>
<string name="direct_messages">ダイレクトメッセージ</string>
<string name="timed_messages">消えるメッセージ</string>
<string name="disappearing_prohibited_in_this_chat">このチャットでは消えるメッセージが使用禁止です。</string>
<string name="prohibit_direct_messages">メンバー間のダイレクトメッセージを使用禁止にする。</string>
<string name="prohibit_sending_disappearing">消えるメッセージを使用禁止にする。</string>
<string name="ttl_s">%d秒</string>
<string name="ttl_months">%d 月</string>
<string name="ttl_hour">%d 時</string>
<string name="ttl_hours">%d 時</string>
<string name="ttl_h">%d時</string>
<string name="error_starting_chat">チャット開始にエラー発生</string>
<string name="error_stopping_chat">チャット停止にエラー発生</string>
<string name="import_database_question">チャットのデータベースを読み込みますか?</string>
<string name="chat_database_imported">チャットのデータベースが読み込まれました。</string>
<string name="error_deleting_database">チャットデータベース削除にエラー発生</string>
<string name="error_importing_database">チャットデータベースの読み込みにエラー発生</string>
<string name="import_database_confirmation">読み込む</string>
<string name="restart_the_app_to_use_imported_chat_database">読み込んだデータベースを利用するにはアプリを再起動する必要があります。</string>
<string name="delete_chat_profile_question">チャットのプロフィールを削除しますか?</string>
<string name="restart_the_app_to_create_a_new_chat_profile">再起動して新しいチャットプロフィールを作る。</string>
<string name="files_and_media_section">ファイルとメディア</string>
<string name="error_changing_message_deletion">設定変更にエラー発生</string>
<string name="notifications_will_be_hidden">アプリが起動中のみに通知が出ます!</string>
<string name="encrypted_database">暗号化済みデータベース</string>
<string name="keychain_error">キーチェーンのエラー</string>
<string name="store_passphrase_securely">暗証フレーズを失くさないように保管してください。失くすと変更できなくなります。</string>
<string name="error_with_info">エラー: %s</string>
<string name="restore_database_alert_desc">データベースのバックアップで復旧する際に前の暗証フレーズを入力してください。行われたら元に戻せません。</string>
<string name="icon_descr_add_members">メンバーを招待する</string>
<string name="rcv_group_event_member_left">脱退しました。</string>
<string name="rcv_group_event_changed_member_role">%s の役割を %s に変えました。</string>
<string name="rcv_group_event_changed_your_role">役割を %s に変えました。</string>
<string name="rcv_group_event_member_added">招待された <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">アドレスを変更いたします: %s</string>
<string name="group_member_role_owner">オーナー</string>
<string name="group_member_status_connecting">接続待ち</string>
<string name="icon_descr_expand_role">役割の選択を拡大</string>
<string name="invite_to_group_button">グループに招待する</string>
<string name="new_member_role">新しいメンバー役割</string>
<string name="no_contacts_to_add">追加できる連絡先がありません</string>
<string name="button_delete_group">グループを削除</string>
<string name="create_group_link">グループのリンクを発行する</string>
<string name="button_edit_group_profile">グループのプロフィールを編集</string>
<string name="delete_group_for_self_cannot_undo_warning">あなたにとってグループが削除されます (※元に戻せません※)</string>
<string name="button_leave_group">グループを脱退</string>
<string name="database_restore_error">データベース復元エラー</string>
<string name="rcv_group_event_updated_group_profile">グループプロフィールを更新しました</string>
<string name="snd_group_event_user_left">脱退しました。</string>
<string name="invite_prohibited_description">あなたのメインプロフィールで参加してるグループにシークレットモードのプロフィールで繋がってる連絡先を招待しようとしてます。</string>
<string name="group_info_member_you">あなた: <xliff:g id="group_info_you">%1$s</xliff:g></string>
<string name="role_in_group">役割</string>
<string name="sending_via">経由で送信</string>
<string name="theme_system">システム</string>
<string name="incognito_info_share">連絡相手にシークレットモードのプロフィールを共有すると、その連絡相手に招待されたグループでも同じプロフィールが使われます。</string>
<string name="theme">テーマ</string>
<string name="voice_messages">音声メッセージ</string>
<string name="app_name"><xliff:g id="appName">SimpleX</xliff:g></string>
<string name="you_will_join_group">このリンクのグループに参加し、そのメンバーに繋がります。</string>
<string name="connected_to_server_to_receive_messages_from_contact">この連絡先から受信するメッセージのサーバに既に接続してます。</string>
<string name="sending_files_not_yet_supported">ファイル送信機能がまだ実装されてません</string>
<string name="trying_to_connect_to_server_to_receive_messages">このコンタクトから受信するメッセージのサーバに接続しようとしてます。</string>
<string name="unknown_message_format">不明なメッセージ形式</string>
<string name="sender_you_pronoun">あなた</string>
<string name="description_via_group_link">グループリンク経由</string>
<string name="notification_preview_mode_contact_desc">連絡先のみ表示</string>
<string name="auth_stop_chat">チャットを閉じる</string>
<string name="icon_descr_received_msg_status_unread">未読</string>
<string name="icon_descr_sent_msg_status_send_failed">送信失敗</string>
<string name="personal_welcome">ようこそ <xliff:g>%1$s</xliff:g></string>
<string name="voice_message">音声メッセージ</string>
<string name="view_security_code">セキュリティコードを確認</string>
<string name="send_live_message">ライブメッセージを送信</string>
<string name="scan_QR_code">QRコードを読み込む</string>
<string name="to_connect_via_link_title">リンク経由で接続</string>
<string name="security_code">セキュリティコード</string>
<string name="is_verified">%s は認証済み</string>
<string name="smp_servers">SMPサーバ</string>
<string name="save_servers_button">保存</string>
<string name="update_network_session_mode_question">トランスポート隔離モードを更新しますか?</string>
<string name="save_preferences_question">この設定でよろしいですか?</string>
<string name="icon_descr_video_off">ビデオオフ</string>
<string name="call_connection_via_relay">リレー経由</string>
<string name="icon_descr_video_on">ビデオオン</string>
<string name="icon_descr_speaker_off">スピーカーオフ</string>
<string name="your_chat_database">あなたのチャットデータベース</string>
<string name="stop_chat_confirmation">停止</string>
<string name="stop_chat_to_enable_database_actions">データベース操作をするにはチャットを閉じてからです。</string>
<string name="simplex_link_contact">SimpleX連絡先アドレス</string>
<string name="simplex_link_invitation">SimpleX使い捨て招待リンク</string>
<string name="description_via_contact_address_link">連絡先アドレスリンク経由</string>
<string name="description_via_one_time_link">使い捨てリンク経由</string>
<string name="description_you_shared_one_time_link_incognito">シークレットモードで使い捨てリンクを送りました</string>
<string name="simplex_link_group">SimpleXグループリンク</string>
<string name="simplex_link_mode_browser">ブラウザ経由</string>
<string name="sender_cancelled_file_transfer">ファイル送信が中止されました。</string>
<string name="sender_may_have_deleted_the_connection_request">送信元が繋がりリクエストを削除したかもしれません。</string>
<string name="error_smp_test_server_auth">このサーバで待ち行列を作るには認証が必要です。パスワードをご確認ください。</string>
<string name="periodic_notifications_desc">アプリが定期的に新しいメッセージを受信します。一日の電池使用量が約3%で、プッシュ通知に頼らずに、あなたの端末のデータをサーバに送ることはありません。</string>
<string name="la_notice_title_simplex_lock">SimpleXロック</string>
<string name="enter_passphrase_notification_desc">通知を受けるには、データベースの暗証フレーズを入力してください。</string>
<string name="simplex_service_notification_title"><xliff:g id="appNameFull">SimpleX Chat</xliff:g> サービス</string>
<string name="auth_simplex_lock_turned_on">SimpleXロックオン</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">起動時、または非アクティブ状態で30秒が経った後に戻ると、認証する必要となります。</string>
<string name="share_verb">共有する</string>
<string name="icon_descr_sent_msg_status_unauthorized_send">非認証の送信</string>
<string name="this_text_is_available_in_settings">このテキストは設定にあります。</string>
<string name="images_limit_title">画像数の上限を超えてます!</string>
<string name="welcome">ようこそ!</string>
<string name="group_preview_you_are_invited">グループ招待が届きました</string>
<string name="your_chats">あなたのチャット</string>
<string name="text_field_set_contact_placeholder">連絡先を設定…</string>
<string name="waiting_for_file">ファイル待ち</string>
<string name="switch_receiving_address_question">受信アドレスを変えますか?</string>
<string name="send_verb">送信する</string>
<string name="send_live_message_desc">ライブメッセージを送信 (入力しながら宛先の画面で更新される)</string>
<string name="to_share_with_your_contact">(連絡先に共有)</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(クリップボードから読み込むか、貼り付ける)</string>
<string name="thank_you_for_installing_simplex"><xliff:g id="appNameFull">SimpleX Chat</xliff:g>をご利用いただきありがとうございます!</string>
<string name="use_camera_button">カメラ起動</string>
<string name="you_accepted_connection">繋がりを承認しました</string>
<string name="you_invited_your_contact">連絡先に招待を送りました</string>
<string name="connection_you_accepted_will_be_cancelled">承認ずみの接続がキャンセルされます!</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">あなたからリンクを受けた連絡先が接続できなくなります!</string>
<string name="icon_descr_address"><xliff:g id="appName">SimpleX</xliff:g>アドレス</string>
<string name="show_QR_code">QRコードを表示</string>
<string name="this_link_is_not_a_valid_connection_link">このリンクは有効な接続リンクではありません!</string>
<string name="this_QR_code_is_not_a_link">このQRコードはリンクではありません</string>
<string name="you_will_be_connected_when_group_host_device_is_online">グループのホスト端末がオンラインになったら、接続されます。後でチェックするか、しばらくお待ちください。</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">連絡相手がアプリからQRコードを読み込めます。</string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">連絡先がオンラインになったら、接続されます。後でチェックするか、しばらくお待ちください。</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">あなたのチャットプロフィールが
\n連絡相手に送られます。</string>
<string name="share_invitation_link">招待リンクを送る</string>
<string name="your_profile_will_be_sent">あなたのチャットプロフィールが連絡相手に送られます。</string>
<string name="scan_code">コードを読み込む</string>
<string name="scan_code_from_contacts_app">連絡相手のアプリからセキュリティコードを読み込む</string>
<string name="chat_lock">SimpleXロック</string>
<string name="is_not_verified">%s は未認証</string>
<string name="your_contact_address">あなたのチャットアドレス</string>
<string name="your_settings">あなたの設定</string>
<string name="smp_servers_test_server">テストサーバ</string>
<string name="smp_servers_save">サーバを保存</string>
<string name="smp_servers_test_failed">サーバテスト失敗!</string>
<string name="smp_servers_use_server">サーバを使う</string>
<string name="smp_servers_your_server">あなたのサーバ</string>
<string name="smp_servers_your_server_address">あなたのサーバアドレス</string>
<string name="smp_servers_per_user">現在のチャットプロフィールの新しい接続のサーバ</string>
<string name="smp_servers_use_server_for_new_conn">新しい接続に使う</string>
<string name="saved_ICE_servers_will_be_removed">保存されたWebRTC ICEサーバが削除されます。</string>
<string name="your_ICE_servers">あなたのICEサーバ</string>
<string name="network_disable_socks">直接にインタネットに繋がりますか?</string>
<string name="network_enable_socks">SOCKSプロキシを使いますか</string>
<string name="network_socks_toggle">SOCKSプロキシ (ポート9050) を使う</string>
<string name="update_onion_hosts_settings_question">.onionのホスト設定を更新しますか</string>
<string name="network_use_onion_hosts">.onionホストを使う</string>
<string name="network_use_onion_hosts_prefer">利用可能時に</string>
<string name="network_session_mode_transport_isolation">トランスポート隔離</string>
<string name="save_and_notify_contact">保存して、連絡先にに知らせる</string>
<string name="your_current_profile">現在のプロフィール</string>
<string name="save_and_notify_contacts">保存して、連絡先にに知らせる</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">あなたのプライバシーとセキュリティを守るメッセージとアプリのプラットフォーム</string>
<string name="we_do_not_store_contacts_or_messages_on_servers">連絡先情報と届けたメッセージをサーバに保存することは一切ありません。</string>
<string name="you_control_your_chat">あなたのチャットはあなたが決めます!</string>
<string name="your_profile_is_stored_on_your_device">あなたのプロフィール、連絡先、送信したメッセージがご自分の端末に保存されます。</string>
<string name="profile_is_only_shared_with_your_contacts">プロフィールは連絡先にしか共有されません。</string>
<string name="you_can_use_markdown_to_format_messages__prompt">メッセージの書式をマークダウンで編集できます。</string>
<string name="secret">シークレット</string>
<string name="strikethrough">取り消し線</string>
<string name="callstate_starting">接続中…</string>
<string name="next_generation_of_private_messaging">次世代のプライバシー・メッセンジャー</string>
<string name="you_control_servers_to_receive_your_contacts_to_send">あなたがメッセージの<b>受信</b>サーバを決められます。あなたの連絡先が同じく、自分に対する受信サーバを決められます。</string>
<string name="icon_descr_video_call">ビデオ通話</string>
<string name="onboarding_notifications_mode_off">アプリが稼働中に</string>
<string name="webrtc_ice_servers">WebRTC ICEサーバ</string>
<string name="your_ice_servers">あなたのICEサーバ</string>
<string name="settings_section_title_settings">設定</string>
<string name="alert_title_skipped_messages">飛ばしたメッセージ</string>
<string name="settings_section_title_you">あなた</string>
<string name="settings_section_title_themes">テーマ</string>
<string name="run_chat_section">チャット起動</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">現在のチャットデータベースが読み込まれたデータベースに上書きされます。
\n元に戻せません。プロフィール、連絡先、メッセージ、ファイルが置き換えられます。</string>
<string name="chat_item_ttl_seconds">%s 秒</string>
<string name="delete_files_and_media_desc">ファイルとメディアが全て削除されます (※元に戻せません※)。低解像度の画像が残ります。</string>
<string name="enable_automatic_deletion_message">選択中の以前の送受信したメッセージが削除されます (※元に戻せません※)。数分かかります。</string>
<string name="update_database">更新</string>
<string name="database_is_not_encrypted">チャットデータベースが暗号化されてません。暗証フレーズを設定して保管してください。</string>
<string name="restore_database">データベースを復元</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">アプリの設定・データベース経由で、またはアプリの再起動でチャットを始められます。</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">グループ招待が届きました。参加してグループのメンバーとお繋がりください。</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">グループに入りました。招待をくれたメンバーに接続してます。</string>
<string name="you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved">このグループからのメッセージが届かなくなります。チャットの履歴が残ります。</string>
<string name="alert_message_no_group">このグループはもう存在しません。</string>
<string name="group_invitation_tap_to_join">タップして参加</string>
<string name="group_invitation_tap_to_join_incognito">タップしてシークレットモードで参加</string>
<string name="you_joined_this_group">グループに入りました。</string>
<string name="you_rejected_group_invitation">グループの招待を拒否しました</string>
<string name="you_sent_group_invitation">グループの招待を送りました</string>
<string name="snd_group_event_changed_member_role">%sの役割を次に変えました%s</string>
<string name="button_send_direct_message">ダイレクトメッセージを送信</string>
<string name="num_contacts_selected"><xliff:g id="num_contacts">%1$s</xliff:g>連絡先が選択中</string>
<string name="snd_group_event_member_deleted">除名しました: <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="switch_verb">切り替える</string>
<string name="member_role_will_be_changed_with_notification">役割が「%s」となります。グループの全員に通知が出ます。</string>
<string name="conn_stats_section_title_servers">サーバ</string>
<string name="member_role_will_be_changed_with_invitation">役割が「%s」となります。メンバーに新しい招待が届きます。</string>
<string name="group_is_decentralized">グループは完全分散型で、メンバーしか内容を見れません。</string>
<string name="network_options_save">保存</string>
<string name="update_network_settings_question">ネットワーク設定を更新しますか?</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">設定を更新すると、全サーバにクライントの再接続が行われます。</string>
<string name="your_chat_profiles_stored_locally">チャットプロフィールはローカルであなたの端末だけに保存されます。</string>
<string name="save_color">色を保存</string>
<string name="chat_preferences_you_allow">あなたが次を許可しています:</string>
<string name="chat_preferences_yes">はい</string>
<string name="set_group_preferences">グループ設定を行う</string>
<string name="your_preferences">あなたの設定</string>
<string name="voice_prohibited_in_this_chat">このチャットでは音声メッセージが使用禁止です。</string>
<string name="voice_messages_are_prohibited">このグループでは音声メッセージが使用禁止です。</string>
<string name="v4_2_security_assessment">セキュリティ評価</string>
<string name="whats_new">新着情報</string>
<string name="v4_2_security_assessment_desc">SimpleX ChatはTrail of Bitsによるセキュリティ監査を受けました。</string>
<string name="v4_2_auto_accept_contact_requests_desc">任意的な歓迎メッセージで</string>
<string name="v4_5_italian_interface_descr">ユーザーの皆様に感謝いたしますWeblateにて貢献できます</string>
<string name="v4_4_verify_connection_security">接続のセキュリティを確認</string>
<string name="error_smp_test_failed_at_step">テストが次のステップで失敗しました:%s</string>
<string name="ntf_channel_messages">SimpleX Chatメッセージ</string>
<string name="ntf_channel_calls">SimpleX Chat通話</string>
<string name="settings_notification_preview_mode_title">プレビューを表示</string>
<string name="notifications_mode_periodic">定期的に起動</string>
<string name="notifications_mode_off">アプリがアクティブ時に実行</string>
<string name="icon_descr_sent_msg_status_sent">送信済み</string>
<string name="you_have_no_chats">あなたはチャットがありません。</string>
<string name="share_message">メッセージを送る…</string>
<string name="share_file">ファイル共有…</string>
<string name="voice_message_send_text">音声メッセージ…</string>
<string name="voice_message_with_duration">音声メッセージ (<xliff:g id="duration">%1$s</xliff:g>)</string>
<string name="icon_descr_send_message">メッセージを送信</string>
<string name="icon_descr_settings">設定</string>
<string name="icon_descr_simplex_team"><xliff:g id="appName">SimpleX</xliff:g>開発チーム</string>
<string name="this_string_is_not_a_connection_link">このストリングは接続リンクではありません!</string>
<string name="chat_with_the_founder">質問やアイデアを送る</string>
<string name="star_on_github">GithubでStar</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">あなたのプロフィールはご自分の端末に保存され、あなたの連絡先のみに共有されます。
\n
\n<xliff:g id="appName">SimpleX</xliff:g>のサーバには開示されません。</string>
<string name="your_calls">あなたの通話</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g>飛ばしたメッセージ</string>
<string name="send_link_previews">リンクのプレビューを送信</string>
<string name="set_password_to_export">暗証フレーズを設定してからエキスポート</string>
<string name="stop_chat_question">チャットを閉じますか?</string>
<string name="save_passphrase_in_keychain">暗証フレーズをキーストア (暗証キー保管庫) に保存</string>
<string name="wrong_passphrase">データベースの暗証フレーズが違います</string>
<string name="unknown_error">不明なエラー</string>
<string name="save_passphrase_and_open_chat">暗証フレーズをを保存して、チャットを開始</string>
<string name="unknown_database_error_with_info">不明なデータベースのエラー: %s</string>
<string name="wrong_passphrase_title">暗証フレーズが違います!</string>
<string name="you_are_invited_to_group">グループ招待が届きました</string>
<string name="network_option_seconds_label"></string>
<string name="network_option_tcp_connection_timeout">TCP接続タイムアウト</string>
<string name="save_group_profile">保存グループのプロフィール</string>
<string name="v4_3_irreversible_message_deletion_desc">連絡先がメッセージの完全削除を許可できます。</string>
<string name="failed_to_create_user_duplicate_desc">同じ表示名前のチャットプロフィールが既にあります。別のを選んでください。</string>
<string name="smp_server_test_secure_queue">待ち行列セキュリティ確認</string>
<string name="database_initialization_error_desc">データベースが正しく稼働してません。詳細はタップにて</string>
<string name="notification_preview_mode_message_desc">連絡先とメッセージを表示</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">あなたのデータを守るために、SimpleXロックをオンにしてください。
\nオンにするには、認証ステップが行われます。</string>
<string name="la_notice_turn_on">オンにする</string>
<string name="auth_unlock">ロック解除</string>
<string name="save_verb">保存する</string>
<string name="reveal_verb">開示する</string>
<string name="tap_to_start_new_chat">タップして新しいチャットを始める</string>
<string name="image_decoding_exception_desc">画像が解読できません。別のイメージで試すか、開発者に伝えてください。</string>
<string name="icon_descr_waiting_for_image">画像待ち</string>
<string name="waiting_for_image">画像待ち</string>
<string name="contact_sent_large_file">向こうが最上限の大きさを超えるファイルを送ろうとしました (<xliff:g id="maxFileSize">%1$s</xliff:g>)。</string>
<string name="voice_messages_prohibited">音声メッセージは使用禁止です!</string>
<string name="add_contact_or_create_group">新しいチャットを始める</string>
<string name="you_can_connect_to_simplex_chat_founder"><font color="#0088ff"><xliff:g id="appNameFull">SimpleX Chat</xliff:g>の開発者と繋がれば、質問したり、速報を受けたりすることができます</font></string>
<string name="to_start_a_new_chat_help_header">新しいチャットを始めるには</string>
<string name="chat_help_tap_button">ボタンをタップ</string>
<string name="unmute_chat">ミュート解除</string>
<string name="set_contact_name">連絡先を設定</string>
<string name="contact_wants_to_connect_with_you">はあなたと繋がりたいです!</string>
<string name="you_can_also_connect_by_clicking_the_link">リンクをクリックすることでも接続できます。ブラウザが起動すれば <b>Open in mobile app (アプリで開く)</b>ボタンをクリックしてください。</string>
<string name="your_chat_profiles">あなたのチャットプロフィール</string>
<string name="smp_servers_scan_qr">サーバのQRコードを読み込む</string>
<string name="smp_servers_test_some_failed">テストに失敗したサーバがあります:</string>
<string name="use_simplex_chat_servers__question"><xliff:g id="appNameFull">SimpleX Chat</xliff:g>サーバを使いますか?</string>
<string name="using_simplex_chat_servers"><xliff:g id="appNameFull">SimpleX Chat</xliff:g>を使っています。</string>
<string name="share_link">リンクを送る</string>
<string name="core_simplexmq_version">simplexmq: バージョン%s (%2s)</string>
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">あなたと繋がるリンク、またはQRコードを共有できます。誰でも接続できます。後で削除しても、連絡先がそのままのこります。</string>
<string name="section_title_welcome_message">歓迎メッセージ</string>
<string name="callstate_waiting_for_answer">応答待ち…</string>
<string name="callstate_waiting_for_confirmation">確認待ち…</string>
<string name="first_platform_without_user_ids">世界初のユーザーIDのないプラットフォーム設計も元からプライベート</string>
<string name="use_chat">チャット</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g>は次の方法であなたと繋がりたいです:</string>
<string name="video_call_no_encryption">ビデオ通話 (非エンドツーエンド暗号化)</string>
<string name="show_call_on_lock_screen">表示</string>
<string name="icon_descr_speaker_on">スピーカーオン</string>
<string name="your_privacy">あなたのプライバシー</string>
<string name="messages_section_description">この設定は現在のチャットプロフィールのメッセージに適応されます。</string>
<string name="you_have_to_enter_passphrase_every_time">アプリ起動時に暗証フレーズを入力しなければなりません。端末に保存されてません。</string>
<string name="database_backup_can_be_restored">データベースの暗証フレーズ変更が完了してません。</string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">リンク、またはQRコードを共有できます。誰でもグループに参加できます。後で削除しても、グループのメンバーがそのままのこります。</string>
<string name="network_options_revert">元に戻す</string>
<string name="update_network_settings_confirmation">更新</string>
<string name="accept_feature_set_1_day">1日に設定</string>
<string name="v4_4_disappearing_messages_desc">一定時間が経ったら送信されたメッセージが削除されます。</string>
<string name="v4_4_french_interface_descr">ユーザーの皆様に感謝いたしますWeblateにて貢献できます</string>
<string name="v4_5_private_filenames_descr">時間帯を漏らさないために、画像と音声ファイルはUTCを使います。</string>
<string name="v4_5_transport_isolation">トランスポート隔離</string>
<string name="restore_database_alert_confirm">復元</string>
<string name="restore_database_alert_title">データベースを復元しますか?</string>
<string name="save_and_notify_group_members">保存して、グループのメンバーにに知らせる</string>
<string name="send_us_an_email">メールを送る</string>
<string name="share_image">画像共有…</string>
<string name="simplex_link_mode">SimpleXリンク</string>
<string name="settings_section_title_support">SIMPLEX CHATを支援</string>
<string name="smp_servers_test_servers">テストサーバ</string>
<string name="switch_receiving_address_desc">開発中の機能です相手のクライアントが4.2でなければ機能しません。アドレス変更が完了すると、会話にメッセージが出ます。連絡相手 (またはグループのメンバー) からメッセージを受信できないかをご確認ください。</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery">あなたのプライバシーを守るために、このアプリはプッシュ通知の変わりに <b><xliff:g id="appName">SimpleX</xliff:g> バックグラウンド・サービス</b> を使ってます。一日の電池使用量は約3%です。</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">あなたのプライバシーを守るために、他のアプリと違って、ユーザーIDの変わりに <xliff:g id="appName">SimpleX</xliff:g> メッセージ束毎にIDを配布し、各連絡先が別々と扱います。</string>
<string name="group_main_profile_sent">あなたのチャットプロフィールが他のグループメンバーに送られます。</string>
<string name="to_verify_compare">エンドツーエンド暗号化を確認するには、ご自分の端末と連絡先の端末のコードを比べます (スキャンします)。</string>
<string name="trying_to_connect_to_server_to_receive_messages_with_error">このコンタクトから受信するメッセージのサーバに接続しようとしてます。(エラー: <xliff:g id="errorMsg">%1$s</xliff:g>)。</string>
<string name="connection_error_auth_desc">使用済みリンク、または連絡先による接続の削除ではなければ、バッグの可能性があります。開発者にお伝えください。
\n繋がるには、連絡先に新しくリンクを発行してもらって、電波が安定かどうかご確認ください。</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">接続を完了するには、連絡相手がオンラインになる必要があります。
\nこの接続をキャンセルして、連絡先を削除をすることもできます (後でやり直すこともできます)。</string>
<string name="verify_security_code">セキュリティコードを確認</string>
<string name="simplex_link_connection"><xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g>経由</string>
<string name="image_descr_simplex_logo"><xliff:g id="appName">SimpleX</xliff:g>ロゴ</string>
<string name="you_need_to_allow_to_send_voice">音声メッセージを送るには、連絡相手からの音声メッセージを許可しなければなりません。</string>
<string name="you_must_use_the_most_recent_version_of_database">あなたの最新データベースを1つの端末にしか使わなければ、一部の連絡先からメッセージが届きかねます。</string>
<string name="you_are_already_connected_to_vName_via_this_link">既に繋がってます: <xliff:g id="contactName" example="Alice">%1$s!</xliff:g></string>
<string name="alert_title_cant_invite_contacts_descr">シークレットモードのプロフィールでこのグループに参加しています。メインのプロフィールを守るために、招待することができません。</string>
<string name="description_you_shared_one_time_link">使い捨てリンクを送りました</string>
<string name="profile_will_be_sent_to_contact_sending_link">リンクを送ってくれた連絡先にあなたのプロフィールを送ります。</string>
<string name="your_SMP_servers">あなたのSMPサーバ</string>
<string name="your_simplex_contact_address">あなたの<xliff:g id="appName">SimpleX</xliff:g>アドレス</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">連絡先が繋がりリクエストを承認したら、接続されます。後でチェックするか、しばらくお待ちください。</string>
<string name="switch_receiving_address">受信アドレスを変える</string>
<string name="incognito_random_profile">あなたのランダム・プロフィール</string>
<string name="incognito_info_find">シークレットモード接続のプロフィールを確認するには、チャットの上部の連絡先、またはグループ名をタップします。</string>
<string name="v4_3_voice_messages">音声メッセージ</string>
<string name="settings_section_title_socks">SOCKSプロキシ</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">データベースのエキスポート、読み込み、削除するにはチャットを閉じてからです。チャットを閉じると送受信ができなくなります。</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">あなたのプロフィール、連絡先、メッセージ、ファイルが完全削除されます (※元に戻せません※)。</string>
<string name="update_database_passphrase">データベース暗証フレーズを更新</string>
<string name="save_archive">アーカイブを保存</string>
<string name="snd_group_event_changed_role_for_yourself">あなたが自分の役割を次に変えました:%s</string>
<string name="snd_conn_event_switch_queue_phase_completed">アドレスを変えました</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">%sのアドレスを変えました</string>
<string name="select_contacts">連絡先を選択</string>
<string name="skip_inviting_button">今はメンバーを招待しません</string>
<string name="group_info_section_title_num_members"><xliff:g id="num_members">%1$s</xliff:g>メンバー</string>
</resources>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="chat_item_ttl_month">1 mėnuo</string>
<string name="chat_item_ttl_week">1 savaitė</string>
<string name="about_simplex_chat">Apie <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="chat_item_ttl_day">1 diena</string>
<string name="a_plus_b">a + b</string>
<string name="about_simplex">Apie SimpleX</string>
<string name="smp_servers_add">Pridėti serverį…</string>
<string name="v4_3_improved_server_configuration_desc">Pridėti serverius skenuojant QR kodus.</string>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.SimpleX" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:statusBarColor">@android:color/black</item>
<item name="android:windowBackground">@color/window_background_dark</item>
</style>
</resources>

View File

@@ -0,0 +1,983 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="callstatus_error">oproepfout</string>
<string name="callstatus_calling">bellen…</string>
<string name="call_on_lock_screen">Oproepen op vergrendelscherm:</string>
<string name="callstatus_in_progress">oproep bezig</string>
<string name="icon_descr_call_progress">Gesprek bezig</string>
<string name="settings_section_title_calls">OPROEPEN</string>
<string name="cancel_verb">Annuleren</string>
<string name="icon_descr_cancel_file_preview">Bestandsvoorbeeld annuleren</string>
<string name="icon_descr_cancel_image_preview">Annuleer afbeeldingsvoorbeeld</string>
<string name="feature_cancelled_item">geannuleerd %s</string>
<string name="icon_descr_cancel_live_message">Live bericht annuleren</string>
<string name="snd_conn_event_switch_queue_phase_changing">adres wijzigen…</string>
<string name="notifications_mode_service">Altijd aan</string>
<string name="icon_descr_asked_to_receive">Gevraagd om de afbeelding te ontvangen</string>
<string name="change_verb">Wijziging</string>
<string name="network_settings">Geavanceerde netwerk instellingen</string>
<string name="network_enable_socks_info">Toegang tot de servers via SOCKS proxy op poort 9050\? De proxy moet worden gestart voordat u deze optie inschakelt.</string>
<string name="alert_title_cant_invite_contacts">Kan geen contacten uitnodigen!</string>
<string name="allow_direct_messages">Sta het verzenden van directe berichten naar leden toe.</string>
<string name="allow_to_delete_messages">Sta toe om verzonden berichten onomkeerbaar te verwijderen.</string>
<string name="allow_to_send_voice">Sta toe om spraak berichten te verzenden.</string>
<string name="chat_is_running">Chat is actief</string>
<string name="clear_chat_menu_action">Wissen</string>
<string name="chat_database_section">CHAT DATABASE</string>
<string name="chat_archive_section">CHAT ARCHIEF</string>
<string name="chat_console">Chat console</string>
<string name="chat_database_imported">Chat database geïmporteerd</string>
<string name="chat_database_deleted">Chat database verwijderd</string>
<string name="chat_item_ttl_week">1 week</string>
<string name="a_plus_b">a + b</string>
<string name="accept_contact_button">Accepteer</string>
<string name="accept_call_on_lock_screen">Accepteer</string>
<string name="color_primary">Accent</string>
<string name="accept">Accepteer</string>
<string name="accept_connection_request__question">Verbindingsverzoek accepteren\?</string>
<string name="callstatus_accepted">geaccepteerde oproep</string>
<string name="accept_contact_incognito_button">Accepteer incognito</string>
<string name="smp_servers_preset_add">Vooraf ingestelde servers toevoegen</string>
<string name="users_add">Profiel toevoegen</string>
<string name="smp_servers_add">Server toevoegen…</string>
<string name="smp_servers_add_to_another_device">Toevoegen aan een ander apparaat</string>
<string name="v4_2_group_links_desc">Beheerders kunnen de uitnodiging links naar groepen aanmaken.</string>
<string name="v4_3_improved_server_configuration_desc">Servers toevoegen door QR-codes te scannen.</string>
<string name="group_member_role_admin">Beheerder</string>
<string name="all_group_members_will_remain_connected">Alle groepsleden blijven verbonden.</string>
<string name="allow_verb">Toestaan</string>
<string name="chat_item_ttl_day">1 dag</string>
<string name="accept_feature">Accepteer</string>
<string name="incognito_random_profile_from_contact_description">Er wordt een willekeurig profiel verzonden naar het contact van wie je deze link hebt ontvangen</string>
<string name="network_session_mode_entity_description">Er wordt een afzonderlijke TCP-verbinding (en SOCKS-referentie) gebruikt <b> voor elk contact en groepslid </b>.
\n<b>Let op</b>: als u veel verbindingen heeft, kan uw batterij- en verkeersverbruik aanzienlijk hoger zijn en kunnen sommige verbindingen uitvallen.</string>
<string name="icon_descr_audio_call">audio oproep</string>
<string name="icon_descr_audio_on">Geluid aan</string>
<string name="settings_audio_video_calls">Audio en video gesprekken</string>
<string name="auto_accept_images">Afbeeldingen automatisch accepteren</string>
<string name="auth_unavailable">Verificatie niet beschikbaar</string>
<string name="back">Terug</string>
<string name="v4_2_auto_accept_contact_requests">Contact verzoeken automatisch accepteren</string>
<string name="bold">vetgedrukt</string>
<string name="incognito_random_profile_description">Er wordt een willekeurig profiel naar uw contactpersoon verzonden</string>
<string name="attach">Bijvoegen</string>
<string name="allow_irreversible_message_deletion_only_if">Sta het onomkeerbaar verwijderen van berichten alleen toe als uw contactpersoon dit toestaat.</string>
<string name="allow_to_send_disappearing">Sta toe om verdwijnende berichten te verzenden.</string>
<string name="allow_your_contacts_to_send_voice_messages">Sta toe dat uw contacten spraak berichten verzenden.</string>
<string name="all_your_contacts_will_remain_connected">Al uw contacten blijven verbonden.</string>
<string name="allow_voice_messages_question">Spraak berichten toestaan\?</string>
<string name="onboarding_notifications_mode_periodic_desc"><b>Goed voor batterij</b>. Achtergrondservice controleert elke 10 minuten op nieuwe berichten. U kunt oproepen en dringende berichten missen.</string>
<string name="integrity_msg_bad_hash">Onjuiste bericht hash</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>Scan QR-code</b>: om verbinding te maken met uw contactpersoon die u de QR-code laat zien.</string>
<string name="integrity_msg_bad_id">Onjuiste bericht ID</string>
<string name="call_already_ended">Oproep al beëindigd!</string>
<string name="chat_item_ttl_month">1 maand</string>
<string name="about_simplex">Over SimpleX</string>
<string name="about_simplex_chat">Over <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="above_then_preposition_continuation">hierboven, dan:</string>
<string name="accept_requests">Verzoeken accepteren</string>
<string name="users_delete_all_chats_deleted">Alle gesprekken en berichten worden verwijderd, dit kan niet ongedaan worden gemaakt!</string>
<string name="clear_chat_warning">Alle berichten worden verwijderd, dit kan niet ongedaan worden gemaakt! De berichten worden ALLEEN voor jou verwijderd.</string>
<string name="allow_disappearing_messages_only_if">Sta verdwijnende berichten alleen toe als uw contactpersoon dit toestaat.</string>
<string name="allow_voice_messages_only_if">Sta spraak berichten alleen toe als uw contactpersoon ze toestaat.</string>
<string name="allow_your_contacts_irreversibly_delete">Laat uw contacten verzonden berichten onomkeerbaar verwijderen.</string>
<string name="allow_your_contacts_to_send_disappearing_messages">Sta toe dat uw contacten verdwijnende berichten verzenden.</string>
<string name="chat_preferences_always">altijd</string>
<string name="icon_descr_audio_off">Geluid uit</string>
<string name="full_backup">Back-up van app gegevens</string>
<string name="answer_call">Beantwoord oproep</string>
<string name="keychain_is_storing_securely">Android Keychain wordt gebruikt om het wachtwoord veilig op te slaan, hierdoor kan de meldings service werken.</string>
<string name="keychain_allows_to_receive_ntfs">Android Keychain wordt gebruikt om het wachtwoord veilig op te slaan nadat u de app opnieuw hebt opgestart of het wachtwoord heeft gewijzigd, hiermee kunt u meldingen ontvangen.</string>
<string name="app_version_code">App build: %s</string>
<string name="notifications_mode_off_desc">App kan alleen meldingen ontvangen wanneer deze actief is, er wordt geen achtergrondservice gestart</string>
<string name="appearance_settings">Uiterlijk</string>
<string name="settings_section_title_icon">APP ICON</string>
<string name="app_version_title">App versie</string>
<string name="app_version_name">App versie: v%s</string>
<string name="network_session_mode_user_description">Er wordt een aparte TCP-verbinding (en SOCKS-referentie) gebruikt <b> voor elk chat profiel dat je in de app hebt </b>.</string>
<string name="audio_call_no_encryption">audio oproep (niet e2e versleuteld)</string>
<string name="accept_automatically">Automatisch</string>
<string name="notifications_mode_service_desc">Achtergrondservice is altijd actief, meldingen worden weergegeven zodra de berichten beschikbaar zijn.</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>Nieuw contact toevoegen</b>: om uw eenmalige QR-code voor uw contact te maken.</string>
<string name="icon_descr_call_ended">Oproep beëindigd</string>
<string name="turning_off_service_and_periodic">Batterijoptimalisatie is actief, waardoor achtergrondservice en periodieke verzoeken om nieuwe berichten worden uitgeschakeld. Je kunt ze weer inschakelen via instellingen.</string>
<string name="onboarding_notifications_mode_off_desc"><b>Beste voor de batterij</b>. U ontvangt alleen meldingen als de app draait, de achtergronddienst wordt NIET gebruikt.</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b>Het kan worden uitgeschakeld via instellingen</b>, meldingen worden nog steeds weergegeven terwijl de app actief is.</string>
<string name="both_you_and_your_contacts_can_delete">Zowel jij als je contactpersoon kunnen verzonden berichten onherroepelijk verwijderen.</string>
<string name="both_you_and_your_contact_can_send_disappearing">Zowel jij als je contactpersoon kunnen verdwijnende berichten sturen.</string>
<string name="both_you_and_your_contact_can_send_voice">Zowel jij als je contactpersoon kunnen spraak berichten verzenden.</string>
<string name="impossible_to_recover_passphrase"><b>Let op</b>: u kunt het wachtwoord NIET herstellen of wijzigen als u het kwijt raakt.</string>
<string name="onboarding_notifications_mode_service_desc"><b>Gebruikt meer batterij</b>! Achtergrondservice is altijd actief, meldingen worden weergegeven zodra de berichten beschikbaar zijn.</string>
<string name="icon_descr_cancel_link_preview">link voorbeeld annuleren</string>
<string name="callstatus_ended">oproep beëindigd <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="database_initialization_error_title">Kan de database niet initialiseren</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">adres wijzigen voor %s…</string>
<string name="invite_prohibited">Kan contact niet uitnodigen!</string>
<string name="cannot_access_keychain">Geen toegang tot Keystore om database wachtwoord op te slaan</string>
<string name="cannot_receive_file">Kan bestand niet ontvangen</string>
<string name="change_role">Rol wijzigen</string>
<string name="rcv_conn_event_switch_queue_phase_changing">adres wijzigen…</string>
<string name="rcv_conn_event_switch_queue_phase_completed">adres voor u gewijzigd</string>
<string name="rcv_group_event_changed_member_role">veranderde rol van %s naar %s</string>
<string name="change_member_role_question">Groep rol wijzigen\?</string>
<string name="chat_is_stopped">Chat is gestopt</string>
<string name="notifications_mode_periodic_desc">Controleert nieuwe berichten elke 10 minuten gedurende maximaal 1 minuut</string>
<string name="rcv_group_event_changed_your_role">je rol gewijzigd in %s</string>
<string name="chat_archive_header">Gesprek archief</string>
<string name="change_database_passphrase_question">Wachtwoord database wijzigen\?</string>
<string name="chat_is_stopped_indication">Chat is gestopt</string>
<string name="chat_preferences">Gesprek voorkeuren</string>
<string name="network_session_mode_user">Chat profiel</string>
<string name="settings_section_title_chats">GESPREKKEN</string>
<string name="chat_with_developers">Praat met de ontwikkelaars</string>
<string name="smp_servers_check_address">Controleer het server adres en probeer het opnieuw.</string>
<string name="choose_file">Bestand</string>
<string name="clear_verb">Wissen</string>
<string name="v4_4_verify_connection_security_desc">Vergelijk beveiligingscodes met je contacten.</string>
<string name="icon_descr_contact_checked">Contact gecontroleerd</string>
<string name="notification_contact_connected">Verbonden</string>
<string name="display_name_connecting">Verbinden…</string>
<string name="connection_local_display_name">verbinding <xliff:g id="connection ID" example="1">%1$d</xliff:g></string>
<string name="connection_error">Verbindingsfout</string>
<string name="group_member_status_introduced">verbinden (geïntroduceerd)</string>
<string name="group_member_status_intro_invitation">verbinden (introductie uitnodiging)</string>
<string name="display_name_connection_established">verbinding gemaakt</string>
<string name="connection_request_sent">Verbindingsverzoek verzonden!</string>
<string name="connection_timeout">Timeout verbinding</string>
<string name="share_one_time_link">Maak een eenmalige uitnodiging link</string>
<string name="create_address">Adres aanmaken</string>
<string name="create_group_link">Groep link maken</string>
<string name="create_group">Maak een geheime groep aan</string>
<string name="database_will_be_encrypted">Database wordt versleuteld.</string>
<string name="group_member_status_creator">creator</string>
<string name="delete_address__question">Adres verwijderen\?</string>
<string name="database_passphrase_and_export">Database wachtwoord &amp; exporteren</string>
<string name="passphrase_is_different">Het wachtwoord van de database verschilt van het wachtwoord dat is opgeslagen in de keychain.</string>
<string name="ttl_d">%dd</string>
<string name="delete_verb">Verwijderen</string>
<string name="delete_after">Verwijderen na</string>
<string name="connect_via_link_verb">Verbind</string>
<string name="server_connected">verbonden</string>
<string name="server_connecting">Verbinden</string>
<string name="connect_via_contact_link">Verbinden via contact link\?</string>
<string name="connect_via_group_link">Verbinden via groep link\?</string>
<string name="connect_via_invitation_link">Verbinden via uitnodiging link\?</string>
<string name="notification_preview_mode_contact">Contact naam</string>
<string name="notification_preview_somebody">Contact verborgen:</string>
<string name="image_decoding_exception_title">Decodeerfout</string>
<string name="maximum_supported_file_size">De momenteel maximaal ondersteunde bestandsgrootte is <xliff:g id="maxFileSize">%1$s</xliff:g>.</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">Contact en alle berichten worden verwijderd, dit kan niet ongedaan worden gemaakt!</string>
<string name="icon_descr_server_status_connected">Verbonden</string>
<string name="confirm_verb">Bevestigen</string>
<string name="connect_via_link_or_qr">Maak verbinding via link / QR-code</string>
<string name="copied">Gekopieerd naar het klembord</string>
<string name="contribute">Bijdragen</string>
<string name="configure_ICE_servers">ICE servers configureren</string>
<string name="network_session_mode_entity">Verbinding</string>
<string name="core_build_timestamp">Core gebouwd op: %s</string>
<string name="core_version">Core versie: v%s</string>
<string name="callstate_connected">verbonden</string>
<string name="callstate_connecting">Verbinden…</string>
<string name="decentralized">Gedecentraliseerd</string>
<string name="create_your_profile">Maak je profiel aan</string>
<string name="ttl_day">%d dag</string>
<string name="ttl_days">%d dagen</string>
<string name="encrypted_with_random_passphrase">De database is versleuteld met een willekeurig wachtwoord, u kunt deze wijzigen.</string>
<string name="database_encryption_will_be_updated">Het wachtwoord voor database versleuteling wordt bijgewerkt en opgeslagen in de keychain.</string>
<string name="database_will_be_encrypted_and_passphrase_stored">"De database wordt versleuteld en het wachtwoord wordt opgeslagen in de Keychain."</string>
<string name="database_passphrase_will_be_updated">Het wachtwoord voor database versleuteling wordt bijgewerkt.</string>
<string name="database_error">Database fout</string>
<string name="database_passphrase_is_required">Database wachtwoord is vereist om je gesprekken te openen.</string>
<string name="contact_already_exists">Contact bestaat al</string>
<string name="icon_descr_call_connecting">Oproep verbinden</string>
<string name="button_create_group_link">Maak link</string>
<string name="smp_server_test_connect">Verbind</string>
<string name="connection_error_auth">Verbindingsfout (AUTH)</string>
<string name="smp_server_test_create_queue">Maak een wachtrij</string>
<string name="auth_confirm_credential">Bevestig uw inloggegevens</string>
<string name="contact_connection_pending">Verbinden…</string>
<string name="group_connection_pending">Verbinden…</string>
<string name="icon_descr_context">Context icon</string>
<string name="copy_verb">Kopiëren</string>
<string name="clear_chat_question">Wis gesprek\?</string>
<string name="icon_descr_close_button">Knop sluiten</string>
<string name="clear_chat_button">Gesprek wissen</string>
<string name="alert_title_contact_connection_pending">Contact is nog niet verbonden!</string>
<string name="delete_contact_menu_action">Verwijderen</string>
<string name="delete_group_menu_action">Verwijderen</string>
<string name="clear_verification">Verwijderd verificatie</string>
<string name="connect_button">Verbind</string>
<string name="connect_via_link">Maak verbinding via link</string>
<string name="create_one_time_link">Maak een eenmalige uitnodiging link</string>
<string name="colored">gekleurd</string>
<string name="callstatus_connecting">Oproep verbinden…</string>
<string name="contact_requests">Contact verzoeken</string>
<string name="create_profile_button">Maak</string>
<string name="create_profile">Maak een profiel aan</string>
<string name="delete_address">Adres verwijderen</string>
<string name="always_use_relay">Verbinden via relais</string>
<string name="status_contact_has_e2e_encryption">contact heeft e2e-codering</string>
<string name="status_contact_has_no_e2e_encryption">contact heeft geen e2e versleuteling</string>
<string name="set_password_to_export_desc">De database is versleuteld met een willekeurige wachtwoord. Wijzig dit voordat u exporteert.</string>
<string name="database_passphrase">Database wachtwoord</string>
<string name="confirm_new_passphrase">Bevestig nieuw wachtwoord…</string>
<string name="current_passphrase">Huidige wachtwoord…</string>
<string name="database_encrypted">Database versleuteld!</string>
<string name="rcv_group_event_member_connected">is toegetreden</string>
<string name="archive_created_on_ts">Gemaakt op <xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="group_member_status_complete">compleet</string>
<string name="clear_contacts_selection_button">Wissen</string>
<string name="group_member_status_connected">verbonden</string>
<string name="group_member_status_connecting">Verbinden</string>
<string name="group_member_status_accepted">verbinden (geaccepteerd)</string>
<string name="group_member_status_announced">verbinden (aangekondigd)</string>
<string name="info_row_connection">Verbinding</string>
<string name="create_secret_group_title">Maak een geheime groep aan</string>
<string name="info_row_database_id">Database ID</string>
<string name="chat_preferences_contact_allows">Contact maakt het mogelijk</string>
<string name="contact_preferences">Contact voorkeuren</string>
<string name="contacts_can_mark_messages_for_deletion">Contact personen kunnen berichten markeren voor verwijdering; u kunt ze wel bekijken.</string>
<string name="theme_dark">Donker</string>
<string name="chat_preferences_default">standaard (%s)</string>
<string name="delete_chat_archive_question">Chat archief verwijderen\?</string>
<string name="delete_archive">Archief verwijderen</string>
<string name="delete_contact_question">Verwijder contact\?</string>
<string name="delete_chat_profile_question">Chat profiel verwijderen\?</string>
<string name="full_deletion">Verwijderen voor iedereen</string>
<string name="delete_link">Link verwijderen</string>
<string name="conn_level_desc_direct">direct</string>
<string name="settings_section_title_develop">ONTWIKKELEN</string>
<string name="settings_section_title_device">APPARAAT</string>
<string name="delete_files_and_media_all">Verwijder alle bestanden</string>
<string name="delete_messages_after">Berichten verwijderen na</string>
<string name="direct_messages">Directe berichten</string>
<string name="ttl_month">%d maand</string>
<string name="delete_image">Verwijder afbeelding</string>
<string name="delete_database">Database verwijderen</string>
<string name="rcv_group_event_group_deleted">verwijderde groep</string>
<string name="delete_files_and_media_question">Bestanden en media verwijderen\?</string>
<string name="delete_group_question">Groep verwijderen\?</string>
<string name="delete_message__question">Verwijder bericht\?</string>
<string name="delete_messages">Verwijder berichten</string>
<string name="smp_server_test_delete_queue">Wachtrij verwijderen</string>
<string name="delete_files_and_media_for_all_users">Verwijder bestanden voor alle chat profielen</string>
<string name="for_me_only">Verwijder voor mij</string>
<string name="button_delete_group">Groep verwijderen</string>
<string name="delete_link_question">Link verwijderen\?</string>
<string name="delete_pending_connection__question">Wachtende verbinding verwijderen\?</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 desktop: scan weergegeven QR-code vanuit de app, via <b>Scan QR-code</b>.</string>
<string name="settings_developer_tools">Ontwikkel gereedschap</string>
<string name="auth_device_authentication_is_disabled_turning_off">Apparaatverificatie is uitgeschakeld. SimpleX Vergrendelen uitschakelen.</string>
<string name="display_name">Weergavenaam</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">Apparaatverificatie is niet ingeschakeld. Je kunt SimpleX Vergrendelen inschakelen via Instellingen zodra je apparaatverificatie hebt ingeschakeld.</string>
<string name="direct_messages_are_prohibited_in_chat">Directe berichten tussen leden zijn verboden in deze groep.</string>
<string name="total_files_count_and_size">%d bestand(en) met een totale grootte van %s</string>
<string name="ttl_hour">%d uur</string>
<string name="no_call_on_lock_screen">Uitzetten</string>
<string name="v4_4_disappearing_messages">Verdwijnende berichten</string>
<string name="disappearing_prohibited_in_this_chat">Verdwijnende berichten zijn verboden in dit gesprek.</string>
<string name="auth_disable_simplex_lock">SimpleX Vergrendelen uitschakelen</string>
<string name="timed_messages">Verdwijnende berichten</string>
<string name="smp_server_test_disconnect">Verbinding verbreken</string>
<string name="icon_descr_server_status_disconnected">Verbinding verbroken</string>
<string name="display_name__field">Weergavenaam:</string>
<string name="display_name_cannot_contain_whitespace">Weergavenaam mag geen spatie bevatten.</string>
<string name="ttl_min">%d min</string>
<string name="ttl_months">%d maanden</string>
<string name="failed_to_create_user_title">Fout bij aanmaken van profiel!</string>
<string name="ttl_s">%ds</string>
<string name="button_delete_contact">Verwijder contact</string>
<string name="smp_servers_delete_server">Server verwijderen</string>
<string name="disappearing_messages_are_prohibited">Verdwijnende berichten zijn verboden in deze groep.</string>
<string name="ttl_sec">%d sec</string>
<string name="ttl_m">%dm</string>
<string name="ttl_mth">%dmth</string>
<string name="ttl_hours">%d uren</string>
<string name="ttl_h">%dh</string>
<string name="users_delete_question">Chat profiel verwijderen\?</string>
<string name="users_delete_profile_for">Chat profiel verwijderen voor</string>
<string name="deleted_description">verwijderd</string>
<string name="simplex_link_mode_description">Beschrijving</string>
<string name="error_receiving_file">Fout bij ontvangen van bestand</string>
<string name="error_joining_group">Fout bij lid worden van groep</string>
<string name="error_deleting_group">Fout bij verwijderen van groep</string>
<string name="error_deleting_contact">Fout bij het verwijderen van contact</string>
<string name="error_deleting_contact_request">Fout bij verwijderen van contact verzoek</string>
<string name="full_name__field">Volledige naam:</string>
<string name="error_importing_database">Fout bij het importeren van de chat database</string>
<string name="encrypt_database_question">Database versleutelen\?</string>
<string name="alert_title_no_group">Groep niet gevonden!</string>
<string name="group_display_name_field">Weergave naam groep:</string>
<string name="failed_to_create_user_duplicate_title">Dubbele weergavenaam!</string>
<string name="error_sending_message">Fout bij verzenden van bericht</string>
<string name="failed_to_active_user_title">Fout bij wisselen van profiel!</string>
<string name="error_changing_address">Fout bij wijzigen van adres</string>
<string name="error_deleting_pending_contact_connection">Fout bij het verwijderen van in behandeling zijnde contact verbinding</string>
<string name="error_deleting_user">Fout bij het verwijderen van gebruikers profiel</string>
<string name="auth_enable_simplex_lock">SimpleX Vergrendelen inschakelen</string>
<string name="hide_verb">Verbergen</string>
<string name="icon_descr_edited">bewerkt</string>
<string name="for_everybody">Voor iedereen</string>
<string name="icon_descr_server_status_error">Fout</string>
<string name="icon_descr_email">Email</string>
<string name="edit_image">Bewerk afbeelding</string>
<string name="exit_without_saving">Afsluiten zonder opslaan</string>
<string name="full_name_optional__prompt">Volledige naam (optioneel)</string>
<string name="encrypted_video_call">e2e versleuteld video gesprek</string>
<string name="allow_accepting_calls_from_lock_screen">Schakel oproepen vanaf het vergrendelscherm in via Instellingen.</string>
<string name="icon_descr_hang_up">Ophangen</string>
<string name="settings_section_title_help">HELP</string>
<string name="settings_experimental_features">Experimentele functies</string>
<string name="error_starting_chat">Fout bij het starten van de chat</string>
<string name="export_database">Database exporteren</string>
<string name="error_deleting_database">Fout bij het verwijderen van de chat database</string>
<string name="error_exporting_chat_database">Fout bij het exporteren van de chat database</string>
<string name="error_stopping_chat">Fout bij het stoppen van de chat</string>
<string name="files_and_media_section">Bestanden en media</string>
<string name="error_changing_message_deletion">Fout bij wijzigen van instelling</string>
<string name="error_encrypting_database">Fout bij het versleutelen van de database</string>
<string name="file_with_path">Bestand: %s</string>
<string name="enter_passphrase">Voer wachtwoord in…</string>
<string name="icon_descr_group_inactive">Groep inactief</string>
<string name="alert_message_group_invitation_expired">Groep uitnodiging is niet meer geldig, deze is verwijderd door de afzender.</string>
<string name="snd_group_event_group_profile_updated">groep profiel bijgewerkt</string>
<string name="group_member_status_group_deleted">groep verwijderd</string>
<string name="icon_descr_expand_role">Vouw de rolselectie uit</string>
<string name="delete_group_for_all_members_cannot_undo_warning">Groep wordt verwijderd voor alle leden, dit kan niet ongedaan worden gemaakt!</string>
<string name="error_creating_link_for_group">Fout bij maken van groep link</string>
<string name="error_deleting_link_for_group">Fout bij verwijderen groep link</string>
<string name="group_link">Groep link</string>
<string name="error_changing_role">Fout bij wisselen van rol</string>
<string name="error_removing_member">Fout bij verwijderen van gebruiker</string>
<string name="info_row_group">Groep</string>
<string name="group_full_name_field">Volledige naam groep:</string>
<string name="group_preferences">Groep voorkeuren</string>
<string name="feature_enabled">ingeschakeld</string>
<string name="feature_enabled_for_contact">ingeschakeld voor contact</string>
<string name="feature_enabled_for_you">voor u ingeschakeld</string>
<string name="group_members_can_delete">Groepsleden kunnen verzonden berichten onherroepelijk verwijderen.</string>
<string name="group_members_can_send_dms">Groepsleden kunnen directe berichten sturen</string>
<string name="group_members_can_send_voice">Groepsleden kunnen spraak berichten verzenden.</string>
<string name="v4_5_transport_isolation_descr">Per chat profiel (standaard) of per verbinding (BETA).</string>
<string name="v4_5_multiple_chat_profiles_descr">Verschillende namen, avatars en transportisolatie.</string>
<string name="v4_4_french_interface">Franse interface</string>
<string name="error_saving_group_profile">Fout bij opslaan van groep profiel</string>
<string name="encrypted_audio_call">e2e versleutelde audio oproep</string>
<string name="status_e2e_encrypted">e2e versleuteld</string>
<string name="edit_verb">Bewerk</string>
<string name="enable_automatic_deletion_question">Automatisch verwijderen van berichten aanzetten\?</string>
<string name="enter_correct_passphrase">Voer het juiste wachtwoord in.</string>
<string name="button_edit_group_profile">Groep profiel bewerken</string>
<string name="network_option_enable_tcp_keep_alive">Schakel TCP keep-alive in</string>
<string name="encrypt_database">Versleutelen</string>
<string name="error_adding_members">Fout bij het toevoegen van gebruiker(s)</string>
<string name="smp_servers_enter_manually">Voer de server handmatig in</string>
<string name="error_accepting_contact_request">Fout bij het accepteren van een contactverzoek</string>
<string name="group_invitation_expired">Groep uitnodiging verlopen</string>
<string name="icon_descr_file">Bestand</string>
<string name="section_title_for_console">VOOR CONSOLE</string>
<string name="group_profile_is_stored_on_members_devices">Groep profiel wordt opgeslagen op de apparaten van de leden, niet op de servers.</string>
<string name="notification_preview_mode_hidden">Verborgen</string>
<string name="delete_group_for_self_cannot_undo_warning">De groep wordt voor u verwijderd, dit kan niet ongedaan worden gemaakt!</string>
<string name="hide_notification">Verbergen</string>
<string name="server_error">fout</string>
<string name="file_will_be_received_when_contact_is_online">Het bestand wordt ontvangen wanneer uw contact persoon online is, even geduld a.u.b. of controleer later!</string>
<string name="error_saving_file">Fout bij opslaan van bestand</string>
<string name="file_not_found">Bestand niet gevonden</string>
<string name="file_saved">Bestand opgeslagen</string>
<string name="from_gallery_button">Galerij</string>
<string name="error_saving_ICE_servers">Fout bij opslaan van ICE servers</string>
<string name="callstate_ended">geëindigd</string>
<string name="group_members_can_send_disappearing">Groepsleden kunnen verdwijnende berichten sturen.</string>
<string name="ttl_week">%d week</string>
<string name="ttl_w">%dw</string>
<string name="ttl_weeks">%d weken</string>
<string name="v4_2_group_links">Groep links</string>
<string name="encrypted_database">Versleutelde database</string>
<string name="error_with_info">Fout: %s</string>
<string name="error_creating_address">Fout bij aanmaken van adres</string>
<string name="icon_descr_help">help</string>
<string name="icon_descr_flip_camera">Draai camera</string>
<string name="error_saving_smp_servers">Fout bij opslaan van SMP servers</string>
<string name="error_setting_network_config">Fout bij updaten van netwerk configuratie</string>
<string name="failed_to_parse_chat_title">Kan het gesprek niet laden</string>
<string name="failed_to_parse_chats_title">Kan de gesprekken niet laden</string>
<string name="simplex_link_mode_full">Volledige link</string>
<string name="integrity_msg_duplicate">dubbel bericht</string>
<string name="invalid_connection_link">Ongeldige verbinding link</string>
<string name="service_notifications_disabled">Onmiddelijke meldingen zijn uitgeschakeld!</string>
<string name="service_notifications">Onmiddellijke berichten!</string>
<string name="notification_preview_new_message">nieuw bericht</string>
<string name="icon_descr_image_snd_complete">Afbeelding verzonden</string>
<string name="live_message">Live bericht!</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Als je een uitnodiging link voor <xliff:g id="appName">SimpleX Chat</xliff:g> hebt ontvangen, kun je deze in je browser openen:</string>
<string name="onboarding_notifications_mode_subtitle">Dit kan later worden gewijzigd via instellingen.</string>
<string name="join_group_question">Deelnemen aan groep\?</string>
<string name="icon_descr_add_members">Nodig leden uit</string>
<string name="no_contacts_selected">Geen contacten geselecteerd</string>
<string name="v4_4_live_messages">Live berichten</string>
<string name="icon_descr_instant_notifications">Onmiddellijke meldingen</string>
<string name="notification_new_contact_request">Nieuw contactverzoek</string>
<string name="auth_log_in_using_credential">Log in met uw inloggegevens</string>
<string name="message_delivery_error_desc">Hoogstwaarschijnlijk heeft dit contact de verbinding met jou verwijderd.</string>
<string name="delete_message_cannot_be_undone_warning">Bericht wordt verwijderd, dit kan niet ongedaan worden gemaakt!</string>
<string name="large_file">Groot bestand!</string>
<string name="mark_read">Markeer gelezen</string>
<string name="mark_unread">Markeer als ongelezen</string>
<string name="mute_chat">Dempen</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">Als u elkaar niet persoonlijk kunt ontmoeten, kunt u <b> de QR-code scannen in het video gesprek </b>, of uw contactpersoon kan een uitnodiging link delen.</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">Als je elkaar niet persoonlijk kunt ontmoeten, <b>toon je de QR-code in het video gesprek</b> of deel je de link.</string>
<string name="invalid_QR_code">Ongeldige QR-code</string>
<string name="icon_descr_more_button">Meer</string>
<string name="incorrect_code">Onjuiste beveiligingscode!</string>
<string name="mark_code_verified">Markeer geverifieerd</string>
<string name="how_to_use_simplex_chat">Hoe te gebruiken</string>
<string name="markdown_help">Markdown hulp</string>
<string name="markdown_in_messages">Markdown in berichten</string>
<string name="network_settings_title">Netwerk instellingen</string>
<string name="how_to_use_markdown">Markdown gebruiken</string>
<string name="italic">cursief</string>
<string name="how_it_works">Hoe het werkt</string>
<string name="callstatus_missed">gemiste oproep</string>
<string name="how_simplex_works">Hoe <xliff:g id="appName">SimpleX</xliff:g> werkt</string>
<string name="many_people_asked_how_can_it_deliver">Veel mensen vroegen: <i>als <xliff:g id="appName">SimpleX</xliff:g> geen gebruikers ID\'s heeft, hoe kan het dan berichten bezorgen\?</i></string>
<string name="incoming_audio_call">Inkomende audio oproep</string>
<string name="incoming_video_call">Inkomend video gesprek</string>
<string name="ignore">Negeren</string>
<string name="status_no_e2e_encryption">geen e2e versleuteling</string>
<string name="import_database_question">Chat database importeren\?</string>
<string name="chat_item_ttl_none">nooit</string>
<string name="no_received_app_files">Geen ontvangen of verzonden bestanden</string>
<string name="alert_title_group_invitation_expired">Uitnodiging verlopen!</string>
<string name="rcv_group_event_member_left">verlaten</string>
<string name="group_member_status_left">verlaten</string>
<string name="group_member_status_invited">uitgenodigd</string>
<string name="button_leave_group">Groep verlaten</string>
<string name="info_row_local_name">Lokale naam</string>
<string name="group_unsupported_incognito_main_profile_sent">Incognito modus wordt hier niet ondersteund, uw hoofdprofiel wordt naar groepsleden verzonden</string>
<string name="users_delete_data_only">Alleen lokale profielgegevens</string>
<string name="message_deletion_prohibited_in_chat">Het onomkeerbaar verwijderen van berichten is verboden in deze groep.</string>
<string name="v4_3_improved_privacy_and_security_desc">App scherm verbergen in de recente apps.</string>
<string name="settings_section_title_incognito">Incognito modus</string>
<string name="messages_section_title">Berichten</string>
<string name="new_passphrase">Nieuw wachtwoord…</string>
<string name="keychain_error">Keychain fout</string>
<string name="join_group_button">Word lid van</string>
<string name="leave_group_question">Groep verlaten\?</string>
<string name="new_member_role">Nieuwe leden rol</string>
<string name="no_contacts_to_add">Geen contacten om toe te voegen</string>
<string name="incognito_info_allows">Het maakt het mogelijk om veel anonieme verbindingen te hebben zonder enige gedeelde gegevens tussen hen in een enkel chat profiel.</string>
<string name="theme_light">Licht</string>
<string name="chat_preferences_no">nee</string>
<string name="v4_5_multiple_chat_profiles">Meerdere chat profielen</string>
<string name="v4_5_italian_interface">Italiaanse interface</string>
<string name="v4_5_message_draft">Concept bericht</string>
<string name="v4_5_reduced_battery_usage_descr">Meer verbeteringen volgen snel!</string>
<string name="button_add_members">Nodig leden uit</string>
<string name="notification_display_mode_hidden_desc">Verberg contact en bericht</string>
<string name="turn_off_battery_optimization">Om het te gebruiken &lt;b xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\"&gt;batterijoptimalisatie uitschakelen&lt;/b&gt; voor &lt;xliff:g xmlns:xliff=\"urn:oasis: names:tc:xliff:document:1.2\" id=\"appName\"&gt;SimpleX&lt;/xliff:g&gt; in het volgende dialoogvenster. Anders worden de meldingen uitgeschakeld.</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Als u ervoor kiest om te weigeren, wordt de afzender NIET op de hoogte gesteld.</string>
<string name="onboarding_notifications_mode_service">Onmiddellijk</string>
<string name="rcv_group_event_member_added">heeft <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g> uitgenodigd</string>
<string name="group_invitation_item_description">uitnodiging voor groep <xliff:g id="group_name">%1$s</xliff:g></string>
<string name="invite_to_group_button">Uitnodigen voor groep</string>
<string name="join_group_incognito_button">Doe incognito mee</string>
<string name="group_preview_join_as">lid worden als %s</string>
<string name="alert_text_skipped_messages_it_can_happen_when">Het kan gebeuren wanneer:
\n1. De berichten op de server verlopen als ze 30 dagen niet zijn ontvangen,
\n2. De server die u gebruikt om de berichten van deze contactpersoon te ontvangen, is bijgewerkt en opnieuw opgestart.
\n3. De verbinding is verbroken.
\nMaak verbinding met de ontwikkelaars via Instellingen om de updates over de servers te ontvangen.
\nWe zullen serverredundantie toevoegen om verloren berichten te voorkomen.</string>
<string name="joining_group">Deel nemen aan groep</string>
<string name="leave_group_button">Verlaten</string>
<string name="group_member_role_member">gebruiker</string>
<string name="image_descr_link_preview">link voorbeeld afbeelding</string>
<string name="member_info_section_title_member">GEBRUIKER</string>
<string name="settings_section_title_messages">BERICHTEN</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app">📱 mobiel: tik op <b>Openen in mobiele app</b> en tik vervolgens op <b>Verbinden</b> in de app.</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">Gebruiker wordt uit de groep verwijderd, dit kan niet ongedaan worden gemaakt!</string>
<string name="message_delivery_error_title">Fout bij bezorging van bericht</string>
<string name="delete_message_mark_deleted_warning">Bericht wordt gemarkeerd voor verwijdering. De ontvanger(s) kunnen dit bericht onthullen.</string>
<string name="network_status">Netwerk status</string>
<string name="image_descr">Afbeelding</string>
<string name="image_saved">Afbeelding opgeslagen in Galerij</string>
<string name="import_database_confirmation">Importeren</string>
<string name="import_database">Database importeren</string>
<string name="v4_3_improved_privacy_and_security">Verbeterde privacy en veiligheid</string>
<string name="image_will_be_received_when_contact_is_online">De afbeelding wordt ontvangen wanneer uw contact online is, even geduld a.u.b. of kijk later!</string>
<string name="incognito_info_protects">De incognito modus beschermt de privacy van uw hoofdprofielnaam en afbeelding, voor elk nieuw contact wordt een nieuw willekeurig profiel gemaakt.</string>
<string name="new_database_archive">Nieuw database archief</string>
<string name="no_details">geen details</string>
<string name="conn_level_desc_indirect">indirect (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<string name="thousand_abbreviation">k</string>
<string name="notification_preview_mode_message">Bericht tekst</string>
<string name="settings_notification_preview_title">Meldingsvoorbeeld</string>
<string name="settings_notifications_mode_title">Meldingsservice</string>
<string name="notifications">Meldingen</string>
<string name="invalid_contact_link">Ongeldige link!</string>
<string name="smp_servers_invalid_address">Ongeldig server adres!</string>
<string name="install_simplex_chat_for_terminal">Installeer <xliff:g id="appNameFull">SimpleX Chat</xliff:g> voor terminal</string>
<string name="how_to">Hoe</string>
<string name="how_to_use_your_servers">Hoe u uw servers gebruikt</string>
<string name="network_and_servers">Netwerk &amp; servers</string>
<string name="enter_one_ICE_server_per_line">ICE servers (één per lijn)</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">Zorg ervoor dat WebRTC ICE server adressen de juiste indeling hebben, regel gescheiden zijn en niet gedupliceerd zijn.</string>
<string name="network_disable_socks_info">Als u bevestigt, kunnen de berichten servers uw IP-adres zien en uw provider, met welke servers u verbinding maakt.</string>
<string name="network_use_onion_hosts_no">Nee</string>
<string name="immune_to_spam_and_abuse">Immuun voor spam en misbruik</string>
<string name="make_private_connection">Maak een privéverbinding</string>
<string name="message_deletion_prohibited">Het onomkeerbaar verwijderen van berichten is verboden in dit gesprek.</string>
<string name="new_in_version">Nieuw in %s</string>
<string name="v4_3_voice_messages_desc">Max 40 seconden, direct ontvangen.</string>
<string name="v4_3_improved_server_configuration">Verbeterde serverconfiguratie</string>
<string name="v4_3_irreversible_message_deletion">Onomkeerbare berichtverwijdering</string>
<string name="rcv_group_event_invited_via_your_group_link">uitgenodigd via je groep link</string>
<string name="incognito">Incognito</string>
<string name="icon_descr_call_missed">Gemiste oproep</string>
<string name="description_via_contact_address_link_incognito">incognito via contact adres link</string>
<string name="description_via_group_link_incognito">incognito via groep link</string>
<string name="description_via_one_time_link_incognito">incognito via eenmalige link</string>
<string name="invalid_chat">ongeldige gesprek</string>
<string name="invalid_data">onjuiste data</string>
<string name="invalid_message_format">ongeldig berichtformaat</string>
<string name="display_name_invited_to_connect">uitgenodigd om te verbinden</string>
<string name="live">LIVE</string>
<string name="ensure_smp_server_address_are_correct_format_and_unique">Zorg ervoor dat SMP server adressen de juiste indeling hebben, regel gescheiden zijn en niet gedupliceerd zijn.</string>
<string name="marked_deleted_description">gemarkeerd als verwijderd</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">Controleer of u de juiste link heeft gebruikt of vraag uw contactpersoon om u een andere te sturen.</string>
<string name="image_descr_profile_image">profielfoto</string>
<string name="privacy_redefined">Privacy opnieuw gedefinieerd</string>
<string name="privacy_and_security">Privacy en beveiliging</string>
<string name="network_error_desc">Controleer uw netwerkverbinding met <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g> en probeer het opnieuw.</string>
<string name="error_smp_test_certificate">Mogelijk is de certificaat vingerafdruk in het server adres onjuist</string>
<string name="periodic_notifications">Periodieke meldingen</string>
<string name="auth_open_chat_console">Chat console openen</string>
<string name="toast_permission_denied">Geen toestemming!</string>
<string name="icon_descr_profile_image_placeholder">profielafbeelding tijdelijke aanduiding</string>
<string name="one_time_link">Eenmalige uitnodiging link</string>
<string name="paste_button">Plakken</string>
<string name="smp_servers_preset_address">Vooraf ingesteld server adres</string>
<string name="network_use_onion_hosts_no_desc_in_alert">Onion hosts worden niet gebruikt.</string>
<string name="onboarding_notifications_mode_title">Privé meldingen</string>
<string name="paste_the_link_you_received">Plak de ontvangen link</string>
<string name="onboarding_notifications_mode_periodic">Periodiek</string>
<string name="open_verb">Open</string>
<string name="open_simplex_chat_to_accept_call">Open <xliff:g id="appNameFull">SimpleX Chat</xliff:g> om de oproep te accepteren</string>
<string name="call_connection_peer_to_peer">peer-to-peer</string>
<string name="notifications_will_be_hidden">Meldingen worden alleen afgeleverd totdat de app stopt!</string>
<string name="restore_passphrase_not_found_desc">Wachtwoord niet gevonden in de Keychain, voer deze handmatig in. Dit kan zijn gebeurd als u de gegevens van de app hebt hersteld met een back-up tool. Als dit niet het geval is, neem dan contact op met de ontwikkelaars.</string>
<string name="users_delete_with_connections">Profiel- en serververbindingen</string>
<string name="chat_preferences_off">uit</string>
<string name="chat_preferences_on">aan</string>
<string name="only_you_can_send_disappearing">Alleen jij kunt verdwijnende berichten verzenden.</string>
<string name="only_your_contact_can_send_disappearing">Alleen uw contactpersoon kan verdwijnende berichten verzenden.</string>
<string name="only_you_can_delete_messages">Alleen jij kunt berichten onomkeerbaar verwijderen (je contactpersoon kan ze markeren voor verwijdering).</string>
<string name="feature_offered_item_with_param">voorgesteld %s: %2s</string>
<string name="old_database_archive">Oud database archief</string>
<string name="enter_correct_current_passphrase">Voer het juiste huidige wachtwoord in.</string>
<string name="group_member_role_owner">eigenaar</string>
<string name="network_option_ping_count">PING telling</string>
<string name="network_option_ping_interval">PING interval</string>
<string name="v4_5_message_draft_descr">Bewaar het laatste berichtconcept, met bijlagen.</string>
<string name="v4_5_private_filenames">Privé bestandsnamen</string>
<string name="images_limit_desc">Er kunnen slechts 10 afbeeldingen tegelijk worden verzonden</string>
<string name="enter_passphrase_notification_title">Wachtwoord is nodig</string>
<string name="feature_off">uit</string>
<string name="add_contact">Eenmalige uitnodiging link</string>
<string name="network_use_onion_hosts_required_desc_in_alert">Onion hosts zijn vereist voor verbinding.</string>
<string name="only_group_owners_can_change_prefs">Alleen groep eigenaren kunnen groep voorkeuren wijzigen.</string>
<string name="only_stored_on_members_devices">(alleen opgeslagen door groepsleden)</string>
<string name="paste_connection_link_below_to_connect">Plak de link die je hebt ontvangen in het vak hieronder om verbinding te maken met je contactpersoon.</string>
<string name="smp_servers_preset_server">Vooraf ingestelde server</string>
<string name="periodic_notifications_disabled">Periodieke meldingen zijn uitgeschakeld!</string>
<string name="icon_descr_server_status_pending">In behandeling</string>
<string name="only_group_owners_can_enable_voice">Alleen groep eigenaren kunnen spraak berichten inschakelen.</string>
<string name="ask_your_contact_to_enable_voice">Vraag uw contactpersoon om het verzenden van spraak berichten in te schakelen.</string>
<string name="ok">OK</string>
<string name="network_use_onion_hosts_required_desc">Onion hosts zijn vereist voor verbinding.</string>
<string name="network_use_onion_hosts_prefer_desc">Onion hosts worden gebruikt indien beschikbaar.</string>
<string name="network_use_onion_hosts_prefer_desc_in_alert">Onion hosts worden gebruikt indien beschikbaar.</string>
<string name="network_use_onion_hosts_no_desc">Onion hosts worden niet gebruikt.</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">Open-source protocol en code. Iedereen kan de servers draaien.</string>
<string name="people_can_connect_only_via_links_you_share">Mensen kunnen alleen verbinding met u maken via de links die u deelt.</string>
<string name="only_your_contact_can_delete">Alleen uw contactpersoon kan berichten onherroepelijk verwijderen (u kunt ze markeren voor verwijdering).</string>
<string name="only_you_can_send_voice">Alleen jij kunt spraak berichten verzenden.</string>
<string name="only_your_contact_can_send_voice">Alleen uw contactpersoon kan spraak berichten verzenden.</string>
<string name="prohibit_message_deletion">Verbied het onomkeerbaar verwijderen van berichten.</string>
<string name="feature_offered_item">voorgesteld %s</string>
<string name="store_passphrase_securely_without_recover">Sla het wachtwoord veilig op. Als u deze kwijtraakt, heeft u GEEN toegang tot de gesprekken.</string>
<string name="store_passphrase_securely">Bewaar het wachtwoord veilig, u kunt deze NIET wijzigen als u deze kwijtraakt.</string>
<string name="open_chat">Gesprekken openen</string>
<string name="restore_database_alert_desc">Voer het vorige wachtwoord in na het herstellen van de database back-up. Deze actie kan niet ongedaan gemaakt worden.</string>
<string name="icon_descr_call_pending_sent">Oproep in behandeling</string>
<string name="simplex_link_mode_browser_warning">Het openen van de link in de browser kan de privacy en beveiliging van de verbinding verminderen. Niet vertrouwde SimpleX links worden rood weergegeven.</string>
<string name="contact_developers">Werk de app bij en neem contact op met de ontwikkelaars.</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">Alleen client apparaten slaan gebruikers profielen, contacten, groepen en berichten op die zijn verzonden met <b>2-laags end-to-end codering</b>.</string>
<string name="sender_may_have_deleted_the_connection_request">De afzender heeft mogelijk het verbindingsverzoek verwijderd.</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">Schakel SimpleX Vergrendelen in om uw informatie te beschermen.
\nU wordt gevraagd de authenticatie te voltooien voordat deze functie wordt ingeschakeld.</string>
<string name="la_notice_turn_on">Aanzetten</string>
<string name="auth_unlock">Ontgrendelen</string>
<string name="waiting_for_image">Wachten op afbeelding</string>
<string name="send_live_message">Stuur een livebericht</string>
<string name="to_start_a_new_chat_help_header">Om een nieuw gesprek te starten</string>
<string name="unmute_chat">Dempen opheffen</string>
<string name="icon_descr_simplex_team"><xliff:g id="appName">SimpleX</xliff:g>-Team</string>
<string name="this_QR_code_is_not_a_link">Deze QR-code is geen link!</string>
<string name="this_link_is_not_a_valid_connection_link">Deze link is geen geldige link!</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">Uw contactpersoon kan de QR-code vanuit de app scannen.</string>
<string name="share_invitation_link">Uitnodiging link delen</string>
<string name="scan_code">Code scannen</string>
<string name="your_contact_address">Uw contact adres</string>
<string name="your_settings">Uw instellingen</string>
<string name="share_link">Deel link</string>
<string name="you_control_your_chat">Jij beheert je gesprek!</string>
<string name="your_profile_is_stored_on_your_device">Uw profiel, contacten en afgeleverde berichten worden op uw apparaat opgeslagen.</string>
<string name="callstate_starting">beginnen…</string>
<string name="you_control_servers_to_receive_your_contacts_to_send">U bepaalt via welke server(s) je de berichten <b>ontvangt</b>, uw contacten de servers die u gebruikt om ze berichten te sturen.</string>
<string name="icon_descr_video_on">Video aan</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</string>
<string name="messages_section_description">Deze instelling is van toepassing op berichten in jou huidige chat profiel</string>
<string name="save_archive">Bewaar archief</string>
<string name="rcv_group_event_updated_group_profile">bijgewerkt groep profiel</string>
<string name="group_member_status_removed">verwijderd</string>
<string name="group_main_profile_sent">Uw chat profiel wordt verzonden naar de groepsleden</string>
<string name="failed_to_create_user_duplicate_desc">Je hebt al een chat profiel met dezelfde weergave naam. Kies een andere naam.</string>
<string name="you_are_already_connected_to_vName_via_this_link">U bent al verbonden met <xliff:g id="contactName" example="Alice">%1$s!</xliff:g>.</string>
<string name="error_smp_test_failed_at_step">Test mislukt bij stap %s.</string>
<string name="smp_server_test_secure_queue">Veilige wachtrij</string>
<string name="database_initialization_error_desc">De database werkt niet goed. Tik voor meer informatie</string>
<string name="enter_passphrase_notification_desc">Voer het wachtwoord van de database in om meldingen te ontvangen</string>
<string name="simplex_service_notification_title"><xliff:g id="appNameFull">SimpleX Chat</xliff:g> service</string>
<string name="simplex_service_notification_text">Berichten ontvangen…</string>
<string name="notification_preview_mode_message_desc">Toon contact en bericht</string>
<string name="notification_preview_mode_contact_desc">Toon alleen contactpersoon</string>
<string name="ntf_channel_messages">SimpleX Chat berichten</string>
<string name="auth_simplex_lock_turned_on">SimpleX Vergrendelen ingeschakeld</string>
<string name="auth_stop_chat">Stop chat</string>
<string name="reply_verb">Antwoord</string>
<string name="save_verb">Opslaan</string>
<string name="share_verb">Deel</string>
<string name="reveal_verb">Onthullen</string>
<string name="icon_descr_sent_msg_status_send_failed">versturen mislukt</string>
<string name="icon_descr_sent_msg_status_sent">verstuurd</string>
<string name="icon_descr_sent_msg_status_unauthorized_send">ongeoorloofd verzenden</string>
<string name="icon_descr_received_msg_status_unread">Ongelezen</string>
<string name="tap_to_start_new_chat">Tik om een nieuw gesprek te starten</string>
<string name="this_text_is_available_in_settings">Deze tekst is beschikbaar in instellingen</string>
<string name="welcome">Welkom!</string>
<string name="group_preview_you_are_invited">je bent uitgenodigd voor de groep</string>
<string name="you_have_no_chats">Je hebt geen gesprekken</string>
<string name="your_chats">Jouw gesprekken</string>
<string name="share_file">Deel bestand…</string>
<string name="share_image">Afbeelding delen…</string>
<string name="icon_descr_waiting_for_image">Wachten op afbeelding</string>
<string name="waiting_for_file">Wachten op bestand</string>
<string name="icon_descr_record_voice_message">Neem spraakbericht op</string>
<string name="scan_QR_code">Scan QR-code</string>
<string name="icon_descr_send_message">Bericht versturen</string>
<string name="add_contact_or_create_group">Begin een nieuw gesprek</string>
<string name="switch_receiving_address_question">Ontvangst adres wijzigen\?</string>
<string name="verify_security_code">Controleer de beveiligingscode</string>
<string name="view_security_code">Beveiligingscode bekijken</string>
<string name="you_need_to_allow_to_send_voice">U moet uw contact toestemming geven om spraak berichten te verzenden om ze te kunnen verzenden.</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(scannen of plakken vanaf klembord)</string>
<string name="to_connect_via_link_title">Om verbinding te maken via een link</string>
<string name="reject_contact_button">Afwijzen</string>
<string name="set_contact_name">Naam contactpersoon instellen</string>
<string name="connection_you_accepted_will_be_cancelled">De door u geaccepteerde verbinding wordt geannuleerd!</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">Het contact met wie je deze link hebt gedeeld, kan GEEN verbinding maken!</string>
<string name="you_accepted_connection">Je hebt de verbinding geaccepteerd</string>
<string name="you_invited_your_contact">Je hebt je contactpersoon uitgenodigd</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">Uw contactpersoon moet online zijn om de verbinding te voltooien.
\nU kunt deze verbinding verbreken en het contact verwijderen (en later proberen met een nieuwe link).</string>
<string name="image_descr_qr_code">QR code</string>
<string name="icon_descr_settings">Instellingen</string>
<string name="contact_wants_to_connect_with_you">wil met je in contact komen!</string>
<string name="icon_descr_address"><xliff:g id="appName">SimpleX</xliff:g> Adres</string>
<string name="show_QR_code">Toon QR-code</string>
<string name="image_descr_simplex_logo"><xliff:g id="appName">SimpleX</xliff:g>-Logo</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">Je chat profiel wordt verzonden naar uw contactpersoon</string>
<string name="you_will_be_connected_when_group_host_device_is_online">Je wordt verbonden met de groep wanneer het apparaat van de groep host online is, even geduld a.u.b. of controleer het later!</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">U wordt verbonden wanneer uw verbindingsverzoek wordt geaccepteerd, even geduld a.u.b. of controleer later!</string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">Je wordt verbonden wanneer het apparaat van je contact online is, even geduld a.u.b. of controleer het later!</string>
<string name="scan_code_from_contacts_app">Scan de beveiligingscode van de app van uw contactpersoon.</string>
<string name="security_code">Beveiligingscode</string>
<string name="is_not_verified">%s is niet geverifieerd</string>
<string name="is_verified">%s is geverifieerd</string>
<string name="to_verify_compare">Vergelijk (of scan) de code op uw apparaten om end-to-end codering met uw contactpersoon te verifiëren.</string>
<string name="you_can_also_connect_by_clicking_the_link">U kunt ook verbinding maken door op de link te klikken. Als het in de browser wordt geopend, klikt u op de knop <b> Openen in mobiele app </b>.</string>
<string name="your_profile_will_be_sent">Uw chat profiel wordt naar uw contactpersoon verzonden</string>
<string name="your_chat_profiles">Uw chat profielen</string>
<string name="your_simplex_contact_address">Uw <xliff:g id="appName">SimpleX</xliff:g> contact adres</string>
<string name="chat_with_the_founder">Stuur vragen en ideeën</string>
<string name="send_us_an_email">Stuur ons een e-mail</string>
<string name="chat_lock">SimpleX Vergrendelen</string>
<string name="smp_servers">SMP servers</string>
<string name="smp_servers_save">Bewaar servers</string>
<string name="smp_servers_test_failed">Servertest mislukt!</string>
<string name="smp_servers_test_some_failed">Sommige servers hebben de test niet doorstaan:</string>
<string name="smp_servers_test_servers">Servers testen</string>
<string name="smp_servers_test_server">Server test</string>
<string name="rate_the_app">Beoordeel de app</string>
<string name="smp_servers_use_server">Gebruik server</string>
<string name="using_simplex_chat_servers">Gebruik van <xliff:g id="appNameFull">SimpleX Chat</xliff:g> servers.</string>
<string name="smp_servers_your_server_address">Uw server adres</string>
<string name="smp_servers_your_server">Uw server</string>
<string name="network_session_mode_transport_isolation">Transport isolation</string>
<string name="network_socks_toggle">SOCKS-proxy gebruiken (poort 9050)</string>
<string name="save_preferences_question">Voorkeuren opslaan\?</string>
<string name="save_and_notify_contact">Opslaan en Contact melden</string>
<string name="section_title_welcome_message">WELKOMS BERICHT</string>
<string name="your_current_profile">Je huidige profiel</string>
<string name="save_and_notify_contacts">Opslaan en Contacten melden</string>
<string name="save_and_notify_group_members">Opslaan en Groepsleden melden</string>
<string name="strikethrough">staking</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">Het berichten- en applicatieplatform dat uw privacy en veiligheid beschermt.</string>
<string name="profile_is_only_shared_with_your_contacts">Het profiel wordt alleen gedeeld met uw contacten.</string>
<string name="we_do_not_store_contacts_or_messages_on_servers">We slaan geen van uw contacten of berichten (eenmaal afgeleverd) op de servers op.</string>
<string name="you_can_use_markdown_to_format_messages__prompt">U kunt markdown gebruiken voor opmaak in berichten:</string>
<string name="callstatus_rejected">geweigerde oproep</string>
<string name="secret">geheim</string>
<string name="next_generation_of_private_messaging">De volgende generatie privéberichten</string>
<string name="callstate_waiting_for_answer">wachten op antwoord…</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">Om de privacy te beschermen, heeft <xliff:g id="appName">SimpleX</xliff:g> in plaats van gebruikers ID\'s die door alle andere platforms worden gebruikt, ID\'s voor berichten wachtrijen, afzonderlijk voor elk van uw contacten.</string>
<string name="use_chat">Gebruik chat</string>
<string name="onboarding_notifications_mode_off">Wanneer de app actief is</string>
<string name="video_call_no_encryption">video gesprek (niet e2e versleuteld)</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g> wil met je in contact komen via</string>
<string name="reject">Afwijzen</string>
<string name="icon_descr_video_call">video oproep</string>
<string name="your_calls">Uw oproepen</string>
<string name="show_call_on_lock_screen">Toon</string>
<string name="webrtc_ice_servers">WebRTC ICE servers</string>
<string name="relay_server_protects_ip">Relay server beschermt uw IP-adres, maar kan de duur van het gesprek observeren.</string>
<string name="relay_server_if_necessary">Relay server wordt alleen gebruikt als dat nodig is. Een andere partij kan uw IP-adres zien.</string>
<string name="your_ice_servers">Uw ICE servers</string>
<string name="alert_title_skipped_messages">Overgeslagen berichten</string>
<string name="call_connection_via_relay">via relais</string>
<string name="icon_descr_video_off">Video uit</string>
<string name="protect_app_screen">App scherm verbergen</string>
<string name="your_privacy">Uw privacy</string>
<string name="send_link_previews">Link voorbeelden verzenden</string>
<string name="settings_section_title_settings">INSTELLINGEN</string>
<string name="settings_section_title_support">ONDERSTEUNING SIMPLEX CHAT</string>
<string name="settings_section_title_you">JIJ</string>
<string name="run_chat_section">CHAT UITVOEREN</string>
<string name="your_chat_database">Uw chat database</string>
<string name="set_password_to_export">Wachtwoord instellen om te exporteren</string>
<string name="restart_the_app_to_create_a_new_chat_profile">Start de app opnieuw om een nieuw chat profiel aan te maken.</string>
<string name="you_must_use_the_most_recent_version_of_database">U mag de meest recente versie van uw chat database ALLEEN op één apparaat gebruiken, anders ontvangt u mogelijk geen berichten meer van sommige contacten.</string>
<string name="restart_the_app_to_use_imported_chat_database">Start de app opnieuw om de geïmporteerde chat database te gebruiken.</string>
<string name="stop_chat_to_enable_database_actions">Stop de chat om database acties mogelijk te maken.</string>
<string name="delete_files_and_media_desc">Deze actie kan niet ongedaan worden gemaakt, alle ontvangen en verzonden bestanden en media worden verwijderd. Foto\'s met een lage resolutie blijven behouden.</string>
<string name="remove_passphrase_from_keychain">Wachtwoord verwijderen uit Keychain\?</string>
<string name="remove_passphrase">Verwijderen</string>
<string name="update_database">Update</string>
<string name="unknown_database_error_with_info">Onbekende databasefout: %s</string>
<string name="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.</string>
<string name="alert_message_no_group">Deze groep bestaat niet meer.</string>
<string name="alert_title_cant_invite_contacts_descr">Je gebruikt een incognito profiel voor deze groep. Om te voorkomen dat je je hoofdprofiel deelt, is het niet toegestaan om contacten uit te nodigen</string>
<string name="you_rejected_group_invitation">Je hebt de groep uitnodiging afgewezen</string>
<string name="you_joined_this_group">Je bent lid geworden van deze groep</string>
<string name="rcv_group_event_member_deleted">verwijderd <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="rcv_group_event_user_deleted">heeft je verwijderd</string>
<string name="group_info_member_you">jij: <xliff:g id="group_info_you">%1$s</xliff:g></string>
<string name="group_info_section_title_num_members"><xliff:g id="num_members">%1$s</xliff:g> LEDEN</string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">U kunt een link of een QR-code delen. Iedereen kan lid worden van de groep. U verliest geen leden van de groep als u deze later verwijdert.</string>
<string name="switch_verb">Wijzig</string>
<string name="member_role_will_be_changed_with_notification">De rol wordt gewijzigd in \"%s\". Iedereen in de groep wordt op de hoogte gebracht.</string>
<string name="receiving_via">Ontvang via</string>
<string name="save_group_profile">Groep profiel opslaan</string>
<string name="group_is_decentralized">De groep is volledig gedecentraliseerd het is alleen zichtbaar voor de leden.</string>
<string name="network_option_tcp_connection_timeout">Timeout van TCP-verbinding</string>
<string name="voice_messages">Spraak berichten</string>
<string name="voice_prohibited_in_this_chat">Spraak berichten zijn verboden in dit gesprek.</string>
<string name="prohibit_sending_disappearing">Verbied het verzenden van verdwijnende berichten.</string>
<string name="v4_5_reduced_battery_usage">Verminderd batterijgebruik</string>
<string name="v4_5_private_filenames_descr">Om de tijdzone te beschermen, gebruiken afbeeldings-/spraakbestanden UTC.</string>
<string name="stop_chat_confirmation">Stop</string>
<string name="stop_chat_question">Stop chat\?</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">Stop de chat om de chat database te exporteren, importeren of verwijderen. U kunt geen berichten ontvangen en verzenden terwijl de chat is gestopt.</string>
<string name="chat_item_ttl_seconds">%s seconde(n)</string>
<string name="update_database_passphrase">Database wachtwoord bijwerken</string>
<string name="database_is_not_encrypted">Uw chat database is niet versleuteld, stel een wachtwoord in om deze te beschermen.</string>
<string name="database_restore_error">Databasefout herstellen</string>
<string name="unknown_error">Onbekende fout</string>
<string name="wrong_passphrase_title">Verkeerd wachtwoord!</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">U bent uitgenodigd voor de groep. Word lid om in contact te komen met groepsleden.</string>
<string name="group_invitation_tap_to_join">Tik om mee te doen</string>
<string name="group_invitation_tap_to_join_incognito">Tik om incognito deel te nemen</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">Je bent lid geworden van deze groep. Verbinding maken met uitnodigend groepslid.</string>
<string name="you_sent_group_invitation">Je hebt een groep uitnodiging verzonden</string>
<string name="snd_group_event_user_left">jij bent vertrokken</string>
<string name="snd_conn_event_switch_queue_phase_completed">je bent van adres veranderd</string>
<string name="select_contacts">Selecteer contacten</string>
<string name="skip_inviting_button">Sla het uitnodigen van leden over</string>
<string name="num_contacts_selected"><xliff:g id="num_contacts">%1$s</xliff:g> contact(en) geselecteerd</string>
<string name="remove_member_confirmation">Verwijderen</string>
<string name="button_remove_member">Gebruiker verwijderen</string>
<string name="role_in_group">Rol</string>
<string name="button_send_direct_message">Direct bericht sturen</string>
<string name="member_role_will_be_changed_with_invitation">De rol wordt gewijzigd in \"%s\". De gebruiker ontvangt een nieuwe uitnodiging.</string>
<string name="sending_via">Verzenden via</string>
<string name="conn_stats_section_title_servers">SERVERS</string>
<string name="network_options_reset_to_defaults">Resetten naar standaardwaarden</string>
<string name="switch_receiving_address">Ontvangst adres wijzigen</string>
<string name="network_option_protocol_timeout">Protocol timeout</string>
<string name="network_options_revert">Terugdraaien</string>
<string name="network_options_save">Opslaan</string>
<string name="network_option_seconds_label">sec</string>
<string name="incognito_info_find">Om het profiel te vinden dat wordt gebruikt voor een incognito verbinding, tikt u op de naam van het contact of de groep bovenaan het gesprek.</string>
<string name="incognito_info_share">Wanneer je een incognito profiel met iemand deelt, wordt dit profiel gebruikt voor de groepen waarvoor ze je uitnodigen.</string>
<string name="theme">Thema</string>
<string name="reset_color">Kleuren resetten</string>
<string name="save_color">Kleur opslaan</string>
<string name="theme_system">Systeem</string>
<string name="chat_preferences_yes">ja</string>
<string name="feature_received_prohibited">gekregen, verboden</string>
<string name="your_preferences">Jouw voorkeuren</string>
<string name="accept_feature_set_1_day">Stel 1 dag in</string>
<string name="whats_new">Wat is er nieuw</string>
<string name="v4_4_live_messages_desc">Ontvangers zien updates terwijl u ze typt.</string>
<string name="v4_4_verify_connection_security">Controleer de verbindingsbeveiliging</string>
<string name="v4_4_french_interface_descr">Dank aan de gebruikers draag bij via Weblate!</string>
<string name="v4_5_transport_isolation">Transport isolation</string>
<string name="app_name"><xliff:g id="appName">SimpleX</xliff:g></string>
<string name="connected_to_server_to_receive_messages_from_contact">U bent verbonden met de server die wordt gebruikt om berichten van dit contact te ontvangen.</string>
<string name="profile_will_be_sent_to_contact_sending_link">Je profiel wordt verzonden naar het contact van wie je deze link hebt ontvangen.</string>
<string name="you_will_join_group">U wordt lid van een groep waarnaar deze link verwijst en maakt verbinding met de groepsleden.</string>
<string name="notifications_mode_off">Wordt uitgevoerd wanneer de app is geopend</string>
<string name="settings_notification_preview_mode_title">Toon voorbeeld</string>
<string name="ntf_channel_calls">SimpleX Chat oproepen</string>
<string name="notifications_mode_periodic">Start periodiek</string>
<string name="voice_message">Spraakbericht</string>
<string name="voice_message_send_text">Spraakbericht…</string>
<string name="voice_message_with_duration">Spraakbericht (<xliff:g id="duration">%1$s</xliff:g>)</string>
<string name="text_field_set_contact_placeholder">Contactnaam instellen…</string>
<string name="voice_messages_prohibited">Spraak berichten verboden!</string>
<string name="reset_verb">Resetten</string>
<string name="send_verb">Verstuur</string>
<string name="send_live_message_desc">Stuur een live bericht, het wordt bijgewerkt voor de ontvanger(s) terwijl u het typt</string>
<string name="to_share_with_your_contact">(om te delen met uw contact)</string>
<string name="thank_you_for_installing_simplex">Bedankt voor het installeren van <xliff:g id="appNameFull">SimpleX Chat</xliff:g>!</string>
<string name="use_camera_button">Camera</string>
<string name="smp_servers_use_server_for_new_conn">Gebruik voor nieuwe verbindingen</string>
<string name="star_on_github">Star on GitHub</string>
<string name="smp_servers_per_user">De servers voor nieuwe verbindingen van je huidige chat profiel</string>
<string name="your_SMP_servers">Uw SMP servers</string>
<string name="saved_ICE_servers_will_be_removed">Opgeslagen WebRTC ICE servers worden verwijderd.</string>
<string name="your_ICE_servers">Uw ICE servers</string>
<string name="save_servers_button">Opslaan</string>
<string name="network_enable_socks">SOCKS-proxy gebruiken\?</string>
<string name="network_use_onion_hosts">Gebruik .onion-hosts</string>
<string name="network_disable_socks">Directe internetverbinding gebruiken\?</string>
<string name="network_use_onion_hosts_prefer">Wanneer beschikbaar</string>
<string name="network_use_onion_hosts_required">Vereist</string>
<string name="core_simplexmq_version">simplexmq: v%s (%2s)</string>
<string name="update_network_session_mode_question">Transportisolatiemodus updaten\?</string>
<string name="callstate_received_confirmation">bevestiging ontvangen…</string>
<string name="callstate_waiting_for_confirmation">Wachten op bevestiging…</string>
<string name="first_platform_without_user_ids">Het eerste platform zonder gebruikers ID\'s, privé door ontwerp.</string>
<string name="prohibit_direct_messages">Verbied het sturen van directe berichten naar leden.</string>
<string name="prohibit_sending_voice">Verbieden het verzenden van spraak berichten.</string>
<string name="v4_2_security_assessment_desc">De beveiliging van SimpleX Chat is gecontroleerd door Trail of Bits.</string>
<string name="v4_2_auto_accept_contact_requests_desc">Met optioneel welkomstbericht.</string>
<string name="v4_3_voice_messages">Spraak berichten</string>
<string name="v4_3_irreversible_message_deletion_desc">Uw contacten kunnen volledige verwijdering van berichten toestaan.</string>
<string name="you_have_to_enter_passphrase_every_time">U moet elke keer dat de app start het wachtwoord invoeren, deze wordt niet op het apparaat opgeslagen.</string>
<string name="wrong_passphrase">Verkeerd wachtwoord voor de database</string>
<string name="save_passphrase_and_open_chat">Bewaar het wachtwoord en open je gesprekken</string>
<string name="database_backup_can_be_restored">De poging om het wachtwoord van de database te wijzigen is niet voltooid.</string>
<string name="restore_database">Database back-up terugzetten</string>
<string name="restore_database_alert_title">Database back-up terugzetten\?</string>
<string name="restore_database_alert_confirm">Herstellen</string>
<string name="snd_group_event_changed_member_role">je veranderde de rol van %s in %s</string>
<string name="snd_group_event_changed_role_for_yourself">je veranderde de rol voor jezelf naar %s</string>
<string name="update_network_settings_question">Netwerk instellingen bijwerken\?</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">Door de instellingen bij te werken, wordt de client opnieuw verbonden met alle servers.</string>
<string name="update_network_settings_confirmation">Update</string>
<string name="your_chat_profiles_stored_locally">Uw chat profielen worden lokaal opgeslagen, alleen op uw apparaat</string>
<string name="incognito_random_profile">Je willekeurige profiel</string>
<string name="prohibit_sending_disappearing_messages">Verbied het verzenden van verdwijnende berichten.</string>
<string name="prohibit_sending_voice_messages">Verbieden het verzenden van spraak berichten.</string>
<string name="callstate_received_answer">antwoord gekregen…</string>
<string name="v4_2_security_assessment">Beveiligingsbeoordeling</string>
<string name="v4_4_disappearing_messages_desc">Verzonden berichten worden na ingestelde tijd verwijderd.</string>
<string name="error_smp_test_server_auth">Server vereist autorisatie om wachtrijen te maken, controleer wachtwoord</string>
<string name="set_group_preferences">Groep voorkeuren instellen</string>
<string name="share_message">Bericht delen…</string>
<string name="la_notice_title_simplex_lock">SimpleX Vergrendelen</string>
<string name="save_passphrase_in_keychain">Sla het wachtwoord op in Keychain</string>
<string name="settings_section_title_socks">SOCKS PROXY</string>
<string name="v4_5_italian_interface_descr">Dank aan de gebruikers draag bij via Weblate!</string>
<string name="periodic_notifications_desc">De app haalt regelmatig nieuwe berichten op - het gebruikt een paar procent van de batterij per dag. De app maakt geen gebruik van push meldingen, gegevens van uw apparaat worden niet naar de servers verzonden.</string>
<string name="image_decoding_exception_desc">De afbeelding kan niet worden gedecodeerd. Probeer een andere afbeelding of neem contact op met de ontwikkelaars.</string>
<string name="settings_section_title_themes">THEMA\'S</string>
<string name="smp_servers_scan_qr">Scan server QR-code</string>
<string name="this_string_is_not_a_connection_link">Deze string is geen verbinding link!</string>
<string name="enable_automatic_deletion_message">Deze actie kan niet ongedaan worden gemaakt, de berichten die eerder zijn verzonden en ontvangen dan geselecteerd, worden verwijderd. Het kan enkele minuten duren.</string>
<string name="switch_receiving_address_desc">Deze functie is experimenteel! Het werkt alleen als op de andere client versie 4.2 is geïnstalleerd. U zou het bericht in het gesprek moeten zien zodra de adreswijziging is voltooid. Controleer of u nog steeds berichten van dit contact (of groepslid) kunt ontvangen.</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery">Om je privacy te behouden, heeft de app in plaats van push meldingen een <b><xliff:g id="appName">SimpleX</xliff:g> achtergrondservice</b> deze gebruikt een paar procent van de batterij per dag.</string>
<string name="chat_preferences_you_allow">Jij staat toe</string>
<string name="you_are_invited_to_group">Je bent uitgenodigd voor de groep</string>
<string name="you_can_connect_to_simplex_chat_founder">U kunt <font color="#0088ff">verbinding maken met <xliff:g id="appNameFull">SimpleX Chat</xliff:g> ontwikkelaars om vragen te stellen en updates te ontvangen</font>.</string>
<string name="connection_error_auth_desc">Tenzij uw contactpersoon de verbinding heeft verwijderd of deze link al is gebruikt, kan het een bug zijn. Meld het alstublieft.
\nOm verbinding te maken, vraagt u uw contactpersoon om een andere verbinding link te maken en te controleren of u een stabiele netwerkverbinding heeft.</string>
<string name="update_onion_hosts_settings_question">.onion hosts-instelling updaten\?</string>
<string name="use_simplex_chat_servers__question"><xliff:g id="appNameFull">SimpleX Chat</xliff:g> servers gebruiken\?</string>
<string name="voice_messages_are_prohibited">Spraak berichten zijn verboden in deze groep.</string>
<string name="personal_welcome">Welkom <xliff:g>%1$s</xliff:g>!</string>
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">U kunt uw adres delen als een link of als een QR-code. Iedereen kan verbinding met u maken. U verliest uw contacten niet als u deze later verwijdert.</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">U kunt de chat starten via app Instellingen / Database of door de app opnieuw op te starten.</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">je hebt het adres gewijzigd voor %s</string>
<string name="snd_group_event_member_deleted">je hebt <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g> verwijderd</string>
<string name="contact_sent_large_file">Je contactpersoon heeft een bestand verzonden dat groter is dan de momenteel ondersteunde maximale grootte (<xliff:g id="maxFileSize">%1$s</xliff:g>).</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Uw huidige chatdatabase wordt VERWIJDERD en VERVANGEN door de geïmporteerde.
\nDeze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</string>
<string name="invite_prohibited_description">Je probeert een contact met wie je een incognito profiel hebt gedeeld, uit te nodigen voor de groep waarin je je hoofdprofiel gebruikt</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Uw profiel wordt op uw apparaat opgeslagen en alleen gedeeld met uw contacten.
\n
\n<xliff:g id="appName">SimpleX</xliff:g> servers kunnen uw profiel niet zien.</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">U moet zich authenticeren wanneer u de app na 30 seconden op de achtergrond start of hervat.</string>
<string name="images_limit_title">Te veel afbeeldingen!</string>
<string name="icon_descr_speaker_off">Luidspreker uit</string>
<string name="icon_descr_speaker_on">Luidspreker aan</string>
<string name="icon_descr_call_rejected">Geweigerde oproep</string>
<string name="sender_cancelled_file_transfer">Afzender heeft bestandsoverdracht geannuleerd.</string>
<string name="receiving_files_not_yet_supported">het ontvangen van bestanden wordt nog niet ondersteund</string>
<string name="sending_files_not_yet_supported">het verzenden van bestanden wordt nog niet ondersteund</string>
<string name="simplex_link_contact">SimpleX contact adres</string>
<string name="simplex_link_group">SimpleX groep link</string>
<string name="simplex_link_mode">SimpleX links</string>
<string name="simplex_link_invitation">Eenmalige SimpleX uitnodiging</string>
<string name="trying_to_connect_to_server_to_receive_messages">Proberen verbinding te maken met de server die wordt gebruikt om berichten van dit contact te ontvangen.</string>
<string name="trying_to_connect_to_server_to_receive_messages_with_error">Er wordt geprobeerd verbinding te maken met de server die wordt gebruikt om berichten van dit contact te ontvangen (fout: <xliff:g id="errorMsg">%1$s</xliff:g>).</string>
<string name="unknown_message_format">onbekend berichtformaat</string>
<string name="simplex_link_mode_browser">Via browser</string>
<string name="description_via_contact_address_link">via contact adres link</string>
<string name="description_via_group_link">via groep link</string>
<string name="description_via_one_time_link">via een eenmalige link</string>
<string name="simplex_link_connection">via <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g></string>
<string name="sender_you_pronoun">jij</string>
<string name="description_you_shared_one_time_link">je hebt een eenmalige link gedeeld</string>
<string name="description_you_shared_one_time_link_incognito">je hebt een eenmalige link incognito gedeeld</string>
<string name="chat_help_tap_button">Tik op de knop</string>
<string name="read_more_in_github_with_link">Lees meer in onze <font color="#0088ff">GitHub repository</font>.</string>
<string name="read_more_in_github">Lees meer in onze GitHub repository.</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g> bericht(en) overgeslagen</string>
<string name="moderated_description">gemodereerd</string>
<string name="moderated_item_description">gemodereerd door %s</string>
<string name="delete_member_message__question">Bericht van lid verwijderen\?</string>
<string name="moderate_verb">Modereren</string>
<string name="moderate_message_will_be_deleted_warning">Het bericht wordt verwijderd voor alle leden.</string>
<string name="moderate_message_will_be_marked_warning">Het bericht wordt gemarkeerd als gemodereerd voor alle leden.</string>
<string name="observer_cant_send_message_desc">Neem contact op met de groep beheerder.</string>
<string name="error_updating_link_for_group">Fout bij bijwerken van groep link</string>
<string name="initial_member_role">Initiële rol</string>
<string name="group_member_role_observer">waarnemer</string>
<string name="observer_cant_send_message_title">Je kunt geen berichten versturen!</string>
<string name="you_are_observer">jij bent waarnemer</string>
<string name="language_system">Systeem</string>
</resources>

View File

@@ -0,0 +1,438 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="about_simplex_chat">Sobre o <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="about_simplex">Sobre o SimpleX</string>
<string name="chat_item_ttl_day">1 dia</string>
<string name="chat_item_ttl_week">1 semana</string>
<string name="chat_item_ttl_month">1 mês</string>
<string name="a_plus_b">a + b</string>
<string name="alert_title_cant_invite_contacts">Não é possível convidar contatos!</string>
<string name="rcv_conn_event_switch_queue_phase_changing">mudando endereço…</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">mudando endereço para %s…</string>
<string name="snd_conn_event_switch_queue_phase_changing">"mudando endereço…"</string>
<string name="change_role">Mudar regra</string>
<string name="change_verb">Mudar</string>
<string name="incognito_random_profile_from_contact_description">Um perfil aleatório será enviado para o contato do qual você recebeu este link</string>
<string name="both_you_and_your_contacts_can_delete">Você e seu contato podem excluir mensagens enviadas de forma irreversível.</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b>Pode ser desativado nas configurações</b> as notificações ainda serão exibidas enquanto o aplicativo estiver em execução.</string>
<string name="both_you_and_your_contact_can_send_voice">Você e seu contato podem enviar mensagens de voz.</string>
<string name="notifications_mode_off_desc">O aplicativo pode receber notificações apenas quando estiver em execução, nenhum serviço em segundo plano será iniciado</string>
<string name="notifications_mode_service">Sempre On</string>
<string name="notifications_mode_periodic_desc">Verifica novas mensagens a cada 10 minutos por até 1 minuto</string>
<string name="auth_unavailable">Autenticação indisponível</string>
<string name="icon_descr_cancel_file_preview">Cancelar visualização do arquivo</string>
<string name="icon_descr_asked_to_receive">Pediu para receber a imagem</string>
<string name="icon_descr_cancel_live_message">Cancelar mensagem ao vivo</string>
<string name="back">Voltar</string>
<string name="choose_file">Selecione o arquivo</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>Adicionar novo contato</b>: para criar seu QR code único para seu contato.</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>Escanear \u0020QR code</b>: para se conectar ao seu contato que mostra o código QR para você.</string>
<string name="accept_contact_button">Aceitar</string>
<string name="clear_chat_question">Limpar bate-papo\?</string>
<string name="clear_verb">Limpar</string>
<string name="clear_chat_button">Limpar bate-papo</string>
<string name="clear_chat_menu_action">Limpar</string>
<string name="icon_descr_cancel_link_preview">cancelar pré-visualização do link</string>
<string name="feature_cancelled_item">cancelado %s</string>
<string name="app_version_name">Versão do App: v%s</string>
<string name="callstatus_calling">chamando…</string>
<string name="callstatus_in_progress">chamada em andamento</string>
<string name="accept">Aceitar</string>
<string name="call_already_ended">Chamada já encerrada!</string>
<string name="icon_descr_call_progress">Chamada em andamento</string>
<string name="icon_descr_call_ended">Chamada finalizada</string>
<string name="answer_call">Atender ligação</string>
<string name="integrity_msg_bad_hash">hash de mensagem ruim</string>
<string name="integrity_msg_bad_id">ID de mensagem incorreta</string>
<string name="impossible_to_recover_passphrase"><b>Observação</b>: você NÃO poderá recuperar ou alterar a senha se a perder.</string>
<string name="cannot_receive_file">Não é possível receber o arquivo</string>
<string name="icon_descr_cancel_image_preview">Cancelar visualização da imagem</string>
<string name="icon_descr_close_button">Botão Fechar</string>
<string name="clear_verification">Limpar verificação</string>
<string name="app_version_title">Versão do App</string>
<string name="accept_automatically">Automaticamente</string>
<string name="bold">negrito</string>
<string name="callstatus_error">erro de chamada</string>
<string name="settings_audio_video_calls">Chamadas de áudio e vídeo</string>
<string name="accept_call_on_lock_screen">Aceitar</string>
<string name="call_on_lock_screen">Chamadas na tela de bloqueio:</string>
<string name="icon_descr_audio_on">Áudio ligado</string>
<string name="chat_database_imported">Banco de dados de bate-papo importado</string>
<string name="keychain_is_storing_securely">"Android Keystore é usado para armazenar passphrase com segurança - permite que o serviço de notificação funcione."</string>
<string name="keychain_allows_to_receive_ntfs">"O Android Keystore será usado para armazenar passphrase com segurança depois que você reiniciar o aplicativo ou alterar a senha - isso permitirá o recebimento de notificações."</string>
<string name="cannot_access_keychain">Não é possível acessar o Keystore para salvar a senha do banco de dados</string>
<string name="chat_archive_section">ARQUIVO DE BATE-PAPO</string>
<string name="chat_is_stopped_indication">O bate-papo está parado</string>
<string name="clear_contacts_selection_button">Limpar</string>
<string name="incognito_random_profile_description">Um perfil aleatório será enviado para o seu contato</string>
<string name="chat_preferences">Preferências de bate-papo</string>
<string name="network_session_mode_user">perfil de bate-papo</string>
<string name="accept_requests">Aceitar pedidos</string>
<string name="icon_descr_audio_off">Áudio desligado</string>
<string name="auto_accept_images">Aceitar imagens automaticamente</string>
<string name="chat_database_deleted">Banco de dados de bate-papo excluído</string>
<string name="invite_prohibited">Não é possível convidar o contato!</string>
<string name="turning_off_service_and_periodic">A otimização da bateria está ativa, desligando o serviço em segundo plano e as solicitações periódicas de novas mensagens. Você pode reativá-los através das configurações.</string>
<string name="database_initialization_error_title">Não é possível inicializar o banco de dados</string>
<string name="attach">Anexar</string>
<string name="cancel_verb">Cancelar</string>
<string name="chat_console">Console de bate-papo</string>
<string name="smp_servers_check_address">Verifique o endereço do servidor e tente novamente.</string>
<string name="network_session_mode_user_description">Uma conexão TCP separada (e credencial SOCKS) será usada <b>para cada perfil de bate-papo que você tiver no aplicativo</b>.</string>
<string name="onboarding_notifications_mode_off_desc"><b>Melhor para bateria</b>. Você receberá notificações apenas quando o aplicativo estiver em execução, o serviço em segundo plano NÃO será usado.</string>
<string name="onboarding_notifications_mode_service_desc"><b>Consome mais bateria</b>! O serviço em segundo plano está sempre em execução - as notificações serão exibidas assim que as mensagens estiverem disponíveis.</string>
<string name="settings_section_title_chats">CONVERSAS</string>
<string name="settings_section_title_icon">ÍCONE DO APP</string>
<string name="chat_database_section">BANCO DE DADOS DE BATE-PAPO</string>
<string name="chat_is_running">O bate-papo está em execução</string>
<string name="chat_is_stopped">O bate-papo está parado</string>
<string name="change_database_passphrase_question">Alterar passphrase do banco de dados\?</string>
<string name="chat_archive_header">Arquivo de bate-papo</string>
<string name="rcv_conn_event_switch_queue_phase_completed">endereço alterado para você</string>
<string name="both_you_and_your_contact_can_send_disappearing">Você e seu contato podem enviar mensagens que desaparecem.</string>
<string name="full_backup">Backup de dados do aplicativo</string>
<string name="settings_section_title_calls">CHAMADAS</string>
<string name="v4_2_auto_accept_contact_requests">Aceitar solicitações de contato automaticamente</string>
<string name="appearance_settings">Aparência</string>
<string name="notifications_mode_service_desc">O serviço em segundo plano está sempre em execução - as notificações serão exibidas assim que as mensagens estiverem disponíveis.</string>
<string name="network_session_mode_entity_description">Uma conexão TCP separada (e credencial SOCKS) será usada <b>para cada contato e membro do grupo</b>. <b>Observação</b>: se você tiver muitas conexões, o consumo de bateria e tráfego pode ser substancialmente maior e algumas conexões podem falhar.</string>
<string name="onboarding_notifications_mode_periodic_desc"><b>Bom para bateria</b>. O serviço em segundo plano verifica novas mensagens a cada 10 minutos. Você pode perder chamadas e mensagens urgentes.</string>
<string name="callstatus_ended">chamada finalizada <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="chat_with_developers">Bate-papo com os desenvolvedores</string>
<string name="create_group_link">Criar link de grupo</string>
<string name="button_create_group_link">Criar link</string>
<string name="create_secret_group_title">Criar grupo secreto</string>
<string name="theme_dark">Escuro</string>
<string name="connect_via_invitation_link">Conectar via link de convite\?</string>
<string name="connect_via_contact_link">Conectar via link de contato\?</string>
<string name="smp_server_test_create_queue">Criar fila</string>
<string name="notification_preview_mode_contact">Nome de contato</string>
<string name="notification_preview_somebody">Contato oculto:</string>
<string name="copy_verb">Copiar</string>
<string name="allow_verb">Permitir</string>
<string name="allow_to_send_disappearing">Permitir enviar mensagens que desaparecem.</string>
<string name="allow_direct_messages">Permitir o envio de mensagens diretas aos membros.</string>
<string name="connect_via_link_or_qr">Conectar via link/ QR Code</string>
<string name="clear_chat_warning">"Todas as mensagens serão excluídas - isso não pode ser desfeito! As mensagens serão excluídas APENAS para você."</string>
<string name="smp_servers_preset_add">Adicionar servidores predefinidos</string>
<string name="smp_servers_add">Adicionar servidor…</string>
<string name="create_your_profile">Crie seu perfil</string>
<string name="icon_descr_context">Ícone de contexto</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">Contato e todas as mensagens serão excluídas - isso não pode ser desfeito!</string>
<string name="copied">Copiado para a área de transferência</string>
<string name="accept_connection_request__question">Aceitar solicitação de conexão\?</string>
<string name="network_settings">Configurações de rede avançadas</string>
<string name="contact_requests">Solicitações de contato</string>
<string name="create_address">Criar endereço</string>
<string name="all_your_contacts_will_remain_connected">Todos os seus contatos permanecerão conectados.</string>
<string name="callstatus_accepted">chamada aceita</string>
<string name="status_contact_has_e2e_encryption">Contato tem criptografia e2e</string>
<string name="status_contact_has_no_e2e_encryption">contato não tem criptografia e2e</string>
<string name="contact_preferences">Preferências de contato</string>
<string name="allow_to_delete_messages">Permite excluir irreversivelmente as mensagens enviadas.</string>
<string name="chat_preferences_always">sempre</string>
<string name="v4_3_improved_server_configuration_desc">Adicione servidores digitalizando QR code.</string>
<string name="allow_to_send_voice">Permitir enviar mensagens de voz.</string>
<string name="create_group">Criar grupo secreto</string>
<string name="always_use_relay">Conectar via relay</string>
<string name="users_add">Adicionar perfil</string>
<string name="connect_via_link">Conectar via link</string>
<string name="create_profile">Criar perfil</string>
<string name="database_encrypted">Banco de dados criptografado!</string>
<string name="group_member_status_creator">criador</string>
<string name="users_delete_all_chats_deleted">Todos os bate-papos e mensagens serão excluídos - isso não pode ser desfeito!</string>
<string name="accept_feature">Aceitar</string>
<string name="allow_disappearing_messages_only_if">Permitir mensagens que desaparecem apenas se o seu contato permitir.</string>
<string name="allow_irreversible_message_deletion_only_if">Permita a exclusão irreversível da mensagem somente se o seu contato permitir.</string>
<string name="allow_your_contacts_to_send_disappearing_messages">Permitir que seus contatos enviem mensagens que desaparecem.</string>
<string name="allow_voice_messages_only_if">Permitir mensagens de voz somente se o seu contato permitir.</string>
<string name="allow_your_contacts_to_send_voice_messages">Permitir que seus contatos enviem mensagens de voz.</string>
<string name="group_member_role_admin">admin</string>
<string name="all_group_members_will_remain_connected">Todos os membros do grupo permanecerão conectados.</string>
<string name="contacts_can_mark_messages_for_deletion">"Contatos podem marcar mensagens para exclusão; você será capaz de visualizá-los."</string>
<string name="connect_via_group_link">Conectar via link do grupo\?</string>
<string name="contact_already_exists">Contato já existe</string>
<string name="icon_descr_contact_checked">Contato verificado</string>
<string name="alert_title_contact_connection_pending">Contato ainda não está conectado!</string>
<string name="contribute">Contribuir</string>
<string name="create_profile_button">Criar</string>
<string name="network_enable_socks_info">"Acessar os servidores via proxy SOCKS na porta 9050\? O proxy deve ser iniciado antes de habilitar esta opção."</string>
<string name="allow_your_contacts_irreversibly_delete">Permitir que seus contatos excluam de forma irreversível as mensagens enviadas.</string>
<string name="smp_servers_add_to_another_device">Adicionar a outro dispositivo</string>
<string name="v4_2_group_links_desc">Os administradores podem criar os links para ingressar em grupos.</string>
<string name="allow_voice_messages_question">Permitir mensagens de voz\?</string>
<string name="button_delete_group">Excluir grupo</string>
<string name="info_row_connection">Conexão</string>
<string name="users_delete_question">Excluir perfil de bate-papo\?</string>
<string name="full_deletion">Excluir para todos</string>
<string name="connect_via_link_verb">Conectar</string>
<string name="server_connected">conectado</string>
<string name="server_connecting">conectando</string>
<string name="deleted_description">excluído</string>
<string name="smp_server_test_connect">Conectar</string>
<string name="delete_group_menu_action">Excluir</string>
<string name="connect_button">Conectar</string>
<string name="callstatus_connecting">conectando chamada…</string>
<string name="delete_chat_profile_question">Excluir perfil de bate-papo\?</string>
<string name="delete_files_and_media_for_all_users">Excluir arquivos de todos os perfis de bate-papo</string>
<string name="display_name_connecting">conectando…</string>
<string name="connection_error">Erro de conexão</string>
<string name="button_delete_contact">Excluir contato</string>
<string name="configure_ICE_servers">Configurar servidores ICE</string>
<string name="delete_address__question">Excluir endereço\?</string>
<string name="decentralized">Descentralizado</string>
<string name="delete_database">Excluir banco de dados</string>
<string name="set_password_to_export_desc">"O banco de dados é criptografado usando um passphrase aleatório. Por favor, altere-o antes de exportar."</string>
<string name="confirm_new_passphrase">Confirmar nova passphrase…</string>
<string name="current_passphrase">Passphrase atual…</string>
<string name="database_passphrase_is_required">Passphrase do banco de dados é necessária para abrir o chat.</string>
<string name="delete_archive">Excluir arquivo</string>
<string name="delete_chat_archive_question">Excluir arquivo de bate-papo\?</string>
<string name="rcv_group_event_changed_member_role">regra alterada de %s para %s</string>
<string name="rcv_group_event_member_connected">conectado</string>
<string name="delete_link">Excluir link</string>
<string name="delete_link_question">Excluir link\?</string>
<string name="chat_preferences_default">padrão (%s)</string>
<string name="connection_request_sent">Solicitação de conexão enviada!</string>
<string name="group_member_status_connecting">conectando</string>
<string name="contact_connection_pending">conectando…</string>
<string name="for_me_only">Excluir para mim</string>
<string name="group_connection_pending">conectando…</string>
<string name="delete_contact_question">Excluir contato\?</string>
<string name="confirm_verb">confirmar</string>
<string name="database_passphrase_and_export">Passphrase e exportação do banco de dados</string>
<string name="icon_descr_call_connecting">Conectando chamada</string>
<string name="delete_messages">Excluir mensagens</string>
<string name="database_passphrase_will_be_updated">Passphrase de criptografia do banco de dados será atualizada.</string>
<string name="database_error">Erro de banco de dados</string>
<string name="passphrase_is_different">Passphrase do banco de dados é diferente da salva no Keystore.</string>
<string name="group_member_status_complete">completo</string>
<string name="info_row_database_id">ID do banco de dados</string>
<string name="colored">colorido</string>
<string name="callstate_connected">conectado</string>
<string name="notification_contact_connected">Conectado</string>
<string name="icon_descr_server_status_connected">Conectado</string>
<string name="audio_call_no_encryption">chamada de áudio (não criptografada em e2e)</string>
<string name="change_member_role_question">Alterar a regra do grupo\?</string>
<string name="icon_descr_audio_call">chamada de áudio</string>
<string name="rcv_group_event_changed_your_role">mudou sua regra para %s</string>
<string name="v4_4_verify_connection_security_desc">Compare os códigos de segurança com seus contatos.</string>
<string name="auth_confirm_credential">Confirme sua credencial</string>
<string name="callstate_connecting">conectando…</string>
<string name="group_member_status_announced">conectando (anunciado)</string>
<string name="network_session_mode_entity">Conexão</string>
<string name="connection_error_auth">Erro de conexão (AUTH)</string>
<string name="display_name_connection_established">conexão estabelecida</string>
<string name="connection_local_display_name">conexão <xliff:g id="connection ID" example="1">%1$d</xliff:g></string>
<string name="archive_created_on_ts">Criado em <xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="maximum_supported_file_size">Atualmente, o tamanho máximo de arquivo suportado é <xliff:g id="maxFileSize">%1$s</xliff:g>.</string>
<string name="delete_verb">Excluir</string>
<string name="database_encryption_will_be_updated">Passphase de criptografia do banco de dados será atualizada e armazenada no Keystore.</string>
<string name="delete_address">Excluir endereço</string>
<string name="encrypted_with_random_passphrase">"O banco de dados é criptografado usando um passphrase aleatório, você pode alterá-la."</string>
<string name="database_passphrase">Passphrase do banco de dados</string>
<string name="database_will_be_encrypted_and_passphrase_stored">O banco de dados será criptografado e o passphrase armazenado no Keystore.</string>
<string name="database_will_be_encrypted">O banco de dados será criptografado.</string>
<string name="ttl_day">%d dia</string>
<string name="image_decoding_exception_title">Erro de decodificação</string>
<string name="delete_contact_menu_action">Excluir</string>
<string name="ttl_days">%d dias</string>
<string name="delete_files_and_media_all">Excluir todos os arquivos</string>
<string name="delete_message__question">Excluir mensagem\?</string>
<string name="delete_after">Excluir depois</string>
<string name="users_delete_profile_for">Excluir perfil de bate-papo para</string>
<string name="rcv_group_event_group_deleted">grupo excluído</string>
<string name="delete_group_question">Excluir grupo\?</string>
<string name="delete_image">Excluir imagem</string>
<string name="delete_files_and_media_question">Excluir arquivos e mídia\?</string>
<string name="group_member_status_connected">conectado</string>
<string name="group_member_status_accepted">conectando (aceito)</string>
<string name="ttl_d">%dd</string>
<string name="v4_5_transport_isolation_descr">Por perfil de bate-papo (padrão) ou por conexão (BETA).</string>
<string name="accept_contact_incognito_button">Aceitar anônimo</string>
<string name="delete_messages_after">Excluir mensagens após</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 desktop: Scaneie o QR code exibido no aplicativo, via <b>Scan QR code</b></string>
<string name="delete_pending_connection__question">Excluir conexão pendente\?</string>
<string name="simplex_link_mode_description">Descrição</string>
<string name="smp_servers_delete_server">Excluir servidor</string>
<string name="group_member_status_intro_invitation">conectando (introduction invitation)</string>
<string name="connection_timeout">Tempo de conexão esgotado</string>
<string name="delete_member_message__question">Excluir mensagem do membro\?</string>
<string name="smp_server_test_delete_queue">Excluir fila</string>
<string name="settings_section_title_device">DISPOSITIVO</string>
<string name="settings_developer_tools">Ferramentas de desenvolvimento</string>
<string name="group_member_status_introduced">conectando (introduced)</string>
<string name="color_primary">Realçar</string>
<string name="error_removing_member">Erro ao remover membro</string>
<string name="error_changing_role">Erro ao alterar regra</string>
<string name="conn_level_desc_direct">direto</string>
<string name="server_error">erro</string>
<string name="failed_to_parse_chat_title">Falha ao carregar o bate-papo</string>
<string name="error_setting_network_config">Erro ao atualizar a configuração de rede</string>
<string name="error_sending_message">Erro ao enviar mensagem</string>
<string name="error_adding_members">Erro ao adicionar membro(s)</string>
<string name="smp_server_test_disconnect">Desconectar</string>
<string name="error_deleting_user">Erro ao excluir perfil do usuário</string>
<string name="ttl_s">%ds</string>
<string name="ttl_months">%d meses</string>
<string name="ttl_weeks">%d semanas</string>
<string name="encrypt_database_question">Criptografar banco de dados\?</string>
<string name="error_receiving_file">Erro ao receber arquivo</string>
<string name="error_creating_address">Erro ao criar endereço</string>
<string name="display_name__field">Nome de exibição:</string>
<string name="error_starting_chat">Erro ao iniciar o bate-papo</string>
<string name="error_deleting_database">Erro ao excluir banco de dados de bate-papo</string>
<string name="encrypt_database">Criptografar</string>
<string name="network_option_enable_tcp_keep_alive">Ativar TCP keep-alive</string>
<string name="failed_to_create_user_title">Erro ao criar perfil!</string>
<string name="error_joining_group">Erro ao ingressar no grupo</string>
<string name="failed_to_create_user_duplicate_title">Nome de exibição duplicado!</string>
<string name="error_deleting_contact">Erro ao excluir contato</string>
<string name="error_changing_address">Erro ao alterar endereço</string>
<string name="error_deleting_pending_contact_connection">Erro ao excluir conexão de contato pendente</string>
<string name="edit_verb">Editar</string>
<string name="enable_automatic_deletion_question">Ativar exclusão automática de mensagens\?</string>
<string name="ttl_sec">%d sec</string>
<string name="error_saving_smp_servers">Erro ao salvar servidores SMP</string>
<string name="error_accepting_contact_request">Erro ao aceitar solicitação de contato</string>
<string name="error_deleting_contact_request">Erro ao excluir solicitação de contato</string>
<string name="failed_to_active_user_title">Erro ao trocar de perfil!</string>
<string name="auth_disable_simplex_lock">Desativar Bloqueio SimpleX</string>
<string name="auth_enable_simplex_lock">Ativar Bloqueio SimpleX</string>
<string name="icon_descr_edited">editado</string>
<string name="icon_descr_server_status_error">Erro</string>
<string name="icon_descr_email">Email</string>
<string name="error_saving_ICE_servers">Erro ao salvar servidores ICE</string>
<string name="exit_without_saving">Sair sem salvar</string>
<string name="display_name">Nome de exibição</string>
<string name="encrypted_video_call">chamada de vídeo criptografada e2e</string>
<string name="integrity_msg_duplicate">mensagem duplicada</string>
<string name="status_e2e_encrypted">criptografado e2e</string>
<string name="export_database">Exportar banco de dados</string>
<string name="total_files_count_and_size">%d arquivo(s) com tamanho total de %s</string>
<string name="error_exporting_chat_database">Erro ao exportar banco de dados de bate-papo</string>
<string name="error_importing_database">Erro ao importar banco de dados de bate-papo</string>
<string name="error_stopping_chat">Erro ao interromper o bate-papo</string>
<string name="error_changing_message_deletion">Erro ao alterar configuração</string>
<string name="error_encrypting_database">Erro ao criptografar o banco de dados</string>
<string name="encrypted_database">Banco de dados criptografado</string>
<string name="enter_correct_passphrase">Digite o passphrase correto.</string>
<string name="enter_passphrase">Digite o passphrase…</string>
<string name="error_with_info">Erro: %s</string>
<string name="button_edit_group_profile">Editar perfil do grupo</string>
<string name="icon_descr_expand_role">Expandir seleção de regra</string>
<string name="error_saving_group_profile">Erro ao salvar o perfil do grupo</string>
<string name="direct_messages">Mensagens diretas</string>
<string name="feature_enabled">habilitado</string>
<string name="feature_enabled_for_contact">habilitado para contato</string>
<string name="feature_enabled_for_you">ativado para você</string>
<string name="ttl_m">%dm</string>
<string name="ttl_min">%d min</string>
<string name="ttl_month">%d mês</string>
<string name="ttl_week">%d semana</string>
<string name="ttl_hour">%d hora</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">A autenticação do dispositivo não está habilitada. Você pode ativar o Bloqueio SimpleX em Configurações, depois de ativar a autenticação do dispositivo.</string>
<string name="no_call_on_lock_screen">Desativar</string>
<string name="icon_descr_server_status_disconnected">Desconectado</string>
<string name="disappearing_messages_are_prohibited">Mensagens que desaparecem(temporárias) são proibidas neste grupo.</string>
<string name="error_saving_file">Erro ao salvar arquivo</string>
<string name="display_name_cannot_contain_whitespace">O nome de exibição não pode conter espaços em branco.</string>
<string name="encrypted_audio_call">chamada de áudio criptografada e2e</string>
<string name="edit_image">Editar imagem</string>
<string name="smp_servers_enter_manually">Insira o servidor manualmente</string>
<string name="error_deleting_group">Erro ao excluir grupo</string>
<string name="settings_experimental_features">Funcionalidades experimentais</string>
<string name="error_creating_link_for_group">Erro ao criar o link de grupo</string>
<string name="error_deleting_link_for_group">Erro ao excluir o link de grupo</string>
<string name="direct_messages_are_prohibited_in_chat">Mensagens diretas entre membros são proibidas neste grupo.</string>
<string name="ttl_h">%dh</string>
<string name="ttl_hours">%d horas</string>
<string name="description_via_contact_address_link_incognito">anônimo via link de endereço de contato</string>
<string name="description_via_one_time_link_incognito">anônimo via link único</string>
<string name="hide_verb">Esconder</string>
<string name="from_gallery_button">Da Galeria</string>
<string name="group_members_can_send_disappearing">Os membros do grupo podem enviar mensagens que desaparecem.</string>
<string name="icon_descr_file">Arquivo</string>
<string name="full_name__field">Nome completo:</string>
<string name="incoming_audio_call">Chamada de áudio recebida</string>
<string name="v4_4_disappearing_messages">Mensagens que desaparecem</string>
<string name="v4_3_improved_privacy_and_security_desc">"Ocultar aplicativo nos aplicativos recentes."</string>
<string name="icon_descr_image_snd_complete">Imagem enviada</string>
<string name="group_link">Link do grupo</string>
<string name="import_database">Importar banco de dados</string>
<string name="alert_message_group_invitation_expired">O convite de grupo não é mais válido, foi removido pelo remetente.</string>
<string name="icon_descr_group_inactive">Grupo inativo</string>
<string name="alert_title_no_group">Grupo não encontrado!</string>
<string name="delete_group_for_self_cannot_undo_warning">O grupo será excluído para você - isso não pode ser desfeito!</string>
<string name="info_row_group">Grupo</string>
<string name="conn_level_desc_indirect">indireto (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<string name="incognito">Anônimo</string>
<string name="timed_messages">Mensagens que desaparecem</string>
<string name="group_preferences">Preferências de grupo</string>
<string name="disappearing_prohibited_in_this_chat">Mensagens que desaparecem são proibidas nesse bate-papo.</string>
<string name="group_members_can_send_dms">Os membros do grupo podem enviar mensagens diretas.</string>
<string name="ttl_mth">%dmês</string>
<string name="simplex_link_mode_full">Link completo</string>
<string name="hide_notification">Esconder</string>
<string name="auth_device_authentication_is_disabled_turning_off">A autenticação do dispositivo está desativada. Desativando o SimpleX Lock.</string>
<string name="for_everybody">Para todos</string>
<string name="notification_preview_mode_hidden">Escondido</string>
<string name="create_one_time_link">Gerar um link de convite único.</string>
<string name="how_to_use_your_servers">Como usar seus servidores</string>
<string name="import_database_confirmation">Importar</string>
<string name="import_database_question">Importar banco de dados de bate-papo\?</string>
<string name="group_display_name_field">Nome de exibição do grupo:</string>
<string name="group_full_name_field">Nome completo do grupo:</string>
<string name="v4_2_group_links">Links de grupo</string>
<string name="v4_3_improved_privacy_and_security">Privacidade e segurança aprimoradas</string>
<string name="failed_to_parse_chats_title">Falha ao carregar bate-papos</string>
<string name="file_with_path">Arquivo: %s</string>
<string name="file_saved">Arquivo salvo</string>
<string name="group_members_can_send_voice">Os membros do grupo podem enviar mensagens de voz.</string>
<string name="delete_group_for_all_members_cannot_undo_warning">O grupo será excluído para todos os membros - isso não pode ser desfeito!</string>
<string name="settings_section_title_help">AJUDA</string>
<string name="notification_display_mode_hidden_desc">Ocultar contato e mensagem</string>
<string name="how_to_use_simplex_chat">Como usar</string>
<string name="how_to_use_markdown">Como usar markdown</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">Se você não puder se encontrar pessoalmente, <b>mostre o QR code na videochamada</b> ou compartilhe o link.</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">Se você não puder encontrar pessoalmente, você pode <b>escanear o QR code na videochamada</b> ou seu contato pode compartilhar um link de convite.</string>
<string name="network_disable_socks_info">Se você confirmar, os servidores de mensagens poderão ver seu endereço IP e seu provedor - e quais servidores você está se conectando.</string>
<string name="image_descr">Imagem</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">Se você recebeu o link de convite <xliff:g id="appName">SimpleX Chat</xliff:g>, você pode abri-lo em seu navegador:</string>
<string name="image_saved">Imagem salva na galeria</string>
<string name="group_unsupported_incognito_main_profile_sent">O modo de navegação anônima não é suportado aqui - seu perfil principal será enviado aos membros do grupo</string>
<string name="description_via_group_link_incognito">anônimo via link do grupo</string>
<string name="incoming_video_call">Chamada de vídeo recebida</string>
<string name="turn_off_battery_optimization">Para usá-lo, por favor <b>desative a otimização da bateria</b> para <xliff:g id="appName">SimpleX</xliff:g> na próxima caixa de diálogo. Caso contrário, as notificações serão desativadas.</string>
<string name="share_one_time_link">Gerar um link de convite único</string>
<string name="file_not_found">Arquivo não encontrado</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">Se você optar por rejeitar o remetente NÃO será notificado.</string>
<string name="incorrect_code">Código de segurança incorreto!</string>
<string name="install_simplex_chat_for_terminal">Instale o <xliff:g id="appNameFull">SimpleX Chat</xliff:g> para o terminal</string>
<string name="full_name_optional__prompt">Nome Completo (opcional)</string>
<string name="how_it_works">Como funciona</string>
<string name="immune_to_spam_and_abuse">Imune a spam e abuso</string>
<string name="icon_descr_flip_camera">Vire a câmera</string>
<string name="icon_descr_hang_up">Desligar</string>
<string name="settings_section_title_incognito">Modo anônimo</string>
<string name="initial_member_role">Regra inicial</string>
<string name="snd_group_event_group_profile_updated">perfil do grupo atualizado</string>
<string name="group_member_status_group_deleted">Grupo excluído</string>
<string name="incognito_info_protects">O modo de navegação anônima protege a privacidade do nome e da imagem do seu perfil principal — para cada novo contato, um novo perfil aleatório é criado.</string>
<string name="group_members_can_delete">Os membros do grupo podem excluir mensagens enviadas de forma irreversível.</string>
<string name="ttl_w">%dsemana</string>
<string name="v4_3_improved_server_configuration">Configuração de servidor aprimorada</string>
<string name="v4_4_french_interface">Interface francesa</string>
<string name="callstate_ended">terminou</string>
<string name="allow_accepting_calls_from_lock_screen">Ative as chamadas pela tela de bloqueio nas Configurações.</string>
<string name="files_and_media_section">Arquivos &amp; mídia</string>
<string name="error_updating_link_for_group">Erro ao atualizar o link do grupo</string>
<string name="group_invitation_expired">O convite do grupo expirou</string>
<string name="file_will_be_received_when_contact_is_online">O arquivo será recebido quando seu contato estiver online, aguarde ou verifique mais tarde!</string>
<string name="group_profile_is_stored_on_members_devices">O perfil do grupo é armazenado nos dispositivos dos membros, não nos servidores.</string>
<string name="icon_descr_help">ajuda</string>
<string name="how_simplex_works">Como <xliff:g id="appName">SimpleX</xliff:g> funciona</string>
<string name="enter_one_ICE_server_per_line">Servidores ICE (um por linha)</string>
<string name="ignore">Ignorar</string>
<string name="image_will_be_received_when_contact_is_online">A imagem será recebida quando seu contato estiver online, aguarde ou verifique mais tarde!</string>
</resources>

View File

@@ -423,7 +423,7 @@
<!-- User profile details - UserProfileView.kt -->
<string name="display_name__field">Имя профиля:</string>
<string name="full_name__field">"Полное имя:</string>
<string name="your_current_profile">Ваш профиль</string>
<string name="your_current_profile">Ваш активный профиль</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Ваш профиль хранится на вашем устройстве и отправляется только вашим контактам.\n\n<xliff:g id="appName">SimpleX</xliff:g> серверы не могут получить доступ к вашему профилю.</string>
<string name="edit_image">Поменять аватар</string>
<string name="delete_image">Удалить аватар</string>
@@ -514,13 +514,15 @@
<!-- Call settings -->
<string name="settings_audio_video_calls">Аудио- и видеозвонки</string>
<string name="your_calls">Ваши звонки</string>
<string name="connect_calls_via_relay">Соединяться через сервер (relay)</string>
<string name="always_use_relay">Всегда соединяться через relay</string>
<string name="call_on_lock_screen">Звонки на экране блокировки:</string>
<string name="accept_call_on_lock_screen">Принимать</string>
<string name="show_call_on_lock_screen">Показывать</string>
<string name="no_call_on_lock_screen">Выключить</string>
<string name="your_ice_servers">Ваши ICE серверы</string>
<string name="webrtc_ice_servers">WebRTC ICE серверы</string>
<string name="relay_server_protects_ip">Relay сервер защищает ваш IP адрес, но может отслеживать продолжительность звонка.</string>
<string name="relay_server_if_necessary">Relay сервер используется только при необходимости. Другая сторона может видеть ваш IP адрес.</string>
<!-- Call Lock Screen -->
<string name="open_simplex_chat_to_accept_call">Откройте <xliff:g id="appNameFull">SimpleX Chat</xliff:g>\nчтобы принять звонок</string>
<string name="allow_accepting_calls_from_lock_screen">Вы можете разрешить принимать звонки на экране блокировки через Настройки.</string>
@@ -560,7 +562,6 @@
<string name="your_privacy">Конфиденциальность</string>
<string name="protect_app_screen">Защитить экран приложения</string>
<string name="auto_accept_images">Автоприем изображений</string>
<string name="transfer_images_faster">Передавать изображения быстрее</string>
<string name="send_link_previews">Отправлять картинки ссылок</string>
<string name="full_backup">Резервная копия данных</string>
<!-- Settings sections -->
@@ -993,4 +994,62 @@
<string name="feature_offered_item">предложил(a) %s</string>
<string name="feature_offered_item_with_param">предложил(a) %s: %2s</string>
<string name="feature_cancelled_item">отменил(a) %s</string>
<string name="icon_descr_cancel_live_message">Отменить живое сообщение</string>
<string name="core_simplexmq_version">simplexmq: v%s (%2s)</string>
<string name="network_option_ping_count">Количество PING</string>
<string name="users_delete_with_connections">Профиль и соединения на сервере</string>
<string name="app_version_title">Версия приложения</string>
<string name="network_session_mode_user">Профиль чата</string>
<string name="network_session_mode_entity">Соединение</string>
<string name="users_add">Добавить профиль</string>
<string name="error_deleting_user">Ошибка удаления профиля пользователя</string>
<string name="files_and_media_section">Файлы и медиа</string>
<string name="users_delete_data_only">Только локальные данные профиля</string>
<string name="messages_section_title">Сообщения</string>
<string name="smp_servers_per_user">Серверы для новых соединений вашего текущего профиля чата</string>
<string name="your_chat_profiles_stored_locally">Ваши профили чата хранятся локально, только на вашем устройстве</string>
<string name="your_chat_profiles">Ваши профили чата</string>
<string name="users_delete_all_chats_deleted">Все чаты и сообщения будут удалены - это нельзя отменить!</string>
<string name="app_version_code">Сборка приложения: %s</string>
<string name="app_version_name">Версия приложения: v%s</string>
<string name="network_session_mode_entity_description">Отдельное TCP-соединение (и авторизация SOCKS) будет использоваться <b>для каждого контакта и члена группы</b>.
\n<b>Обратите внимание</b>: если у вас много контактов, потребление батареи и трафика может быть значительно выше, и некоторые соединения могут не работать.</string>
<string name="network_session_mode_user_description">Отдельное TCP-соединение (и авторизация SOCKS) будет использоваться <b>для каждого профиля чата, который вы имеете в приложении</b>.</string>
<string name="core_build_timestamp">Ядро скомпилировано: %s</string>
<string name="core_version">Версия ядра: v%s</string>
<string name="users_delete_question">Удалить профиль чата\?</string>
<string name="users_delete_profile_for">Удалить профиль чата для</string>
<string name="messages_section_description">Эта настройка применяется к сообщениям в вашем текущем профиле чата</string>
<string name="network_session_mode_transport_isolation">Отдельные сессии для</string>
<string name="update_network_session_mode_question">Обновить режим отдельных сессий\?</string>
<string name="failed_to_create_user_duplicate_title">Имя профиля уже используется</string>
<string name="failed_to_create_user_title">Ошибка создания профиля!</string>
<string name="failed_to_create_user_duplicate_desc">У вас уже есть профиль с таким именем. Пожалуйста, выберите другое имя.</string>
<string name="failed_to_active_user_title">Ошибка выбора профиля!</string>
<string name="v4_5_transport_isolation_descr">По профилю чата или по соединению (БЕТА)</string>
<string name="v4_4_french_interface_descr">Благодаря пользователям добавьте переводы через Weblate!</string>
<string name="v4_5_multiple_chat_profiles_descr">Разные имена, аватары и транспортные сессии.</string>
<string name="v4_5_italian_interface">Итальянский интерфейс</string>
<string name="v4_5_message_draft">Черновик сообщения</string>
<string name="v4_5_multiple_chat_profiles">Много профилей чата</string>
<string name="v4_5_message_draft_descr">Сохранить последний черновик, вместе с вложениями.</string>
<string name="v4_5_private_filenames">Защищенные имена файлов</string>
<string name="v4_5_italian_interface_descr">Благодаря пользователям добавьте переводы через Weblate!</string>
<string name="v4_5_private_filenames_descr">Чтобы защитить ваш часовой пояс, файлы картинок и голосовых сообщений используют UTC.</string>
<string name="v4_4_french_interface">Французский интерфейс</string>
<string name="v4_5_reduced_battery_usage_descr">Дополнительные улучшения скоро!</string>
<string name="v4_5_reduced_battery_usage">Уменьшенное потребление батареи</string>
<string name="v4_5_transport_isolation">Отдельные транспортные сессии</string>
<string name="moderated_description">удалено</string>
<string name="moderated_item_description">удалено %s</string>
<string name="delete_member_message__question">Удалить сообщение участника\?</string>
<string name="moderate_verb">Модерировать</string>
<string name="moderate_message_will_be_deleted_warning">Сообщение будет удалено для всех членов группы.</string>
<string name="moderate_message_will_be_marked_warning">Сообщение будет помечено как удаленное для всех членов группы.</string>
<string name="observer_cant_send_message_desc">Пожалуйста, свяжитесь с админом группы.</string>
<string name="observer_cant_send_message_title">Вы не можете отправлять сообщения!</string>
<string name="you_are_observer">только чтение сообщений</string>
<string name="group_member_role_observer">читатель</string>
<string name="initial_member_role">Роль при вступлении</string>
<string name="error_updating_link_for_group">Ошибка обновления ссылки группы</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -3,25 +3,25 @@
<string name="a_plus_b">a + b</string>
<string name="chat_item_ttl_day">1天</string>
<string name="about_simplex">关于 SimpleX</string>
<string name="all_group_members_will_remain_connected">所有群组成员将保持连接</string>
<string name="all_group_members_will_remain_connected">所有群组成员将保持连接</string>
<string name="about_simplex_chat">关于 <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="above_then_preposition_continuation">关于, 然后:</string>
<string name="above_then_preposition_continuation">以上,然后</string>
<string name="accept_contact_button">接受</string>
<string name="accept_call_on_lock_screen">接受</string>
<string name="accept_feature">接受</string>
<string name="chat_item_ttl_month">1月</string>
<string name="chat_item_ttl_month">1</string>
<string name="chat_item_ttl_week">1周</string>
<string name="color_primary">强化</string>
<string name="color_primary">色调</string>
<string name="callstatus_accepted">已接受通话</string>
<string name="accept">接受</string>
<string name="network_enable_socks_info">通过 SOCKS 代理访问服务器在端口9050允许该选项前必须开始代理。</string>
<string name="smp_servers_add">添加服务器</string>
<string name="smp_servers_add">添加服务器……</string>
<string name="smp_servers_add_to_another_device">添加另一设备</string>
<string name="group_member_role_admin">管理员</string>
<string name="v4_3_improved_server_configuration_desc">扫描二维码来添加服务器</string>
<string name="v4_3_improved_server_configuration_desc">扫描二维码来添加服务器</string>
<string name="network_settings">高级网络设置</string>
<string name="accept_connection_request__question">接受连接请求?</string>
<string name="accept_contact_incognito_button">接受无痕模式</string>
<string name="accept_contact_incognito_button">接受隐身聊天</string>
<string name="v4_2_group_links_desc">管理员可以创建链接以加入群组。</string>
<string name="accept_requests">接受请求</string>
<string name="smp_servers_preset_add">添加预设服务器</string>
@@ -33,7 +33,7 @@
<string name="contact_already_exists">联系人已存在</string>
<string name="connection_error_auth">连接错误AUTH</string>
<string name="answer_call">接听来电</string>
<string name="delete_chat_profile_question">删除聊天个人资料?</string>
<string name="delete_chat_profile_question">删除聊天资料?</string>
<string name="delete_files_and_media_all">删除所有文件</string>
<string name="messages_section_title">消息</string>
<string name="delete_messages_after">在此后删除消息</string>
@@ -53,7 +53,7 @@
<string name="delete_files_and_media_question">删除文件和媒体文件?</string>
<string name="full_deletion">为所有人删除</string>
<string name="for_me_only">为我删除</string>
<string name="delete_files_and_media_for_all_users">为所有聊天个人资料删除文件</string>
<string name="delete_files_and_media_for_all_users">为所有聊天资料删除文件</string>
<string name="button_delete_group">删除群组</string>
<string name="delete_group_question">删除群组?</string>
<string name="delete_link">删除链接</string>
@@ -67,7 +67,7 @@
<string name="connect_via_contact_link">通过联系人链接连接?</string>
<string name="connect_via_group_link">通过群组链接连接?</string>
<string name="connect_via_link_or_qr">通过群组链接/二维码连接</string>
<string name="connect_calls_via_relay">通过继电器连接</string>
<string name="always_use_relay">通过继连接</string>
<string name="allow_your_contacts_irreversibly_delete">允许您的联系人不可撤回地删除已发送消息。</string>
<string name="chat_preferences_contact_allows">联系人允许</string>
<string name="allow_voice_messages_only_if">仅有您的联系人许可后才允许语音消息。</string>
@@ -83,7 +83,7 @@
<string name="allow_to_send_disappearing">允许发送限时消息。</string>
<string name="delete_address">删除地址</string>
<string name="delete_chat_archive_question">删除聊天档案?</string>
<string name="users_delete_question">删除聊天个人资料?</string>
<string name="users_delete_question">删除聊天资料?</string>
<string name="button_delete_contact">删除联系人</string>
<string name="delete_contact_question">删除联系人?</string>
<string name="rcv_group_event_group_deleted">已删除群组</string>
@@ -91,8 +91,894 @@
<string name="allow_disappearing_messages_only_if">仅有您的联系人许可后才允许限时消息。</string>
<string name="allow_irreversible_message_deletion_only_if">仅有您的联系人许可后才允许不可撤回消息移除。</string>
<string name="allow_to_delete_messages">允许不可撤回地删除已发送消息。</string>
<string name="users_delete_profile_for">为此删除聊天个人资料</string>
<string name="users_delete_profile_for">为此删除聊天资料</string>
<string name="delete_database">删除数据库</string>
<string name="keychain_allows_to_receive_ntfs">在您重启应用程序或者更换密码后安卓密钥库系统用来安全地保存密码——来确保收到消息提醒</string>
<string name="keychain_is_storing_securely">安卓密钥库系统用来安全地保存密码——来确保消息提醒服务运作。</string>
<string name="keychain_allows_to_receive_ntfs">在您重启应用程序或者更换密码后安卓密钥库系统用来安全地保存密码——来确保收到通知</string>
<string name="keychain_is_storing_securely">安卓密钥库系统用来安全地保存密码——来确保通知服务运作。</string>
<string name="appearance_settings">外观</string>
<string name="app_version_title">应用程序版本</string>
<string name="full_backup">应用程序数据备份</string>
<string name="settings_section_title_icon">应用程序图标</string>
<string name="incognito_random_profile_from_contact_description">随机配置文件将发送给您从中收到此链接的联系人</string>
<string name="app_version_name">应用程序版本v%s</string>
<string name="notifications_mode_off_desc">仅在运行时应用程序可以接受通知,不会启动后台服务</string>
<string name="incognito_random_profile_description">一个随机资料将发送给您的联系人</string>
<string name="auth_unavailable">身份验证不可用</string>
<string name="auto_accept_images">自动接受图像</string>
<string name="attach">附件</string>
<string name="icon_descr_audio_call">语音通话</string>
<string name="audio_call_no_encryption">语音通话(非端到端加密)</string>
<string name="v4_2_auto_accept_contact_requests">自动接受联系人请求</string>
<string name="integrity_msg_bad_hash">错误消息散列</string>
<string name="integrity_msg_bad_id">错误消息 ID</string>
<string name="settings_audio_video_calls">语音和视频通话</string>
<string name="accept_automatically">自动地</string>
<string name="turning_off_service_and_periodic">激活电池优化,关闭了后台服务和新消息的定期请求。您可以通过设置重新启用它们。</string>
<string name="notifications_mode_service_desc">后台服务一直在运行——一旦有消息,就会显示通知。</string>
<string name="icon_descr_audio_off">关闭音频</string>
<string name="icon_descr_audio_on">开启音频</string>
<string name="icon_descr_asked_to_receive">已要求接收图片</string>
<string name="network_session_mode_user_description">一个单独的TCP连接和SOCKS凭证将被用于<b>,用于您在应用程序中的每个聊天资料</b></string>
<string name="network_session_mode_entity_description">每个联系人和群组成员&lt;/b&gt; 将使用单独的 TCP 连接(和 SOCKS 凭证)&lt;b&gt;
\n&lt;b&gt;请注意&lt;/b&gt;:如果您有很多连接,您的电池和流量消耗可能会大大增加,并且某些连接可能会失败。</string>
<string name="back">返回</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>添加新联系人</b>:为您的联系人创建一次性二维码。</string>
<string name="onboarding_notifications_mode_off_desc"><b> 最适合电池 </b>。您只会在应用程序运行时收到通知,不会使用后台服务。</string>
<string name="onboarding_notifications_mode_periodic_desc"><b> 适合于电池 </b>。后台服务每 10 分钟检查一次新消息。您可能会错过来电和紧急信息。</string>
<string name="bold">加粗</string>
<string name="both_you_and_your_contacts_can_delete">您和您的联系人都可以不可逆转地删除已发送的消息。</string>
<string name="both_you_and_your_contact_can_send_disappearing">您和您的联系人都可以发送限时消息。</string>
<string name="both_you_and_your_contact_can_send_voice">您和您的联系人都可以发送语音消息。</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b> 可以通过设置禁用它 </b> - 应用程序运行时仍会显示通知。</string>
<string name="onboarding_notifications_mode_service_desc"><b> 使用更多电池 </b>!后台服务一直在运行——一旦收到消息,就会显示通知。</string>
<string name="impossible_to_recover_passphrase"><b>请注意</b>:如果您丢失密码,您将无法恢复或者更改密码。</string>
<string name="call_already_ended">通话已经结束!</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>扫描二维码</b> :与向您展示二维码的联系人联系。</string>
<string name="alert_title_cant_invite_contacts">无法邀请联系人!</string>
<string name="invite_prohibited">无法邀请联系人!</string>
<string name="cancel_verb">取消</string>
<string name="callstatus_ended">通话结束 <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="change_verb">更改</string>
<string name="icon_descr_call_ended">通话结束</string>
<string name="change_database_passphrase_question">更改数据库密码?</string>
<string name="callstatus_error">通话错误</string>
<string name="rcv_conn_event_switch_queue_phase_completed">为您更改地址</string>
<string name="callstatus_in_progress">通话中</string>
<string name="icon_descr_call_progress">通话进行中</string>
<string name="callstatus_calling">呼叫中……</string>
<string name="icon_descr_cancel_live_message">取消实时消息</string>
<string name="settings_section_title_calls">通话</string>
<string name="call_on_lock_screen">在锁定屏幕上通话:</string>
<string name="icon_descr_cancel_image_preview">取消图片预览</string>
<string name="feature_cancelled_item">已取消 %s</string>
<string name="icon_descr_cancel_file_preview">取消文件预览</string>
<string name="cannot_access_keychain">无法访问密钥库来保存数据库密码</string>
<string name="cannot_receive_file">无法接收文件</string>
<string name="database_initialization_error_title">无法初始化数据库</string>
<string name="rcv_group_event_changed_member_role">将 %s 的角色更改为 %s</string>
<string name="rcv_group_event_changed_your_role">将您的角色更改为 %s</string>
<string name="change_role">改变角色</string>
<string name="change_member_role_question">更改群组角色?</string>
<string name="icon_descr_cancel_link_preview">取消链接预览</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">为 %s 更改地址中……</string>
<string name="rcv_conn_event_switch_queue_phase_changing">更改地址中……</string>
<string name="snd_conn_event_switch_queue_phase_changing">更改地址……</string>
<string name="create_your_profile">创建您的资料</string>
<string name="chat_database_deleted">聊天数据库已删除</string>
<string name="chat_database_imported">聊天数据库已导入</string>
<string name="keychain_error">钥匙串错误</string>
<string name="chat_archive_section">聊天档案</string>
<string name="chat_archive_header">聊天档案</string>
<string name="chat_console">聊天控制台</string>
<string name="chat_database_section">聊天数据库</string>
<string name="chat_is_stopped_indication">聊天已停止</string>
<string name="chat_is_running">聊天进行中</string>
<string name="chat_is_stopped">聊天已停止</string>
<string name="contact_preferences">联系人偏好设置</string>
<string name="your_preferences">您的偏好设置</string>
<string name="group_preferences">群组偏好设置</string>
<string name="only_group_owners_can_change_prefs">只有群主可以改变群组偏好设置。</string>
<string name="save_preferences_question">保存偏好设置?</string>
<string name="set_group_preferences">设置群组偏好设置</string>
<string name="privacy_redefined">重新定义隐私</string>
<string name="v4_3_improved_privacy_and_security">改进的隐私和安全</string>
<string name="incognito">隐身聊天</string>
<string name="joining_group">加入群组</string>
<string name="join_group_incognito_button">加入隐身聊天</string>
<string name="settings_section_title_incognito">隐身模式</string>
<string name="group_unsupported_incognito_main_profile_sent">此处不支持隐身模式——您的主要个人资料将发送给群组成员</string>
<string name="tap_to_start_new_chat">点击开始一个新聊天</string>
<string name="incognito_random_profile">您的随机资料</string>
<string name="description_via_contact_address_link_incognito">通过联系地址链接隐身</string>
<string name="description_via_group_link_incognito">通过群组链接隐身</string>
<string name="description_you_shared_one_time_link_incognito">您分享了一次性链接隐身聊天</string>
<string name="group_invitation_tap_to_join_incognito">点击以加入隐身聊天</string>
<string name="group_main_profile_sent">您的聊天资料将被发送给群组成员</string>
<string name="invite_prohibited_description">您正在尝试邀请与您共享隐身个人资料的联系人加入您使用主要个人资料的群组</string>
<string name="incognito_info_protects">隐身模式可以保护你的主要个人资料名称和图像的隐私——对于每个新的联系人,都会创建一个新的随机个人资料。</string>
<string name="alert_title_cant_invite_contacts_descr">您正在为该群组使用隐身个人资料——为防止共享您的主要个人资料,不允许邀请联系人</string>
<string name="your_profile_will_be_sent">您的聊天资料将被发送给您的联系人</string>
<string name="description_via_one_time_link_incognito">通过一次性链接隐身</string>
<string name="only_group_owners_can_enable_voice">只有群主可以启用语音信息。</string>
<string name="your_privacy">您的隐私设置</string>
<string name="privacy_and_security">隐私和安全</string>
<string name="smp_servers_save">保存服务器</string>
<string name="incognito_info_allows">它允许在一个聊天资料中有多个匿名连接,而它们之间没有任何共享数据。</string>
<string name="incognito_info_find">要查找用于隐身聊天连接的资料,点击聊天顶部的联系人或群组名。</string>
<string name="incognito_info_share">当您与某人共享隐身聊天资料时,该资料将用于他们邀请您加入的群组。</string>
<string name="v4_3_improved_server_configuration">改进的服务器配置</string>
<string name="icon_descr_email">电邮</string>
<string name="edit_image">编辑图片</string>
<string name="button_edit_group_profile">编辑群组资料</string>
<string name="error_encrypting_database">加密数据库错误</string>
<string name="error_exporting_chat_database">导出聊天数据库错误</string>
<string name="error_importing_database">导入聊天数据库错误</string>
<string name="error_joining_group">加入群组错误</string>
<string name="error_deleting_user">删除用户资料错误</string>
<string name="passphrase_is_different">数据库密码不同于保存在密钥库中的密码。</string>
<string name="database_encryption_will_be_updated">数据库加密密码将被更新并存储在密钥库中。</string>
<string name="database_will_be_encrypted_and_passphrase_stored">数据库将被加密,密码存储在密钥库中。</string>
<string name="restore_passphrase_not_found_desc">在密匙库中没有找到密码,请手动输入。如果您使用备份工具恢复了应用程序的数据,可能会发生这种情况。如果不是这种情况,请联系开发者。</string>
<string name="remove_passphrase_from_keychain">从密钥库中删除密码?</string>
<string name="save_passphrase_in_keychain">在密钥库中保存密码</string>
<string name="simplex_service_notification_title"><xliff:g id="appNameFull">SimpleX Chat</xliff:g> 服务</string>
<string name="settings_notifications_mode_title">通知服务</string>
<string name="confirm_new_passphrase">确认新密码……</string>
<string name="group_member_status_complete">完整的</string>
<string name="group_member_status_connected">已连接</string>
<string name="chat_preferences">聊天偏好设置</string>
<string name="settings_section_title_chats">聊天</string>
<string name="clear_verb">清除</string>
<string name="clear_chat_menu_action">清除</string>
<string name="clear_chat_button">清除聊天</string>
<string name="clear_chat_question">清除聊天记录?</string>
<string name="chat_with_developers">与开发者聊天</string>
<string name="clear_contacts_selection_button">清除</string>
<string name="colored">有色</string>
<string name="callstate_connected">已连接</string>
<string name="connect_button">连接</string>
<string name="connect_via_link_verb">连接</string>
<string name="choose_file">选择文件</string>
<string name="network_session_mode_user">聊天资料</string>
<string name="v4_5_transport_isolation_descr">按聊天资料默认或按连接BETA</string>
<string name="smp_servers_check_address">检查服务器地址并再试一次。</string>
<string name="clear_verification">清除验证</string>
<string name="icon_descr_close_button">关闭按键</string>
<string name="configure_ICE_servers">配置 ICE 服务器</string>
<string name="confirm_verb">确认</string>
<string name="auth_confirm_credential">确认您的证书</string>
<string name="server_connected">已连接</string>
<string name="icon_descr_server_status_connected">已连接</string>
<string name="smp_server_test_connect">连接</string>
<string name="notification_contact_connected">已连接</string>
<string name="server_connecting">连接中</string>
<string name="group_member_status_connecting">连接中</string>
<string name="notifications_mode_periodic_desc">每10分钟检查一次新消息最长1分钟</string>
<string name="rcv_group_event_member_connected">已连接</string>
<string name="v4_4_verify_connection_security_desc">与您的联系人比较安全码。</string>
<string name="incoming_audio_call">语音通话来电</string>
<string name="error_changing_message_deletion">更改设置错误</string>
<string name="alert_message_group_invitation_expired">群组邀请不再有效,已被发件人删除。</string>
<string name="failed_to_create_user_duplicate_title">重复的显示名!</string>
<string name="failed_to_create_user_title">创建资料错误!</string>
<string name="error_accepting_contact_request">接受联系人请求错误</string>
<string name="error_deleting_group">删除群组错误</string>
<string name="error_deleting_pending_contact_connection">删除待定的联系人连接错误</string>
<string name="error_receiving_file">接收文件错误</string>
<string name="failed_to_active_user_title">切换资料错误!</string>
<string name="notification_preview_mode_hidden">已隐藏</string>
<string name="edit_verb">编辑</string>
<string name="notification_display_mode_hidden_desc">隐藏联系人和消息</string>
<string name="icon_descr_edited">已编辑</string>
<string name="for_everybody">对于每个人</string>
<string name="image_decoding_exception_title">解码错误</string>
<string name="image_saved">图片保存到相册</string>
<string name="image_will_be_received_when_contact_is_online">图片将在您的联系人在线时收到,请稍等或稍后查看!</string>
<string name="error_saving_file">保存文件错误</string>
<string name="icon_descr_file">文件</string>
<string name="file_not_found">未找到文件</string>
<string name="file_saved">文件已保存</string>
<string name="icon_descr_server_status_disconnected">已断开连接</string>
<string name="icon_descr_server_status_error">错误</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 桌面:通过 <b>扫描二维码</b> 从应用程序扫描显示的二维码。</string>
<string name="delete_pending_connection__question">删除待定连接?</string>
<string name="how_to_use_markdown">如何使用 markdown</string>
<string name="create_profile_button">创建</string>
<string name="display_name_cannot_contain_whitespace">显示名不能包含空格。</string>
<string name="decentralized">分散式</string>
<string name="immune_to_spam_and_abuse">不受垃圾和骚扰消息影响</string>
<string name="encrypted_video_call">端到端加密语音通话</string>
<string name="ignore">忽视</string>
<string name="incoming_video_call">视频通话来电</string>
<string name="no_call_on_lock_screen">禁用</string>
<string name="status_e2e_encrypted">端到端加密</string>
<string name="status_contact_has_e2e_encryption">联系人具有端到端加密</string>
<string name="allow_accepting_calls_from_lock_screen">通过设置启用在锁定屏幕上通话。</string>
<string name="icon_descr_call_connecting">连接通话中</string>
<string name="status_contact_has_no_e2e_encryption">联系人没有端到端加密</string>
<string name="icon_descr_hang_up">挂断电话</string>
<string name="integrity_msg_duplicate">重复的消息</string>
<string name="settings_section_title_help">帮助</string>
<string name="settings_experimental_features">实验性功能</string>
<string name="settings_section_title_device">设备</string>
<string name="settings_developer_tools">开发者工具</string>
<string name="export_database">导出数据库</string>
<string name="database_passphrase">数据库密码</string>
<string name="import_database">导入数据库</string>
<string name="files_and_media_section">文件和媒体</string>
<string name="current_passphrase">现有密码……</string>
<string name="encrypt_database">加密</string>
<string name="encrypted_database">加密的数据库</string>
<string name="enter_correct_passphrase">输入正确密码。</string>
<string name="icon_descr_group_inactive">不活跃群组</string>
<string name="group_member_status_creator">创建者</string>
<string name="group_member_status_accepted">连接中(已接受)</string>
<string name="group_member_status_announced">连接中(已宣布)</string>
<string name="icon_descr_expand_role">扩展角色选择</string>
<string name="group_link">群组链接</string>
<string name="error_deleting_link_for_group">删除群组链接错误</string>
<string name="info_row_database_id">数据库 ID</string>
<string name="error_removing_member">删除成员错误</string>
<string name="error_changing_role">更改角色错误</string>
<string name="info_row_group">群组</string>
<string name="timed_messages">限时消息</string>
<string name="ttl_day">%d 天</string>
<string name="group_connection_pending">连接中……</string>
<string name="callstatus_connecting">连接通话中……</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">联系人和所有的消息都将被删除——这是不可逆回的!</string>
<string name="notification_preview_mode_contact">联系人姓名</string>
<string name="group_member_status_intro_invitation">连接(介绍邀请)</string>
<string name="contact_requests">联系人请求</string>
<string name="callstate_connecting">连接中……</string>
<string name="contacts_can_mark_messages_for_deletion">联系人可以将信息标记为删除;您将可以查看这些信息。</string>
<string name="contribute">贡献</string>
<string name="icon_descr_contact_checked">已检查联系人</string>
<string name="notification_preview_somebody">联系人已隐藏:</string>
<string name="alert_title_contact_connection_pending">联系人尚未连接!</string>
<string name="icon_descr_context">上下文图标</string>
<string name="copied">复制到剪贴板</string>
<string name="contact_connection_pending">连接中……</string>
<string name="create_group_link">创建群组链接</string>
<string name="create_group">创建私密群组</string>
<string name="button_create_group_link">创建链接</string>
<string name="share_one_time_link">创建一次性邀请链接</string>
<string name="smp_server_test_create_queue">创建队列</string>
<string name="create_secret_group_title">创建私密群组</string>
<string name="v4_5_multiple_chat_profiles_descr">不同的名字、头像和传输隔离。</string>
<string name="v4_4_french_interface">法语界面</string>
<string name="create_one_time_link">创建一次性邀请链接</string>
<string name="how_to_use_simplex_chat">如何使用它</string>
<string name="server_error">错误</string>
<string name="display_name_connecting">连接中……</string>
<string name="failed_to_parse_chat_title">加载聊天失败</string>
<string name="failed_to_parse_chats_title">无法加载聊天</string>
<string name="error_adding_members">添加成员错误</string>
<string name="hide_notification">隐藏</string>
<string name="copy_verb">复制</string>
<string name="hide_verb">隐藏</string>
<string name="how_to">如何</string>
<string name="icon_descr_help">帮助</string>
<string name="ttl_d">%dd</string>
<string name="database_will_be_encrypted">数据库将被加密。</string>
<string name="encrypted_audio_call">端到端加密语音通话</string>
<string name="enter_one_ICE_server_per_line">ICE 服务器(每行一个)</string>
<string name="create_address">创建地址</string>
<string name="core_build_timestamp">核心构建于:%s</string>
<string name="core_version">核心版本: v%s</string>
<string name="display_name__field">显示名:</string>
<string name="full_name__field">全名:</string>
<string name="display_name">显示名。</string>
<string name="full_name_optional__prompt">全名(可选)</string>
<string name="callstate_ended">已结束</string>
<string name="group_member_status_group_deleted">群组已删除</string>
<string name="delete_group_for_all_members_cannot_undo_warning">将为所有成员删除群组——此操作无法撤消!</string>
<string name="conn_level_desc_direct">直接</string>
<string name="direct_messages">直接信息</string>
<string name="feature_enabled">已启用</string>
<string name="group_members_can_send_voice">群组成员可以发送语音消息。</string>
<string name="v4_2_group_links">群组链接</string>
<string name="error_starting_chat">启动聊天错误</string>
<string name="database_encrypted">数据库已加密!</string>
<string name="encrypt_database_question">加密数据库?</string>
<string name="encrypted_with_random_passphrase">数据库使用随机密码进行加密,您可以更改它。</string>
<string name="database_passphrase_is_required">打开聊天需要数据库密码。</string>
<string name="settings_section_title_develop">开发</string>
<string name="error_stopping_chat">停止聊天错误</string>
<string name="import_database_question">导入聊天数据库?</string>
<string name="error_deleting_database">删除聊天数据库错误</string>
<string name="import_database_confirmation">导入</string>
<string name="enter_passphrase">输入密码……</string>
<string name="database_passphrase_will_be_updated">数据库加密密码将被更新。</string>
<string name="database_error">数据库错误</string>
<string name="snd_group_event_group_profile_updated">群组资料已更新</string>
<string name="group_full_name_field">群组全名:</string>
<string name="theme_dark">深色</string>
<string name="feature_enabled_for_contact">已为联系人启用</string>
<string name="feature_enabled_for_you">为您启用</string>
<string name="group_members_can_send_disappearing">群组成员可以发送限时消息。</string>
<string name="create_profile">创建个人资料</string>
<string name="how_it_works">工作原理</string>
<string name="alert_title_no_group">未找到群组!</string>
<string name="error_creating_link_for_group">创建群组链接错误</string>
<string name="group_member_status_introduced">连接中(已介绍)</string>
<string name="set_password_to_export_desc">数据库使用随机密码进行加密。请在导出前更改它。</string>
<string name="database_passphrase_and_export">数据库密码和导出</string>
<string name="smp_server_test_delete_queue">删除队列</string>
<string name="smp_servers_delete_server">删除服务器</string>
<string name="simplex_link_mode_description">描述</string>
<string name="disappearing_prohibited_in_this_chat">此聊天中禁止显示限时消息。</string>
<string name="smp_server_test_disconnect">断开连接</string>
<string name="error_changing_address">更改地址错误</string>
<string name="auth_enable_simplex_lock">启用 SimpleX 锁定</string>
<string name="error_creating_address">创建地址错误</string>
<string name="network_option_enable_tcp_keep_alive">启用 TCP 保持活跃状态</string>
<string name="smp_servers_enter_manually">手动输入服务器</string>
<string name="error_deleting_contact">删除联系人错误</string>
<string name="error_setting_network_config">更新网络配置错误</string>
<string name="error_deleting_contact_request">删除联系人请求错误</string>
<string name="error_saving_group_profile">保存群组资料错误</string>
<string name="error_saving_smp_servers">保存 SMP 服务器错误</string>
<string name="error_saving_ICE_servers">保存 ICE 服务器错误</string>
<string name="error_sending_message">发送消息错误</string>
<string name="simplex_link_mode_full">完整链接</string>
<string name="group_display_name_field">群组显示名称:</string>
<string name="group_invitation_expired">群组邀请已过期</string>
<string name="delete_group_for_self_cannot_undo_warning">将为您删除群组——此操作无法撤消!</string>
<string name="group_profile_is_stored_on_members_devices">群组资料存储在成员的设备上,而不是服务器上。</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">如果您选择拒绝发件人,将不会收到通知。</string>
<string name="how_to_use_your_servers">如何使用您的服务器</string>
<string name="network_disable_socks_info">如果您确认,消息服务器将能够看到您的 IP 地址和您的提供商——以及您正在连接的服务器。</string>
<string name="image_descr">图片</string>
<string name="icon_descr_image_snd_complete">图片已发送</string>
<string name="auth_device_authentication_is_disabled_turning_off">设备认证被禁用。关闭 SimpleX 锁定。</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">没有启用设备认证。一旦启用设备认证,您可以通过设置打开 SimpleX 锁定。</string>
<string name="auth_disable_simplex_lock">禁用 SimpleX 锁定</string>
<string name="maximum_supported_file_size">目前支持的最大文件尺寸是 <xliff:g id="maxFileSize">%1$s</xliff:g></string>
<string name="file_will_be_received_when_contact_is_online">文件将在您的联系人在线时收到,请稍等或稍后再查看!</string>
<string name="from_gallery_button">从图库</string>
<string name="exit_without_saving">退出而不保存</string>
<string name="icon_descr_flip_camera">翻转相机</string>
<string name="enable_automatic_deletion_question">启用自动删除消息?</string>
<string name="section_title_for_console">用于控制台</string>
<string name="direct_messages_are_prohibited_in_chat">此群中禁止成员之间私聊。</string>
<string name="disappearing_messages_are_prohibited">该组禁止限时消息。</string>
<string name="group_members_can_delete">群组成员可以不可撤回地删除已发送的消息。</string>
<string name="group_members_can_send_dms">群组成员可以私信。</string>
<string name="v4_4_disappearing_messages">限时消息</string>
<string name="v4_3_improved_privacy_and_security_desc">在最近的应用程序中隐藏应用程序屏幕。</string>
<string name="leave_group_button">离开</string>
<string name="alert_title_group_invitation_expired">邀请已过期!</string>
<string name="live_message">实时消息!</string>
<string name="image_descr_link_preview">链接预览图片</string>
<string name="invalid_QR_code">无效的二维码</string>
<string name="onboarding_notifications_mode_subtitle">以后可以通过设置进行更改。</string>
<string name="alert_text_skipped_messages_it_can_happen_when">它可以在以下情况下发生:
\n1. 如果消息在30天内没有被收到就会在服务器上过期。
\n2. 您用于接收来自此联系人的消息的服务器已更新并重新启动。
\n3. 连接受损。
\n请通过设置与开发者联系以接收有关服务器的更新。
\n我们将添加服务器冗余以防止丢失消息。</string>
<string name="leave_group_question">离开群组?</string>
<string name="rcv_group_event_invited_via_your_group_link">通过您的群组链接邀请</string>
<string name="info_row_local_name">本地名称</string>
<string name="invalid_message_format">无效的消息格式</string>
<string name="invalid_data">无效数据</string>
<string name="live">实时</string>
<string name="display_name_invited_to_connect">已邀请连接</string>
<string name="invalid_connection_link">无效的连接链接</string>
<string name="italic">斜体</string>
<string name="group_member_status_invited">已邀请</string>
<string name="invite_to_group_button">邀请加入群组</string>
<string name="join_group_button">加入</string>
<string name="join_group_question">加入群组?</string>
<string name="icon_descr_add_members">邀请成员</string>
<string name="group_member_status_left">已离开</string>
<string name="theme_light">浅色</string>
<string name="message_deletion_prohibited">此聊天中禁止不可撤回消息移除。</string>
<string name="v4_5_italian_interface">意大利语界面</string>
<string name="incorrect_code">安全码不正确!</string>
<string name="service_notifications_disabled">即时通知被禁用!</string>
<string name="invalid_chat">无效聊天</string>
<string name="smp_servers_invalid_address">无效的服务器地址!</string>
<string name="button_add_members">邀请成员</string>
<string name="button_leave_group">离开群组</string>
<string name="users_delete_data_only">仅本地配置文件数据</string>
<string name="icon_descr_instant_notifications">即时通知</string>
<string name="service_notifications">即时通知!</string>
<string name="auth_log_in_using_credential">使用您的凭据登录</string>
<string name="large_file">大文件!</string>
<string name="invalid_contact_link">链接无效!</string>
<string name="rcv_group_event_member_left">已离开</string>
<string name="message_deletion_prohibited_in_chat">此群组中禁止不可撤回消息移除。</string>
<string name="v4_3_irreversible_message_deletion">不可撤回消息移除</string>
<string name="v4_4_live_messages">实时消息</string>
<string name="notification_preview_mode_message">消息正文</string>
<string name="callstate_waiting_for_confirmation">等待确认中……</string>
<string name="onboarding_notifications_mode_service">即时</string>
<string name="only_your_contact_can_send_disappearing">只有您的联系人才可以发送限时消息。</string>
<string name="notification_preview_mode_message_desc">显示联系人和消息</string>
<string name="notification_preview_mode_contact_desc">只显示联系人</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">为保护您的信息,请打开 SimpleX 锁定。
\n在启用此功能之前系统将提示您完成身份验证。</string>
<string name="your_chats">您的聊天</string>
<string name="share_file">分享文件……</string>
<string name="share_image">分享图片……</string>
<string name="share_message">分享消息……</string>
<string name="text_field_set_contact_placeholder">设置联系人姓名……</string>
<string name="callstate_received_answer">已收到回复……</string>
<string name="callstate_received_confirmation">已受到确认……</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">只有客户端设备存储用户配置文件、联系人、群组和使用 <b>双层端到端加密 </b> 发送的消息。</string>
<string name="video_call_no_encryption">视频通话(非端到端加密)</string>
<string name="onboarding_notifications_mode_periodic">定期</string>
<string name="onboarding_notifications_mode_title">私人通知</string>
<string name="onboarding_notifications_mode_off">应用程序运行时</string>
<string name="status_no_e2e_encryption">无端到端加密</string>
<string name="show_call_on_lock_screen">显示</string>
<string name="you_must_use_the_most_recent_version_of_database">您只能在一台设备上使用最新版本的聊天数据库,否则您可能会停止接收来自某些联系人的消息。</string>
<string name="new_passphrase">新密码……</string>
<string name="member_role_will_be_changed_with_notification">该角色将更改为“%s”。群组中每个人都会收到通知。</string>
<string name="your_contact_address">您的联系人地址</string>
<string name="chat_lock">SimpleX 锁定</string>
<string name="periodic_notifications">定期通知</string>
<string name="notifications_mode_periodic">定期启动</string>
<string name="notification_preview_new_message">新消息</string>
<string name="auth_unlock">解锁</string>
<string name="voice_message_send_text">语音消息……</string>
<string name="network_use_onion_hosts_no"></string>
<string name="callstate_starting">启动中……</string>
<string name="prohibit_sending_disappearing_messages">禁止发送限时消息。</string>
<string name="only_you_can_send_disappearing">只有您可以发送限时消息。</string>
<string name="only_your_contact_can_delete">只有您的联系人才能不可撤回地删除消息(您可以将它们标记为删除)。</string>
<string name="prohibit_sending_disappearing">禁止发送限时消息。</string>
<string name="notifications_will_be_hidden">通知只会在应用程序停止之前发送!</string>
<string name="chat_preferences_no"></string>
<string name="prohibit_message_deletion">禁止不可撤回消息删除。</string>
<string name="notification_new_contact_request">新联系人请求</string>
<string name="callstate_waiting_for_answer">等待答复中……</string>
<string name="la_notice_title_simplex_lock">SimpleX 锁定</string>
<string name="auth_simplex_lock_turned_on">已开启 SimpleX 锁定</string>
<string name="notifications">通知</string>
<string name="simplex_service_notification_text">正在接收消息……</string>
<string name="enter_passphrase_notification_desc">要接收通知,请输入数据库密码</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery">为了保护您的隐私,该应用程序没有推送通知,而是具有 <b><xliff:g id="appName">SimpleX</xliff:g> 后台服务 </b>——它每天使用百分之几的电池。</string>
<string name="your_settings">您的设置</string>
<string name="turn_off_battery_optimization">为了使用它,请 <b>禁用电池优化</b><xliff:g id="appName">SimpleX</xliff:g>在下一个对话框。否则通知将被禁用。</string>
<string name="settings_notification_preview_title">通知预览</string>
<string name="enter_passphrase_notification_title">需要密码</string>
<string name="periodic_notifications_disabled">定期通知被禁用!</string>
<string name="notifications_mode_off">在应用程序打开时运行</string>
<string name="settings_notification_preview_mode_title">显示预览</string>
<string name="periodic_notifications_desc">该应用程序会定期获取新消息——它每天会消耗百分之几的电量。该应用程序不使用推送通知——您设备中的数据不会发送到服务器。</string>
<string name="v4_3_irreversible_message_deletion_desc">您的联系人可以允许完全删除消息。</string>
<string name="v4_4_disappearing_messages_desc">已发送的消息将在设定的时间后被删除。</string>
<string name="your_chat_database">您的聊天数据库</string>
<string name="wrong_passphrase_title">密码错误!</string>
<string name="save_verb">保存</string>
<string name="open_verb">打开</string>
<string name="update_database">更新</string>
<string name="save_passphrase_and_open_chat">保存密码并打开聊天</string>
<string name="open_chat">打开聊天</string>
<string name="database_backup_can_be_restored">更改数据库密码的尝试未完成。</string>
<string name="remove_member_confirmation">移除</string>
<string name="sender_you_pronoun"></string>
<string name="save_servers_button">保存</string>
<string name="settings_section_title_you"></string>
<string name="remove_passphrase">移除</string>
<string name="you_have_to_enter_passphrase_every_time">您必须在每次应用程序启动时输入密码——它不存储在设备上。</string>
<string name="set_password_to_export">设置密码来导出</string>
<string name="enter_correct_current_passphrase">请输入正确的当前密码。</string>
<string name="update_database_passphrase">更新数据库密码</string>
<string name="database_is_not_encrypted">您的聊天数据库未加密——设置密码来保护它。</string>
<string name="store_passphrase_securely_without_recover">请安全地保存密码,如果您丢失了密码,您将无法访问聊天。</string>
<string name="store_passphrase_securely">请安全地保存密码,如果您丢失了密码,您将无法更改它。</string>
<string name="wrong_passphrase">数据库密码错误</string>
<string name="network_options_save">保存</string>
<string name="update_network_settings_confirmation">更新</string>
<string name="open_simplex_chat_to_accept_call">打开 <xliff:g id="appNameFull">SimpleX Chat</xliff:g> 来接听电话</string>
<string name="icon_descr_video_call">视频通话</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g> 想通过以下方式与您联系</string>
<string name="icon_descr_call_rejected">拒接来电</string>
<string name="call_connection_peer_to_peer">点对点</string>
<string name="error_with_info">错误:%s</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">如果您不能亲自见面,您可以 <b>扫描视频通话中的二维码</b>,或者您的联系人可以分享邀请链接。</string>
<string name="your_calls">您的通话</string>
<string name="call_connection_via_relay">通过中继</string>
<string name="callstatus_missed">未接来电</string>
<string name="callstatus_rejected">拒接来电</string>
<string name="v4_3_voice_messages">语音消息</string>
<string name="voice_messages">语音消息</string>
<string name="ntf_channel_calls">SimpleX Chat 通话</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">如果您不能亲自见面,<b>在视频通话</b>中出示二维码,或分享链接。</string>
<string name="your_chat_profiles">您的聊天资料</string>
<string name="icon_descr_call_missed">未接来电</string>
<string name="icon_descr_call_pending_sent">待定来电</string>
<string name="your_chat_profiles_stored_locally">您的聊天资料存储在本地,仅存储在您的设备上</string>
<string name="connection_error_auth_desc">除非您的联系人已删除此连接或此链接已被使用,否则它可能是一个错误——请报告。
\n如果要连接请让您的联系人创建另一个连接链接并检查您的网络连接是否稳定。</string>
<string name="you_are_already_connected_to_vName_via_this_link">您已经连接到 <xliff:g id="contactName" example="Alice">%1$s!</xliff:g></string>
<string name="your_chat_profile_will_be_sent_to_your_contact">您的聊天资料将被发送
\n给您的联系人</string>
<string name="users_delete_with_connections">资料和服务器连接</string>
<string name="update_network_settings_question">更新网络设置?</string>
<string name="only_you_can_delete_messages">只有您可以不可撤回地删除消息(您的联系人可以将它们标记为删除)。</string>
<string name="restart_the_app_to_create_a_new_chat_profile">重新启动应用程序以创建新的聊天资料。</string>
<string name="error_smp_test_server_auth">服务器需要授权才能创建队列,检查密码</string>
<string name="error_smp_test_failed_at_step">测试在步骤 %s 失败。</string>
<string name="failed_to_create_user_duplicate_desc">您已经有一个显示名相同的聊天资料。请选择另一个名字。</string>
<string name="icon_descr_sent_msg_status_sent">已发送</string>
<string name="mute_chat">静音</string>
<string name="image_descr_profile_image">资料图片</string>
<string name="icon_descr_settings">设置</string>
<string name="settings_section_title_settings">设置</string>
<string name="unknown_error">未知错误</string>
<string name="unknown_database_error_with_info">未知数据库错误:%s</string>
<string name="rcv_group_event_updated_group_profile">已更新的群组资料</string>
<string name="rcv_group_event_member_deleted">已删除 <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="snd_group_event_member_deleted">您删除了 <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="profile_will_be_sent_to_contact_sending_link">您的个人资料将发送给您收到此链接的联系人。</string>
<string name="trying_to_connect_to_server_to_receive_messages_with_error">正在尝试连接到用于从该联系人接收消息的服务器(错误:<xliff:g id="errorMsg">%1$s</xliff:g>)。</string>
<string name="connected_to_server_to_receive_messages_from_contact">您已连接到用于接收该联系人消息的服务器。</string>
<string name="description_you_shared_one_time_link">您分享了一次性链接</string>
<string name="message_delivery_error_desc">很可能此联系人已经删除了与您的联系。</string>
<string name="icon_descr_profile_image_placeholder">资料图片占位符</string>
<string name="smp_servers_per_user">您当前聊天资料的新连接服务器</string>
<string name="your_current_profile">您当前的资料</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">您的资料存储在您的设备上并且仅与您的联系人共享。
\n
\n<xliff:g id="appName">SimpleX</xliff:g> 服务器无法看见您的资料。</string>
<string name="your_profile_is_stored_on_your_device">您的资料、联系人和发送的消息存储在您的设备上。</string>
<string name="profile_is_only_shared_with_your_contacts">该资料仅与您的联系人共享。</string>
<string name="chat_preferences_on"></string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">此操作无法撤消——您的个人资料、联系人、消息和文件将不可撤回地丢失。</string>
<string name="messages_section_description">此设置适用于您当前聊天资料中的消息</string>
<string name="database_restore_error">恢复数据库错误</string>
<string name="restore_database_alert_confirm">恢复</string>
<string name="you_sent_group_invitation">您发送了群组邀请</string>
<string name="you_rejected_group_invitation">您拒绝了群组邀请</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">您当前的聊天数据库将被删除并替换为导入的数据库。
\n此操作无法撤消——您的个人资料、联系人、消息和文件将不可撤回地丢失。</string>
<string name="rcv_group_event_member_added">已邀请 <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="save_group_profile">保存群组资料</string>
<string name="error_smp_test_certificate">服务器地址中的证书指纹可能不正确</string>
<string name="network_error_desc">请使用 <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g> 检查您的网络连接,然后重试。</string>
<string name="v4_5_multiple_chat_profiles">多个聊天资料</string>
<string name="database_initialization_error_desc">数据库不能正常工作。点击了解更多</string>
<string name="message_delivery_error_title">消息传递错误</string>
<string name="ttl_hour">%d 小时</string>
<string name="ttl_hours">%d 小时</string>
<string name="ttl_month">%d 月</string>
<string name="ttl_sec">%d 秒</string>
<string name="how_simplex_works"><xliff:g id="appName">SimpleX</xliff:g> 是如何工作的</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">确保 WebRTC ICE 服务器地址格式正确、每行分开且不重复。</string>
<string name="many_people_asked_how_can_it_deliver">许多人问:<i>如果<xliff:g id="appName">SimpleX</xliff:g>没有用户标识符,它是怎样传递信息的?</i></string>
<string name="ensure_smp_server_address_are_correct_format_and_unique">确保 SMP 服务器地址格式正确、每行分开且不重复。</string>
<string name="markdown_help">Markdown 帮助</string>
<string name="mark_code_verified">标记为已验证</string>
<string name="make_private_connection">建立私密连接</string>
<string name="group_preview_join_as">以 %s 身份加入</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">如果您收到 <xliff:g id="appName">SimpleX Chat</xliff:g> 邀请链接,您可以在浏览器中打开它:</string>
<string name="mark_read">标记为已读</string>
<string name="mark_unread">标记为未读</string>
<string name="markdown_in_messages">在消息中使用 Markdown</string>
<string name="file_with_path">文件:%s</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">成员将被移出群组——此操作无法撤消!</string>
<string name="v4_5_message_draft">消息草稿</string>
<string name="thousand_abbreviation">k</string>
<string name="marked_deleted_description">标记为已删除</string>
<string name="ttl_week">%d 星期</string>
<string name="you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved">您将停止接收来自该群组的消息。聊天记录将被保留。</string>
<string name="group_member_role_member">成员</string>
<string name="member_info_section_title_member">成员</string>
<string name="ttl_weeks">%d 星期</string>
<string name="ttl_min">%d 分钟</string>
<string name="ttl_months">%d 月</string>
<string name="network_and_servers">网络和服务器</string>
<string name="network_settings_title">网络设置</string>
<string name="moderated_description">已被管理员移除</string>
<string name="network_use_onion_hosts_prefer_desc">Onion 主机将在可用时使用。</string>
<string name="network_use_onion_hosts_no_desc">将不会使用 Onion 主机。</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app">📱 手机:点击<b>在手机应用程序中打开</b>,然后在应用程序中点击<b>连接</b></string>
<string name="delete_message_mark_deleted_warning">消息将被标记为删除。收件人将能够揭示此消息。</string>
<string name="v4_5_reduced_battery_usage_descr">更多改进即将推出!</string>
<string name="no_contacts_selected">未选择联系人</string>
<string name="one_time_link">一次性邀请链接</string>
<string name="feature_off">关闭</string>
<string name="network_use_onion_hosts_required_desc">连接需要 Onion 主机。</string>
<string name="network_use_onion_hosts_prefer_desc_in_alert">Onion 主机将在可用时使用。</string>
<string name="chat_item_ttl_none">从不</string>
<string name="feature_offered_item">已提供 %s</string>
<string name="feature_offered_item_with_param">已提供 %s%2s</string>
<string name="new_in_version">%s 中的新功能</string>
<string name="add_contact">一次性邀请链接</string>
<string name="ok">好的</string>
<string name="no_details">没有细节</string>
<string name="only_stored_on_members_devices">(仅由群组成员存储)</string>
<string name="only_you_can_send_voice">只有您可以发送语音消息。</string>
<string name="delete_message_cannot_be_undone_warning">消息将被删除——此操作无法撤消!</string>
<string name="images_limit_desc">一次只能发送10张图片</string>
<string name="icon_descr_more_button">更多</string>
<string name="new_database_archive">新数据库存档</string>
<string name="old_database_archive">旧数据库存档</string>
<string name="new_member_role">新成员角色</string>
<string name="no_contacts_to_add">没有联系人可添加</string>
<string name="network_status">网络状态</string>
<string name="chat_preferences_off">关闭</string>
<string name="network_use_onion_hosts_no_desc_in_alert">将不会使用 Onion 主机。</string>
<string name="network_use_onion_hosts_required_desc_in_alert">连接需要 Onion 主机。</string>
<string name="no_received_app_files">没有收到或发送的文件</string>
<string name="sender_cancelled_file_transfer">发送人已取消文件传输。</string>
<string name="share_verb">分享</string>
<string name="send_live_message">发送实时消息</string>
<string name="this_text_is_available_in_settings">此文本在设置中可用</string>
<string name="icon_descr_received_msg_status_unread">未读</string>
<string name="saved_ICE_servers_will_be_removed">保存的 WebRTC ICE 服务器将被删除。</string>
<string name="is_verified">%s 已验证</string>
<string name="smp_servers_use_server_for_new_conn">用于新连接</string>
<string name="network_disable_socks">使用直接互联网连接?</string>
<string name="network_use_onion_hosts_required">必要</string>
<string name="save_and_notify_contact">保存并通知联系人</string>
<string name="save_and_notify_contacts">保存并通知联系人</string>
<string name="read_more_in_github">在我们的 GitHub 仓库中阅读更多内容。</string>
<string name="reject">拒绝</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">为了保护隐私,而不是所有其他平台使用的用户 ID<xliff:g id="appName">SimpleX</xliff:g> 具有消息队列的标识符,每个联系人都是分开的。</string>
<string name="network_option_tcp_connection_timeout">TCP 连接超时</string>
<string name="feature_received_prohibited">收到,禁止</string>
<string name="accept_feature_set_1_day">设定1天</string>
<string name="v4_2_security_assessment_desc">SimpleX Chat 安全性由 Trail of Bits 审核。</string>
<string name="simplex_link_mode_browser_warning">在浏览器中打开链接可能会降低连接的隐私和安全性。SimpleX 上不受信任的链接将显示为红色。</string>
<string name="restore_database_alert_desc">恢复数据库备份后请输入之前的密码。 此操作无法撤消。</string>
<string name="contact_developers">请更新应用程序并联系开发者。</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">开源协议和代码——任何人都可以运行服务器。</string>
<string name="paste_button">粘贴</string>
<string name="network_option_ping_count">PING 次数</string>
<string name="prohibit_sending_voice">禁止发送语音消息。</string>
<string name="network_option_ping_interval">PING 间隔</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">请检查您使用的链接是否正确,或者让您的联系人给您发送另一个链接。</string>
<string name="network_option_protocol_timeout">协议超时</string>
<string name="reject_contact_button">拒绝</string>
<string name="reply_verb">回复</string>
<string name="network_options_reset_to_defaults">重置为默认</string>
<string name="run_chat_section">运行聊天程序</string>
<string name="save_archive">保存存档</string>
<string name="scan_code">扫码</string>
<string name="scan_code_from_contacts_app">从您联系人的应用程序中扫描安全码。</string>
<string name="security_code">安全码</string>
<string name="secret">秘密</string>
<string name="v4_2_security_assessment">安全评估</string>
<string name="ntf_channel_messages">SimpleX 消息</string>
<string name="is_not_verified">%s 未验证</string>
<string name="v4_5_italian_interface_descr">感谢用户——通过 Weblate 做出贡献!</string>
<string name="first_platform_without_user_ids">第一个没有任何用户标识符的平台——专为隐私保护设计。</string>
<string name="group_is_decentralized">该小组是完全分散式的——它只对成员可见。</string>
<string name="image_decoding_exception_desc">图像无法解码。 请尝试不同的图像或联系开发者。</string>
<string name="theme">主题</string>
<string name="delete_files_and_media_desc">此操作无法撤消——所有接收和发送的文件和媒体都将被删除。 低分辨率图片将保留。</string>
<string name="member_role_will_be_changed_with_invitation">角色将更改为“%s”。 该成员将收到新的邀请。</string>
<string name="enable_automatic_deletion_message">此操作无法撤消——早于所选的发送和接收的消息将被删除。 这可能需要几分钟时间。</string>
<string name="this_QR_code_is_not_a_link">此二维码不是链接!</string>
<string name="switch_receiving_address_desc">此功能是实验性的! 它仅在其他客户端安装了 4.2 版时才有效。 地址更改完成后,您应该会在对话中看到该消息——请检查您是否仍能收到来自该联系人(或群组成员)的消息。</string>
<string name="this_link_is_not_a_valid_connection_link">此链接不是有效的连接链接!</string>
<string name="to_start_a_new_chat_help_header">开始新的聊天</string>
<string name="to_verify_compare">要与您的联系人验证端到端加密,请比较(或扫描)您设备上的代码。</string>
<string name="unmute_chat">取消静音</string>
<string name="update_onion_hosts_settings_question">更新 .onion 主机设置?</string>
<string name="update_network_session_mode_question">更新传输隔离模式?</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(从剪贴板扫描或粘贴)</string>
<string name="smp_server_test_secure_queue">保护队列</string>
<string name="reveal_verb">揭示</string>
<string name="la_notice_turn_on">打开</string>
<string name="icon_descr_sent_msg_status_send_failed">发送失败</string>
<string name="icon_descr_sent_msg_status_unauthorized_send">未经授权发送</string>
<string name="images_limit_title">太多图片!</string>
<string name="icon_descr_server_status_pending">待办的</string>
<string name="switch_receiving_address_question">切换接收地址吗?</string>
<string name="ask_your_contact_to_enable_voice">请让您的联系人启用发送语音消息。</string>
<string name="icon_descr_record_voice_message">录制语音消息</string>
<string name="icon_descr_send_message">发消息</string>
<string name="reset_verb">重置</string>
<string name="send_verb">发送</string>
<string name="send_live_message_desc">发送实时消息——它会在您键入时为收件人更新</string>
<string name="add_contact_or_create_group">开始新聊天</string>
<string name="to_share_with_your_contact">(与您的联系人分享)</string>
<string name="to_connect_via_link_title">通过链接连接</string>
<string name="set_contact_name">设置联系人姓名</string>
<string name="connection_you_accepted_will_be_cancelled">您接受的连接将被取消!</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">您与之共享此链接的联系人将无法连接!</string>
<string name="show_QR_code">显示二维码</string>
<string name="chat_with_the_founder">发送问题和想法</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">保护您的隐私和安全的消息传递和应用程序平台。</string>
<string name="strikethrough">删去</string>
<string name="people_can_connect_only_via_links_you_share">人们只能通过您共享的链接与您建立联系。</string>
<string name="next_generation_of_private_messaging">下一代私密通讯软件</string>
<string name="paste_the_link_you_received">粘贴收到的链接</string>
<string name="alert_title_skipped_messages">已跳过消息</string>
<string name="settings_section_title_support">支持 SIMPLEX CHAT</string>
<string name="send_link_previews">发送链接预览</string>
<string name="settings_section_title_socks">SOCKS 代理</string>
<string name="stop_chat_question">停止聊天程序?</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">停止聊天以便导出、导入或删除聊天数据库。在聊天停止期间,您将无法收发消息。</string>
<string name="restore_database">恢复数据库备份</string>
<string name="restore_database_alert_title">恢复数据库备份?</string>
<string name="button_remove_member">删除成员</string>
<string name="button_send_direct_message">发送私信</string>
<string name="receiving_via">接收通过</string>
<string name="sending_via">发送通过</string>
<string name="conn_stats_section_title_servers">服务器</string>
<string name="switch_receiving_address">切换接收地址</string>
<string name="v4_5_message_draft_descr">保留最后的消息草稿及其附件。</string>
<string name="v4_5_private_filenames">私密文件名</string>
<string name="v4_4_french_interface_descr">感谢用户——通过 Weblate 做出贡献!</string>
<string name="v4_5_transport_isolation">传输隔离</string>
<string name="paste_connection_link_below_to_connect">将您收到的链接粘贴到下面的框中以与您的联系人联系。</string>
<string name="share_invitation_link">分享邀请链接</string>
<string name="this_string_is_not_a_connection_link">此字符串不是连接链接!</string>
<string name="send_us_an_email">给我们发电子邮件</string>
<string name="smp_servers">SMP 服务器</string>
<string name="sending_files_not_yet_supported">尚不支持发送文件</string>
<string name="trying_to_connect_to_server_to_receive_messages">正在尝试连接到用于从该联系人接收消息的服务器。</string>
<string name="receiving_files_not_yet_supported">尚不支持接收文件</string>
<string name="unknown_message_format">未知消息格式</string>
<string name="smp_servers_test_server">测试服务器</string>
<string name="smp_servers_test_servers">测试服务器</string>
<string name="simplex_link_contact">SimpleX 联系地址</string>
<string name="simplex_link_invitation">SimpleX 一次性邀请</string>
<string name="simplex_link_group">SimpleX 群组链接</string>
<string name="simplex_link_mode">SimpleX 链接</string>
<string name="sender_may_have_deleted_the_connection_request">发送人可能已删除连接请求。</string>
<string name="smp_servers_preset_server">预设服务器</string>
<string name="image_descr_qr_code">二维码</string>
<string name="network_session_mode_transport_isolation">传输隔离</string>
<string name="share_link">分享链接</string>
<string name="select_contacts">选择联系人</string>
<string name="skip_inviting_button">跳过邀请成员</string>
<string name="switch_verb">转变</string>
<string name="prohibit_sending_voice_messages">禁止发送语音消息。</string>
<string name="only_your_contact_can_send_voice">只有您的联系人可以发送语音消息。</string>
<string name="prohibit_direct_messages">禁止直接向成员发送私信。</string>
<string name="protect_app_screen">保护应用程序屏幕</string>
<string name="settings_section_title_themes">主题</string>
<string name="stop_chat_to_enable_database_actions">停止聊天以启用数据库操作。</string>
<string name="chat_item_ttl_seconds">%s 秒</string>
<string name="alert_message_no_group">该群组已不存在。</string>
<string name="group_invitation_tap_to_join">点击加入</string>
<string name="stop_chat_confirmation">停止</string>
<string name="restart_the_app_to_use_imported_chat_database">重新启动应用程序以使用导入的聊天数据库。</string>
<string name="group_member_role_owner">所有者</string>
<string name="group_member_status_removed">已删除</string>
<string name="role_in_group">角色</string>
<string name="network_option_seconds_label"></string>
<string name="network_options_revert">恢复</string>
<string name="reset_color">重置颜色</string>
<string name="save_color">保存颜色</string>
<string name="v4_5_reduced_battery_usage">减少电池使用量</string>
<string name="v4_5_private_filenames_descr">为了保护时区,图像/语音文件使用 UTC。</string>
<string name="use_chat">使用聊天</string>
<string name="read_more_in_github_with_link">在我们的 <font color="#0088ff">GitHub 存储库</font> 中阅读更多内容。</string>
<string name="auth_open_chat_console">打开聊天控制台</string>
<string name="auth_stop_chat">Stop chat</string>
<string name="toast_permission_denied">权限被拒绝!</string>
<string name="chat_help_tap_button">点击按钮</string>
<string name="thank_you_for_installing_simplex">感谢您安装 <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="use_camera_button">使用相机</string>
<string name="smp_servers_preset_address">预设服务器地址</string>
<string name="smp_servers_scan_qr">扫描服务器二维码</string>
<string name="smp_servers_test_failed">服务器测试失败!</string>
<string name="smp_servers_test_some_failed">一些服务器未通过测试:</string>
<string name="star_on_github">在 GitHub 上加星</string>
<string name="save_and_notify_group_members">保存并通知群组成员</string>
<string name="icon_descr_speaker_off">扬声器关闭</string>
<string name="icon_descr_speaker_on">扬声器开启</string>
<string name="rcv_group_event_user_deleted">已将您移除</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">更新设置会将客户端重新连接到所有服务器。</string>
<string name="theme_system">系统</string>
<string name="v4_4_live_messages_desc">对方会在您键入时看到更新。</string>
<string name="view_security_code">查看安全码</string>
<string name="voice_message_with_duration">语音消息 (<xliff:g id="duration">%1$s</xliff:g>)</string>
<string name="waiting_for_image">等待图像中</string>
<string name="welcome">欢迎!</string>
<string name="personal_welcome">欢迎 <xliff:g>%1$s</xliff:g></string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">当您的联系人设备在线时,您将可以连接,请稍等或稍后查看!</string>
<string name="rate_the_app">评价此应用程序</string>
<string name="network_enable_socks">使用 SOCKS 代理?</string>
<string name="network_socks_toggle">使用 SOCKS 代理(端口 9050</string>
<string name="total_files_count_and_size">%d 个文件,总大小为 %s</string>
<string name="you_joined_this_group">您已加入此群组</string>
<string name="you_are_invited_to_group">您被邀请加入群组</string>
<string name="chat_preferences_default">默认(%s</string>
<string name="voice_prohibited_in_this_chat">此聊天中禁止语音消息。</string>
<string name="voice_messages_are_prohibited">语音信息在该群组中被禁用。</string>
<string name="verify_security_code">验证安全码</string>
<string name="using_simplex_chat_servers">使用 <xliff:g id="appNameFull">SimpleX Chat</xliff:g> 服务器。</string>
<string name="simplex_link_connection">通过 <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g></string>
<string name="group_invitation_item_description">邀请至群组 <xliff:g id="group_name">%1$s</xliff:g></string>
<string name="icon_descr_address"><xliff:g id="appName">SimpleX</xliff:g> 地址</string>
<string name="icon_descr_simplex_team"><xliff:g id="appName">SimpleX</xliff:g> 团队</string>
<string name="group_info_section_title_num_members"><xliff:g id="num_members">%1$s</xliff:g> 成员</string>
<string name="chat_preferences_yes"></string>
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">您可以将您的地址作为链接或二维码共享——任何人都可以连接到您。 如果您以后删除它,您不会丢失您的联系人。</string>
<string name="you_control_servers_to_receive_your_contacts_to_send">您可以控制通过哪些服务器<b>接收</b>消息,您的联系人 - 您用来向他们发送消息的服务器。</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">您的联系人可以从应用程序中扫描二维码。</string>
<string name="you_will_be_connected_when_group_host_device_is_online">您将在组主设备上线时连接到该群组,请稍等或稍后再检查!</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">当您启动应用或在应用程序驻留后台超过30 秒后,您将需要进行身份验证。</string>
<string name="archive_created_on_ts">创建于 <xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="you_can_connect_to_simplex_chat_founder">您可以 <font color="#0088ff"> 连接到 <xliff:g id="appNameFull"> SimpleX Chat </xliff:g> 开发者提出任何问题并接收更新 </font></string>
<string name="you_accepted_connection">您已接受连接</string>
<string name="your_SMP_servers">您的 SMP 服务器</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g> 已跳过消息</string>
<string name="ttl_s">%ds</string>
<string name="whats_new">更新内容</string>
<string name="group_preview_you_are_invited">您被邀请加入群组</string>
<string name="you_have_no_chats">您没有聊天记录</string>
<string name="icon_descr_waiting_for_image">等待图像中</string>
<string name="voice_message">语音消息</string>
<string name="voice_messages_prohibited">语音消息禁止发送!</string>
<string name="you_need_to_allow_to_send_voice">您需要允许您的联系人发送语音消息才能发送它们。</string>
<string name="scan_QR_code">扫描二维码</string>
<string name="you_invited_your_contact">您邀请了您的联系人</string>
<string name="contact_wants_to_connect_with_you">想要与您连接!</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">您的联系人需要在线才能完成连接。
\n您可以取消此连接并删除联系人稍后尝试使用新链接</string>
<string name="image_descr_simplex_logo"><xliff:g id="appName">SimpleX</xliff:g> 标志</string>
<string name="your_simplex_contact_address">您的 <xliff:g id="appName">SimpleX</xliff:g> 联系地址</string>
<string name="install_simplex_chat_for_terminal">为终端安装 <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="use_simplex_chat_servers__question">使用 <xliff:g id="appNameFull">SimpleX Chat</xliff:g> 服务器?</string>
<string name="we_do_not_store_contacts_or_messages_on_servers">我们不会在服务器上存储您的任何联系人或消息(一旦发送)。</string>
<string name="webrtc_ice_servers">WebRTC ICE 服务器</string>
<string name="relay_server_protects_ip">中继服务器保护您的 IP 地址,但它可以观察通话的持续时间。</string>
<string name="relay_server_if_necessary">中继服务器仅在必要时使用。其他人可能会观察到您的IP地址。</string>
<string name="your_ice_servers">您的 ICE 服务器</string>
<string name="icon_descr_video_off">视频关闭</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">您可以通过应用设置/数据库或重启应用开始聊天。</string>
<string name="snd_group_event_changed_member_role">您将 %s 的角色更改为 %s</string>
<string name="snd_group_event_changed_role_for_yourself">您将自己的角色更改为 %s</string>
<string name="snd_conn_event_switch_queue_phase_completed">您已更改地址</string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">您可以共享链接或二维码——任何人都可以加入该群组。如果您稍后将其删除,您不会失去该组的成员。</string>
<string name="conn_level_desc_indirect">间接(<xliff:g id="conn_level">%1$s</xliff:g></string>
<string name="you_can_also_connect_by_clicking_the_link">您也可以通过点击链接进行连接。 如果它在浏览器中打开,请单击<b>在移动应用程序中打开</b>按钮。</string>
<string name="app_name"><xliff:g id="appName">SimpleX</xliff:g></string>
<string name="you_will_join_group">您将加入此链接指向的群组并连接到其群组成员。</string>
<string name="description_via_group_link">通过群组链接</string>
<string name="description_via_one_time_link">通过一次性链接</string>
<string name="description_via_contact_address_link">通过联系地址链接</string>
<string name="simplex_link_mode_browser">通过浏览器</string>
<string name="smp_servers_your_server">您的服务器</string>
<string name="network_use_onion_hosts_prefer">当可用时</string>
<string name="network_use_onion_hosts">使用 .onion 主机</string>
<string name="your_ICE_servers">您的 ICE 服务器</string>
<string name="core_simplexmq_version">simplexmq: v%s (%2s)</string>
<string name="section_title_welcome_message">欢迎消息</string>
<string name="you_control_your_chat">您的聊天由您掌控!</string>
<string name="you_can_use_markdown_to_format_messages__prompt">您可以使用 markdown 来编排消息格式:</string>
<string name="ttl_h">%dh</string>
<string name="ttl_days">%d 天</string>
<string name="ttl_w">%dw</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">您被邀请加入群组。 加入以与群组成员联系。</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">你加入了这个群组。连接到邀请组成员。</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">您更改了 %s 的地址</string>
<string name="snd_group_event_user_left">您已离开</string>
<string name="num_contacts_selected"><xliff:g id="connection ID" example="1">%1$d</xliff:g> 已选择联系人</string>
<string name="chat_preferences_you_allow">您允许</string>
<string name="v4_2_auto_accept_contact_requests_desc">带有可选的欢迎消息。</string>
<string name="ttl_m">%dm</string>
<string name="ttl_mth">%dmth</string>
<string name="waiting_for_file">等待文件中</string>
<string name="contact_sent_large_file">您的联系人发送的文件大于当前支持的最大大小 (&lt;xliff:g xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\" id=\"maxFileSize\"&gt;%1$s&lt;/xliff :g&gt;).</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">当您的连接请求被接受后,您将可以连接,请稍等或稍后检查!</string>
<string name="smp_servers_use_server">使用服务器</string>
<string name="smp_servers_your_server_address">您的服务器地址</string>
<string name="icon_descr_video_on">视频开启</string>
<string name="v4_3_voice_messages_desc">最多 40 秒,立即收到。</string>
<string name="v4_4_verify_connection_security">验证连接安全</string>
<string name="moderated_item_description">由 %s 审核</string>
<string name="moderate_verb">管理员移除</string>
<string name="moderate_message_will_be_deleted_warning">将为所有成员删除该消息。</string>
<string name="moderate_message_will_be_marked_warning">该消息将对所有成员显示为已审核。</string>
<string name="delete_member_message__question">删除成员消息?</string>
<string name="group_member_role_observer">观察者</string>
<string name="you_are_observer">您是观察者</string>
<string name="error_updating_link_for_group">更新群组链接错误</string>
<string name="observer_cant_send_message_title">您无法发送消息!</string>
<string name="initial_member_role">初始角色</string>
<string name="observer_cant_send_message_desc">请联系群组管理员。</string>
<string name="language_system">系统</string>
</resources>

View File

@@ -1,2 +1,986 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="chat_item_ttl_week">1 個星期</string>
<string name="accept_requests">接受請求</string>
<string name="a_plus_b">a + b</string>
<string name="about_simplex">關於 SimpleX</string>
<string name="accept_call_on_lock_screen">接受</string>
<string name="accept_feature">接受</string>
<string name="chat_item_ttl_day">1 日</string>
<string name="chat_item_ttl_month">1 個月</string>
<string name="accept_contact_button">接受</string>
<string name="about_simplex_chat">關於 <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="accept_connection_request__question">接受連線請求?</string>
<string name="callstatus_accepted">已接受收聽電話</string>
<string name="network_enable_socks_info">要在端口 9050 啟動 SOCKS 代理伺服器嗎?在啟用這個選項之前,必須先啟動代理伺服器。</string>
<string name="group_member_role_admin">管理員</string>
<string name="above_then_preposition_continuation">然後選按:</string>
<string name="smp_servers_preset_add">加入預設伺服器</string>
<string name="smp_servers_add">新增伺服器 …</string>
<string name="accept">接受</string>
<string name="auth_unavailable">認證無效</string>
<string name="allow_verb">允許</string>
<string name="display_name__field">顯示名稱:</string>
<string name="full_name__field">全名:</string>
<string name="onboarding_notifications_mode_service_desc"><b>使用更多電量</b>!通知服務會長期在背景中運行 一但有訊息就會顯示在通知內。</string>
<string name="onboarding_notifications_mode_periodic_desc"><b>對電量也不錯</b>。通知服務會每十分鐘運行一次。你可能會錯過電話通話或訊息。</string>
<string name="answer_call">回應通話請求</string>
<string name="clear_contacts_selection_button">清除</string>
<string name="allow_direct_messages">允許在群組內選擇成員後傳送訊息。</string>
<string name="ttl_sec">%d 秒</string>
<string name="feature_cancelled_item">已取消 %s</string>
<string name="v4_2_auto_accept_contact_requests">自動接受聯絡人請求</string>
<string name="group_unsupported_incognito_main_profile_sent">匿名聊天模式在這裡是不支援 - 你的個人檔案會顯示於群組內</string>
<string name="chat_preferences_no">不要</string>
<string name="allow_to_send_disappearing">允許傳送自動銷毀的訊息。</string>
<string name="database_initialization_error_title">無法初始化數據庫</string>
<string name="notifications_mode_service">一直開啟</string>
<string name="auth_disable_simplex_lock">關閉 SimpleX 鎖定</string>
<string name="auth_enable_simplex_lock">啟動 SimpleX 鎖定</string>
<string name="copy_verb">複製</string>
<string name="reply_verb">回覆</string>
<string name="share_verb">分享</string>
<string name="attach">附件</string>
<string name="chat_with_developers">和開發人員對話</string>
<string name="your_chats">你的對話</string>
<string name="share_file">分享檔案 …</string>
<string name="share_message">分享訊息</string>
<string name="icon_descr_cancel_image_preview">取消圖片預覽</string>
<string name="allow_voice_messages_question">允許使用語音訊息?</string>
<string name="cancel_verb">取消</string>
<string name="icon_descr_cancel_live_message">取消實況訊息</string>
<string name="add_new_contact_to_create_one_time_QR_code"><b>新增新的聯絡人</b>:新增新的聯絡人可以使用二維碼建立你的一次性二維碼。</string>
<string name="scan_QR_code_to_connect_to_contact_who_shows_QR_code"><b>掃描二維碼</b>:連接到向你出示二維碼的聯絡人。</string>
<string name="choose_file">選擇檔案</string>
<string name="use_camera_button">使用相機</string>
<string name="from_gallery_button">從圖片庫選擇圖片</string>
<string name="accept_contact_incognito_button">接受匿名聊天模式</string>
<string name="clear_chat_warning">所有訊息記錄會刪除 - 這不能還原!這些訊息只會在你裝置中刪除。</string>
<string name="clear_verb">清除</string>
<string name="clear_chat_question">要清除對話記錄?</string>
<string name="icon_descr_cancel_link_preview">取消連結預覽</string>
<string name="clear_chat_menu_action">清除</string>
<string name="clear_chat_button">清除對話記錄</string>
<string name="share_invitation_link">分享邀請連結</string>
<string name="chat_with_the_founder">傳送問題和想法給開發者</string>
<string name="how_to_use_simplex_chat">如何使用</string>
<string name="install_simplex_chat_for_terminal">使用終端機安裝 <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="app_version_title">應用程式版本</string>
<string name="all_your_contacts_will_remain_connected">你的所有聯絡人會保持連接。</string>
<string name="app_version_code">程式建構:%s</string>
<string name="app_version_name">應用程式版本v%s</string>
<string name="share_link">分享連結</string>
<string name="accept_automatically">自動接受所有請求</string>
<string name="your_current_profile">你目前的個人檔案</string>
<string name="display_name_cannot_contain_whitespace">顯示的名稱字與字中間不能有空白。</string>
<string name="save_preferences_question">儲存設定?</string>
<string name="display_name">顯示名稱</string>
<string name="full_name_optional__prompt">全名(可選)</string>
<string name="callstatus_error">通話出現錯誤</string>
<string name="callstatus_calling">正在撥打 …</string>
<string name="callstatus_in_progress">通話中</string>
<string name="secret">私密</string>
<string name="callstate_connected">已連接</string>
<string name="onboarding_notifications_mode_off_desc"><b>對電量最好</b>。 只有在應用程式運行中的時侯才可以接收訊息,後台服務並不會使用。</string>
<string name="encrypted_video_call">端對端加密視訊通話</string>
<string name="video_call_no_encryption">視訊通話(沒有端對端加密)</string>
<string name="call_already_ended">通話已經結束了!</string>
<string name="icon_descr_audio_off">關閉語音</string>
<string name="icon_descr_audio_on">開啟語音</string>
<string name="icon_descr_call_ended">通話已經取消了</string>
<string name="icon_descr_call_progress">通話中</string>
<string name="icon_descr_speaker_on">開啟喇叭</string>
<string name="settings_section_title_calls">通話</string>
<string name="appearance_settings">主題</string>
<string name="audio_call_no_encryption">語音通話(沒有端對端加密)</string>
<string name="icon_descr_audio_call">語音通話</string>
<string name="settings_audio_video_calls">語音 &amp; 視訊通話</string>
<string name="icon_descr_video_call">視訊通話</string>
<string name="bold">粗體</string>
<string name="auto_accept_images">自動接收圖片</string>
<string name="full_backup">備份應用程式資料</string>
<string name="settings_section_title_icon">應用程式圖示</string>
<string name="chat_database_imported">已匯入對話資料庫</string>
<string name="keychain_is_storing_securely">Android 金鑰庫是用於安全地儲存密碼 - 確保通知服務的運作</string>
<string name="impossible_to_recover_passphrase"><b>請注意</b>:如果你忘記了密碼你將不能再次復原或更改密碼。</string>
<string name="keychain_allows_to_receive_ntfs">當你重新啟動應用程式或更改密碼後, Android 金鑰庫將會用來安全地儲存密碼 - 將會允許接到通知。</string>
<string name="chat_is_stopped_indication">聊天室已停止運作</string>
<string name="only_group_owners_can_change_prefs">只有這個群組的負責人才能更改群組內的設定。</string>
<string name="change_verb">修改</string>
<string name="users_add">加入新的個人檔案</string>
<string name="users_delete_all_chats_deleted">所有對話和對話記錄會刪除 - 這不能還原!</string>
<string name="incognito">匿名聊天模式</string>
<string name="chat_preferences_always">經常</string>
<string name="chat_preferences_on">開啟</string>
<string name="your_preferences">你的設定</string>
<string name="allow_your_contacts_to_send_voice_messages">允許你的聯絡人傳送語音訊息。</string>
<string name="allow_voice_messages_only_if">只能在你的聯絡人允許使用語言訊息的時候,才能使用語音訊息。</string>
<string name="both_you_and_your_contact_can_send_disappearing">你和你的聯絡人都可以傳送自動銷毀的訊息。</string>
<string name="only_you_can_send_disappearing">只有你能傳送自動銷毀的訊息。</string>
<string name="both_you_and_your_contact_can_send_voice">你和你的聯絡人都可以傳送語音訊息。</string>
<string name="v4_2_group_links_desc">管理員可以建立可以加入群組的連結。</string>
<string name="v4_3_improved_server_configuration_desc">使用二維碼掃描並新增伺服器。</string>
<string name="chat_is_running">聊天室運行中</string>
<string name="chat_database_section">聊天室數據庫</string>
<string name="chat_is_stopped">聊天室已經停止</string>
<string name="stop_chat_confirmation">停止</string>
<string name="chat_database_deleted">已刪除數據庫的對話內容</string>
<string name="stop_chat_to_enable_database_actions">停止聊天室以啟用數據庫功能。</string>
<string name="change_database_passphrase_question">更改數據庫密碼?</string>
<string name="leave_group_question">確定要退出群組?</string>
<string name="leave_group_button">退出</string>
<string name="alert_title_cant_invite_contacts">無法邀請該聯絡人!</string>
<string name="rcv_group_event_member_connected">已連接</string>
<string name="rcv_group_event_member_left">已離開</string>
<string name="invite_prohibited">無法邀請該聯絡人!</string>
<string name="create_secret_group_title">建立私密群組</string>
<string name="button_leave_group">退出群組</string>
<string name="group_member_status_connected">已連接</string>
<string name="group_display_name_field">群組顯示名稱:</string>
<string name="group_full_name_field">群組全名:</string>
<string name="chat_preferences">對話設定</string>
<string name="chat_preferences_off">關閉</string>
<string name="chat_preferences_yes"></string>
<string name="timed_messages">自動銷毀訊息</string>
<string name="group_members_can_send_dms">群組內的成員可以私訊群組內的成員。</string>
<string name="ttl_min">%d 分鐘</string>
<string name="ttl_month">%d 月</string>
<string name="callstatus_ended">通話結束 <xliff:g id="duration" example="01:15">%1$s</xliff:g></string>
<string name="icon_descr_cancel_file_preview">取消檔案預覽</string>
<string name="cannot_receive_file">無法接收文件</string>
<string name="failed_to_create_user_duplicate_title">重複的顯示名稱!</string>
<string name="network_session_mode_entity_description">一個單獨的 TCP 連接(和 SOCKS 憑證)將用於<b>每個聯絡人和群組內的成員</b>
\n<b>請注意</b>:如果你有很多連接,你的電話電量和數據流量的消耗率會大大增加,一些連接有機會會連接失敗。</string>
<string name="network_session_mode_user_description">一個單獨的 TCP 連接(和 SOCKS 憑證)將用於&lt;b&gt;每個聊天室的設定&lt;b&gt;</string>
<string name="back">返回</string>
<string name="turning_off_service_and_periodic">省電模式運行中,關閉了背景通知服務和定期更新接收訊息。你可以在通知設定內重新啟用。</string>
<string name="settings_section_title_incognito">匿名聊天模式</string>
<string name="chat_preferences_default">預設 (%s)</string>
<string name="group_preferences">群組設定</string>
<string name="contact_preferences">聯絡人設定</string>
<string name="share_image">分享圖片 …</string>
<string name="both_you_and_your_contacts_can_delete">你和你的聯絡人都可以不可逆地刪除已經傳送的訊息</string>
<string name="server_connected">已連接</string>
<string name="simplex_link_mode_description">簡介</string>
<string name="simplex_link_mode_full">完整連結</string>
<string name="it_can_disabled_via_settings_notifications_still_shown"><b>你可以通過設定關閉</b> 當應用程式運行時,通知服務仍然會運行。</string>
<string name="notifications_mode_service_desc">通知服務會一直在後台中運行 - 一但接收到新訊息就會顯示於通知內。</string>
<string name="notifications_mode_off_desc">應用程式只會在運行中的時候才會收到訊息的通知。</string>
<string name="icon_descr_asked_to_receive">要求接收圖片</string>
<string name="network_settings">進階網路設定</string>
<string name="rcv_conn_event_switch_queue_phase_completed">已修改你的地址</string>
<string name="rcv_conn_event_switch_queue_phase_changing">更改地址中 …</string>
<string name="snd_conn_event_switch_queue_phase_changing">更改地址中 …</string>
<string name="v4_4_disappearing_messages">自動銷毀訊息</string>
<string name="add_contact_or_create_group">開始新對話/創建新群組</string>
<string name="create_group">建立私密群組</string>
<string name="share_one_time_link">建立一次性邀請連結</string>
<string name="to_share_with_your_contact">(分享給你的聯絡人)</string>
<string name="chat_help_tap_button">點擊按鈕</string>
<string name="thank_you_for_installing_simplex">感謝你安裝 <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
<string name="mute_chat">靜音</string>
<string name="unmute_chat">解除靜音</string>
<string name="your_settings">你的設定</string>
<string name="smp_servers_add_to_another_device">加入到另一個裝置上</string>
<string name="smp_servers_check_address">檢查輸入的伺服器地址然後再試一次。</string>
<string name="chat_console">終端機對話</string>
<string name="star_on_github">於 Github 給個星星</string>
<string name="incognito_info_protects">匿名聊天模式會保護你的真實個人檔案名稱和頭像 — 當有新聯絡人的時候會自動建立一個隨機性的個人檔案</string>
<string name="incognito_info_allows">這樣就會每一個對話中也擁有不同的顯示名稱並且沒有任何的個人資料可用於分享或有機會外洩</string>
<string name="incognito_info_find">若要查找用於匿名聊天模式連接的個人檔案,請點擊聯絡人或群組名稱。</string>
<string name="allow_disappearing_messages_only_if">只有你的聯絡人允許的情況下,才允許自動銷毀訊息。</string>
<string name="allow_your_contacts_to_send_disappearing_messages">允許你的聯絡人傳送自動銷毀的訊息。</string>
<string name="allow_irreversible_message_deletion_only_if">只有你的聯絡人允許的情況下,才允許不可逆地將訊息刪除。</string>
<string name="allow_your_contacts_irreversibly_delete">允許你的聯絡人可以不可逆地刪除已發送的訊息。</string>
<string name="allow_to_delete_messages">允許將不可撤銷的訊息刪除。</string>
<string name="allow_to_send_voice">允許傳送語音訊息。</string>
<string name="delete_after">多久後刪除</string>
<string name="all_group_members_will_remain_connected">群組內所有成員會保持連接</string>
<string name="color_primary">自訂顏色</string>
<string name="moderated_description">即時顯示訊息</string>
<string name="simplex_link_group">SimpleX 群組連結</string>
<string name="v4_5_private_filenames">私人檔案名稱</string>
<string name="error_adding_members">加入成員(s) 時出錯</string>
<string name="failed_to_create_user_title">個人檔案建立失敗!</string>
<string name="failed_to_create_user_duplicate_desc">你已經有一個個人檔案的顯示名稱和現在選擇建立的個人檔案名稱相同。請選擇其他名稱。</string>
<string name="failed_to_active_user_title">個人檔案切換失敗!</string>
<string name="error_joining_group">加入群組時出錯</string>
<string name="sender_cancelled_file_transfer">傳送者已取消傳送檔案。</string>
<string name="error_receiving_file">接收檔案時出錯</string>
<string name="error_creating_address">建立地址時出錯</string>
<string name="v4_5_private_filenames_descr">為了保護私人檔案,圖片或語音文件使用 UTC。</string>
<string name="sending_files_not_yet_supported">目前還不支援傳送檔案</string>
<string name="receiving_files_not_yet_supported">目前還不支援接收檔案</string>
<string name="sender_you_pronoun"></string>
<string name="unknown_message_format">未知的訊息格式</string>
<string name="invalid_message_format">無效的訊息格式</string>
<string name="live">實況</string>
<string name="invalid_chat">無效聊天</string>
<string name="invalid_data">無效數據</string>
<string name="connection_local_display_name">連接 <xliff:g id="connection ID" example="1">%1$d</xliff:g></string>
<string name="display_name_connection_established">已建立連線</string>
<string name="display_name_invited_to_connect">邀請連線</string>
<string name="display_name_connecting">連接中 …</string>
<string name="description_you_shared_one_time_link">你分享了一個一次性連結</string>
<string name="description_you_shared_one_time_link_incognito">你分享了一個匿名聊天模式的一次性連結</string>
<string name="simplex_link_contact">SimpleX 聯絡人地址</string>
<string name="simplex_link_invitation">SimpleX 一次性連結</string>
<string name="simplex_link_mode">SimpleX 連結</string>
<string name="simplex_link_connection">通過 <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g></string>
<string name="simplex_link_mode_browser">通過瀏覽器</string>
<string name="error_sending_message">傳送訊息時出錯</string>
<string name="contact_already_exists">聯絡人已存在</string>
<string name="you_are_already_connected_to_vName_via_this_link">你已經連接到 <xliff:g id="contactName" example="Alice">%1$s!</xliff:g></string>
<string name="v4_5_transport_isolation_descr">使用個人檔案(預設值)或使用連接(測試版)。</string>
<string name="v4_5_reduced_battery_usage">減少電量使用</string>
<string name="v4_5_reduced_battery_usage_descr">更多功能即將推出!</string>
<string name="v4_5_italian_interface">意大利語言界面</string>
<string name="v4_5_italian_interface_descr">感謝用戶 - 使用 Weblate 的翻譯貢獻!</string>
<string name="app_name"><xliff:g id="appName">SimpleX</xliff:g></string>
<string name="thousand_abbreviation">k</string>
<string name="connect_via_contact_link">透過連結連接聯絡人?</string>
<string name="connect_via_invitation_link">透過邀請連結連接?</string>
<string name="connect_via_group_link">通過邀請連結連接群組?</string>
<string name="profile_will_be_sent_to_contact_sending_link">你的個人檔案將會傳送給你收到此連結的聯絡人</string>
<string name="you_will_join_group">你將會加入此連結內的群組並且連接到此群組成為群組內的成員。</string>
<string name="connect_via_link_verb">連接</string>
<string name="server_error">錯誤</string>
<string name="server_connecting">連接中</string>
<string name="connected_to_server_to_receive_messages_from_contact">你已連接到此聯絡人使用的伺服器以接收訊息。</string>
<string name="trying_to_connect_to_server_to_receive_messages_with_error">嘗試連接至用於接收此聯絡人訊息的伺服器 (錯誤:<xliff:g id="errorMsg">%1$s</xliff:g>).</string>
<string name="trying_to_connect_to_server_to_receive_messages">正在嘗試連接到用於接收此聯絡人訊息伺服器。</string>
<string name="deleted_description">已刪除</string>
<string name="marked_deleted_description">已標記為刪除</string>
<string name="simplex_link_mode_browser_warning">在瀏覽器中開啟連結可能會有私隱疑慮和不確定性。不受 SimpleX 信任的連結會顯示紅色。</string>
<string name="error_saving_smp_servers">儲存 SMP 伺服器時出錯</string>
<string name="ensure_smp_server_address_are_correct_format_and_unique">請確保 SMP 伺服器連結格式正確,隔行顯示且不重複。</string>
<string name="error_setting_network_config">更新網路配置時出錯</string>
<string name="failed_to_parse_chat_title">聯絡人載入失敗</string>
<string name="failed_to_parse_chats_title">多個聯絡人載入失敗</string>
<string name="contact_developers">請更新應用程式或聯絡開發人員。</string>
<string name="connection_timeout">連線超時</string>
<string name="connection_error">連線失敗</string>
<string name="network_error_desc">請使用 <xliff:g id="serverHost" example="smp.simplex.im">%1$s</xliff:g> 檢查你的網路連線並且再試一次。</string>
<string name="smp_server_test_connect">連接</string>
<string name="periodic_notifications_disabled">定期通知已禁用!</string>
<string name="enter_passphrase_notification_title">需要使用密碼</string>
<string name="notification_preview_mode_contact_desc">只顯示聯絡人名稱</string>
<string name="auth_device_authentication_is_disabled_turning_off">裝置內的螢幕鎖定已關閉。正在關閉 SimpleX 鎖定。</string>
<string name="save_verb">儲存</string>
<string name="images_limit_title">太多圖片!</string>
<string name="error_saving_file">儲存檔案的時候出現錯誤</string>
<string name="notification_new_contact_request">有新的聯絡人連線請求</string>
<string name="auth_confirm_credential">確認你的憑據</string>
<string name="hide_verb">隱藏</string>
<string name="file_saved">已儲存檔案</string>
<string name="invalid_connection_link">無效的連線連結</string>
<string name="sender_may_have_deleted_the_connection_request">傳送者似乎已經刪除了連接的請求。</string>
<string name="error_deleting_contact">刪除聯絡人時出錯</string>
<string name="error_deleting_group">刪除群組時出錯</string>
<string name="error_deleting_contact_request">刪除聯絡人</string>
<string name="error_smp_test_failed_at_step">測試在步驟 %s 失敗。</string>
<string name="error_smp_test_server_auth">伺服器需要授權才能建立佇列,請檢查密碼</string>
<string name="error_smp_test_certificate">伺服器地址的憑證指紋可能不正確</string>
<string name="icon_descr_instant_notifications">即時收到通知</string>
<string name="service_notifications">即時通知!</string>
<string name="service_notifications_disabled">已禁用即時收到通知!</string>
<string name="database_initialization_error_desc">數據庫目前沒有正常運作。點擊查看更多</string>
<string name="ntf_channel_calls">SimpleX Chat 電話來電</string>
<string name="settings_notifications_mode_title">通知服務</string>
<string name="settings_notification_preview_mode_title">顯示預覽</string>
<string name="settings_notification_preview_title">通知預覽</string>
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">如果你解鎖程式三十秒後再次啟動或返回應用程式,你會需要進行多一次解鎖程式。</string>
<string name="auth_unlock">已解鎖</string>
<string name="auth_log_in_using_credential">使用你的憑據登入</string>
<string name="auth_open_chat_console">使用終端機開啟對話</string>
<string name="message_delivery_error_title">傳送訊息有錯誤</string>
<string name="message_delivery_error_desc">大概你的聯絡人已經刪除了和你的對話並且已經沒有和你有連線。</string>
<string name="for_me_only">只為我刪除</string>
<string name="for_everybody">為所有人刪除</string>
<string name="icon_descr_edited">已修改</string>
<string name="icon_descr_sent_msg_status_sent">已傳送</string>
<string name="icon_descr_sent_msg_status_unauthorized_send">未經授權傳送</string>
<string name="icon_descr_sent_msg_status_send_failed">傳送失敗</string>
<string name="personal_welcome">歡迎 <xliff:g>%1$s</xliff:g></string>
<string name="welcome">歡迎!</string>
<string name="this_text_is_available_in_settings">在設定中可用這文字</string>
<string name="contact_connection_pending">連接中 …</string>
<string name="group_preview_you_are_invited">你被邀請加入至群組</string>
<string name="group_preview_join_as">加入為 %s</string>
<string name="group_connection_pending">連接中 …</string>
<string name="tap_to_start_new_chat">點擊開始新對話</string>
<string name="file_not_found">找不到檔案</string>
<string name="voice_message_with_duration">語音訊息 (<xliff:g id="duration">%1$s</xliff:g>)</string>
<string name="voice_message_send_text">語音訊息 …</string>
<string name="icon_descr_record_voice_message">錄製語音訊息</string>
<string name="you_need_to_allow_to_send_voice">你需要在設定上開放權限允許你的聯絡人傳送語音訊息。</string>
<string name="voice_messages_prohibited">禁止語音訊息!</string>
<string name="ask_your_contact_to_enable_voice">請你的聯絡人開放權限允許你傳送語音訊息</string>
<string name="only_group_owners_can_enable_voice">只有群組的負責人才能啟用語音訊息</string>
<string name="send_verb">傳送</string>
<string name="please_check_correct_link_and_maybe_ask_for_a_new_one">請你確認使用的是正確的連結,或者請你的聯絡人傳送一個新的連結給你。</string>
<string name="connection_error_auth">連接錯誤 (AUTH)</string>
<string name="connection_error_auth_desc">除非你的聯絡人刪除了連結或此連結已經被使用,否則它可能是一個錯誤 - 請報告問題。
\n要連線請詢問你的聯絡人建立新的連結和確保你的網路是穩定的。</string>
<string name="error_accepting_contact_request">接受聯絡人的連接請求時出錯</string>
<string name="error_deleting_pending_contact_connection">刪除待處理的聊絡人連接時出錯</string>
<string name="error_changing_address">更改地址時出錯</string>
<string name="smp_server_test_create_queue">建立佇列</string>
<string name="smp_server_test_secure_queue">安全佇列</string>
<string name="smp_server_test_delete_queue">刪除佇列</string>
<string name="smp_server_test_disconnect">斷開連接</string>
<string name="turn_off_battery_optimization">為了使用它,請 <b>禁用電量優化</b> 為了 <xliff:g id="appName">SimpleX</xliff:g> 在下一個對話中。否則,將會禁用通知。</string>
<string name="enter_passphrase_notification_desc">在接收通知之前,請你輸入數據庫的密碼</string>
<string name="periodic_notifications_desc">應用程式會定期推送新訊息 — 它每天會消耗百分之幾的電量。 應用程式將不使用推送通知 — 你裝置中的數據不會傳送至伺服器。</string>
<string name="simplex_service_notification_title"><xliff:g id="appNameFull">SimpleX Chat</xliff:g> 服務</string>
<string name="simplex_service_notification_text">正在接收訊息 …</string>
<string name="hide_notification">隱藏</string>
<string name="ntf_channel_messages">SimpleX Chat 訊息</string>
<string name="notifications_mode_off">當應用程式是開啟</string>
<string name="notifications_mode_periodic">定期啟用</string>
<string name="notification_preview_mode_message_desc">顯示聯絡人名稱和訊息內容</string>
<string name="notification_display_mode_hidden_desc">隱藏聯絡人名稱和訊息內容</string>
<string name="notification_preview_somebody">隱藏聯絡人:</string>
<string name="notification_preview_new_message">有新訊息</string>
<string name="notification_contact_connected">已連線</string>
<string name="la_notice_title_simplex_lock">SimpleX 鎖定</string>
<string name="la_notice_to_protect_your_information_turn_on_simplex_lock_you_will_be_prompted_to_complete_authentication_before_this_feature_is_enabled">為了保護你的個人訊息,開啟 SimpleX 鎖定。
\n在啟用此功能之前系統將提示你完成螢幕鎖定的功能。</string>
<string name="la_notice_turn_on">打開</string>
<string name="auth_simplex_lock_turned_on">SimpleX 鎖定已開啟</string>
<string name="auth_device_authentication_is_not_enabled_you_can_turn_on_in_settings_once_enabled">你的裝置沒有啟動螢幕鎖定。你可以通過設定內啟動螢幕鎖定,當你啟動後就可以使用 SimpleX 鎖定。</string>
<string name="edit_verb">修改</string>
<string name="delete_verb">刪除</string>
<string name="reveal_verb">展露</string>
<string name="delete_message__question">確定要刪除訊息?</string>
<string name="delete_message_cannot_be_undone_warning">訊息會刪除 - 並且不能還原!</string>
<string name="delete_message_mark_deleted_warning">訊息將被標記為刪除。 接收訊息的人(多個) 能夠展露此訊息。</string>
<string name="icon_descr_received_msg_status_unread">未讀</string>
<string name="you_have_no_chats">你沒有聯絡人</string>
<string name="image_decoding_exception_title">解碼錯誤</string>
<string name="contact_sent_large_file">你的聯絡人傳送的檔案大於目前支持的最大上限 (<xliff:g id="maxFileSize">%1$s</xliff:g>).</string>
<string name="images_limit_desc">只能同一時間傳送十張圖片</string>
<string name="maximum_supported_file_size">目前支援的最大檔案大小為 <xliff:g id="maxFileSize">%1$s</xliff:g></string>
<string name="file_will_be_received_when_contact_is_online">下載檔案需要傳送者上線的時候才能下載檔案,請等待對方上線!</string>
<string name="voice_message">語音訊息</string>
<string name="send_live_message">傳送實況的訊息</string>
<string name="live_message">實況訊息!</string>
<string name="send_live_message_desc">傳送實況訊息 - 這會即時顯示你在輸入中的文字</string>
<string name="connect_via_link_or_qr_from_clipboard_or_in_person">(掃描或使用剪貼薄貼上)</string>
<string name="toast_permission_denied">權限拒絕!</string>
<string name="to_preserve_privacy_simplex_has_background_service_instead_of_push_notifications_it_uses_a_few_pc_battery">為了保護你的私隱,&lt;b xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\"&gt;SimpleX&lt;/xliff:g&gt; 有一個後台通知服務 它每天使用你幾 % 的電量。</string>
<string name="periodic_notifications">定期通知</string>
<string name="notifications_mode_periodic_desc">每十分鐘會檢查一次訊息,最快可設為每分鐘檢查一次</string>
<string name="notification_preview_mode_message">訊息文字</string>
<string name="notification_preview_mode_contact">聯絡人名稱</string>
<string name="notification_preview_mode_hidden">隱藏</string>
<string name="image_descr">圖片</string>
<string name="icon_descr_waiting_for_image">等待圖片</string>
<string name="icon_descr_image_snd_complete">已傳送圖片</string>
<string name="waiting_for_image">等待圖片</string>
<string name="image_will_be_received_when_contact_is_online">下載圖片需要傳送者上線的時候才能下載圖片,請等待對方上線!</string>
<string name="image_saved">圖片已儲存至圖片庫</string>
<string name="notifications">通知</string>
<string name="delete_contact_question">刪除聯絡人?</string>
<string name="delete_contact_all_messages_deleted_cannot_undo_warning">此聯絡人和此聯絡人的訊息會全部刪除 - 這不能還原!</string>
<string name="button_delete_contact">刪除聯絡人</string>
<string name="text_field_set_contact_placeholder">設置聯絡人名稱 …</string>
<string name="icon_descr_server_status_connected">已連接</string>
<string name="icon_descr_server_status_disconnected">已斷開連接</string>
<string name="icon_descr_server_status_error">錯誤</string>
<string name="icon_descr_server_status_pending">待處理</string>
<string name="switch_receiving_address_question">切換接收地址?</string>
<string name="switch_receiving_address_desc">此功能目前還是實驗階段! 對方需要使用 4.2 版本或更高的版本才能成功生效。 地址更改後,你會在對話中看到新訊息 - 請測試你更改地址後是否仍然能夠收到來自這聯絡人(或群組內的成員)的訊息。</string>
<string name="view_security_code">查看安全碼</string>
<string name="verify_security_code">驗證安全碼</string>
<string name="icon_descr_send_message">傳送訊息</string>
<string name="error_deleting_user">刪除個人檔案時出現錯誤</string>
<string name="auth_stop_chat">停止對話</string>
<string name="image_decoding_exception_desc">圖片不能解碼,嘗試其他圖片或聯絡開發人員。</string>
<string name="icon_descr_file">檔案</string>
<string name="large_file">大型檔案</string>
<string name="waiting_for_file">等待檔案中</string>
<string name="confirm_verb">確定</string>
<string name="reset_verb">重設</string>
<string name="ok">OK</string>
<string name="no_details">沒有詳細資料</string>
<string name="add_contact">一次性邀請連結</string>
<string name="copied">已複製至你的剪貼薄</string>
<string name="connect_via_link_or_qr">使用連結連接 / 使用二維碼連接</string>
<string name="scan_QR_code">掃描二維碼</string>
<string name="only_stored_on_members_devices">(僅由群組成員儲存)</string>
<string name="contact_wants_to_connect_with_you">想和你對話!</string>
<string name="image_descr_simplex_logo"><xliff:g id="appName">SimpleX</xliff:g> 徽標</string>
<string name="connect_via_link">透過連結連接</string>
<string name="smp_servers_preset_server">預設伺服器</string>
<string name="smp_servers_your_server_address">你的伺服器位址</string>
<string name="smp_servers_delete_server">刪除伺服器</string>
<string name="your_ICE_servers">你的 ICE 伺服器</string>
<string name="enter_one_ICE_server_per_line">ICE 伺服器(每行一個)</string>
<string name="network_use_onion_hosts">使用 .onion 主機</string>
<string name="network_use_onion_hosts_no_desc">Onion 主機不會啟用</string>
<string name="network_use_onion_hosts_prefer_desc_in_alert">當有的時候 Onion 將會啟用。</string>
<string name="network_use_onion_hosts_no_desc_in_alert">Onion 主機不會被啟用。</string>
<string name="network_session_mode_entity">連接</string>
<string name="delete_address">刪除地址</string>
<string name="colored">顏色</string>
<string name="how_to_use_your_servers">如何使用你的伺服器</string>
<string name="core_build_timestamp">核心建立於:%s</string>
<string name="to_connect_via_link_title">使用連結連接</string>
<string name="desktop_scan_QR_code_from_app_via_scan_QR_code">💻 桌面版:於應用程式內掃描一個已存在的二維碼,透過二維碼掃描。</string>
<string name="icon_descr_settings">設定</string>
<string name="this_QR_code_is_not_a_link">這個二維碼不是一個連結!</string>
<string name="create_one_time_link">建立一次性邀請連結</string>
<string name="network_use_onion_hosts_prefer">當有</string>
<string name="core_version">核心版本v%s</string>
<string name="core_simplexmq_version">simplexmq: v%s (%2s)</string>
<string name="create_address">建立地址</string>
<string name="contact_requests">聯絡人請求</string>
<string name="section_title_welcome_message">歡迎訊息</string>
<string name="edit_image">編輯圖片</string>
<string name="italic">斜體</string>
<string name="callstatus_rejected">已拒絕收聽電話</string>
<string name="callstatus_connecting">連接電話中 …</string>
<string name="callstate_waiting_for_confirmation">等待對方確定 …</string>
<string name="contribute">貢獻</string>
<string name="rate_the_app">評價程式</string>
<string name="save_servers_button">儲存</string>
<string name="ensure_ICE_server_address_are_correct_format_and_unique">請確保你的 WebRTC ICE 伺服器地址是正確的格式,每行也有分隔和沒有重複。</string>
<string name="network_disable_socks">使用直接互聯網連接?</string>
<string name="network_disable_socks_info">如果你確定,你的訊息伺服器能夠看到你的 IP 位置,和你的網路供應商 - 你正在連接到哪些伺服器。</string>
<string name="update_onion_hosts_settings_question">更新 .onion 主機設定?</string>
<string name="delete_image">刪除圖片</string>
<string name="callstate_starting">開始中 …</string>
<string name="callstate_waiting_for_answer">等待對方回應 …</string>
<string name="if_you_received_simplex_invitation_link_you_can_open_in_browser">如果你收到 &lt;xliff:g xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\" id=\"appName\"&gt;SimepleX Chat 邀請連結,你可以使用瀏覧器開啟:</string>
<string name="mobile_tap_open_in_mobile_app_then_tap_connect_in_app">📱 電話版: 點擊 <b>使用電話程式開啟</b>, 然後在程式內點擊 <b>連接</b>.</string>
<string name="if_you_choose_to_reject_the_sender_will_not_be_notified">如果你選擇拒絕,傳送者將不會收到通知。</string>
<string name="reject_contact_button">拒絕</string>
<string name="delete_contact_menu_action">刪除</string>
<string name="delete_group_menu_action">刪除</string>
<string name="mark_read">標記為已讀</string>
<string name="mark_unread">標記為未讀</string>
<string name="alert_text_connection_pending_they_need_to_be_online_can_delete_and_retry">你的聯絡人需要上線才能連接成功。
\n你可以取消此連線和刪除此聯絡人或者你可以稍後使用新的連結再試一次</string>
<string name="image_descr_qr_code">二維碼</string>
<string name="image_descr_profile_image">個人檔案頭像</string>
<string name="image_descr_link_preview">預覧連結圖片</string>
<string name="icon_descr_address"><xliff:g id="appName">SimpleX</xliff:g> 地址</string>
<string name="icon_descr_help">幫助</string>
<string name="icon_descr_simplex_team"><xliff:g id="appName">SimpleX</xliff:g> 團隊</string>
<string name="icon_descr_email">電郵</string>
<string name="icon_descr_more_button">查看更多</string>
<string name="show_QR_code">顯示二維碼</string>
<string name="invalid_QR_code">無效的二維碼</string>
<string name="invalid_contact_link">無效連結!</string>
<string name="this_link_is_not_a_valid_connection_link">這個連結不是一個有效的連接連結!</string>
<string name="connection_request_sent">連線請求已傳送</string>
<string name="you_will_be_connected_when_group_host_device_is_online">當群組的建立人上線,你便會成功連接至群組,請耐心等待!</string>
<string name="you_will_be_connected_when_your_connection_request_is_accepted">當你的連接請求已被接受,你便會連接成功,請耐心等待!</string>
<string name="you_will_be_connected_when_your_contacts_device_is_online">當你的聯絡人上線,你便會連線成功,請耐心等待!</string>
<string name="if_you_cannot_meet_in_person_show_QR_in_video_call_or_via_another_channel">如果你不能面對面接觸此聯絡人,<b>可於視訊通話中出示你的二維碼</b>,或者分享連結。</string>
<string name="your_chat_profile_will_be_sent_to_your_contact">你的個人檔案會傳送給
\n你的聯絡人</string>
<string name="paste_connection_link_below_to_connect">將你收到的連結貼上至下面的框內以開展你與你的聯絡人對話。</string>
<string name="if_you_cannot_meet_in_person_scan_QR_in_video_call_or_ask_for_invitation_link">如果你不能面對面接觸此聯絡人,你可以於 <b>視訊對話中掃描二維碼</b>,或者你可以分享一個邀請連結給此聯絡人。</string>
<string name="your_profile_will_be_sent">你的個人檔案會傳送給你的聯絡人。</string>
<string name="paste_button">貼上</string>
<string name="this_string_is_not_a_connection_link">這些字串不是連接連結!</string>
<string name="you_can_also_connect_by_clicking_the_link">你也可以點擊連結連接。如果在瀏覧器中開啟,點擊 <b>程式內的開啟</b> 按扭。</string>
<string name="one_time_link">一次性邀請連結</string>
<string name="your_contact_address">你的聯絡人地址</string>
<string name="scan_code">掃描二碼碼</string>
<string name="incorrect_code">錯誤的安全碼!</string>
<string name="scan_code_from_contacts_app">在你聯絡人的程式內掃描安全碼</string>
<string name="security_code">安全碼</string>
<string name="markdown_help">Markdown 幫助</string>
<string name="markdown_in_messages">於訊息中使用 Markdown 語法</string>
<string name="smp_servers_enter_manually">人手輸入伺服器地址</string>
<string name="smp_servers_use_server">使用伺服器</string>
<string name="smp_servers_use_server_for_new_conn">用於新的連接</string>
<string name="smp_servers_invalid_address">無效的伺服器地址</string>
<string name="smp_servers_per_user">此伺服器用於你目前的個人檔案</string>
<string name="use_simplex_chat_servers__question">使用 <xliff:g id="appNameFull">SimpleX Chat</xliff:g> 伺服器?</string>
<string name="your_SMP_servers">你的 SMP 伺服器</string>
<string name="using_simplex_chat_servers">目前使用 <xliff:g id="appNameFull">SimpleX Chat</xliff:g> 伺服器。</string>
<string name="how_to">如何?</string>
<string name="configure_ICE_servers">配置 ICE 伺服器</string>
<string name="saved_ICE_servers_will_be_removed">已儲存的 WebRTC ICE 伺服器將會移除。</string>
<string name="error_saving_ICE_servers">儲存 ICE 伺服器時有錯誤</string>
<string name="network_use_onion_hosts_no">不要</string>
<string name="network_use_onion_hosts_required">需要</string>
<string name="network_use_onion_hosts_prefer_desc">Onion 主機會當有的時侯啟用</string>
<string name="network_use_onion_hosts_required_desc_in_alert">連接時將需要 Onion 主機</string>
<string name="delete_address__question">刪除地址?</string>
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">你可以使用連結或二維碼分享你的地址 - 任何人也可以和你連線。如果你不主動刪除你的聯絡人,你並不會遺失你的聯絡人</string>
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">你的個人檔案只會儲存於你的裝置和只會分享給你的聯絡人。
\n
\n<xliff:g id="appName">SimpleX</xliff:g> 伺服器並不會看到你的個人檔案。</string>
<string name="save_and_notify_contact">儲存並通知你的聯絡人</string>
<string name="save_and_notify_contacts">儲存並通知你的多個聯絡人</string>
<string name="your_profile_is_stored_on_your_device">你的個人檔案,聯絡人和傳送的訊息只會儲存於你的個人裝置內。</string>
<string name="profile_is_only_shared_with_your_contacts">你的個人檔案只會和你的聯絡人分享</string>
<string name="create_profile_button">建立</string>
<string name="how_to_use_markdown">如何使用 Markdown 語法</string>
<string name="you_can_use_markdown_to_format_messages__prompt">你可以使用 Markdown 語法以更清楚標明你的訊息:</string>
<string name="strikethrough">刪除線</string>
<string name="callstatus_missed">你錯過了電話</string>
<string name="callstate_received_answer">收到回應 …</string>
<string name="callstate_connecting">連接中 …</string>
<string name="callstate_ended">通話完結</string>
<string name="show_QR_code_for_your_contact_to_scan_from_the_app__multiline">你的聯絡人可以在程式內使用二維碼</string>
<string name="connect_button">連接</string>
<string name="network_and_servers">網路 &amp; 伺服器</string>
<string name="network_settings_title">網路設定</string>
<string name="network_socks_toggle">使用 SOCKS 代理伺服器 (端口 9050)</string>
<string name="network_enable_socks">使用 SOCKS 代理伺服器</string>
<string name="save_and_notify_group_members">儲存並通知群組內的聯絡人</string>
<string name="exit_without_saving">退出並且不儲存紀錄</string>
<string name="you_control_your_chat">你的對話由你控制!</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">一個保護你的隱私和傳送安全通訊的應用程式平台。</string>
<string name="we_do_not_store_contacts_or_messages_on_servers">我們不會在伺服器內儲存你的任何聯絡人和消息(一旦傳送)。</string>
<string name="create_profile">建立個人檔案</string>
<string name="callstate_received_confirmation">回應已確認</string>
<string name="you_can_connect_to_simplex_chat_founder">你可以透過 <font color="#0088ff">連接到 <xliff:g id="appNameFull">SimpleX Chat</xliff:g> 開發人員提出任何問題並同意更新</font></string>
<string name="to_start_a_new_chat_help_header">開始新的對話</string>
<string name="set_contact_name">設定聯絡人名稱</string>
<string name="you_invited_your_contact">你已邀請了你的聯絡人</string>
<string name="you_accepted_connection">你接受了連接</string>
<string name="delete_pending_connection__question">刪除等待中的連接?</string>
<string name="contact_you_shared_link_with_wont_be_able_to_connect">當聯絡人發現此連結後,嘗試點擊的聯絡人將無法連線!</string>
<string name="connection_you_accepted_will_be_cancelled">你所接受的連接將會被取消!</string>
<string name="alert_title_contact_connection_pending">你的聯絡人現在還沒連接!</string>
<string name="icon_descr_close_button">關閉按鈕</string>
<string name="mark_code_verified">已標記為已驗證</string>
<string name="clear_verification">清除驗證</string>
<string name="to_verify_compare">如果要和你的聯絡人驗認端對端加密,在對方的程式內掃描二維碼。</string>
<string name="is_verified">%s 已驗證</string>
<string name="is_not_verified">%s 並未驗證</string>
<string name="your_simplex_contact_address">你的 <xliff:g id="appName">SimpleX</xliff:g> 聯絡地址</string>
<string name="your_chat_profiles">你的個人檔案</string>
<string name="database_passphrase_and_export">資料庫密碼及匯出</string>
<string name="send_us_an_email">傳送電郵</string>
<string name="chat_lock">SimpleX 鎖定</string>
<string name="smp_servers">SMP 服務</string>
<string name="smp_servers_preset_address">預設伺服器地址</string>
<string name="smp_servers_test_server">測試伺服器</string>
<string name="smp_servers_test_servers">測試多個伺服器</string>
<string name="smp_servers_save">儲存伺服器</string>
<string name="smp_servers_test_failed">伺服器測試失敗!</string>
<string name="smp_servers_test_some_failed">有一些伺服器測試失敗:</string>
<string name="smp_servers_scan_qr">使用二維碼掃描伺服器</string>
<string name="smp_servers_your_server">你的伺服器</string>
<string name="network_use_onion_hosts_required_desc">連接時將會需要使用 Onion 主機</string>
<string name="network_session_mode_user">對話檔案</string>
<string name="description_via_group_link">透過群組連結</string>
<string name="description_via_group_link_incognito">透過群組連結使用匿名聊天模式</string>
<string name="description_via_contact_address_link_incognito">一個使用了匿名聊天模式的人透過連結加入了群組。</string>
<string name="description_via_one_time_link_incognito">透過使用一次性連結匿名聊天模式連線</string>
<string name="many_people_asked_how_can_it_deliver">有很多人問:
\nxmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\"&gt;如果 &lt;xliff:g id=\"appName\"&gt;SimpleX&lt;/xliff:g&gt; 沒有任何的用戶標識符,應如何傳送訊息?&lt;/i&gt;</string>
<string name="onboarding_notifications_mode_service">即時</string>
<string name="onboarding_notifications_mode_periodic">定期的</string>
<string name="no_call_on_lock_screen">關閉</string>
<string name="icon_descr_call_missed">你錯過此通話</string>
<string name="open_verb">開啟</string>
<string name="open_simplex_chat_to_accept_call">開啟
\n<xliff:g id="appNameFull">
\nSimpleX Chat</xliff:g> 以接受通話</string>
<string name="icon_descr_call_rejected">已拒絕通話</string>
<string name="show_call_on_lock_screen">顯示</string>
<string name="icon_descr_call_connecting">連線通話中</string>
<string name="files_and_media_section">檔案及媒體檔案</string>
<string name="restart_the_app_to_create_a_new_chat_profile">重新啟動應用程式以建立新的個人檔案。</string>
<string name="delete_files_and_media_question">刪除所有檔案及媒體檔案?</string>
<string name="delete_files_and_media_for_all_users">刪除所有你的個人檔案及媒體檔案</string>
<string name="total_files_count_and_size">%d 檔案(s) 的總共大小為 %s</string>
<string name="messages_section_title">訊息</string>
<string name="chat_item_ttl_none">永不</string>
<string name="no_received_app_files">沒有收到或傳送的檔案</string>
<string name="current_passphrase">目前的密碼 …</string>
<string name="encrypt_database">加密</string>
<string name="error_changing_message_deletion">修改設定時出錯</string>
<string name="notifications_will_be_hidden">通知服務只會在應用程式關閉前才會傳送</string>
<string name="remove_passphrase">移除</string>
<string name="remove_passphrase_from_keychain">要從金鑰庫移除密碼?</string>
<string name="confirm_new_passphrase">確定新密碼 …</string>
<string name="new_passphrase">新密碼 …</string>
<string name="group_invitation_tap_to_join">點擊加入</string>
<string name="group_invitation_tap_to_join_incognito">點擊以使用匿名聊天模式加入</string>
<string name="rcv_group_event_changed_member_role">%s 的身份已更改為 %s</string>
<string name="rcv_group_event_member_added">已經邀請 <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="rcv_group_event_changed_your_role">已更改你的身份為 %s</string>
<string name="group_member_status_accepted">連線中 (已接受)</string>
<string name="group_member_status_left">退出</string>
<string name="group_member_role_owner">負責人</string>
<string name="group_member_status_removed">已移除</string>
<string name="group_member_status_complete">完成</string>
<string name="group_member_status_connecting">連線中</string>
<string name="group_member_status_creator">創建人</string>
<string name="new_member_role">新成員的身份</string>
<string name="group_info_section_title_num_members"><xliff:g id="num_members">%1$s</xliff:g> 位成員</string>
<string name="button_edit_group_profile">修改群組內的設定</string>
<string name="create_group_link">建立群組連結</string>
<string name="button_create_group_link">建立連結</string>
<string name="delete_link_question">確定要刪除連結?</string>
<string name="button_remove_member">移除成員</string>
<string name="member_role_will_be_changed_with_notification">成員的身份會修改為 \"%s\". 所有在群組內的成員都會收到通知</string>
<string name="member_role_will_be_changed_with_invitation">成員的身份會修改為 \"%s\". 該成員將收到新的邀請</string>
<string name="network_status">網路狀態</string>
<string name="network_options_reset_to_defaults">重置為預設值</string>
<string name="incognito_info_share">當你與某人分享已啟用匿名聊天模式的個人檔案時,此個人檔案將用於他們邀請你參加的群組。</string>
<string name="theme_dark">黑暗</string>
<string name="full_deletion">為所有人刪除</string>
<string name="voice_messages">語音訊息</string>
<string name="feature_offered_item_with_param">提供 %s: %2s</string>
<string name="v4_2_security_assessment">安全性評估</string>
<string name="v4_2_security_assessment_desc">SimpleX Chat 的安全性由 Trail of Bits 審核。</string>
<string name="v4_2_group_links">群組連結</string>
<string name="v4_5_multiple_chat_profiles">多個個人檔案</string>
<string name="v4_5_multiple_chat_profiles_descr">不同的名稱、頭像和傳輸隔離。</string>
<string name="v4_5_message_draft">訊息草稿</string>
<string name="v4_5_message_draft_descr">保留最後一則帶附件的訊息草稿。</string>
<string name="v4_5_transport_isolation">傳輸隔離</string>
<string name="import_database_question">匯入對話資料庫?</string>
<string name="store_passphrase_securely_without_recover">請放置你的密碼於安全的地方,如果你遺失了密碼將不可能再次存取它。</string>
<string name="keychain_error">鎖匙鏈錯誤</string>
<string name="no_contacts_selected">沒有聯絡人可選擇</string>
<string name="group_link">群組連結</string>
<string name="delete_link">刪除連結</string>
<string name="group_is_decentralized">群組是完全去中心化的 - 只有群組內的成員能看到。</string>
<string name="prohibit_sending_disappearing">禁止傳送自動銷毀的訊息。</string>
<string name="ttl_hours">%d 個小時</string>
<string name="whats_new">新功能</string>
<string name="v4_2_auto_accept_contact_requests_desc">帶有可選即時性的訊息</string>
<string name="error_deleting_database">刪除數據庫時出現錯誤</string>
<string name="import_database_confirmation">匯入</string>
<string name="chat_item_ttl_seconds">%s 秒(s)</string>
<string name="error_encrypting_database">加密數據庫時出錯</string>
<string name="save_passphrase_in_keychain">於金鑰庫儲存密碼</string>
<string name="archive_created_on_ts">建立於 <xliff:g id="archive_ts">%1$s</xliff:g></string>
<string name="restore_database">還原數據庫的備份</string>
<string name="icon_descr_group_inactive">群組為不活躍狀態</string>
<string name="alert_title_group_invitation_expired">邀請連結過時!</string>
<string name="delete_group_question">刪除群組?</string>
<string name="delete_group_for_all_members_cannot_undo_warning">群組會於所有成員刪除 - 這不能還原!</string>
<string name="delete_group_for_self_cannot_undo_warning">群組只會為你刪除 - 這不能還原!</string>
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">你可以分享連結或二維碼 - 任何人也可以加入至此群組內。直到你刪除群組前你也不會失去遺失群組。</string>
<string name="group_main_profile_sent">你的個人檔案會傳送給群組內的成員。</string>
<string name="save_group_profile">儲存群組檔案</string>
<string name="voice_prohibited_in_this_chat">語音訊息於這個聊天窒是禁止的。</string>
<string name="v4_3_irreversible_message_deletion_desc">允許你的聯絡人可以完全刪除訊息</string>
<string name="first_platform_without_user_ids">第一個沒有任何用戶識別符的通訊平台 以私隱為設計</string>
<string name="next_generation_of_private_messaging">新一代的私人訊息平台</string>
<string name="decentralized">去中心化的</string>
<string name="people_can_connect_only_via_links_you_share">人們只能在你分享了連結後,才能和你連接。</string>
<string name="privacy_redefined">重新定義私隱</string>
<string name="create_your_profile">建立你的個人檔案</string>
<string name="how_it_works">這是如何運作</string>
<string name="onboarding_notifications_mode_subtitle">你可以之後透過設定修改。</string>
<string name="make_private_connection">私下連接</string>
<string name="opensource_protocol_and_code_anybody_can_run_servers">開放源碼協議和程式碼 任何人也可以運行伺服器。</string>
<string name="ignore">無視</string>
<string name="incoming_audio_call">語音通話來電</string>
<string name="paste_the_link_you_received">貼上你收到的連結</string>
<string name="status_e2e_encrypted">已經端對端加密</string>
<string name="status_no_e2e_encryption">沒有端對端加密</string>
<string name="icon_descr_speaker_off">關閉喇叭</string>
<string name="settings_section_title_messages">訊息</string>
<string name="privacy_and_security">私隱 &amp; 安全性</string>
<string name="settings_section_title_themes">主題</string>
<string name="v4_4_french_interface">法國語言界面</string>
<string name="encrypted_audio_call">已經完成端對端加密的語音通話</string>
<string name="reject">拒絕</string>
<string name="integrity_msg_bad_id">錯誤的訊息 ID</string>
<string name="integrity_msg_duplicate">重覆的訊息</string>
<string name="protect_app_screen">保護應用程式螢幕</string>
<string name="send_link_previews">傳送可以預覽的連結</string>
<string name="settings_section_title_develop">開發</string>
<string name="settings_section_title_device">裝置</string>
<string name="settings_section_title_help">幫助</string>
<string name="settings_section_title_settings">設定</string>
<string name="settings_section_title_support">幫助 SIMPLEX CHAT</string>
<string name="settings_section_title_chats">對話</string>
<string name="settings_developer_tools">開發者工具</string>
<string name="settings_section_title_socks">SOCKS 代理伺服器</string>
<string name="restart_the_app_to_use_imported_chat_database">重新啟動應用程式以匯入對話數據庫</string>
<string name="delete_files_and_media_all">刪除所有檔案</string>
<string name="enable_automatic_deletion_question">啟用自動銷毀訊息?</string>
<string name="delete_messages">刪除訊息</string>
<string name="delete_messages_after">於多久後刪除訊息</string>
<string name="enter_correct_current_passphrase">請輸入正確的密碼。</string>
<string name="encrypted_with_random_passphrase">已受加密的數據庫密碼是使用隨機性的文字,你可以修改它。</string>
<string name="database_will_be_encrypted">數據庫將會加密。</string>
<string name="database_will_be_encrypted_and_passphrase_stored">數據庫將會加密並且密碼會儲存於金鑰庫。</string>
<string name="database_error">數據庫錯誤</string>
<string name="cannot_access_keychain">不能讀取金鑰庫以儲存資料庫密碼</string>
<string name="error_with_info">錯誤:%s</string>
<string name="file_with_path">檔案:%s</string>
<string name="database_passphrase_is_required">需要數據庫的密碼以開啟對話。</string>
<string name="enter_passphrase">輸入密碼 …</string>
<string name="enter_correct_passphrase">輸入正確的密碼。</string>
<string name="open_chat">開啟對話</string>
<string name="save_passphrase_and_open_chat">儲存密碼和開啟對話</string>
<string name="database_backup_can_be_restored">你未完成更改數據庫密碼的程序</string>
<string name="restore_passphrase_not_found_desc">密碼不存在於金鑰庫,請手動輸入它,有這種情況你可能是使用了備份用的工具。如果不是請聯絡開發人員。</string>
<string name="restore_database_alert_confirm">還原</string>
<string name="restore_database_alert_title">還原數據庫的備份?</string>
<string name="database_restore_error">還原數據庫時出錯</string>
<string name="save_archive">儲存存檔</string>
<string name="delete_archive">刪除封存</string>
<string name="join_group_button">加入</string>
<string name="join_group_question">確定要加入群組?</string>
<string name="join_group_incognito_button">加入匿名聊天模式</string>
<string name="joining_group">加入群組中</string>
<string name="alert_message_group_invitation_expired">群組的邀請連結無效,這連結已經被群組管理人刪除。</string>
<string name="group_invitation_expired">群組邀請連結已經過時</string>
<string name="rcv_group_event_user_deleted">移除了你</string>
<string name="no_contacts_to_add">沒有聯絡人可以新增</string>
<string name="select_contacts">選擇聯絡人</string>
<string name="skip_inviting_button">跳過邀請成員</string>
<string name="invite_to_group_button">邀請至群組</string>
<string name="button_add_members">邀請成員</string>
<string name="invite_prohibited_description">你正在嘗試邀請一位與你分享了匿名聊天模式的聯絡人進入至你正在使用真實的個人檔案聊天模式的群組中</string>
<string name="error_creating_link_for_group">建立群組邀請連結時出錯</string>
<string name="error_deleting_link_for_group">刪除群組邀請連結時出錯</string>
<string name="section_title_for_console">為終端機</string>
<string name="info_row_local_name">本機名稱</string>
<string name="info_row_database_id">數據庫 ID</string>
<string name="role_in_group">身份</string>
<string name="button_send_direct_message">傳送私人訊息</string>
<string name="member_will_be_removed_from_group_cannot_be_undone">成員將會被移除於此群組 - 這不能還原!</string>
<string name="remove_member_confirmation">移除</string>
<string name="member_info_section_title_member">成員</string>
<string name="change_role">修改身份</string>
<string name="switch_verb">切換</string>
<string name="change_member_role_question">修改這位成員的身份?</string>
<string name="switch_receiving_address">切換接收訊息的伺服器</string>
<string name="group_profile_is_stored_on_members_devices">群組的檔案只會儲存於成員內的本機裝置,不會儲存於伺服器內。</string>
<string name="network_option_seconds_label"></string>
<string name="network_option_tcp_connection_timeout">TCP 連線超時</string>
<string name="network_option_protocol_timeout">協議超時</string>
<string name="network_option_ping_interval">PING 的間隔時間</string>
<string name="network_option_ping_count">PING 的次數</string>
<string name="network_option_enable_tcp_keep_alive">啟用 TCP keep-alive</string>
<string name="network_options_save">儲存</string>
<string name="update_network_settings_question">更新網路設定?</string>
<string name="update_network_settings_confirmation">更新</string>
<string name="your_chat_profiles_stored_locally">你的個人檔案只會儲存於你的本機裝置內。</string>
<string name="updating_settings_will_reconnect_client_to_all_servers">更新設定會將客戶端重新連接到所有的伺服器。</string>
<string name="users_delete_question">刪除個人檔案?</string>
<string name="users_delete_profile_for">刪除個人檔案</string>
<string name="users_delete_with_connections">檔案和伺服器連接</string>
<string name="users_delete_data_only">只有本機檔案</string>
<string name="incognito_random_profile">你的隨機個人檔案</string>
<string name="incognito_random_profile_description">隨機的個人檔案將會傳送給你的聯絡人。</string>
<string name="theme_system">系統</string>
<string name="theme_light">明亮</string>
<string name="reset_color">重設顏色</string>
<string name="feature_off">關閉</string>
<string name="feature_received_prohibited">已接收,已禁止</string>
<string name="accept_feature_set_1_day">設定為一日</string>
<string name="contacts_can_mark_messages_for_deletion">聯絡人可以標記訊息為已刪除;你可以看到</string>
<string name="prohibit_sending_voice_messages">禁止傳送語音訊息</string>
<string name="only_your_contact_can_send_disappearing">只有你的聯絡人可以傳送自動銷毀的訊息</string>
<string name="disappearing_prohibited_in_this_chat">自動銷毀訊息已被禁止於此聊天室。</string>
<string name="message_deletion_prohibited">此聊天室禁止不可逆的訊息刪除。</string>
<string name="only_you_can_send_voice">只有你可以傳送語音訊息。</string>
<string name="direct_messages_are_prohibited_in_chat">私訊群組內的成員於這個群組內是禁用的。</string>
<string name="group_members_can_delete">群組內的成員可以不可逆地刪除訊息。</string>
<string name="v4_3_voice_messages">語音訊息</string>
<string name="v4_3_improved_server_configuration">改善伺服器配置</string>
<string name="v4_3_improved_privacy_and_security_desc">當你切換至最近應用程式版面時,程式畫面會自動隱藏,無法預覽。</string>
<string name="run_chat_section">運行對話</string>
<string name="database_passphrase">數據庫密碼</string>
<string name="export_database">匯出數據庫</string>
<string name="import_database">匯入資料庫</string>
<string name="new_database_archive">新的數據庫存檔</string>
<string name="old_database_archive">舊的數據庫存檔</string>
<string name="delete_database">刪除數據庫</string>
<string name="error_starting_chat">開始新對話時出錯</string>
<string name="stop_chat_question">停止對話?</string>
<string name="set_password_to_export">設定密碼以匯出</string>
<string name="error_stopping_chat">停止對話時出現錯誤</string>
<string name="set_password_to_export_desc">已受加密的數據庫是使用一個隨機性的文字。請在修改前將它匯出。</string>
<string name="error_exporting_chat_database">匯出數據庫時出現錯誤</string>
<string name="error_importing_database">匯入數據庫時出現錯誤</string>
<string name="database_passphrase_will_be_updated">受加密的數據庫密碼會再次更新。</string>
<string name="delete_chat_archive_question">刪除封存對話?</string>
<string name="encrypt_database_question">加密數據庫?</string>
<string name="group_invitation_item_description">邀請至群組 <xliff:g id="group_name">%1$s</xliff:g></string>
<string name="icon_descr_add_members">邀請成員</string>
<string name="alert_title_no_group">群組找不到!</string>
<string name="rcv_group_event_member_deleted">已移除
\n&lt;xliff:g xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\" id=\"member profile\" example=\"alice (Alice)\"&gt;</string>
<string name="rcv_group_event_group_deleted">已刪除群組</string>
<string name="group_member_status_group_deleted">群組已經刪除</string>
<string name="group_member_status_invited">已經邀請</string>
<string name="rcv_group_event_invited_via_your_group_link">已經透過連結邀請了你進群組</string>
<string name="chat_preferences_contact_allows">聯絡人允許</string>
<string name="ttl_s">%ds</string>
<string name="onboarding_notifications_mode_title">私人通知</string>
<string name="read_more_in_github_with_link"><font color="#0088ff">GitHub</font> \u0020查看更多。</string>
<string name="read_more_in_github">於 GitHub 查看更多</string>
<string name="incoming_video_call">視訊通話來電</string>
<string name="icon_descr_hang_up">掛斷電話來電</string>
<string name="call_connection_peer_to_peer">點對點</string>
<string name="status_contact_has_e2e_encryption">對話已經過端對端加密</string>
<string name="status_contact_has_no_e2e_encryption">對話沒有經過端對端加密</string>
<string name="database_encrypted">數據庫已加密!</string>
<string name="encrypted_database">已加密數據庫</string>
<string name="chat_archive_section">對話封存</string>
<string name="snd_group_event_group_profile_updated">群組資料已經更新</string>
<string name="group_member_role_member">成員</string>
<string name="group_info_member_you">你:<xliff:g id="group_info_you">%1$s</xliff:g></string>
<string name="button_delete_group">刪除群組</string>
<string name="v4_4_live_messages">即時訊息</string>
<string name="chat_archive_header">對話封存</string>
<string name="error_removing_member">移除成員時出現錯誤</string>
<string name="error_changing_role">修改身份時出現錯誤</string>
<string name="info_row_group">群組</string>
<string name="info_row_connection">連線</string>
<string name="conn_level_desc_direct">直接</string>
<string name="conn_level_desc_indirect">間接 (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<string name="conn_stats_section_title_servers">伺服器</string>
<string name="receiving_via">接收訊息透過</string>
<string name="sending_via">傳送訊息透過</string>
<string name="incognito_random_profile_from_contact_description">隨機的個人檔案將傳送給收到此連結的聯絡人</string>
<string name="prohibit_sending_disappearing_messages">禁止傳送自動銷毀的訊息。</string>
<string name="prohibit_message_deletion">禁止不可逆的訊息刪除。</string>
<string name="prohibit_sending_voice">禁止傳送語音訊息。</string>
<string name="group_members_can_send_disappearing">群組內的成員可以傳送自動銷毀的訊息。</string>
<string name="disappearing_messages_are_prohibited">自動銷毀訊息於這個群組內是禁用的。</string>
<string name="feature_offered_item">提供 %s</string>
<string name="error_saving_group_profile">儲存群組檔案時有錯誤</string>
<string name="network_options_revert">恢復</string>
<string name="theme">主題</string>
<string name="save_color">儲存顏色</string>
<string name="chat_preferences_you_allow">你允許</string>
<string name="set_group_preferences">修改群組內的設定</string>
<string name="direct_messages">私訊</string>
<string name="feature_enabled">已啟用</string>
<string name="feature_enabled_for_you">已為你啟用</string>
<string name="feature_enabled_for_contact">已為聯絡人啟用</string>
<string name="only_you_can_delete_messages">只有你能不可逆地刪除訊息(你的聯絡人可以將它標記為刪除)</string>
<string name="only_your_contact_can_delete">只有你的聊絡人可以不可逆的刪除訊息(你可以將它標記為刪除)</string>
<string name="only_your_contact_can_send_voice">只有你的聯絡人可以傳送語音訊息。</string>
<string name="prohibit_direct_messages">禁止私訊群組內的成員。</string>
<string name="message_deletion_prohibited_in_chat">不可逆地刪除訊息於這個群組內是禁用的。</string>
<string name="group_members_can_send_voice">群組內的成員可以傳送語音訊息。</string>
<string name="voice_messages_are_prohibited">語音訊息於這個群組內是禁用的。</string>
<string name="ttl_months">%d 個月</string>
<string name="ttl_m">%dm</string>
<string name="ttl_mth">%dmth</string>
<string name="ttl_hour">%d 小時</string>
<string name="ttl_h">%dh</string>
<string name="ttl_day">%d 日</string>
<string name="ttl_days">%d 天</string>
<string name="ttl_d">%dd</string>
<string name="ttl_week">%d 星期</string>
<string name="ttl_weeks">%d 個星期</string>
<string name="ttl_w">%dw</string>
<string name="new_in_version">新的更新 %s</string>
<string name="v4_3_voice_messages_desc">最多四十秒後刪除,接收人立即收到。</string>
<string name="v4_3_irreversible_message_deletion">不可逆地刪除訊息</string>
<string name="v4_3_improved_privacy_and_security">增強隱私和安全性</string>
<string name="v4_4_disappearing_messages_desc">已傳送的訊息將在設定的時間後被刪除。</string>
<string name="v4_4_live_messages_desc">當你輸入訊息時侯,對方將可以即時看到你輸入的內容。</string>
<string name="v4_4_verify_connection_security">驗證連線安全性。</string>
<string name="v4_4_verify_connection_security_desc">驗證你與聯絡人的安全碼。</string>
<string name="v4_4_french_interface_descr">感謝用戶 - 使用 Weblate 的翻譯貢獻!</string>
<string name="snd_conn_event_switch_queue_phase_changing_for_member">正在更改地址為 %s …</string>
<string name="database_encryption_will_be_updated">受加密的數據庫密碼會再次更新和儲存於金鑰庫。</string>
<string name="how_simplex_works"><xliff:g id="appName">SimpleX</xliff:g> 是怎樣運作</string>
<string name="alert_text_skipped_messages_it_can_happen_when">當發生:
\n1. 如果三十天內沒有收到訊息,那麼這些訊息將會在伺服器內過時。
\n2. 你用來接收該聯絡人的訊息伺服器已更新並且重新啟動。
\n3. 連接受到影響或被破壞。
\n請透過設定列尋找開發人員並且報告你的伺服器問題。
\n我們將會新增重複的伺服器以防止遺失伺服器。</string>
<string name="only_client_devices_store_contacts_groups_e2e_encrypted_messages">只有對方的裝置才會儲存你的個人檔案,聯絡人,群組,所有訊息都會經過兩層的端對端加密</string>
<string name="store_passphrase_securely">請放置你的密碼於安全的地方,如果你遺失了密碼,將不可能更改你的密碼。</string>
<string name="stop_chat_to_export_import_or_delete_chat_database">停止聊天室以匯出對話,匯入或刪除對話存檔。當聊天室停止後你將不能接收或傳送訊息。</string>
<string name="alert_title_cant_invite_contacts_descr">你正在使用匿名聊天模式進入此群組,為了避免分享你的真實個人檔案,邀請聯絡人是不允許的。</string>
<string name="you_sent_group_invitation">你傳送了一個群組連結</string>
<string name="snd_group_event_member_deleted">你移除了 <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
<string name="snd_group_event_user_left">你退出了群組</string>
<string name="snd_conn_event_switch_queue_phase_completed_for_member">你修改了地址為 %s</string>
<string name="group_member_status_intro_invitation">連線中(邀請介紹階段)</string>
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">你目前的對話數據庫會刪除並且以你匯入的對話數據庫頂替上。
\n這操作不能還原 - 你現有的個人檔案,聯絡人,訊息和檔案將會不可逆地遺失。</string>
<string name="description_via_contact_address_link">透過聯絡人的邀請連結連線</string>
<string name="description_via_one_time_link">透過一次性連結連線</string>
<string name="network_session_mode_transport_isolation">傳輸隔離</string>
<string name="update_network_session_mode_question">更新傳輸隔離模式?</string>
<string name="to_protect_privacy_simplex_has_ids_for_queues">為了保護隱私,而不像是其他平台般需要提取和存儲用戶的 ID資料<xliff:g id="appName">SimpleX</xliff:g> 本平台具有SimpleX自家隊列的標識符對於你的每個聯絡人也是獨一無二的。</string>
<string name="onboarding_notifications_mode_off">當應用程式是開啟</string>
<string name="you_control_servers_to_receive_your_contacts_to_send">你可以控制通過哪一個伺服器 <b>來接收</b> 你的聯絡人訊息 這些伺服器用來接收他們傳送給你的訊息。</string>
<string name="allow_accepting_calls_from_lock_screen">透過設定啟用於上鎖畫面顯示來電通知</string>
<string name="delete_chat_profile_action_cannot_be_undone_warning">這操作不能還原 - 你現有的個人檔案,聯絡人,訊息和檔案將會不可逆地的失去。</string>
<string name="you_must_use_the_most_recent_version_of_database">你必須在裝置上使用最新版本的對話數據庫,否則你可能會停止接收某些聯絡人的訊息。</string>
<string name="delete_files_and_media_desc">這操作不能還原 - 所有已經接收和傳送的檔案和媒體檔案將會刪除。低解析度圖片將保留。</string>
<string name="messages_section_description">這設置適用於你當前的個人檔案</string>
<string name="enable_automatic_deletion_message">這操作無法撤銷 - 早於所選時間的發送和接收的訊息將被刪除。可能需要幾分鐘的時間。</string>
<string name="update_database_passphrase">更新數據庫密碼</string>
<string name="you_have_to_enter_passphrase_every_time">當每次啟動應用程式後你會需要輸入密碼 - 這不是儲存於你的個人裝置上。</string>
<string name="you_are_invited_to_group">你已經被邀請至群組</string>
<string name="you_will_stop_receiving_messages_from_this_group_chat_history_will_be_preserved">你將停止接收來自此群組的訊息。群組內的記錄會保留。</string>
<string name="you_rejected_group_invitation">你已拒絕加入群組</string>
<string name="group_member_status_announced">連線中(宣布階段)</string>
<string name="num_contacts_selected"><xliff:g id="num_contacts">%1$s</xliff:g> 已選擇多個聊絡人</string>
<string name="your_ice_servers">你的 ICE 伺服器</string>
<string name="webrtc_ice_servers">WebRTC ICE 伺服器</string>
<string name="update_database">更新</string>
<string name="icon_descr_expand_role">添加更多身份選項</string>
<string name="icon_descr_context">聯絡人頭像</string>
<string name="icon_descr_profile_image_placeholder">個人資料頭像占位符</string>
<string name="immune_to_spam_and_abuse">不受垃圾郵件和濫用行為影響</string>
<string name="contact_wants_to_connect_via_call"><xliff:g id="contactName" example="Alice">%1$s</xliff:g> 希望透過以下方式聯絡你</string>
<string name="icon_descr_video_on">開啟視訊</string>
<string name="icon_descr_flip_camera">翻轉相機</string>
<string name="icon_descr_call_pending_sent">待確認通話</string>
<string name="your_privacy">你的私隱</string>
<string name="your_calls">你的通話</string>
<string name="always_use_relay">經由分程傳遞連接</string>
<string name="call_on_lock_screen">在上鎖畫面顯示來電通知:</string>
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g> 你錯過了多個訊息</string>
<string name="integrity_msg_bad_hash">錯誤訊息雜湊值</string>
<string name="alert_title_skipped_messages">你錯過了多個訊息</string>
<string name="settings_section_title_you"></string>
<string name="settings_experimental_features">實驗性功能</string>
<string name="database_is_not_encrypted">你對話的數據庫並未加受加密 - 設置密碼保護它。</string>
<string name="passphrase_is_different">資料庫密碼與保存在金鑰庫中的密碼不同。</string>
<string name="unknown_error">不明的錯誤</string>
<string name="restore_database_alert_desc">還原數據庫備份後請輸入舊密碼。這個操作是不能撤銷的!</string>
<string name="you_can_start_chat_via_setting_or_by_restarting_the_app">你可以透過應用程式的設置或重新啟動應用程式來開始新的對話。</string>
<string name="you_are_invited_to_group_join_to_connect_with_group_members">你已經被邀请加入至群組。加入後可與群組內的成員對話。</string>
<string name="you_joined_this_group">你已加入至群組</string>
<string name="icon_descr_contact_checked">已確認聯絡人</string>
<string name="your_chat_database">你的對話數據庫</string>
<string name="delete_chat_profile_question">刪除個人檔案?</string>
<string name="wrong_passphrase">錯誤的數據庫密碼</string>
<string name="unknown_database_error_with_info">未知的數據庫錯誤:%s</string>
<string name="wrong_passphrase_title">密碼錯誤!</string>
<string name="youve_accepted_group_invitation_connecting_to_inviting_group_member">你已經加入至群組。正在連線至群組內的成員。</string>
<string name="alert_message_no_group">這群組已經不存在。</string>
<string name="rcv_group_event_updated_group_profile">更新群組檔案</string>
<string name="snd_group_event_changed_member_role">你修改了 %s 的身份為 %s</string>
<string name="group_member_status_introduced">連線中(介紹階段)</string>
<string name="use_chat">使用對話</string>
<string name="call_connection_via_relay">透過轉送</string>
<string name="icon_descr_video_off">關閉視訊</string>
<string name="snd_group_event_changed_role_for_yourself">你修改了自己的身份為 %s</string>
<string name="snd_conn_event_switch_queue_phase_completed">你修改了地址</string>
<string name="moderated_item_description">由 %s 管理</string>
<string name="moderate_message_will_be_deleted_warning">將為所有成員刪除該消息。</string>
<string name="delete_member_message__question">刪除成員消息?</string>
<string name="moderate_verb">主持</string>
<string name="moderate_message_will_be_marked_warning">該消息將對所有成員標記為已審核。</string>
<string name="observer_cant_send_message_title">您不能發送消息!</string>
<string name="you_are_observer">您是觀察者</string>
<string name="group_member_role_observer">觀察者</string>
<string name="error_updating_link_for_group">更新群組鏈接時出錯</string>
<string name="observer_cant_send_message_desc">請聯繫群管理員。</string>
<string name="initial_member_role">初始角色</string>
<string name="language_system">系統</string>
</resources>

View File

@@ -2,4 +2,5 @@
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="window_background_dark">#121212</color>
</resources>

View File

@@ -22,12 +22,14 @@
<!-- Item Content - ChatModel.kt -->
<string name="deleted_description">deleted</string>
<string name="marked_deleted_description">marked deleted</string>
<string name="moderated_item_description">moderated by %s</string>
<string name="sending_files_not_yet_supported">sending files is not supported yet</string>
<string name="receiving_files_not_yet_supported">receiving files is not supported yet</string>
<string name="sender_you_pronoun">you</string>
<string name="unknown_message_format">unknown message format</string>
<string name="invalid_message_format">invalid message format</string>
<string name="live">LIVE</string>
<string name="moderated_description">moderated</string>
<string name="invalid_chat">invalid chat</string>
<string name="invalid_data">invalid data</string>
@@ -101,6 +103,7 @@
<string name="smp_server_test_delete_queue">Delete queue</string>
<string name="smp_server_test_disconnect">Disconnect</string>
<string name="error_deleting_user">Error deleting user profile</string>
<string name="error_updating_user_privacy">Error updating user privacy</string>
<!-- background service notice - SimpleXAPI.kt -->
<string name="icon_descr_instant_notifications">Instant notifications</string>
@@ -181,9 +184,13 @@
<string name="reveal_verb">Reveal</string>
<string name="hide_verb">Hide</string>
<string name="allow_verb">Allow</string>
<string name="moderate_verb">Moderate</string>
<string name="delete_message__question">Delete message?</string>
<string name="delete_message_cannot_be_undone_warning">Message will be deleted - this cannot be undone!</string>
<string name="delete_message_mark_deleted_warning">Message will be marked for deletion. The recipient(s) will be able to reveal this message.</string>
<string name="delete_member_message__question">Delete member message?</string>
<string name="moderate_message_will_be_deleted_warning">The message will be deleted for all members.</string>
<string name="moderate_message_will_be_marked_warning">The message will be marked as moderated for all members.</string>
<string name="for_me_only">Delete for me</string>
<string name="for_everybody">For everyone</string>
@@ -221,6 +228,9 @@
<string name="images_limit_desc">Only 10 images can be sent at the same time</string>
<string name="image_decoding_exception_title">Decoding error</string>
<string name="image_decoding_exception_desc">The image cannot be decoded. Please, try a different image or contact developers.</string>
<string name="you_are_observer">you are observer</string>
<string name="observer_cant_send_message_title">You can\'t send messages!</string>
<string name="observer_cant_send_message_desc">Please contact group admin.</string>
<!-- Images - chat.simplex.app.views.chat.item.CIImageView.kt -->
<string name="image_descr">Image</string>
@@ -450,6 +460,7 @@
<string name="smp_servers_check_address">Check server address and try again.</string>
<string name="smp_servers_delete_server">Delete server</string>
<string name="smp_servers_per_user">The servers for new connections of your current chat profile</string>
<string name="smp_save_servers_question">Save servers?</string>
<string name="install_simplex_chat_for_terminal">Install <xliff:g id="appNameFull">SimpleX Chat</xliff:g> for terminal</string>
<string name="star_on_github">Star on GitHub</string>
<string name="contribute">Contribute</string>
@@ -526,6 +537,16 @@
<string name="save_and_notify_group_members">Save and notify group members</string>
<string name="exit_without_saving">Exit without saving</string>
<!-- HiddenProfileView.kt -->
<string name="hide_profile">Hide profile</string>
<string name="password_to_show">Password to show</string>
<string name="save_profile_password">Save profile password</string>
<string name="hidden_profile_password">Hidden profile password</string>
<string name="confirm_password">Confirm password</string>
<string name="to_reveal_profile_enter_password">To reveal your hidden profile, enter a full password into a search field in "Your chat profiles" page.</string>
<string name="error_saving_user_password">Error saving user password</string>
<!-- Welcome Prompts - WelcomeView.kt -->
<string name="you_control_your_chat">You control your chat!</string>
<string name="the_messaging_and_app_platform_protecting_your_privacy_and_security">The messaging and application platform protecting your privacy and security.</string>
@@ -622,13 +643,15 @@
<!-- Call settings -->
<string name="settings_audio_video_calls">Audio &amp; video calls</string>
<string name="your_calls">Your calls</string>
<string name="connect_calls_via_relay">Connect via relay</string>
<string name="always_use_relay">Always use relay</string>
<string name="call_on_lock_screen">Calls on lock screen:</string>
<string name="accept_call_on_lock_screen">Accept</string>
<string name="show_call_on_lock_screen">Show</string>
<string name="no_call_on_lock_screen">Disable</string>
<string name="your_ice_servers">Your ICE servers</string>
<string name="webrtc_ice_servers">WebRTC ICE servers</string>
<string name="relay_server_protects_ip">Relay server protects your IP address, but it can observe the duration of the call.</string>
<string name="relay_server_if_necessary">Relay server is only used if necessary. Another party can observe your IP address.</string>
<!-- Call Lock Screen -->
<string name="open_simplex_chat_to_accept_call">Open <xliff:g id="appNameFull">SimpleX Chat</xliff:g> to accept call</string>
@@ -673,7 +696,6 @@
<string name="your_privacy">Your privacy</string>
<string name="protect_app_screen">Protect app screen</string>
<string name="auto_accept_images">Auto-accept images</string>
<string name="transfer_images_faster">Transfer images faster</string>
<string name="send_link_previews">Send link previews</string>
<string name="full_backup">App data backup</string>
@@ -688,6 +710,7 @@
<string name="settings_developer_tools">Developer tools</string>
<string name="settings_experimental_features">Experimental features</string>
<string name="settings_section_title_socks">SOCKS PROXY</string>
<string name="settings_section_title_language" translatable="false">LANGUAGE</string>
<string name="settings_section_title_icon">APP ICON</string>
<string name="settings_section_title_themes">THEMES</string>
<string name="settings_section_title_messages">MESSAGES</string>
@@ -868,6 +891,7 @@
<string name="snd_conn_event_switch_queue_phase_changing">changing address…</string>
<!-- GroupMemberRole -->
<string name="group_member_role_observer">observer</string>
<string name="group_member_role_member">member</string>
<string name="group_member_role_admin">admin</string>
<string name="group_member_role_owner">owner</string>
@@ -890,6 +914,7 @@
<!-- AddGroupMembersView.kt -->
<string name="no_contacts_to_add">No contacts to add</string>
<string name="new_member_role">New member role</string>
<string name="initial_member_role">Initial role</string>
<string name="icon_descr_expand_role">Expand role selection</string>
<string name="invite_to_group_button">Invite to group</string>
<string name="skip_inviting_button">Skip inviting members</string>
@@ -911,6 +936,8 @@
<string name="delete_group_for_self_cannot_undo_warning">Group will be deleted for you - this cannot be undone!</string>
<string name="button_leave_group">Leave group</string>
<string name="button_edit_group_profile">Edit group profile</string>
<string name="button_add_welcome_message">Add welcome message</string>
<string name="button_welcome_message">Welcome message</string>
<string name="group_link">Group link</string>
<string name="create_group_link">Create group link</string>
<string name="button_create_group_link">Create link</string>
@@ -919,6 +946,7 @@
<string name="you_can_share_group_link_anybody_will_be_able_to_connect">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.</string>
<string name="all_group_members_will_remain_connected">All group members will remain connected.</string>
<string name="error_creating_link_for_group">Error creating group link</string>
<string name="error_updating_link_for_group">Error updating group link</string>
<string name="error_deleting_link_for_group">Error deleting group link</string>
<string name="only_group_owners_can_change_prefs">Only group owners can change group preferences.</string>
@@ -947,6 +975,11 @@
<string name="conn_level_desc_direct">direct</string>
<string name="conn_level_desc_indirect">indirect (<xliff:g id="conn_level">%1$s</xliff:g>)</string>
<!-- GroupWelcomeView.kt -->
<string name="group_welcome_title">Welcome message</string>
<string name="save_welcome_message_question">Save welcome message?</string>
<string name="save_and_update_group_profile">Save and update group profile</string>
<!-- ConnectionStats -->
<string name="conn_stats_section_title_servers">SERVERS</string>
<string name="receiving_via">Receiving via</string>
@@ -990,6 +1023,20 @@
<string name="users_delete_profile_for">Delete chat profile for</string>
<string name="users_delete_with_connections">Profile and server connections</string>
<string name="users_delete_data_only">Local profile data only</string>
<string name="user_hide">Hide</string>
<string name="user_unhide">Unhide</string>
<string name="user_mute">Mute</string>
<string name="user_unmute">Unmute</string>
<string name="enter_password_to_show">Enter password above to show!</string>
<string name="tap_to_activate_profile">Tap to activate profile.</string>
<string name="cant_delete_user_profile">Can\'t delete user profile!</string>
<string name="should_be_at_least_one_visible_profile">There should be at least one visible user profile.</string>
<string name="should_be_at_least_one_profile">There should be at least one user profile.</string>
<string name="make_profile_private">Make profile private!</string>
<string name="you_can_hide_or_mute_user_profile">You can hide or mute a user profile - hold it for the menu.\nSimpleX Lock must be enabled.</string>
<string name="dont_show_again">Don\'t show again</string>
<string name="muted_when_inactive">Muted when inactive!</string>
<string name="you_will_still_receive_calls_and_ntfs">You will still receive calls and notifications from muted profiles when they are active.</string>
<!-- Incognito mode -->
<string name="incognito">Incognito</string>
@@ -1007,6 +1054,9 @@
<string name="theme_light">Light</string>
<string name="theme_dark">Dark</string>
<!-- Languages -->
<string name="language_system">System</string>
<!-- Appearance.kt -->
<string name="theme">Theme</string>
<string name="save_color">Save color</string>
@@ -1119,4 +1169,30 @@
<string name="v4_4_live_messages_desc">Recipients see updates as you type them.</string>
<string name="v4_4_verify_connection_security">Verify connection security</string>
<string name="v4_4_verify_connection_security_desc">Compare security codes with your contacts.</string>
<string name="v4_4_french_interface">French interface</string>
<string name="v4_4_french_interface_descr">Thanks to the users contribute via Weblate!</string>
<string name="v4_5_multiple_chat_profiles">Multiple chat profiles</string>
<string name="v4_5_multiple_chat_profiles_descr">Different names, avatars and transport isolation.</string>
<string name="v4_5_message_draft">Message draft</string>
<string name="v4_5_message_draft_descr">Preserve the last message draft, with attachments.</string>
<string name="v4_5_transport_isolation">Transport isolation</string>
<string name="v4_5_transport_isolation_descr">By chat profile (default) or by connection (BETA).</string>
<string name="v4_5_private_filenames">Private filenames</string>
<string name="v4_5_private_filenames_descr">To protect timezone, image/voice files use UTC.</string>
<string name="v4_5_reduced_battery_usage">Reduced battery usage</string>
<string name="v4_5_reduced_battery_usage_descr">More improvements are coming soon!</string>
<string name="v4_5_italian_interface">Italian interface</string>
<string name="v4_5_italian_interface_descr">Thanks to the users contribute via Weblate!</string>
<string name="v4_6_hidden_chat_profiles">Hidden chat profiles</string>
<string name="v4_6_hidden_chat_profiles_descr">Protect your chat profiles with a password!</string>
<string name="v4_6_audio_video_calls">Audio and video calls</string>
<string name="v4_6_audio_video_calls_descr">Support bluetooth and other improvements.</string>
<string name="v4_6_group_moderation">Group moderation</string>
<string name="v4_6_group_moderation_descr">Now admins can:\n- delete members\' messages.\n- disable members (\"observer\" role)</string>
<string name="v4_6_group_welcome_message">Group welcome message</string>
<string name="v4_6_group_welcome_message_descr">Set the message shown to new members!</string>
<string name="v4_6_reduced_battery_usage">Further reduced battery usage</string>
<string name="v4_6_reduced_battery_usage_descr">More improvements are coming soon!</string>
<string name="v4_6_chinese_spanish_interface">Chinese and Spanish interface</string>
<string name="v4_6_chinese_spanish_interface_descr">Thanks to the users contribute via Weblate!</string>
</resources>

View File

@@ -1,3 +1,4 @@
<paths>
<files-path name="my_files" path="/"/>
<files-path name="app_temp" path="../app_temp"/>
</paths>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en"/>
<locale android:name="ru"/>
<locale android:name="de"/>
<locale android:name="fr"/>
<locale android:name="it"/>
<locale android:name="nl"/>
<locale android:name="cs"/>
<locale android:name="zh-CN"/>
</locale-config>

1
apps/ios/README.md Normal file
View File

@@ -0,0 +1 @@
# SimpleX Chat iOS app

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "decentralized_light.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "decentralized_light@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "decentralized_light@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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