Compare commits

...

76 Commits

Author SHA1 Message Date
Arturs Krumins 3a0921c093 ios: asychronous subscription updates (#4707)
* ios: asychronous subscription updates

* cleanup
2024-08-17 13:26:56 +01:00
Evgeny 3740805125 core: batch connection subscription transactions (#4701)
* core: batch connection subscription transactions

* simplexmq
2024-08-16 11:55:22 +01:00
Arturs Krumins b0e0b0beb8 remove text slection context menu from chat item (#4699) 2024-08-15 20:08:51 +01:00
Arturs Krumins c823a4fa6c extend chat view material behind keyboard (#4698)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-15 18:43:30 +01:00
Arturs Krumins 3c694e2841 upgrade code scanner (#4650)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-15 18:21:22 +01:00
Arturs Krumins c159c2ede3 ios: fix pending connection sheet styling when opened via icon; fix tappable area of pending connections and contact requests (#4694)
* fix new contact sheet styling

* fix contact request tappable area

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-08-15 14:15:24 +04:00
spaced4ndy 1d0d7bbd01 core: batch send file descriptions (#4684)
* core: batch send file descriptions

* fix useMember

* fix result interpretation

* remove comment

* refactor

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-15 13:43:57 +04:00
Evgeny Poberezkin 82c4d77c73 6.0.1: ios 233, android 232, desktop 62 2024-08-14 23:10:06 +01:00
Evgeny 25938af62f ui: translations (#4654)
* Translated using Weblate (Dutch)

Currently translated at 100.0% (2030 of 2030 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 28.5% (580 of 2030 strings)

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

* Translated using Weblate (Indonesian)

Currently translated at 5.2% (106 of 2030 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (2030 of 2030 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 28.5% (580 of 2030 strings)

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

* Translated using Weblate (Indonesian)

Currently translated at 5.2% (106 of 2030 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (1785 of 1785 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2030 of 2030 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1785 of 1785 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 29.3% (595 of 2030 strings)

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Vietnamese)

Currently translated at 29.9% (607 of 2030 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 30.5% (621 of 2030 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2032 of 2032 strings)

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

* Translated using Weblate (French)

Currently translated at 97.4% (1981 of 2032 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 97.8% (1989 of 2032 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 98.7% (2007 of 2032 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% (2032 of 2032 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% (1785 of 1785 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2032 of 2032 strings)

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

* Translated using Weblate (German)

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

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

* Translated using Weblate (Italian)

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

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

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (2032 of 2032 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 31.3% (638 of 2032 strings)

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

* Translated using Weblate (Indonesian)

Currently translated at 5.2% (107 of 2032 strings)

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

* process localizations

* update ru

---------

Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: tuananh-ng <158744840+tuananh-ng@users.noreply.github.com>
Co-authored-by: billy appetie <billy_appetie@users.noreply.hosted.weblate.org>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
2024-08-14 21:12:50 +01:00
Evgeny edfcced1fa website: translation (#4692)
* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (257 of 257 strings)

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

* space

---------

Co-authored-by: Bezruchenko Simon <worcposj44@gmail.com>
2024-08-14 21:01:28 +01:00
Evgeny Poberezkin 5bff5a855e core: 6.0.1.0 2024-08-14 20:30:11 +01:00
Arturs Krumins 46a60d979b ios: fix messages reseting position, when app is brought from background to foreground (#4686)
* ios: fix messages reseting position, when app is brought back to foreground

* minor
2024-08-14 20:14:40 +01:00
Arturs Krumins f6ef57534f ios: add text to share extension link preview (#4683)
* ios: add text to share extension link preview

* remove maxHeight contraint
2024-08-14 19:29:13 +01:00
Stanislav Dmitrenko 1e4479f736 android, desktop: fix loading more items when fast switching chats (#4685)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-14 19:08:08 +01:00
Stanislav Dmitrenko 789c762c81 android: hide keyboard when not needed (#4689)
* android: hide keyboard when not needed

* revert some parts

* more places

* unused

* delay

* comment
2024-08-14 18:59:53 +01:00
Evgeny e9baeba31f blog: v6 announcement (#4598)
* blog: v6 announcement

* update
2024-08-14 14:10:14 +01:00
Arturs Krumins 2d5bbcdd61 ios: fix merged item order (#4682) 2024-08-14 07:59:58 +01:00
Arturs Krumins c3f67aff69 ios: speed up network status handling (#4678)
* move network status into a separate model

* reduce network model observation scope (#4679)

* dont pass chat

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-13 21:08:04 +01:00
Arturs Krumins 7cb3a499b2 ios: optimise chat switching (#4663)
* ios: shooth chat switching

* debug button

* navigation timeout

* fix scroll crash

* fix merge

* whitespace

* wip

* add spinner; extract load and nav logic

* cleanup

* direct chat button

* cleanup

* showLoadingProgress

* reverse rename

* rename

* spinner layout

* move all programmatic navigation to `openLoadChat`

* remove access restriction

* fix scroll on item added regression

* print

* fix page load regression

* fix member sheet disappearing

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-13 19:37:48 +01:00
Stanislav Dmitrenko 32e7fd72d3 android, desktop: searching in different screens using the same data (#4673)
* android, desktop: searching in different screens using the same data

* don't filter if not needed
2024-08-13 19:15:54 +01:00
Stanislav Dmitrenko 915bbed400 android, desktop: fix chatView state propagation (#4676) 2024-08-13 19:11:04 +01:00
Stanislav Dmitrenko 2ae5a8bffd android, desktop: padding for RTL layout and remembering prefered layout (#4675)
* android, desktop: padding for RTL layout and remembering prefered layout

* refactor

* changes
2024-08-13 19:07:03 +01:00
Stanislav Dmitrenko cd1550a14d android, desktop: fix crash on marking chat read (#4671) 2024-08-13 18:56:47 +01:00
Stanislav Dmitrenko c72c461306 android: replacing a crash with an alert when opening broken Uri (#4674)
* android: replacing a crash with an alert when opening broken Uri

* strings

---------

Co-authored-by: Evgeny <evgeny@poberezkin.com>
2024-08-13 18:42:33 +01:00
spaced4ndy 38fa4c231f ui: improve remote controller stop reason (#4670) 2024-08-13 15:05:13 +04:00
spaced4ndy cb683d0706 ui: disable subs indicator when chat is stopped (#4672) 2024-08-13 13:14:27 +04:00
Diogo 84ae39b012 android: fix group creation chat redirection showing attachments view (#4669) 2024-08-13 12:18:06 +04:00
Stanislav Dmitrenko 6a12f2dec8 ios: fix updating chat wallpaper while app is in background (#4661) 2024-08-12 21:57:04 +01:00
Diogo d1f704d160 multiplatform: mark chat non deleted only on send/receive (keep chatDeleted flag on open) (#4664) 2024-08-12 19:50:36 +04:00
Diogo 9871ebb3b1 ios: mark chat non deleted only on send/receive (keep chatDeleted flag on open) (#4659)
* ios: navigation to delete chat working for group members

* modify

* Revert "modify"

This reverts commit fc811bbb84.

* don't mark non deleted on open, mark on send

* simplify

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-08-12 18:49:34 +04:00
Evgeny 02c404593c cli: do not log events for hidden user profiles (#4658)
* cli: do not log events for hidden user profiles

* fix
2024-08-12 08:45:11 +01:00
sh 1d9c5b7a0b flatpak: update metainfo (#4660) 2024-08-12 11:42:48 +04:00
Evgeny Poberezkin e20a4e54c3 6.0: ios 232, android 230, desktop 61 2024-08-11 14:31:00 +01:00
Stanislav Dmitrenko 1f8c69ec23 ios: fix applying chat theme (#4656) 2024-08-11 13:11:11 +01:00
Arturs Krumins 35c37263b8 ios: fix group replaced in the list of chats with direct chat (#4655)
* add viewbuilder

* fix

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-11 12:06:25 +01:00
Arturs Krumins 9b70599cc5 ios: scroll chat list to bottom, when items are added (#4651)
* scroll chat list to bottom

* simpler

* is really near bottom

* reduce thresholds

* comment

* itemAdded

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-11 10:07:45 +01:00
Evgeny a4a11f99d2 ios: fix switching to another chat prevents marking items as unread (#4652) 2024-08-11 07:18:01 +01:00
Evgeny Poberezkin 7c8955fcdb ios: core library 6.0.0.7 2024-08-10 22:49:47 +01:00
Arturs Krumins f922064f5c iOS: fix chat list temporarily navigating to an empty view (#4647)
* add two way binding for chatList navigation

* style

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-10 22:23:56 +01:00
Evgeny 110839627f ios: new message sheet detents (#4639)
* ios: new message sheet detents

* animation

* use isActive

* fix sheet rendering

* minor

* increase onTap area

* cleanup

* cleanup

* refactor, dont allow reducing sheet once opened

---------

Co-authored-by: Levitating Pineapple <noreply@levitatingpineapple.com>
2024-08-10 22:18:49 +01:00
Evgeny Poberezkin c90b71120f core: 6.0.0.7 2024-08-10 21:53:21 +01:00
Evgeny 3ec029e489 core: fix auto-reply to the previous version clients (#4649)
* core: fix auto-reply to the previous version clients

* add condition, refactor
2024-08-10 21:52:21 +01:00
Evgeny f4c799aced ui: translations (#4648)
* Translated using Weblate (German)

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

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

* Translated using Weblate (Italian)

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

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2030 of 2030 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1785 of 1785 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 28.0% (569 of 2030 strings)

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1785 of 1785 strings)

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2030 of 2030 strings)

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2030 of 2030 strings)

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

* Translated using Weblate (Russian)

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

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

* process localizations, update RU

* remove quotes

---------

Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: tuananh-ng <158744840+tuananh-ng@users.noreply.github.com>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
2024-08-10 15:51:29 +01:00
Evgeny d970470702 ui: fix throttled chat ordering (#4645)
* ios: fix throttled chat ordering

* optimize

* account for added chats

* revert kotlin change

* dont pop chat that is already on top, unify with addChat

* android, desktop: fix chat ordering

* update

* clear

* fix ios

* refactor sorting
2024-08-10 14:04:37 +01:00
Evgeny Poberezkin 9ee74bd36e core: 6.0.0.6 (simplexmq 6.0.0.8) 2024-08-09 23:16:39 +01:00
Evgeny 0a4ff2e35f core: reduce usage of STM transactions for better performance and memory usage (#4636)
* core: reduce usage of STM transactions for better performance and memory usage

* simplexmq

* fix test crash

* enable all tests

* simplexmq
2024-08-09 22:30:30 +01:00
Stanislav Dmitrenko a3550df893 android, desktop: small layout changes (#4643)
* android, desktop: small layout changes

* padding

* blue theme handling

* themedBackground on onboarding

* status bar in call

* disabled elevation on attachments sheet to prevent seeing shadow from the bottom

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-09 21:51:40 +01:00
Evgeny Poberezkin 3778698a6e ios: set default toolbar opacity to regular, show dropdown 2024-08-09 17:26:57 +01:00
Arturs Krumins cf7a16e857 ios: translucent bars in chat view (#4641)
* extend reverse list; disable clipping

* wallpaper - ignore safe area

* minor

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-08-09 17:23:57 +01:00
Evgeny bef1597fa1 ui: fix when moderation for multiple items is enabled (#4642)
* ios: fix when moderation for multiple items is enabled

* same on Android

* same

---------

Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
2024-08-09 19:56:19 +04:00
spaced4ndy f06118835d android: don't show local authentication notice on first start (#4640) 2024-08-09 18:29:14 +04:00
Evgeny Poberezkin fa9e50a904 desktop: correct ru translation 2024-08-09 13:28:39 +01:00
Evgeny Poberezkin 932a65630c desktop, android: remove duplicate localization string 2024-08-09 13:17:14 +01:00
Evgeny b649b64999 ui: translations (#4638)
* Translated using Weblate (German)

Currently translated at 97.8% (1986 of 2029 strings)

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

* Translated using Weblate (Russian)

Currently translated at 99.2% (2014 of 2029 strings)

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

* Translated using Weblate (French)

Currently translated at 97.4% (1978 of 2029 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 99.1% (2012 of 2029 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 99.1% (2012 of 2029 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 59.0% (1198 of 2029 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 99.0% (2010 of 2029 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.1% (2012 of 2029 strings)

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

* Translated using Weblate (Japanese)

Currently translated at 88.6% (1799 of 2029 strings)

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

* Translated using Weblate (Czech)

Currently translated at 88.7% (1801 of 2029 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 79.7% (1618 of 2029 strings)

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

* Translated using Weblate (Arabic)

Currently translated at 99.0% (2009 of 2029 strings)

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

* Translated using Weblate (Ukrainian)

Currently translated at 89.1% (1809 of 2029 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 86.0% (1745 of 2029 strings)

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

* Translated using Weblate (Finnish)

Currently translated at 72.6% (1474 of 2029 strings)

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

* Translated using Weblate (Korean)

Currently translated at 45.7% (929 of 2029 strings)

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

* Translated using Weblate (Polish)

Currently translated at 95.7% (1943 of 2029 strings)

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

* Translated using Weblate (Portuguese)

Currently translated at 45.5% (925 of 2029 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 92.8% (1883 of 2029 strings)

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

* Translated using Weblate (Thai)

Currently translated at 63.7% (1293 of 2029 strings)

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

* Translated using Weblate (Bulgarian)

Currently translated at 85.0% (1726 of 2029 strings)

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

* Translated using Weblate (Turkish)

Currently translated at 89.1% (1809 of 2029 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 99.1% (2012 of 2029 strings)

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

* Translated using Weblate (Persian)

Currently translated at 89.7% (1821 of 2029 strings)

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

* Translated using Weblate (Romanian)

Currently translated at 33.0% (670 of 2029 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 27.4% (556 of 2029 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 99.2% (2013 of 2029 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2029 of 2029 strings)

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

* Translated using Weblate (German)

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

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

* Translated using Weblate (Italian)

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

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2029 of 2029 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1786 of 1786 strings)

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

* process localizations

* ru: translate New message

---------

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
2024-08-09 13:07:19 +01:00
Evgeny e94ead3a4f ui: rename sheet to "New message" (#4637)
* ui: rename sheet to "New message"

* export localizations
2024-08-09 12:40:39 +01:00
spaced4ndy 42d7c20a47 ios: fix appSheet screen protection for ios 16 (#4635)
* ios: fix app sheet screen protection for ios 16

* comment
2024-08-09 11:43:42 +01:00
Evgeny Poberezkin cf8fd2ea11 6.0-beta.4: ios 231, android 229, desktop 60 2024-08-08 21:43:23 +01:00
Evgeny 5006742577 android: move reachable toolbar card above Private notes for the new users (#4633) 2024-08-08 20:49:00 +01:00
Stanislav Dmitrenko 38d46891a1 android, desktop: onboarding design changes (#4631)
* android, desktop: onboarding design changes

* changes

* onboardingState + status bar color

* paddings, update texts

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-08 20:25:56 +01:00
Evgeny 6a7e573b42 ios: rename group default for SimpleX Lock to protect share extension without unnecessarily locking the app (#4632) 2024-08-08 18:27:46 +01:00
Stanislav Dmitrenko b31a74567d ios: fix appSheet (#4627)
* ios: fix appSheet

* old method

* refactor

* refactor

* Revert "refactor"

This reverts commit 32333a13d3.

* Revert "refactor"

This reverts commit da42bd9ecf.

* Revert "old method"

This reverts commit a9cd219479.

* refactor

* remove

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-08-08 21:12:55 +04:00
Evgeny b3f0e71ded ios: toolbar opacity (#4630)
* ios: toolbar material

* top toolbar too
2024-08-08 17:25:45 +01:00
Evgeny ed50623ef5 ui: translations (#4626)
* Translated using Weblate (Russian)

Currently translated at 100.0% (2020 of 2020 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 86.3% (1537 of 1780 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (2020 of 2020 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% (1780 of 1780 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 100.0% (2020 of 2020 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% (1780 of 1780 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 89.5% (1808 of 2020 strings)

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

* Translated using Weblate (Russian)

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

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

* Translated using Weblate (Arabic)

Currently translated at 100.0% (2020 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 98.8% (1997 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 98.8% (1997 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 98.9% (1998 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 98.9% (1998 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 99.0% (2000 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 99.0% (2000 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 99.2% (2004 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 99.2% (2004 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2020 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2020 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1780 of 1780 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2020 of 2020 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1780 of 1780 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (2021 of 2021 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 98.9% (1999 of 2021 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 93.6% (1667 of 1780 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% (2021 of 2021 strings)

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

* Translated using Weblate (Spanish)

Currently translated at 99.5% (2011 of 2021 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 99.7% (2015 of 2021 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% (2021 of 2021 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 94.8% (1689 of 1780 strings)

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

* Translated using Weblate (Italian)

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

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

* Translated using Weblate (Spanish)

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

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

* Translated using Weblate (Hebrew)

Currently translated at 93.4% (1890 of 2023 strings)

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

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (2023 of 2023 strings)

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

* import/export localizations

* ru: corrections

* export localizations

---------

Co-authored-by: J R <jr@simplex.chat>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: הצל השחור וואהה!!!! <ty79k9+5pm8c50cjgpm4@sharklasers.com>
2024-08-08 15:27:36 +01:00
Evgeny 53368713a0 Translated using Weblate (Russian) (#4629)
Currently translated at 100.0% (257 of 257 strings)

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

Co-authored-by: J R <jr@simplex.chat>
2024-08-08 15:26:00 +01:00
Evgeny Poberezkin 5739b94808 core: 6.0.0.5 (simplexmq 6.0.0.7) 2024-08-08 13:18:49 +01:00
spaced4ndy 0782408682 multiplatform: improve info views actions buttons design (#4622)
* multiplatform: improve info views actions buttons design

* spaces

* rework

* fix width
2024-08-08 13:10:13 +01:00
Evgeny 41576f80e7 ui: update whats new in 6.0 (#4625)
* ui: update whats new in 6.0

* update

* export localization

* android whats new
2024-08-08 13:07:55 +01:00
Arturs Krumins 2503a86f07 ios: tapping chat list bottom bar scrolls to search input (#4623)
* ios: tapping bottom bar scrolls to search input

* disable for iOS15
2024-08-07 23:00:16 +01:00
spaced4ndy dc713268e8 ios: fix search color in simplex dark theme (#4611)
* ios: fix search color in simplex dark theme

* paddings, colors, group icon

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-07 22:39:05 +01:00
Stanislav Dmitrenko d0c52e43a2 android, desktop: throttle items moving around in chat list too often (#4617)
* android, desktop: throttle items moving around in chat list too often

* test

* Revert "test"

This reverts commit 82db198ed9.

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-07 20:34:51 +01:00
Diogo 2e8e6cef7e android: reachable toolbar card on start (#4608)
* android: reachable toolbar card on start

* same padding for all elements

* show alert with instruction when dismissed

* reset tip, fix for variable font size

* layout, rename

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-08-07 20:20:12 +01:00
Arturs Krumins 239c815f3e ios: fix chat list bottom bar background appearance (#4612)
* ios: fix chat list bottom bar background appearance

* push up bottom bar, when no home indicator is present; tapable chats

* smaller toolbar

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-08-07 16:24:15 +01:00
Stanislav Dmitrenko 1a6245fe51 android, desktop: prevent migration when network conf wasn't applied (#4615)
* android, desktop: prevent migration when network conf wasn't applied

* name of param
2024-08-07 15:42:31 +01:00
Evgeny b3d15f97f0 core: stop stats when chat is stopped (#4616)
* core: stop stats when chat is stopped

* rename field

* simplexmq
2024-08-07 14:49:58 +01:00
Evgeny c0b8cfb3e2 ui: reset hints in dev tools (#4613)
* ui: reset hints in dev tools

* fix disabled, icon, remove damage

* icon
2024-08-07 11:01:23 +01:00
Arturs Krumins 818161c6ed ios: fix chat list swipe action localisation regression (#4610) 2024-08-07 08:36:52 +01:00
173 changed files with 7579 additions and 2704 deletions
+4 -2
View File
@@ -18,7 +18,7 @@
2. ↔️ [Connect to the team](#connect-to-the-team), [join user groups](#join-user-groups) and [follow our updates](#follow-our-updates).
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).
5. ⚡️ [Contribute](#contribute) and [support us with donations](#please-support-us-with-your-donations).
[Learn more about SimpleX Chat](#contents).
@@ -150,7 +150,7 @@ We would love to have you join the development! You can help us with:
- 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
## Please support us with your donations
Huge thank you to everybody who donated to SimpleX Chat!
@@ -233,6 +233,8 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
[Aug 14, 2024. SimpleX network: the investment from Jack Dorsey and Asymmetric, v6.0 released with the new user experience and private message routing](./blog/20240814-simplex-chat-vision-funding-v6-private-routing-new-user-experience.md)
[Jun 4, 2024. SimpleX network: private message routing, v5.8 released with IP address protection and chat themes](./blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.md)
[Apr 26, 2024. SimpleX network: legally binding transparency, v5.7 released with better calls and messages.](./blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md)
-19
View File
@@ -15,31 +15,12 @@ class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
logger.debug("AppDelegate: didFinishLaunchingWithOptions")
application.registerForRemoteNotifications()
if #available(iOS 17.0, *) { trackKeyboard() }
NotificationCenter.default.addObserver(self, selector: #selector(pasteboardChanged), name: UIPasteboard.changedNotification, object: nil)
removePasscodesIfReinstalled()
prepareForLaunch()
return true
}
@available(iOS 17.0, *)
private func trackKeyboard() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@available(iOS 17.0, *)
@objc func keyboardWillShow(_ notification: Notification) {
if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
ChatModel.shared.keyboardHeight = keyboardFrame.cgRectValue.height
}
}
@available(iOS 17.0, *)
@objc func keyboardWillHide(_ notification: Notification) {
ChatModel.shared.keyboardHeight = 0
}
@objc func pasteboardChanged() {
ChatModel.shared.pasteboardHasStrings = UIPasteboard.general.hasStrings
}
+141 -38
View File
@@ -50,12 +50,77 @@ class ItemsModel: ObservableObject {
var reversedChatItems: [ChatItem] = [] {
willSet { publisher.send() }
}
var itemAdded = false {
willSet { publisher.send() }
}
// Publishes directly to `objectWillChange` publisher,
// this will cause reversedChatItems to be rendered without throttling
@Published var isLoading = false
@Published var showLoadingProgress = false
init() {
publisher
.throttle(for: 0.25, scheduler: DispatchQueue.main, latest: true)
.sink { self.objectWillChange.send() }
.store(in: &bag)
}
func loadOpenChat(_ chatId: ChatId, willNavigate: @escaping () -> Void = {}) {
let navigationTimeout = Task {
do {
try await Task.sleep(nanoseconds: 250_000000)
await MainActor.run {
willNavigate()
ChatModel.shared.chatId = chatId
}
} catch {}
}
let progressTimeout = Task {
do {
try await Task.sleep(nanoseconds: 1500_000000)
await MainActor.run { showLoadingProgress = true }
} catch {}
}
Task {
if let chat = ChatModel.shared.getChat(chatId) {
await MainActor.run { self.isLoading = true }
// try? await Task.sleep(nanoseconds: 5000_000000)
await loadChat(chat: chat)
navigationTimeout.cancel()
progressTimeout.cancel()
await MainActor.run {
self.isLoading = false
self.showLoadingProgress = false
willNavigate()
ChatModel.shared.chatId = chatId
}
}
}
}
}
class NetworkModel: ObservableObject {
// map of connections network statuses, key is agent connection id
@Published var networkStatuses: Dictionary<String, NetworkStatus> = [:]
static let shared = NetworkModel()
private init() { }
func setContactNetworkStatus(_ contact: Contact, _ status: NetworkStatus) {
if let conn = contact.activeConn {
networkStatuses[conn.agentConnId] = status
}
}
func contactNetworkStatus(_ contact: Contact) -> NetworkStatus {
if let conn = contact.activeConn {
networkStatuses[conn.agentConnId] ?? .unknown
} else {
.unknown
}
}
}
final class ChatModel: ObservableObject {
@@ -80,8 +145,6 @@ final class ChatModel: ObservableObject {
// list of chat "previews"
@Published var chats: [Chat] = []
@Published var deletedChats: Set<String> = []
// map of connections network statuses, key is agent connection id
@Published var networkStatuses: Dictionary<String, NetworkStatus> = [:]
// current chat
@Published var chatId: String?
var chatItemStatuses: Dictionary<Int64, CIStatus> = [:]
@@ -120,8 +183,6 @@ final class ChatModel: ObservableObject {
@Published var stopPreviousRecPlay: URL? = nil // coordinates currently playing source
@Published var draft: ComposeState?
@Published var draftChatId: String?
// tracks keyboard height via subscription in AppDelegate
@Published var keyboardHeight: CGFloat = 0
@Published var pasteboardHasStrings: Bool = UIPasteboard.general.hasStrings
@Published var networkInfo = UserNetworkInfo(networkType: .other, online: true)
@@ -228,10 +289,17 @@ final class ChatModel: ObservableObject {
chats.firstIndex(where: { $0.id == id })
}
func addChat(_ chat: Chat, at position: Int = 0) {
withAnimation {
chats.insert(chat, at: position)
func addChat(_ chat: Chat) {
if chatId == nil {
withAnimation { addChat_(chat, at: 0) }
} else {
addChat_(chat, at: 0)
}
popChatCollector.throttlePopChat(chat.chatInfo.id, currentPosition: 0)
}
func addChat_(_ chat: Chat, at position: Int = 0) {
chats.insert(chat, at: position)
}
func updateChatInfo(_ cInfo: ChatInfo) {
@@ -305,10 +373,11 @@ final class ChatModel: ObservableObject {
}
}
} else {
addChat(Chat(c), at: i)
addChat_(Chat(c), at: i)
}
}
NtfManager.shared.setNtfBadgeCount(totalUnreadCountForAllUsers())
popChatCollector.clear()
}
// func addGroup(_ group: SimpleXChat.Group) {
@@ -316,6 +385,12 @@ final class ChatModel: ObservableObject {
// }
func addChatItem(_ cInfo: ChatInfo, _ cItem: ChatItem) {
// mark chat non deleted
if case let .direct(contact) = cInfo, contact.chatDeleted {
var updatedContact = contact
updatedContact.chatDeleted = false
updateContact(updatedContact)
}
// update previews
if let i = getChatIndex(cInfo.id) {
chats[i].chatItems = switch cInfo {
@@ -335,7 +410,7 @@ final class ChatModel: ObservableObject {
if case .rcvNew = cItem.meta.itemStatus {
unreadCollector.changeUnreadCounter(cInfo.id, by: 1)
}
popChatCollector.addChat(cInfo.id)
popChatCollector.throttlePopChat(cInfo.id, currentPosition: i)
} else {
addChat(Chat(chatInfo: cInfo, chatItems: [cItem]))
}
@@ -381,6 +456,7 @@ final class ChatModel: ObservableObject {
ci.meta.itemStatus = status
}
im.reversedChatItems.insert(ci, at: hasLiveDummy ? 1 : 0)
im.itemAdded = true
}
return true
}
@@ -475,6 +551,7 @@ final class ChatModel: ObservableObject {
let cItem = ChatItem.liveDummy(chatInfo.chatType)
withAnimation {
im.reversedChatItems.insert(cItem, at: 0)
im.itemAdded = true
}
return cItem
}
@@ -610,29 +687,61 @@ final class ChatModel: ObservableObject {
class PopChatCollector {
private let subject = PassthroughSubject<Void, Never>()
private var bag = Set<AnyCancellable>()
private var chatsToPop: [ChatId: Date] = [:]
private let popTsComparator = KeyPathComparator<Chat>(\.popTs, order: .reverse)
init() {
subject
.throttle(for: 2, scheduler: DispatchQueue.main, latest: true)
.sink {
let m = ChatModel.shared
if m.chatId == nil {
withAnimation {
m.chats = m.chats.sorted(using: KeyPathComparator(\.popTs, order: .reverse))
}
} else {
m.chats = m.chats.sorted(using: KeyPathComparator(\.popTs, order: .reverse))
}
}
.sink { self.popCollectedChats() }
.store(in: &bag)
}
func addChat(_ chatId: ChatId) {
if let index = ChatModel.shared.getChatIndex(chatId) {
ChatModel.shared.chats[index].popTs = CFAbsoluteTimeGetCurrent()
func throttlePopChat(_ chatId: ChatId, currentPosition: Int) {
let m = ChatModel.shared
if currentPosition > 0 && m.chatId == chatId {
m.chatToTop = chatId
}
if currentPosition > 0 || !chatsToPop.isEmpty {
chatsToPop[chatId] = Date.now
subject.send()
}
}
func clear() {
chatsToPop = [:]
}
func popCollectedChats() {
let m = ChatModel.shared
var ixs: IndexSet = []
var chs: [Chat] = []
// collect chats that received updates
for (chatId, popTs) in self.chatsToPop {
// Currently opened chat is excluded, removing it from the list would navigate out of it
// It will be popped to top later when user exits from the list.
if m.chatId != chatId, let i = m.getChatIndex(chatId) {
ixs.insert(i)
let ch = m.chats[i]
ch.popTs = popTs
chs.append(ch)
}
}
let removeInsert = {
m.chats.remove(atOffsets: ixs)
// sort chats by pop timestamp in descending order
m.chats.insert(contentsOf: chs.sorted(using: self.popTsComparator), at: 0)
}
if m.chatId == nil {
withAnimation { removeInsert() }
} else {
removeInsert()
}
self.chatsToPop = [:]
}
}
private func markChatItemRead_(_ i: Int) {
@@ -729,6 +838,7 @@ final class ChatModel: ObservableObject {
func popChat(_ id: String) {
if let i = getChatIndex(id) {
// no animation here, for it not to look like it just moved when leaving the chat
popChat_(i)
}
}
@@ -801,7 +911,13 @@ final class ChatModel: ObservableObject {
}
i += 1
}
return UnreadChatItemCounts(isNearBottom: totalBelow < 16, unreadBelow: unreadBelow)
return UnreadChatItemCounts(
// TODO these thresholds account for the fact that items are still "visible" while
// covered by compose area, they should be replaced with the actual height in pixels below the screen.
isNearBottom: totalBelow < 15,
isReallyNearBottom: totalBelow < 2,
unreadBelow: unreadBelow
)
}
func topItemInView(itemsInView: Set<String>) -> ChatItem? {
@@ -812,20 +928,6 @@ final class ChatModel: ObservableObject {
while i < maxIx && inView(i) { i += 1 }
return im.reversedChatItems[min(i - 1, maxIx)]
}
func setContactNetworkStatus(_ contact: Contact, _ status: NetworkStatus) {
if let conn = contact.activeConn {
networkStatuses[conn.agentConnId] = status
}
}
func contactNetworkStatus(_ contact: Contact) -> NetworkStatus {
if let conn = contact.activeConn {
networkStatuses[conn.agentConnId] ?? .unknown
} else {
.unknown
}
}
}
struct ShowingInvitation {
@@ -840,6 +942,7 @@ struct NTFContactRequest {
struct UnreadChatItemCounts: Equatable {
var isNearBottom: Bool
var isReallyNearBottom: Bool
var unreadBelow: Int
}
@@ -848,7 +951,7 @@ final class Chat: ObservableObject, Identifiable, ChatLike {
@Published var chatItems: [ChatItem]
@Published var chatStats: ChatStats
var created = Date.now
var popTs: CFAbsoluteTime?
fileprivate var popTs: Date?
init(_ cData: ChatData) {
self.chatInfo = cData.chatInfo
+3 -1
View File
@@ -57,7 +57,9 @@ class NtfManager: NSObject, UNUserNotificationCenterDelegate, ObservableObject {
chatModel.ntfCallInvitationAction = (chatId, ntfAction)
}
} else {
chatModel.chatId = content.targetContentIdentifier
if let chatId = content.targetContentIdentifier {
ItemsModel.shared.loadOpenChat(chatId)
}
}
handler()
}
+30 -30
View File
@@ -320,8 +320,8 @@ private func apiChatsResponse(_ r: ChatResponse) throws -> [ChatData] {
let loadItemsPerPage = 50
func apiGetChat(type: ChatType, id: Int64, search: String = "") throws -> Chat {
let r = chatSendCmdSync(.apiGetChat(type: type, id: id, pagination: .last(count: loadItemsPerPage), search: search))
func apiGetChat(type: ChatType, id: Int64, search: String = "") async throws -> Chat {
let r = await chatSendCmd(.apiGetChat(type: type, id: id, pagination: .last(count: loadItemsPerPage), search: search))
if case let .apiChat(_, chat) = r { return Chat.init(chat) }
throw r
}
@@ -332,22 +332,20 @@ func apiGetChatItems(type: ChatType, id: Int64, pagination: ChatPagination, sear
throw r
}
func loadChat(chat: Chat, search: String = "") {
func loadChat(chat: Chat, search: String = "", clearItems: Bool = true) async {
do {
let cInfo = chat.chatInfo
let m = ChatModel.shared
let im = ItemsModel.shared
m.chatItemStatuses = [:]
im.reversedChatItems = []
let chat = try apiGetChat(type: cInfo.chatType, id: cInfo.apiId, search: search)
if case let .direct(contact) = chat.chatInfo, !cInfo.chatDeleted, chat.chatInfo.chatDeleted {
var updatedContact = contact
updatedContact.chatDeleted = false
m.updateContact(updatedContact)
} else {
if clearItems {
await MainActor.run { im.reversedChatItems = [] }
}
let chat = try await apiGetChat(type: cInfo.chatType, id: cInfo.apiId, search: search)
await MainActor.run {
im.reversedChatItems = chat.chatItems.reversed()
m.updateChatInfo(chat.chatInfo)
}
im.reversedChatItems = chat.chatItems.reversed()
} catch let error {
logger.error("loadChat error: \(responseError(error))")
}
@@ -707,7 +705,7 @@ func apiConnect_(incognito: Bool, connReq: String) async -> ((ConnReqType, Pendi
return ((.contact, connection), nil)
case let .contactAlreadyExists(_, contact):
if let c = m.getContactChat(contact.contactId) {
await MainActor.run { m.chatId = c.id }
ItemsModel.shared.loadOpenChat(c.id)
}
let alert = contactAlreadyExistsAlert(contact)
return (nil, alert)
@@ -1171,12 +1169,12 @@ func acceptContactRequest(incognito: Bool, contactRequest: UserContactRequest) a
let chat = Chat(chatInfo: ChatInfo.direct(contact: contact), chatItems: [])
await MainActor.run {
ChatModel.shared.replaceChat(contactRequest.id, chat)
ChatModel.shared.setContactNetworkStatus(contact, .connected)
NetworkModel.shared.setContactNetworkStatus(contact, .connected)
}
if contact.sndReady {
DispatchQueue.main.async {
dismissAllSheets(animated: true) {
ChatModel.shared.chatId = chat.id
ItemsModel.shared.loadOpenChat(chat.id)
}
}
}
@@ -1422,9 +1420,9 @@ func apiGetVersion() throws -> CoreVersionInfo {
throw r
}
func getAgentSubsTotal() throws -> (SMPServerSubs, Bool) {
func getAgentSubsTotal() async throws -> (SMPServerSubs, Bool) {
let userId = try currentUserId("getAgentSubsTotal")
let r = chatSendCmdSync(.getAgentSubsTotal(userId: userId), log: false)
let r = await chatSendCmd(.getAgentSubsTotal(userId: userId))
if case let .agentSubsTotal(_, subsTotal, hasSession) = r { return (subsTotal, hasSession) }
logger.error("getAgentSubsTotal error: \(String(describing: r))")
throw r
@@ -1594,6 +1592,7 @@ func getUserChatData() throws {
m.chatItemTTL = try getChatItemTTL()
let chats = try apiGetChats()
m.chats = chats.map { Chat.init($0) }
m.popChatCollector.clear()
}
private func getUserChatDataAsync() async throws {
@@ -1606,11 +1605,13 @@ private func getUserChatDataAsync() async throws {
m.userAddress = userAddress
m.chatItemTTL = chatItemTTL
m.chats = chats.map { Chat.init($0) }
m.popChatCollector.clear()
}
} else {
await MainActor.run {
m.userAddress = nil
m.chats = []
m.popChatCollector.clear()
}
}
}
@@ -1660,6 +1661,7 @@ func processReceivedMsg(_ res: ChatResponse) async {
await TerminalItems.shared.add(.resp(.now, res))
}
let m = ChatModel.shared
let n = NetworkModel.shared
logger.debug("processReceivedMsg: \(res.responseType)")
switch res {
case let .contactDeletedByContact(user, contact):
@@ -1682,7 +1684,7 @@ func processReceivedMsg(_ res: ChatResponse) async {
NtfManager.shared.notifyContactConnected(user, contact)
}
await MainActor.run {
m.setContactNetworkStatus(contact, .connected)
n.setContactNetworkStatus(contact, .connected)
}
case let .contactConnecting(user, contact):
if active(user) && contact.directOrUsed {
@@ -1705,7 +1707,7 @@ func processReceivedMsg(_ res: ChatResponse) async {
}
}
await MainActor.run {
m.setContactNetworkStatus(contact, .connected)
n.setContactNetworkStatus(contact, .connected)
}
case let .receivedContactRequest(user, contactRequest):
if active(user) {
@@ -1739,7 +1741,7 @@ func processReceivedMsg(_ res: ChatResponse) async {
if active(user) && m.hasChat(mergedContact.id) {
await MainActor.run {
if m.chatId == mergedContact.id {
m.chatId = intoContact.id
ItemsModel.shared.loadOpenChat(mergedContact.id)
}
m.removeChat(mergedContact.id)
}
@@ -1747,27 +1749,27 @@ func processReceivedMsg(_ res: ChatResponse) async {
case let .networkStatus(status, connections):
// dispatch queue to synchronize access
networkStatusesLock.sync {
var ns = m.networkStatuses
var ns = n.networkStatuses
// slow loop is on the background thread
for cId in connections {
ns[cId] = status
}
// fast model update is on the main thread
DispatchQueue.main.sync {
m.networkStatuses = ns
n.networkStatuses = ns
}
}
case let .networkStatuses(_, statuses): ()
// dispatch queue to synchronize access
networkStatusesLock.sync {
var ns = m.networkStatuses
var ns = n.networkStatuses
// slow loop is on the background thread
for s in statuses {
ns[s.agentConnId] = s.networkStatus
}
// fast model update is on the main thread
DispatchQueue.main.sync {
m.networkStatuses = ns
n.networkStatuses = ns
}
}
case let .newChatItem(user, aChatItem):
@@ -1775,11 +1777,6 @@ func processReceivedMsg(_ res: ChatResponse) async {
let cItem = aChatItem.chatItem
await MainActor.run {
if active(user) {
if case let .direct(contact) = cInfo, contact.chatDeleted {
var updatedContact = contact
updatedContact.chatDeleted = false
m.updateContact(updatedContact)
}
m.addChatItem(cInfo, cItem)
} else if cItem.isRcvNew && cInfo.ntfsEnabled {
m.increaseUnreadCounter(user: user)
@@ -1913,7 +1910,7 @@ func processReceivedMsg(_ res: ChatResponse) async {
}
if let contact = memberContact {
await MainActor.run {
m.setContactNetworkStatus(contact, .connected)
n.setContactNetworkStatus(contact, .connected)
}
}
case let .groupUpdated(user, toGroup):
@@ -2094,6 +2091,8 @@ func processReceivedMsg(_ res: ChatResponse) async {
m.remoteCtrlSession = nil
dismissAllSheets() {
switch rcStopReason {
case .disconnected:
()
case .connectionFailed(.errorAgent(.RCP(.identity))):
AlertManager.shared.showAlertMsg(
title: "Connection with desktop stopped",
@@ -2136,12 +2135,13 @@ func processReceivedMsg(_ res: ChatResponse) async {
func switchToLocalSession() {
let m = ChatModel.shared
let n = NetworkModel.shared
m.remoteCtrlSession = nil
do {
m.users = try listUsers()
try getUserChatData()
let statuses = (try apiGetNetworkStatuses()).map { s in (s.agentConnId, s.networkStatus) }
m.networkStatuses = Dictionary(uniqueKeysWithValues: statuses)
n.networkStatuses = Dictionary(uniqueKeysWithValues: statuses)
} catch let error {
logger.debug("error updating chat data: \(responseError(error))")
}
+2 -1
View File
@@ -58,6 +58,7 @@ struct SimpleXApp: App {
}
.onChange(of: scenePhase) { phase in
logger.debug("scenePhase was \(String(describing: scenePhase)), now \(String(describing: phase))")
AppSheetState.shared.scenePhaseActive = phase == .active
switch (phase) {
case .background:
// --- authentication
@@ -135,7 +136,7 @@ struct SimpleXApp: App {
chatModel.updateChats(with: chats)
if let id = chatModel.chatId,
let chat = chatModel.getChat(id) {
loadChat(chat: chat)
Task { await loadChat(chat: chat, clearItems: false) }
}
if let ncr = chatModel.ntfContactRequest {
chatModel.ntfContactRequest = nil
@@ -92,6 +92,7 @@ struct ChatInfoView: View {
@EnvironmentObject var chatModel: ChatModel
@EnvironmentObject var theme: AppTheme
@Environment(\.dismiss) var dismiss: DismissAction
@ObservedObject var networkModel = NetworkModel.shared
@ObservedObject var chat: Chat
@State var contact: Contact
@State var localAlias: String
@@ -502,14 +503,14 @@ struct ChatInfoView: View {
.foregroundColor(theme.colors.primary)
.font(.system(size: 14))
Spacer()
Text(chatModel.contactNetworkStatus(contact).statusString)
Text(networkModel.contactNetworkStatus(contact).statusString)
.foregroundColor(theme.colors.secondary)
serverImage()
}
}
private func serverImage() -> some View {
let status = chatModel.contactNetworkStatus(contact)
let status = networkModel.contactNetworkStatus(contact)
return Image(systemName: status.imageName)
.foregroundColor(status == .connected ? .green : theme.colors.secondary)
.font(.system(size: 12))
@@ -557,7 +558,7 @@ struct ChatInfoView: View {
private func networkStatusAlert() -> Alert {
Alert(
title: Text("Network status"),
message: Text(chatModel.contactNetworkStatus(contact).statusExplanation)
message: Text(networkModel.contactNetworkStatus(contact).statusExplanation)
)
}
@@ -294,7 +294,6 @@ struct FramedItemView: View {
.padding(.horizontal, 12)
.overlay(DetermineWidth())
.frame(minWidth: 0, alignment: .leading)
.textSelection(.enabled)
if let mediaWidth = maxMediaWidth(), mediaWidth < maxWidth {
v.frame(maxWidth: mediaWidth, alignment: .leading)
@@ -97,7 +97,7 @@ struct ChatItemForwardingView: View {
)
} else {
composeState = ComposeState.init(forwardingItem: ci, fromChatInfo: fromChatInfo)
chatModel.chatId = chat.id
ItemsModel.shared.loadOpenChat(chat.id)
}
}
} label: {
@@ -351,7 +351,7 @@ struct ChatItemInfoView: View {
Button {
Task {
await MainActor.run {
chatModel.chatId = forwardedFromItem.chatInfo.id
ItemsModel.shared.loadOpenChat(forwardedFromItem.chatInfo.id)
dismiss()
}
}
+130 -116
View File
@@ -47,65 +47,69 @@ struct ChatView: View {
@State private var showDeleteSelectedMessages: Bool = false
@State private var allowToDeleteSelectedMessagesForAll: Bool = false
@AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.defaultMaterial
var body: some View {
if #available(iOS 16.0, *) {
let v = viewBody
.scrollDismissesKeyboard(.immediately)
.keyboardPadding()
if (searchMode) {
v.toolbarBackground(.thinMaterial, for: .navigationBar)
} else {
v.toolbarBackground(.visible, for: .navigationBar)
}
viewBody
.scrollDismissesKeyboard(.immediately)
.toolbarBackground(.hidden, for: .navigationBar)
} else {
viewBody
}
}
@ViewBuilder
private var viewBody: some View {
let cInfo = chat.chatInfo
return VStack(spacing: 0) {
if searchMode {
searchToolbar()
ZStack {
let wallpaperImage = theme.wallpaper.type.image
let wallpaperType = theme.wallpaper.type
let backgroundColor = theme.wallpaper.background ?? wallpaperType.defaultBackgroundColor(theme.base, theme.colors.background)
let tintColor = theme.wallpaper.tint ?? wallpaperType.defaultTintColor(theme.base)
Color.clear.ignoresSafeArea(.all)
.if(wallpaperImage != nil) { view in
view.modifier(
ChatViewBackground(image: wallpaperImage!, imageType: wallpaperType, background: backgroundColor, tint: tintColor)
)
}
VStack(spacing: 0) {
ZStack(alignment: .bottomTrailing) {
chatItemsList()
floatingButtons(counts: floatingButtonModel.unreadChatItemCounts)
}
connectingText()
if selectedChatItems == nil {
ComposeView(
chat: chat,
composeState: $composeState,
keyboardVisible: $keyboardVisible
)
.disabled(!cInfo.sendMsgEnabled)
} else {
SelectedItemsBottomToolbar(
chatItems: ItemsModel.shared.reversedChatItems,
selectedChatItems: $selectedChatItems,
chatInfo: chat.chatInfo,
deleteItems: { forAll in
allowToDeleteSelectedMessagesForAll = forAll
showDeleteSelectedMessages = true
},
moderateItems: {
if case let .group(groupInfo) = chat.chatInfo {
showModerateSelectedMessagesAlert(groupInfo)
}
}
)
}
}
}
.safeAreaInset(edge: .top) {
VStack(spacing: .zero) {
if searchMode { searchToolbar() }
Divider()
}
ZStack(alignment: .bottomTrailing) {
let wallpaperImage = theme.wallpaper.type.image
let wallpaperType = theme.wallpaper.type
let backgroundColor = theme.wallpaper.background ?? wallpaperType.defaultBackgroundColor(theme.base, theme.colors.background)
let tintColor = theme.wallpaper.tint ?? wallpaperType.defaultTintColor(theme.base)
chatItemsList()
.if(wallpaperImage != nil) { view in
view.modifier(
ChatViewBackground(image: wallpaperImage!, imageType: wallpaperType, background: backgroundColor, tint: tintColor)
)
}
floatingButtons(counts: floatingButtonModel.unreadChatItemCounts)
}
connectingText()
if selectedChatItems == nil {
ComposeView(
chat: chat,
composeState: $composeState,
keyboardVisible: $keyboardVisible
)
.disabled(!cInfo.sendMsgEnabled)
} else {
SelectedItemsBottomToolbar(
chatItems: ItemsModel.shared.reversedChatItems,
selectedChatItems: $selectedChatItems,
chatInfo: chat.chatInfo,
deleteItems: { forAll in
allowToDeleteSelectedMessagesForAll = forAll
showDeleteSelectedMessages = true
},
moderateItems: {
if case let .group(groupInfo) = chat.chatInfo {
showModerateSelectedMessagesAlert(groupInfo)
}
}
)
}
.background(ToolbarMaterial.material(toolbarMaterial))
}
.navigationTitle(cInfo.chatViewName)
.background(theme.colors.background)
@@ -125,16 +129,23 @@ struct ChatView: View {
}
}
}
.appSheet(item: $selectedMember) { member in
Group {
if case let .group(groupInfo) = chat.chatInfo {
GroupMemberInfoView(groupInfo: groupInfo, groupMember: member, navigation: true)
}
}
}
.onAppear {
loadChat(chat: chat)
initChatView()
selectedChatItems = nil
initChatView()
}
.onChange(of: chatModel.chatId) { cId in
showChatInfoSheet = false
selectedChatItems = nil
scrollModel.scrollToBottom()
stopAudioPlayer()
if let cId {
selectedChatItems = nil
if let c = chatModel.getChat(cId) {
chat = c
}
@@ -147,8 +158,10 @@ struct ChatView: View {
.onChange(of: revealedChatItem) { _ in
NotificationCenter.postReverseListNeedsLayout()
}
.onChange(of: im.reversedChatItems) { reversedChatItems in
if reversedChatItems.count <= loadItemsPerPage && filtered(reversedChatItems).count < 10 {
.onChange(of: im.isLoading) { isLoading in
if !isLoading,
im.reversedChatItems.count <= loadItemsPerPage,
filtered(im.reversedChatItems).count < 10 {
loadChatItems(chat.chatInfo)
}
}
@@ -157,7 +170,6 @@ struct ChatView: View {
VideoPlayerView.players.removeAll()
stopAudioPlayer()
if chatModel.chatId == cInfo.id && !presentationMode.wrappedValue.isPresented {
chatModel.chatId = nil
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) {
if chatModel.chatId == nil {
chatModel.chatItemStatuses = [:]
@@ -184,7 +196,7 @@ struct ChatView: View {
} label: {
ChatInfoToolbar(chat: chat)
}
.appSheet(isPresented: $showChatInfoSheet) {
.appSheet(isPresented: $showChatInfoSheet, onDismiss: { theme = buildTheme() }) {
ChatInfoView(
chat: chat,
contact: contact,
@@ -217,6 +229,7 @@ struct ChatView: View {
}
}
ToolbarItem(placement: .navigationBarTrailing) {
let isLoading = im.isLoading && im.showLoadingProgress
if selectedChatItems != nil {
Button {
withAnimation {
@@ -239,19 +252,23 @@ struct ChatView: View {
}
}
Menu {
if callsPrefEnabled && chatModel.activeCall == nil {
Button {
CallController.shared.startCall(contact, .video)
} label: {
Label("Video call", systemImage: "video")
if !isLoading {
if callsPrefEnabled && chatModel.activeCall == nil {
Button {
CallController.shared.startCall(contact, .video)
} label: {
Label("Video call", systemImage: "video")
}
.disabled(!contact.ready || !contact.active)
}
.disabled(!contact.ready || !contact.active)
searchButton()
ToggleNtfsButton(chat: chat)
.disabled(!contact.ready || !contact.active)
}
searchButton()
ToggleNtfsButton(chat: chat)
.disabled(!contact.ready || !contact.active)
} label: {
Image(systemName: "ellipsis")
.tint(isLoading ? Color.clear : nil)
.overlay { if isLoading { ProgressView() } }
}
}
case let .group(groupInfo):
@@ -276,10 +293,14 @@ struct ChatView: View {
}
}
Menu {
searchButton()
ToggleNtfsButton(chat: chat)
if !isLoading {
searchButton()
ToggleNtfsButton(chat: chat)
}
} label: {
Image(systemName: "ellipsis")
.tint(isLoading ? Color.clear : nil)
.overlay { if isLoading { ProgressView() } }
}
}
case .local:
@@ -345,14 +366,11 @@ struct ChatView: View {
searchText = ""
searchMode = false
searchFocussed = false
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) {
loadChat(chat: chat)
}
Task { await loadChat(chat: chat) }
}
}
.padding(.horizontal)
.padding(.vertical, 8)
.background(.thinMaterial)
}
private func voiceWithoutFrame(_ ci: ChatItem) -> Bool {
@@ -386,31 +404,42 @@ struct ChatView: View {
: voiceNoFrame
? (g.size.width - 32)
: (g.size.width - 32) * 0.84
return chatItemView(ci, maxWidth)
.onAppear {
floatingButtonModel.appeared(viewId: ci.viewId)
}
.onDisappear {
floatingButtonModel.disappeared(viewId: ci.viewId)
}
.id(ci.id) // Required to trigger `onAppear` on iOS15
return ChatItemWithMenu(
chat: $chat,
chatItem: ci,
maxWidth: maxWidth,
composeState: $composeState,
selectedMember: $selectedMember,
revealedChatItem: $revealedChatItem,
selectedChatItems: $selectedChatItems
)
.onAppear {
floatingButtonModel.appeared(viewId: ci.viewId)
}
.onDisappear {
floatingButtonModel.disappeared(viewId: ci.viewId)
}
.id(ci.id) // Required to trigger `onAppear` on iOS15
} loadPage: {
loadChatItems(cInfo)
}
.onTapGesture { hideKeyboard() }
.onChange(of: searchText) { _ in
loadChat(chat: chat, search: searchText)
}
.onChange(of: chatModel.chatId) { chatId in
if let chatId, let c = chatModel.getChat(chatId) {
chat = c
showChatInfoSheet = false
loadChat(chat: c)
.opacity(ItemsModel.shared.isLoading ? 0 : 1)
.padding(.vertical, -InvertedTableView.inset)
.onTapGesture { hideKeyboard() }
.onChange(of: searchText) { _ in
Task { await loadChat(chat: chat, search: searchText) }
}
.onChange(of: im.reversedChatItems) { _ in
floatingButtonModel.chatItemsChanged()
}
.onChange(of: im.itemAdded) { added in
if added {
im.itemAdded = false
if floatingButtonModel.unreadChatItemCounts.isReallyNearBottom {
scrollModel.scrollToBottom()
}
}
.onChange(of: im.reversedChatItems) { _ in
floatingButtonModel.chatItemsChanged()
}
}
}
}
@@ -443,19 +472,19 @@ struct ChatView: View {
init() {
unreadChatItemCounts = UnreadChatItemCounts(
isNearBottom: true,
isReallyNearBottom: true,
unreadBelow: 0
)
events
.receive(on: DispatchQueue.global(qos: .background))
.scan(Set<String>()) { itemsInView, event in
return switch event {
case let .appeared(viewId):
itemsInView.union([viewId])
case let .disappeared(viewId):
itemsInView.subtracting([viewId])
case .chatItemsChanged:
itemsInView
var updated = itemsInView
switch event {
case let .appeared(viewId): updated.insert(viewId)
case let .disappeared(viewId): updated.remove(viewId)
case .chatItemsChanged: ()
}
return updated
}
.map { ChatModel.shared.unreadChatItemCounts(itemsInView: $0) }
.removeDuplicates()
@@ -663,22 +692,10 @@ struct ChatView: View {
VoiceItemState.chatView = [:]
}
@ViewBuilder private func chatItemView(_ ci: ChatItem, _ maxWidth: CGFloat) -> some View {
ChatItemWithMenu(
chat: chat,
chatItem: ci,
maxWidth: maxWidth,
composeState: $composeState,
selectedMember: $selectedMember,
revealedChatItem: $revealedChatItem,
selectedChatItems: $selectedChatItems
)
}
private struct ChatItemWithMenu: View {
@EnvironmentObject var m: ChatModel
@EnvironmentObject var theme: AppTheme
@ObservedObject var chat: Chat
@Binding @ObservedObject var chat: Chat
let chatItem: ChatItem
let maxWidth: CGFloat
@Binding var composeState: ComposeState
@@ -708,7 +725,7 @@ struct ChatView: View {
Group {
if revealed, let range = range {
let items = Array(zip(Array(range), im.reversedChatItems[range]))
ForEach(items, id: \.1.viewId) { (i, ci) in
ForEach(items.reversed(), id: \.1.viewId) { (i, ci) in
let prev = i == prevHidden ? prevItem : im.reversedChatItems[i + 1]
chatItemView(ci, nil, prev)
.overlay {
@@ -806,8 +823,8 @@ struct ChatView: View {
HStack(alignment: .top, spacing: 8) {
MemberProfileImage(member, size: memberImageSize, backgroundColor: theme.colors.background)
.onTapGesture {
if m.membersLoaded {
selectedMember = m.getGroupMember(member.groupMemberId)
if let member = m.getGroupMember(member.groupMemberId) {
selectedMember = member
} else {
Task {
await m.loadGroupMembers(groupInfo) {
@@ -816,9 +833,6 @@ struct ChatView: View {
}
}
}
.appSheet(item: $selectedMember) { member in
GroupMemberInfoView(groupInfo: groupInfo, groupMember: member, navigation: true)
}
chatItemWithMenu(ci, range, maxWidth)
}
}
@@ -55,7 +55,7 @@ struct ComposeLinkView: View {
.foregroundColor(theme.colors.secondary)
}
.padding(.vertical, 5)
.frame(maxWidth: .infinity, minHeight: 60, maxHeight: 60)
.frame(maxWidth: .infinity, minHeight: 60)
}
}
}
@@ -281,6 +281,7 @@ struct ComposeView: View {
@State private var stopPlayback: Bool = false
@AppStorage(DEFAULT_PRIVACY_SAVE_LAST_DRAFT) private var saveLastDraft = true
@AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.defaultMaterial
var body: some View {
VStack(spacing: 0) {
@@ -381,7 +382,11 @@ struct ComposeView: View {
}
}
}
.background(.thinMaterial)
.background {
Color.clear
.overlay(ToolbarMaterial.material(toolbarMaterial))
.ignoresSafeArea(.all, edges: .bottom)
}
.onChange(of: composeState.message) { msg in
if composeState.linkPreviewAllowed {
if msg.count > 0 {
@@ -185,7 +185,6 @@ struct GroupChatInfoView: View {
logger.error("GroupChatInfoView apiGetGroupLink: \(responseError(error))")
}
}
.keyboardPadding()
}
private func groupInfoHeader() -> some View {
@@ -321,24 +321,24 @@ struct GroupMemberInfoView: View {
func knownDirectChatButton(_ chat: Chat, width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
dismissAllSheets(animated: true)
DispatchQueue.main.async {
chatModel.chatId = chat.id
ItemsModel.shared.loadOpenChat(chat.id) {
dismissAllSheets(animated: true)
}
}
}
func newDirectChatButton(_ contactId: Int64, width: CGFloat) -> some View {
InfoViewButton(image: "message.fill", title: "message", width: width) {
do {
let chat = try apiGetChat(type: .direct, id: contactId)
chatModel.addChat(chat)
dismissAllSheets(animated: true)
DispatchQueue.main.async {
chatModel.chatId = chat.id
Task {
do {
let chat = try await apiGetChat(type: .direct, id: contactId)
chatModel.addChat(chat)
ItemsModel.shared.loadOpenChat(chat.id) {
dismissAllSheets(animated: true)
}
} catch let error {
logger.error("openDirectChatButton apiGetChat error: \(responseError(error))")
}
} catch let error {
logger.error("openDirectChatButton apiGetChat error: \(responseError(error))")
}
}
}
@@ -352,9 +352,10 @@ struct GroupMemberInfoView: View {
await MainActor.run {
progressIndicator = false
chatModel.addChat(Chat(chatInfo: .direct(contact: memberContact)))
dismissAllSheets(animated: true)
chatModel.chatId = memberContact.id
chatModel.setContactNetworkStatus(memberContact, .connected)
ItemsModel.shared.loadOpenChat(memberContact.id) {
dismissAllSheets(animated: true)
}
NetworkModel.shared.setContactNetworkStatus(memberContact, .connected)
}
} catch let error {
logger.error("createMemberContactButton apiCreateMemberContact error: \(responseError(error))")
+42 -7
View File
@@ -11,7 +11,6 @@ import Combine
/// A List, which displays it's items in reverse order - from bottom to top
struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIViewControllerRepresentable {
let items: Array<Item>
@Binding var scrollState: ReverseListScrollModel<Item>.State
@@ -53,6 +52,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
super.init(style: .plain)
// 1. Style
tableView = InvertedTableView()
tableView.separatorStyle = .none
tableView.transform = .verticalFlip
tableView.backgroundColor = .clear
@@ -132,6 +132,11 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
NotificationCenter.default.post(name: .chatViewWillBeginScrolling, object: nil)
}
override func viewDidAppear(_ animated: Bool) {
tableView.clipsToBounds = false
parent?.viewIfLoaded?.clipsToBounds = false
}
/// Scrolls up
func scrollToNextPage() {
tableView.setContentOffset(
@@ -147,18 +152,23 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
/// Scrolls to Item at index path
/// - Parameter indexPath: Item to scroll to - will scroll to beginning of the list, if `nil`
func scroll(to index: Int?, position: UITableView.ScrollPosition) {
if let index {
var animated = false
if #available(iOS 16.0, *) {
animated = true
}
var animated = false
if #available(iOS 16.0, *) {
animated = true
}
if let index, tableView.numberOfRows(inSection: 0) != 0 {
tableView.scrollToRow(
at: IndexPath(row: index, section: 0),
at: position,
animated: animated
)
Task { representer.scrollState = .atDestination }
} else {
tableView.setContentOffset(
CGPoint(x: .zero, y: -InvertedTableView.inset),
animated: animated
)
}
Task { representer.scrollState = .atDestination }
}
func update(items: Array<Item>) {
@@ -272,3 +282,28 @@ func withConditionalAnimation<Result>(
try body()
}
}
class InvertedTableView: UITableView {
static let inset = CGFloat(100)
static let insets = UIEdgeInsets(
top: inset,
left: .zero,
bottom: inset,
right: .zero
)
override var contentInsetAdjustmentBehavior: UIScrollView.ContentInsetAdjustmentBehavior {
get { .never }
set { }
}
override var contentInset: UIEdgeInsets {
get { Self.insets }
set { }
}
override var adjustedContentInset: UIEdgeInsets {
Self.insets
}
}
@@ -104,19 +104,22 @@ struct SelectedItemsBottomToolbar: View {
allButtonsDisabled = count == 0 || count > 20
canModerate = possibleToModerate(chatInfo)
if let selected = selectedItems {
(deleteEnabled, deleteForEveryoneEnabled, moderateEnabled, _, selectedChatItems) = chatItems.reduce((true, true, true, true, [])) { (r, ci) in
let me: Bool
let onlyOwnGroupItems: Bool
(deleteEnabled, deleteForEveryoneEnabled, me, onlyOwnGroupItems, selectedChatItems) = chatItems.reduce((true, true, true, true, [])) { (r, ci) in
if selected.contains(ci.id) {
var (de, dee, me, onlyOwnGroupItems, sel) = r
de = de && ci.canBeDeletedForSelf
dee = dee && ci.meta.deletable && !ci.localNote
onlyOwnGroupItems = onlyOwnGroupItems && ci.chatDir == .groupSnd
me = me && !onlyOwnGroupItems && ci.content.msgContent != nil && ci.memberToModerate(chatInfo) != nil
me = me && ci.content.msgContent != nil && ci.memberToModerate(chatInfo) != nil
sel.insert(ci.id) // we are collecting new selected items here to account for any changes in chat items list
return (de, dee, me, onlyOwnGroupItems, sel)
} else {
return r
}
}
moderateEnabled = me && !onlyOwnGroupItems
}
}
@@ -114,7 +114,7 @@ struct ChatListNavLink: View {
}
} else {
NavLinkPlain(
tag: chat.chatInfo.id,
chatId: chat.chatInfo.id,
selection: $chatModel.chatId,
label: { ChatPreviewView(chat: chat, progressByTimeout: Binding.constant(false)) }
)
@@ -194,7 +194,7 @@ struct ChatListNavLink: View {
}
default:
NavLinkPlain(
tag: chat.chatInfo.id,
chatId: chat.chatInfo.id,
selection: $chatModel.chatId,
label: { ChatPreviewView(chat: chat, progressByTimeout: Binding.constant(false)) },
disabled: !groupInfo.ready
@@ -221,7 +221,7 @@ struct ChatListNavLink: View {
@ViewBuilder private func noteFolderNavLink(_ noteFolder: NoteFolder) -> some View {
NavLinkPlain(
tag: chat.chatInfo.id,
chatId: chat.chatInfo.id,
selection: $chatModel.chatId,
label: { ChatPreviewView(chat: chat, progressByTimeout: Binding.constant(false)) },
disabled: !noteFolder.ready
@@ -244,7 +244,7 @@ struct ChatListNavLink: View {
await MainActor.run { inProgress = false }
}
} label: {
SwipeLabel("Join", systemImage: chat.chatInfo.incognito ? "theatermasks" : "ipad.and.arrow.forward", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Join", comment: "swipe action"), systemImage: chat.chatInfo.incognito ? "theatermasks" : "ipad.and.arrow.forward", inverted: oneHandUI)
}
.tint(chat.chatInfo.incognito ? .indigo : theme.colors.primary)
}
@@ -254,14 +254,14 @@ struct ChatListNavLink: View {
Button {
Task { await markChatRead(chat) }
} label: {
SwipeLabel("Read", systemImage: "checkmark", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Read", comment: "swipe action"), systemImage: "checkmark", inverted: oneHandUI)
}
.tint(theme.colors.primary)
} else {
Button {
Task { await markChatUnread(chat) }
} label: {
SwipeLabel("Unread", systemImage: "circlebadge.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Unread", comment: "swipe action"), systemImage: "circlebadge.fill", inverted: oneHandUI)
}
.tint(theme.colors.primary)
}
@@ -273,14 +273,14 @@ struct ChatListNavLink: View {
Button {
toggleChatFavorite(chat, favorite: false)
} label: {
SwipeLabel("Unfav.", systemImage: "star.slash.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Unfav.", comment: "swipe action"), systemImage: "star.slash.fill", inverted: oneHandUI)
}
.tint(.green)
} else {
Button {
toggleChatFavorite(chat, favorite: true)
} label: {
SwipeLabel("Favorite", systemImage: "star.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Favorite", comment: "swipe action"), systemImage: "star.fill", inverted: oneHandUI)
}
.tint(.green)
}
@@ -291,9 +291,9 @@ struct ChatListNavLink: View {
toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled)
} label: {
if chat.chatInfo.ntfsEnabled {
SwipeLabel("Mute", systemImage: "speaker.slash.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Mute", comment: "swipe action"), systemImage: "speaker.slash.fill", inverted: oneHandUI)
} else {
SwipeLabel("Unmute", systemImage: "speaker.wave.2.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Unmute", comment: "swipe action"), systemImage: "speaker.wave.2.fill", inverted: oneHandUI)
}
}
}
@@ -302,7 +302,7 @@ struct ChatListNavLink: View {
Button {
AlertManager.shared.showAlert(clearChatAlert())
} label: {
SwipeLabel("Clear", systemImage: "gobackward", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Clear", comment: "swipe action"), systemImage: "gobackward", inverted: oneHandUI)
}
.tint(Color.orange)
}
@@ -311,7 +311,7 @@ struct ChatListNavLink: View {
Button {
AlertManager.shared.showAlert(clearNoteFolderAlert())
} label: {
SwipeLabel("Clear", systemImage: "gobackward", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Clear", comment: "swipe action"), systemImage: "gobackward", inverted: oneHandUI)
}
.tint(Color.orange)
}
@@ -320,7 +320,7 @@ struct ChatListNavLink: View {
Button {
AlertManager.shared.showAlert(leaveGroupAlert(groupInfo))
} label: {
SwipeLabel("Leave", systemImage: "rectangle.portrait.and.arrow.right.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Leave", comment: "swipe action"), systemImage: "rectangle.portrait.and.arrow.right.fill", inverted: oneHandUI)
}
.tint(Color.yellow)
}
@@ -339,22 +339,23 @@ struct ChatListNavLink: View {
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
Task { await acceptContactRequest(incognito: false, contactRequest: contactRequest) }
} label: { SwipeLabel("Accept", systemImage: "checkmark", inverted: oneHandUI) }
} label: { SwipeLabel(NSLocalizedString("Accept", comment: "swipe action"), systemImage: "checkmark", inverted: oneHandUI) }
.tint(theme.colors.primary)
Button {
Task { await acceptContactRequest(incognito: true, contactRequest: contactRequest) }
} label: {
SwipeLabel("Accept incognito", systemImage: "theatermasks.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Accept incognito", comment: "swipe action"), systemImage: "theatermasks.fill", inverted: oneHandUI)
}
.tint(.indigo)
Button {
AlertManager.shared.showAlert(rejectContactRequestAlert(contactRequest))
} label: {
SwipeLabel("Reject", systemImage: "multiply.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Reject", comment: "swipe action"), systemImage: "multiply.fill", inverted: oneHandUI)
}
.tint(.red)
}
.frame(height: dynamicRowHeight)
.contentShape(Rectangle())
.onTapGesture { showContactRequestDialog = true }
.confirmationDialog("Accept connection request?", isPresented: $showContactRequestDialog, titleVisibility: .visible) {
Button("Accept") { Task { await acceptContactRequest(incognito: false, contactRequest: contactRequest) } }
@@ -378,7 +379,7 @@ struct ChatListNavLink: View {
Button {
showContactConnectionInfo = true
} label: {
SwipeLabel("Name", systemImage: "pencil", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Name", comment: "swipe action"), systemImage: "pencil", inverted: oneHandUI)
}
.tint(theme.colors.primary)
}
@@ -392,13 +393,14 @@ struct ChatListNavLink: View {
}
}
}
.contentShape(Rectangle())
.onTapGesture {
showContactConnectionInfo = true
}
}
private var deleteLabel: some View {
SwipeLabel("Delete", systemImage: "trash.fill", inverted: oneHandUI)
SwipeLabel(NSLocalizedString("Delete", comment: "swipe action"), systemImage: "trash.fill", inverted: oneHandUI)
}
private func deleteGroupAlert(_ groupInfo: GroupInfo) -> Alert {
@@ -472,9 +474,7 @@ struct ChatListNavLink: View {
Task {
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { AlertManager.shared.showAlert($0) })
if ok {
await MainActor.run {
chatModel.chatId = contact.id
}
ItemsModel.shared.loadOpenChat(contact.id)
AlertManager.shared.showAlert(connReqSentAlert(.contact))
}
}
+111 -85
View File
@@ -20,10 +20,12 @@ struct ChatListView: View {
@State private var searchChatFilteredBySimplexLink: String? = nil
@State private var userPickerVisible = false
@State private var showConnectDesktop = false
@State private var scrollToSearchBar = false
@AppStorage(DEFAULT_SHOW_UNREAD_AND_FAVORITES) private var showUnreadAndFavorites = false
@AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true
@AppStorage(DEFAULT_ONE_HAND_UI_CARD_SHOWN) private var oneHandUICardShown = false
@AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.defaultMaterial
var body: some View {
if #available(iOS 16.0, *) {
@@ -38,7 +40,9 @@ struct ChatListView: View {
NavStackCompat(
isActive: Binding(
get: { chatModel.chatId != nil },
set: { _ in }
set: { active in
if !active { chatModel.chatId = nil }
}
),
destination: chatView
) { chatListView }
@@ -61,7 +65,8 @@ struct ChatListView: View {
}
private var chatListView: some View {
withToolbar {
let tm = ToolbarMaterial.material(toolbarMaterial)
return withToolbar(tm) {
chatList
.background(theme.colors.background)
.navigationBarTitleDisplayMode(.inline)
@@ -86,24 +91,37 @@ struct ChatListView: View {
))
}
.safeAreaInset(edge: .top) {
if oneHandUI { Divider().background(Material.ultraThin) }
if oneHandUI { Divider().background(tm) }
}
.safeAreaInset(edge: .bottom) {
if oneHandUI {
Divider().padding(.bottom, Self.hasHomeIndicator ? 0 : 8).background(tm)
}
}
}
@ViewBuilder func withToolbar(content: () -> some View) -> some View {
static var hasHomeIndicator: Bool = {
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let window = windowScene.windows.first {
window.safeAreaInsets.bottom > 0
} else { false }
}()
@ViewBuilder func withToolbar(_ material: Material, content: () -> some View) -> some View {
if #available(iOS 16.0, *) {
if oneHandUI {
content()
.toolbarBackground(.visible, for: .bottomBar)
.toolbarBackground(.hidden, for: .bottomBar)
.toolbar { bottomToolbar }
} else {
content()
.toolbarBackground(.automatic, for: .navigationBar)
.toolbarBackground(material)
.toolbar { topToolbar }
}
} else {
if oneHandUI {
content().toolbar { bottomToolbar }
content().toolbar { bottomToolbarGroup }
} else {
content().toolbar { topToolbar }
}
@@ -112,28 +130,33 @@ struct ChatListView: View {
@ToolbarContentBuilder var topToolbar: some ToolbarContent {
ToolbarItem(placement: .topBarLeading) { leadingToolbarItem }
ToolbarItem(placement: .principal) { principalToolbarItem }
ToolbarItem(placement: .principal) { SubsStatusIndicator() }
ToolbarItem(placement: .topBarTrailing) { trailingToolbarItem }
}
@ToolbarContentBuilder var bottomToolbar: some ToolbarContent {
let padding: Double = Self.hasHomeIndicator ? 0 : 14
ToolbarItem(placement: .bottomBar) {
let v = HStack {
leadingToolbarItem
principalToolbarItem
trailingToolbarItem
}
if #available(iOS 16.0, *) {
v
} else {
VStack(spacing: 0) {
Divider()
v
.padding(.vertical)
.frame(maxWidth: .infinity)
.background(Material.ultraThin)
}
HStack {
leadingToolbarItem.padding(.bottom, padding)
Spacer()
SubsStatusIndicator().padding(.bottom, padding)
Spacer()
trailingToolbarItem.padding(.bottom, padding)
}
.contentShape(Rectangle())
.onTapGesture { scrollToSearchBar = true }
}
}
@ToolbarContentBuilder var bottomToolbarGroup: some ToolbarContent {
let padding: Double = Self.hasHomeIndicator ? 0 : 14
ToolbarItemGroup(placement: .bottomBar) {
leadingToolbarItem.padding(.bottom, padding)
Spacer()
SubsStatusIndicator().padding(.bottom, padding)
Spacer()
trailingToolbarItem.padding(.bottom, padding)
}
}
@@ -160,14 +183,6 @@ struct ChatListView: View {
}
}
@ViewBuilder var principalToolbarItem: some View {
HStack(spacing: 4) {
Text("Chats").font(.headline)
SubsStatusIndicator()
}
.frame(maxWidth: .infinity, alignment: .center)
}
@ViewBuilder var trailingToolbarItem: some View {
switch chatModel.chatRunning {
case .some(true): NewChatMenuButton()
@@ -179,50 +194,56 @@ struct ChatListView: View {
@ViewBuilder private var chatList: some View {
let cs = filteredChats()
ZStack {
List {
if !chatModel.chats.isEmpty {
ChatListSearchBar(
searchMode: $searchMode,
searchFocussed: $searchFocussed,
searchText: $searchText,
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink
)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
.frame(maxWidth: .infinity)
.padding(.top, oneHandUI ? 8 : 0)
}
if !oneHandUICardShown {
OneHandUICard()
ScrollViewReader { scrollProxy in
List {
if !chatModel.chats.isEmpty {
ChatListSearchBar(
searchMode: $searchMode,
searchFocussed: $searchFocussed,
searchText: $searchText,
searchShowingSimplexLink: $searchShowingSimplexLink,
searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink
)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
.frame(maxWidth: .infinity)
.padding(.top, oneHandUI ? 8 : 0)
.id("searchBar")
}
if !oneHandUICardShown {
OneHandUICard()
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
}
ForEach(cs, id: \.viewId) { chat in
ChatListNavLink(chat: chat)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.padding(.trailing, -16)
.disabled(chatModel.chatRunning != true || chatModel.deletedChats.contains(chat.chatInfo.id))
.listRowBackground(Color.clear)
}
.offset(x: -8)
}
ForEach(cs, id: \.viewId) { chat in
ChatListNavLink(chat: chat)
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
.padding(.trailing, -16)
.disabled(chatModel.chatRunning != true || chatModel.deletedChats.contains(chat.chatInfo.id))
.listRowBackground(Color.clear)
.listStyle(.plain)
.onChange(of: chatModel.chatId) { currentChatId in
if let chatId = chatModel.chatToTop, currentChatId != chatId {
chatModel.chatToTop = nil
chatModel.popChat(chatId)
}
stopAudioPlayer()
}
.offset(x: -8)
}
.listStyle(.plain)
.onChange(of: chatModel.chatId) { chId in
if chId == nil, let chatId = chatModel.chatToTop {
chatModel.chatToTop = nil
chatModel.popChat(chatId)
.onChange(of: chatModel.currentUser?.userId) { _ in
stopAudioPlayer()
}
.onChange(of: scrollToSearchBar) { scrollToSearchBar in
if scrollToSearchBar {
Task { self.scrollToSearchBar = false }
withAnimation { scrollProxy.scrollTo("searchBar") }
}
}
stopAudioPlayer()
}
.onChange(of: chatModel.currentUser?.userId) { _ in
stopAudioPlayer()
}
// .onAppear {
// oneHandUICardShown = false
// }
if cs.isEmpty && !chatModel.chats.isEmpty {
Text("No filtered chats")
.scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center)
@@ -303,7 +324,7 @@ struct ChatListView: View {
struct SubsStatusIndicator: View {
@State private var subs: SMPServerSubs = SMPServerSubs.newSMPServerSubs
@State private var hasSess: Bool = false
@State private var timer: Timer? = nil
@State private var task: Task<Void, Never>?
@State private var showServersSummary = false
@AppStorage(DEFAULT_SHOW_SUBSCRIPTION_PERCENTAGE) private var showSubscriptionPercentage = false
@@ -313,17 +334,19 @@ struct SubsStatusIndicator: View {
showServersSummary = true
} label: {
HStack(spacing: 4) {
Text("Chats").foregroundStyle(Color.primary).fixedSize().font(.headline)
SubscriptionStatusIndicatorView(subs: subs, hasSess: hasSess)
if showSubscriptionPercentage {
SubscriptionStatusPercentageView(subs: subs, hasSess: hasSess)
}
}
}
.disabled(ChatModel.shared.chatRunning != true)
.onAppear {
startTimer()
startTask()
}
.onDisappear {
stopTimer()
stopTask()
}
.appSheet(isPresented: $showServersSummary) {
ServersSummaryView()
@@ -331,25 +354,28 @@ struct SubsStatusIndicator: View {
}
}
private func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
if AppChatState.shared.value == .active {
getSubsTotal()
private func startTask() {
task = Task {
while !Task.isCancelled {
if AppChatState.shared.value == .active {
do {
let (subs, hasSess) = try await getAgentSubsTotal()
await MainActor.run {
self.subs = subs
self.hasSess = hasSess
}
} catch let error {
logger.error("getSubsTotal error: \(responseError(error))")
}
}
try? await Task.sleep(nanoseconds: 1_000_000_000) // Sleep for 1 second
}
}
}
func stopTimer() {
timer?.invalidate()
timer = nil
}
private func getSubsTotal() {
do {
(subs, hasSess) = try getAgentSubsTotal()
} catch let error {
logger.error("getSubsTotal error: \(responseError(error))")
}
func stopTask() {
task?.cancel()
task = nil
}
}
@@ -376,17 +376,7 @@ struct ChatPreviewView: View {
switch chat.chatInfo {
case let .direct(contact):
if contact.active && contact.activeConn != nil {
switch (chatModel.contactNetworkStatus(contact)) {
case .connected: incognitoIcon(chat.chatInfo.incognito, theme.colors.secondary, size: size)
case .error:
Image(systemName: "exclamationmark.circle")
.resizable()
.scaledToFit()
.frame(width: dynamicChatInfoSize, height: dynamicChatInfoSize)
.foregroundColor(theme.colors.secondary)
default:
ProgressView()
}
NetworkStatusView(contact: contact, size: size)
} else {
incognitoIcon(chat.chatInfo.incognito, theme.colors.secondary, size: size)
}
@@ -400,6 +390,30 @@ struct ChatPreviewView: View {
incognitoIcon(chat.chatInfo.incognito, theme.colors.secondary, size: size)
}
}
struct NetworkStatusView: View {
@Environment(\.dynamicTypeSize) private var userFont: DynamicTypeSize
@EnvironmentObject var theme: AppTheme
@ObservedObject var networkModel = NetworkModel.shared
let contact: Contact
let size: CGFloat
var body: some View {
let dynamicChatInfoSize = dynamicSize(userFont).chatInfoSize
switch (networkModel.contactNetworkStatus(contact)) {
case .connected: incognitoIcon(contact.contactConnIncognito, theme.colors.secondary, size: size)
case .error:
Image(systemName: "exclamationmark.circle")
.resizable()
.scaledToFit()
.frame(width: dynamicChatInfoSize, height: dynamicChatInfoSize)
.foregroundColor(theme.colors.secondary)
default:
ProgressView()
}
}
}
}
@ViewBuilder func incognitoIcon(_ incognito: Bool, _ secondaryColor: Color, size: CGFloat) -> some View {
@@ -16,7 +16,6 @@ struct ContactConnectionView: View {
@Environment(\.dynamicTypeSize) private var userFont: DynamicTypeSize
@State private var localAlias = ""
@FocusState private var aliasTextFieldFocused: Bool
@State private var showContactConnectionInfo = false
var body: some View {
if case let .contactConnection(conn) = chat.chatInfo {
@@ -32,7 +31,6 @@ struct ContactConnectionView: View {
.scaledToFill()
.frame(width: 48, height: 48)
.foregroundColor(Color(uiColor: .tertiarySystemGroupedBackground).asAnotherColorFromSecondaryVariant(theme))
.onTapGesture { showContactConnectionInfo = true }
}
.frame(width: 63, height: 63)
.padding(.leading, 4)
@@ -72,9 +70,6 @@ struct ContactConnectionView: View {
Spacer()
}
.frame(maxHeight: .infinity)
.appSheet(isPresented: $showContactConnectionInfo) {
ContactConnectionInfo(contactConnection: contactConnection)
}
}
}
}
@@ -56,7 +56,7 @@ struct ContactListNavLink: View {
func recentContactNavLink(_ contact: Contact) -> some View {
Button {
dismissAllSheets(animated: true) {
ChatModel.shared.chatId = contact.id
ItemsModel.shared.loadOpenChat(contact.id)
}
} label: {
contactPreview(contact, titleColor: theme.colors.onBackground)
@@ -82,11 +82,8 @@ struct ContactListNavLink: View {
Button {
Task {
await MainActor.run {
var updatedContact = contact
updatedContact.chatDeleted = false
ChatModel.shared.updateContact(updatedContact)
dismissAllSheets(animated: true) {
ChatModel.shared.chatId = contact.id
ItemsModel.shared.loadOpenChat(contact.id)
}
}
}
@@ -191,9 +188,7 @@ struct ContactListNavLink: View {
Task {
let ok = await connectContactViaAddress(contact.contactId, incognito, showAlert: { alert = SomeAlert(alert: $0, id: "ContactListNavLink connectContactViaAddress") })
if ok {
await MainActor.run {
ChatModel.shared.chatId = contact.id
}
ItemsModel.shared.loadOpenChat(contact.id)
DispatchQueue.main.async {
dismissAllSheets(animated: true) {
AlertManager.shared.showAlert(connReqSentAlert(.contact))
+13 -29
View File
@@ -8,41 +8,21 @@
import SwiftUI
private struct SheetIsPresented<C>: ViewModifier where C: View {
var isPresented: Binding<Bool>
var onDismiss: (() -> Void)?
var sheetContent: () -> C
@Environment(\.scenePhase) var scenePhase
func body(content: Content) -> some View {
content.sheet(isPresented: isPresented, onDismiss: onDismiss) {
sheetContent().modifier(PrivacySensitive())
}
}
}
private struct SheetForItem<T, C>: ViewModifier where T: Identifiable, C: View {
var item: Binding<T?>
var onDismiss: (() -> Void)?
var sheetContent: (T) -> C
@Environment(\.scenePhase) var scenePhase
func body(content: Content) -> some View {
content.sheet(item: item, onDismiss: onDismiss) { it in
sheetContent(it).modifier(PrivacySensitive())
}
}
class AppSheetState: ObservableObject {
static let shared = AppSheetState()
@Published var scenePhaseActive: Bool = false
}
private struct PrivacySensitive: ViewModifier {
@AppStorage(DEFAULT_PRIVACY_PROTECT_SCREEN) private var protectScreen = false
@Environment(\.scenePhase) var scenePhase
// Screen protection doesn't work for appSheet on iOS 16 if @Environment(\.scenePhase) is used instead of global state
@ObservedObject var appSheetState: AppSheetState = AppSheetState.shared
func body(content: Content) -> some View {
if case .active = scenePhase {
if !protectScreen {
content
} else {
content.privacySensitive(protectScreen).redacted(reason: .privacy)
content.privacySensitive(!appSheetState.scenePhaseActive).redacted(reason: .privacy)
}
}
}
@@ -53,7 +33,9 @@ extension View {
onDismiss: (() -> Void)? = nil,
content: @escaping () -> Content
) -> some View where Content: View {
modifier(SheetIsPresented(isPresented: isPresented, onDismiss: onDismiss, sheetContent: content))
sheet(isPresented: isPresented, onDismiss: onDismiss) {
content().modifier(PrivacySensitive())
}
}
func appSheet<T, Content>(
@@ -61,6 +43,8 @@ extension View {
onDismiss: (() -> Void)? = nil,
content: @escaping (T) -> Content
) -> some View where T: Identifiable, Content: View {
modifier(SheetForItem(item: item, onDismiss: onDismiss, sheetContent: content))
sheet(item: item, onDismiss: onDismiss) { it in
content(it).modifier(PrivacySensitive())
}
}
}
@@ -11,13 +11,22 @@ import SwiftUI
import SimpleXChat
struct ChatViewBackground: ViewModifier {
@EnvironmentObject var theme: AppTheme
@Environment(\.colorScheme) var colorScheme
var image: Image
var imageType: WallpaperType
var background: Color
var tint: Color
func body(content: Content) -> some View {
// Workaround a problem (SwiftUI bug?) when wallpaper is not updated when user changes global theme in iOS settings from dark to light and vice versa
if colorScheme == .light {
back(content)
} else {
back(content)
}
}
func back(_ content: Content) -> some View {
content.background(
Canvas { context, size in
var image = context.resolve(image)
@@ -81,7 +90,7 @@ struct ChatViewBackground: ViewModifier {
case WallpaperType.empty: ()
}
}
)
).ignoresSafeArea(.all)
}
}
@@ -1,21 +0,0 @@
//
// KeyboardPadding.swift
// SimpleX (iOS)
//
// Created by Evgeny on 10/07/2023.
// Copyright © 2023 SimpleX Chat. All rights reserved.
//
import SwiftUI
extension View {
@ViewBuilder func keyboardPadding() -> some View {
if #available(iOS 17.0, *) {
GeometryReader { g in
self.padding(.bottom, max(0, ChatModel.shared.keyboardHeight - g.safeAreaInsets.bottom))
}
} else {
self
}
}
}
@@ -7,16 +7,17 @@
//
import SwiftUI
import SimpleXChat
struct NavLinkPlain<V: Hashable, Label: View>: View {
@State var tag: V
@Binding var selection: V?
struct NavLinkPlain<Label: View>: View {
let chatId: ChatId
@Binding var selection: ChatId?
@ViewBuilder var label: () -> Label
var disabled = false
var body: some View {
ZStack {
Button("") { DispatchQueue.main.async { selection = tag } }
Button("") { ItemsModel.shared.loadOpenChat(chatId) }
.disabled(disabled)
label()
}
@@ -17,7 +17,9 @@ struct NavStackCompat <C: View, D: View>: View {
if #available(iOS 16, *) {
NavigationStack(path: Binding(
get: { isActive.wrappedValue ? [true] : [] },
set: { _ in }
set: { path in
if path.isEmpty { isActive.wrappedValue = false }
}
)) {
ZStack {
NavigationLink(value: true) { EmptyView() }
@@ -42,7 +42,7 @@ struct SwipeLabel: View {
super.init(frame: CGRect(x: 0, y: 0, width: 64, height: 32 + fontSize))
imageView.image = UIImage(systemName: systemName)
imageView.contentMode = .scaleAspectFit
label.text = NSLocalizedString(text, comment: "swipe action")
label.text = text
label.textAlignment = .center
label.font = UIFont.systemFont(ofSize: fontSize, weight: .medium)
addSubview(imageView)
@@ -66,6 +66,7 @@ struct LocalAuthView: View {
m.chatId = nil
ItemsModel.shared.reversedChatItems = []
m.chats = []
m.popChatCollector.clear()
m.users = []
_ = kcAppPassword.set(password)
_ = kcSelfDestructPassword.remove()
@@ -37,7 +37,7 @@ struct AddGroupView: View {
) { _ in
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
dismissAllSheets(animated: true) {
m.chatId = groupInfo.id
ItemsModel.shared.loadOpenChat(groupInfo.id)
}
}
}
@@ -52,14 +52,14 @@ struct AddGroupView: View {
) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
dismissAllSheets(animated: true) {
m.chatId = groupInfo.id
ItemsModel.shared.loadOpenChat(groupInfo.id)
}
}
}
.navigationBarTitle("Group link")
}
} else {
createGroupView().keyboardPadding()
createGroupView()
}
}
@@ -61,18 +61,39 @@ struct NewChatSheet: View {
@State private var searchShowingSimplexLink = false
@State private var searchChatFilteredBySimplexLink: String? = nil
@Binding var alert: SomeAlert?
// Sheet height management
@State private var isAddContactActive = false
@State private var isScanPasteLinkActive = false
@State private var isLargeSheet = false
@State private var allowSmallSheet = true
@AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true
var body: some View {
NavigationView {
viewBody()
.navigationTitle("New Chat")
let showArchive = !filterContactTypes(chats: chatModel.chats, contactTypes: [.chatDeleted]).isEmpty
let v = NavigationView {
viewBody(showArchive)
.navigationTitle("New message")
.navigationBarTitleDisplayMode(.large)
.navigationBarHidden(searchMode)
.modifier(ThemedBackground(grouped: true))
}
if #available(iOS 16.0, *), oneHandUI {
let sheetHeight: CGFloat = showArchive ? 575 : 500
v.presentationDetents(
allowSmallSheet ? [.height(sheetHeight), .large] : [.large],
selection: Binding(
get: { isLargeSheet || !allowSmallSheet ? .large : .height(sheetHeight) },
set: { isLargeSheet = $0 == .large }
)
)
} else {
v
}
}
@ViewBuilder private func viewBody() -> some View {
@ViewBuilder private func viewBody(_ showArchive: Bool) -> some View {
List {
HStack {
ContactsListSearchBar(
@@ -90,21 +111,25 @@ struct NewChatSheet: View {
if (searchText.isEmpty) {
Section {
NavigationLink {
NavigationLink(isActive: $isAddContactActive) {
NewChatView(selection: .invite, parentAlert: $alert)
.navigationTitle("New chat")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
Label("Add contact", systemImage: "link.badge.plus")
navigateOnTap(Label("Add contact", systemImage: "link.badge.plus")) {
isAddContactActive = true
}
}
NavigationLink {
NavigationLink(isActive: $isScanPasteLinkActive) {
NewChatView(selection: .connect, showQRCodeScanner: true, parentAlert: $alert)
.navigationTitle("New chat")
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
Label("Scan / Paste link", systemImage: "qrcode")
navigateOnTap(Label("Scan / Paste link", systemImage: "qrcode")) {
isScanPasteLinkActive = true
}
}
NavigationLink {
AddGroupView()
@@ -112,11 +137,11 @@ struct NewChatSheet: View {
.modifier(ThemedBackground(grouped: true))
.navigationBarTitleDisplayMode(.large)
} label: {
Label("Create group", systemImage: "person.2")
Label("Create group", systemImage: "person.2.circle.fill")
}
}
if (!filterContactTypes(chats: chatModel.chats, contactTypes: [.chatDeleted]).isEmpty) {
if (showArchive) {
Section {
NavigationLink {
DeletedChats()
@@ -140,9 +165,28 @@ struct NewChatSheet: View {
}
}
/// Extends label's tap area to match `.insetGrouped` list row insets
private func navigateOnTap<L: View>(_ label: L, setActive: @escaping () -> Void) -> some View {
label
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.leading, 16).padding(.vertical, 8).padding(.trailing, 32)
.contentShape(Rectangle())
.onTapGesture {
isLargeSheet = true
DispatchQueue.main.async {
allowSmallSheet = false
setActive()
}
}
.padding(.leading, -16).padding(.vertical, -8).padding(.trailing, -32)
}
func newChatActionButton<Content : View>(_ icon: String, color: Color/* = .secondary*/, content: @escaping () -> Content) -> some View {
ZStack(alignment: .leading) {
Image(systemName: icon).frame(maxWidth: 24, maxHeight: 24, alignment: .center)
Image(systemName: icon)
.resizable()
.scaledToFit()
.frame(maxWidth: 24, maxHeight: 24, alignment: .center)
.symbolRenderingMode(.monochrome)
.foregroundColor(color)
content().foregroundColor(theme.colors.onBackground).padding(.leading, indent)
@@ -340,7 +384,7 @@ struct ContactsListSearchBar: View {
}
.padding(EdgeInsets(top: 7, leading: 7, bottom: 7, trailing: 7))
.foregroundColor(theme.colors.secondary)
.background(theme.colors.isLight ? theme.colors.background : theme.colors.secondaryVariant)
.background(Color(uiColor: .secondarySystemGroupedBackground))
.cornerRadius(10.0)
if searchFocussed {
@@ -354,6 +398,7 @@ struct ContactsListSearchBar: View {
toggleFilterButton()
}
}
.padding(.top, 24)
.onChange(of: searchFocussed) { sf in
withAnimation { searchMode = sf }
}
@@ -447,8 +492,8 @@ struct DeletedChats: View {
showDeletedChatIcon: false
)
}
.navigationTitle("Deleted chats")
.navigationBarTitleDisplayMode(.inline)
.navigationTitle("Archived contacts")
.navigationBarTitleDisplayMode(.large)
.navigationBarHidden(searchMode)
.modifier(ThemedBackground(grouped: true))
@@ -898,11 +898,11 @@ func openKnownContact(_ contact: Contact, dismiss: Bool, showAlreadyExistsAlert:
DispatchQueue.main.async {
if dismiss {
dismissAllSheets(animated: true) {
m.chatId = c.id
ItemsModel.shared.loadOpenChat(c.id)
showAlreadyExistsAlert?()
}
} else {
m.chatId = c.id
ItemsModel.shared.loadOpenChat(c.id)
showAlreadyExistsAlert?()
}
}
@@ -917,11 +917,11 @@ func openKnownGroup(_ groupInfo: GroupInfo, dismiss: Bool, showAlreadyExistsAler
DispatchQueue.main.async {
if dismiss {
dismissAllSheets(animated: true) {
m.chatId = g.id
ItemsModel.shared.loadOpenChat(g.id)
showAlreadyExistsAlert?()
}
} else {
m.chatId = g.id
ItemsModel.shared.loadOpenChat(g.id)
showAlreadyExistsAlert?()
}
}
@@ -77,7 +77,6 @@ struct CreateProfile: View {
focusDisplayName = true
}
}
.keyboardPadding()
}
}
@@ -128,7 +127,6 @@ struct CreateFirstProfile: View {
}
.padding()
.frame(maxWidth: .infinity, alignment: .leading)
.keyboardPadding()
}
func onboardingButtons() -> some View {
@@ -15,9 +15,10 @@ private struct VersionDescription {
}
private struct FeatureDescription {
var icon: String
var icon: String?
var title: LocalizedStringKey
var description: LocalizedStringKey
var description: LocalizedStringKey?
var subfeatures: [(icon: String, description: LocalizedStringKey)] = []
}
private let versionDescriptions: [VersionDescription] = [
@@ -432,34 +433,36 @@ private let versionDescriptions: [VersionDescription] = [
version: "v6.0",
post: URL(string: "https://simplex.chat/blog/20240814-simplex-chat-vision-funding-v6-private-routing-new-user-experience.html"),
features: [
FeatureDescription(
icon: nil,
title: "New chat experience 🎉",
description: nil,
subfeatures: [
("link.badge.plus", "Connect to your friends faster."),
("archivebox", "Archive contacts to chat later."),
("trash", "Delete up to 20 messages at once."),
("platter.filled.bottom.and.arrow.down.iphone", "Use the app with one hand."),
("paintpalette", "Color chats with the new themes."),
]
),
FeatureDescription(
icon: nil,
title: "New media options",
description: nil,
subfeatures: [
("square.and.arrow.up", "Share from other apps."),
("play.circle", "Play from the chat list."),
("circle.filled.pattern.diagonalline.rectangle", "Blur for better privacy.")
]
),
FeatureDescription(
icon: "arrow.forward",
title: "Private message routing 🚀",
description: "It protects your IP address and connections."
),
FeatureDescription(
icon: "person.text.rectangle",
title: "Your contacts your way",
description: "- Search contacts when starting chat.\n- Archive contacts to chat later."
),
FeatureDescription(
icon: "platter.filled.bottom.iphone",
title: "Reachable chat toolbar 👋",
description: "Use the app with one hand."
),
FeatureDescription(
icon: "link",
title: "Connect to your friends faster",
description: "Even when they are offline."
),
FeatureDescription(
icon: "trash",
title: "Moderate like a pro ✋",
description: "Delete up to 20 messages at once."
),
FeatureDescription(
icon: "network",
title: "Control your network",
title: "Better networking",
description: "Connection and servers status."
)
]
@@ -489,35 +492,37 @@ struct WhatsNewView: View {
VStack {
TabView(selection: $currentVersion) {
ForEach(Array(versionDescriptions.enumerated()), id: \.0) { (i, v) in
VStack(alignment: .leading, spacing: 16) {
Text("New in \(v.version)")
.font(.title)
.foregroundColor(theme.colors.secondary)
.frame(maxWidth: .infinity)
.padding(.vertical)
ForEach(v.features, id: \.icon) { f in
featureDescription(f.icon, f.title, f.description)
.padding(.bottom, 8)
}
if let post = v.post {
Link(destination: post) {
HStack {
Text("Read more")
Image(systemName: "arrow.up.right.circle")
ScrollView {
VStack(alignment: .leading, spacing: 16) {
Text("New in \(v.version)")
.font(.title)
.foregroundColor(theme.colors.secondary)
.frame(maxWidth: .infinity)
.padding(.vertical)
ForEach(v.features, id: \.title) { f in
featureDescription(f)
.padding(.bottom, 8)
}
if let post = v.post {
Link(destination: post) {
HStack {
Text("Read more")
Image(systemName: "arrow.up.right.circle")
}
}
}
}
if !viaSettings {
Spacer()
Button("Ok") {
dismiss()
if !viaSettings {
Spacer()
Button("Ok") {
dismiss()
}
.font(.title3)
.frame(maxWidth: .infinity, alignment: .center)
Spacer()
}
.font(.title3)
.frame(maxWidth: .infinity, alignment: .center)
Spacer()
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
.tag(i)
}
}
@@ -531,18 +536,37 @@ struct WhatsNewView: View {
}
}
private func featureDescription(_ icon: String, _ title: LocalizedStringKey, _ description: LocalizedStringKey) -> some View {
private func featureDescription(_ f: FeatureDescription) -> some View {
VStack(alignment: .leading, spacing: 4) {
HStack(alignment: .center, spacing: 4) {
Image(systemName: icon)
.symbolRenderingMode(.monochrome)
.foregroundColor(theme.colors.secondary)
.frame(minWidth: 30, alignment: .center)
Text(title).font(.title3).bold()
if let icon = f.icon {
HStack(alignment: .center, spacing: 4) {
Image(systemName: icon)
.symbolRenderingMode(.monochrome)
.foregroundColor(theme.colors.secondary)
.frame(minWidth: 30, alignment: .center)
Text(f.title).font(.title3).bold()
}
} else {
Text(f.title).font(.title3).bold()
}
if let d = f.description {
Text(d)
.multilineTextAlignment(.leading)
.lineLimit(10)
}
if f.subfeatures.count > 0 {
ForEach(f.subfeatures, id: \.icon) { s in
HStack(alignment: .center, spacing: 4) {
Image(systemName: s.icon)
.symbolRenderingMode(.monochrome)
.foregroundColor(theme.colors.secondary)
.frame(minWidth: 30, alignment: .center)
Text(s.description)
.multilineTextAlignment(.leading)
.lineLimit(3)
}
}
}
Text(description)
.multilineTextAlignment(.leading)
.lineLimit(10)
}
}
@@ -34,6 +34,7 @@ struct AppearanceSettings: View {
@State private var darkModeTheme: String = UserDefaults.standard.string(forKey: DEFAULT_SYSTEM_DARK_THEME) ?? DefaultTheme.DARK.themeName
@AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var profileImageCornerRadius = defaultProfileImageCorner
@AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true
@AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.defaultMaterial
@State var themeUserDestination: (Int64, ThemeModeOverrides?)? = {
if let currentUser = ChatModel.shared.currentUser, let uiThemes = currentUser.uiThemes, uiThemes.preferredMode(!CurrentColors.colors.isLight) != nil {
@@ -65,6 +66,12 @@ struct AppearanceSettings: View {
Section("Chat list") {
Toggle("Reachable chat toolbar", isOn: $oneHandUI)
Picker("Toolbar opacity", selection: $toolbarMaterial) {
ForEach(ToolbarMaterial.allCases, id: \.rawValue) { tm in
Text(tm.text).tag(tm.rawValue)
}
}
.frame(height: 36)
}
Section {
@@ -296,6 +303,43 @@ struct AppearanceSettings: View {
}
}
enum ToolbarMaterial: String, CaseIterable {
case bar
case ultraThin
case thin
case regular
case thick
case ultraThick
static func material(_ s: String) -> Material {
ToolbarMaterial(rawValue: s)?.material ?? Material.bar
}
static let defaultMaterial: String = ToolbarMaterial.regular.rawValue
var material: Material {
switch self {
case .bar: .bar
case .ultraThin: .ultraThin
case .thin: .thin
case .regular: .regular
case .thick: .thick
case .ultraThick: .ultraThick
}
}
var text: String {
switch self {
case .bar: "System"
case .ultraThin: "Ultra thin"
case .thin: "Thin"
case .regular: "Regular"
case .thick: "Thick"
case .ultraThick: "Ultra thick"
}
}
}
struct ChatThemePreview: View {
@EnvironmentObject var theme: AppTheme
var base: DefaultTheme
@@ -13,6 +13,8 @@ struct DeveloperView: View {
@EnvironmentObject var theme: AppTheme
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@AppStorage(GROUP_DEFAULT_CONFIRM_DB_UPGRADES, store: groupDefaults) private var confirmDatabaseUpgrades = false
@State private var hintsUnchanged = hintDefaultsUnchanged()
@Environment(\.colorScheme) var colorScheme
var body: some View {
@@ -33,6 +35,10 @@ struct DeveloperView: View {
} label: {
settingsRow("terminal", color: theme.colors.secondary) { Text("Chat console") }
}
settingsRow("lightbulb.max", color: theme.colors.secondary) {
Button("Reset all hints", action: resetHintDefaults)
.disabled(hintsUnchanged)
}
settingsRow("chevron.left.forwardslash.chevron.right", color: theme.colors.secondary) {
Toggle("Show developer options", isOn: $developerTools)
}
@@ -55,6 +61,21 @@ struct DeveloperView: View {
}
}
}
private func resetHintDefaults() {
for def in hintDefaults {
if let val = appDefaults[def] as? Bool {
UserDefaults.standard.set(val, forKey: def)
}
}
hintsUnchanged = true
}
}
private func hintDefaultsUnchanged() -> Bool {
hintDefaults.allSatisfy { def in
appDefaults[def] as? Bool == UserDefaults.standard.bool(forKey: def)
}
}
struct DeveloperView_Previews: PreviewProvider {
@@ -117,7 +117,7 @@ struct PrivacySettings: View {
privacyAcceptImagesGroupDefault.set($0)
}
}
settingsRow("circle.rectangle.filled.pattern.diagonalline", color: theme.colors.secondary) {
settingsRow("circle.filled.pattern.diagonalline.rectangle", color: theme.colors.secondary) {
Picker("Blur media", selection: $privacyMediaBlurRadius) {
let values = [0, 12, 24, 48] + ([0, 12, 24, 48].contains(privacyMediaBlurRadius) ? [] : [privacyMediaBlurRadius])
ForEach(values, id: \.self) { radius in
@@ -470,7 +470,7 @@ struct SimplexLockView: View {
}
}
.onChange(of: performLA) { performLAToggle in
performLAGroupDefault.set(performLAToggle)
appLocalAuthEnabledGroupDefault.set(performLAToggle)
prefLANoticeShown = true
if performLAToggleReset {
performLAToggleReset = false
@@ -48,6 +48,7 @@ let DEFAULT_ACCENT_COLOR_BLUE = "accentColorBlue" // deprecated, only used for m
let DEFAULT_USER_INTERFACE_STYLE = "userInterfaceStyle" // deprecated, only used for migration
let DEFAULT_PROFILE_IMAGE_CORNER_RADIUS = "profileImageCornerRadius"
let DEFAULT_ONE_HAND_UI_CARD_SHOWN = "oneHandUICardShown"
let DEFAULT_TOOLBAR_MATERIAL = "toolbarMaterial"
let DEFAULT_CONNECT_VIA_LINK_TAB = "connectViaLinkTab"
let DEFAULT_LIVE_MESSAGE_ALERT_SHOWN = "liveMessageAlertShown"
let DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE = "showHiddenProfilesNotice"
@@ -98,6 +99,7 @@ let appDefaults: [String: Any] = [
DEFAULT_ENCRYPTION_STARTED: false,
DEFAULT_PROFILE_IMAGE_CORNER_RADIUS: defaultProfileImageCorner,
DEFAULT_ONE_HAND_UI_CARD_SHOWN: false,
DEFAULT_TOOLBAR_MATERIAL: ToolbarMaterial.defaultMaterial,
DEFAULT_CONNECT_VIA_LINK_TAB: ConnectViaLinkTab.scan.rawValue,
DEFAULT_LIVE_MESSAGE_ALERT_SHOWN: false,
DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE: true,
@@ -120,6 +122,18 @@ let appDefaults: [String: Any] = [
DEFAULT_CURRENT_THEME_IDS: "{}"
]
// only Bool defaults can be used here,
// or hintDefaultsUnchanged and resetHintDefaults need to be changed
let hintDefaults = [
DEFAULT_LA_NOTICE_SHOWN,
DEFAULT_ONE_HAND_UI_CARD_SHOWN,
DEFAULT_LIVE_MESSAGE_ALERT_SHOWN,
DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE,
DEFAULT_SHOW_MUTE_PROFILE_ALERT,
DEFAULT_SHOW_DELETE_CONVERSATION_NOTICE,
DEFAULT_SHOW_DELETE_CONTACT_NOTICE
]
// not used anymore
enum ConnectViaLinkTab: String {
case scan
@@ -174,7 +188,7 @@ let themeOverridesDefault: CodableDefault<[ThemeOverrides]> = CodableDefault(def
func setGroupDefaults() {
privacyAcceptImagesGroupDefault.set(UserDefaults.standard.bool(forKey: DEFAULT_PRIVACY_ACCEPT_IMAGES))
performLAGroupDefault.set(UserDefaults.standard.bool(forKey: DEFAULT_PERFORM_LA))
appLocalAuthEnabledGroupDefault.set(UserDefaults.standard.bool(forKey: DEFAULT_PERFORM_LA))
privacyLinkPreviewsGroupDefault.set(UserDefaults.standard.bool(forKey: DEFAULT_PRIVACY_LINK_PREVIEWS))
profileImageCornerRadiusGroupDefault.set(UserDefaults.standard.double(forKey: DEFAULT_PROFILE_IMAGE_CORNER_RADIUS))
}
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -565,7 +560,8 @@
<source>Accept</source>
<target>Приеми</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -580,7 +576,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Приеми инкогнито</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -933,6 +930,10 @@
<target>Архивиране и качване</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1036,6 +1037,10 @@
<target>По-добри съобщения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1075,6 +1080,10 @@
<target>Блокиран от админ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1287,6 +1296,10 @@
<target>Чатът е спрян. Ако вече сте използвали тази база данни на друго устройство, трябва да я прехвърлите обратно, преди да стартирате чата отново.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Чатът е мигриран!</target>
@@ -1346,7 +1359,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Изчисти</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1368,6 +1381,10 @@
<target>Изчисти проверката</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1463,8 +1480,8 @@
<target>Свързване с настолно устройство</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1650,10 +1667,6 @@ This is your own one-time link!</source>
<target>Продължи</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1923,7 +1936,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Изтрий</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2125,10 +2139,6 @@ This is your own one-time link!</source>
<target>Изтрито на: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2930,10 +2940,6 @@ This is your own one-time link!</source>
<target>Дори когато е деактивиран в разговора.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Изход без запазване</target>
@@ -2991,7 +2997,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Любим</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3750,7 +3756,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Присъединяване</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3841,7 +3847,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Напусни</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4184,10 +4190,6 @@ This is your link for group %@!</source>
<target>Модерирай</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Модерирано в</target>
@@ -4221,7 +4223,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Без звук</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4231,7 +4233,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Име</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4262,10 +4264,6 @@ This is your link for group %@!</source>
<target>Състояние на мрежата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Нов kод за достъп</target>
@@ -4276,6 +4274,10 @@ This is your link for group %@!</source>
<target>Нов чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Нова заявка за контакт</target>
@@ -4306,6 +4308,10 @@ This is your link for group %@!</source>
<target>Ново в %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Нова членска роля</target>
@@ -4442,10 +4448,6 @@ This is your link for group %@!</source>
<target>Стар архив на база данни</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Линк за еднократна покана</target>
@@ -4711,6 +4713,10 @@ Requires compatible VPN.</source>
<target>Обаждания "картина в картина"</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -5003,8 +5009,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>Оценете приложението</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5015,7 +5021,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Прочетено</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5166,7 +5172,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Отхвърляне</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5267,6 +5274,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Нулиране</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5891,6 +5902,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Сподели адреса с контактите?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Сподели линк</target>
@@ -6551,11 +6566,19 @@ You will be prompted to complete authentication before this feature is enabled.<
<target>За да проверите криптирането от край до край с вашия контакт, сравнете (или сканирайте) кода на вашите устройства.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Избор на инкогнито при свързване.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6632,7 +6655,7 @@ You will be prompted to complete authentication before this feature is enabled.<
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Премахни от любимите</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6708,12 +6731,12 @@ To connect, please ask your contact to create another connection link and check
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Уведомявай</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Непрочетено</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7191,6 +7214,10 @@ Repeat join request?</source>
<target>Можете да приемате обаждания от заключен екран, без идентификация на устройство и приложението.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Можете да го създадете по-късно</target>
@@ -7468,10 +7495,6 @@ Repeat connection request?</source>
<target>Вашите контакти ще останат свързани.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Вашата текуща чат база данни ще бъде ИЗТРИТА и ЗАМЕНЕНА с импортираната.</target>
@@ -378,11 +378,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -547,7 +542,8 @@
<source>Accept</source>
<target>Přijmout</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -562,7 +558,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Přijmout inkognito</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -904,6 +901,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1004,6 +1005,10 @@
<target>Lepší zprávy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1036,6 +1041,10 @@
<source>Blocked by admin</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1244,6 +1253,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
@@ -1301,7 +1314,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Vyčistit</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1322,6 +1335,10 @@
<target>Zrušte ověření</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1412,8 +1429,8 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1588,10 +1605,6 @@ This is your own one-time link!</source>
<target>Pokračovat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1853,7 +1866,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Smazat</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2052,10 +2066,6 @@ This is your own one-time link!</source>
<target>Smazáno v: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2830,10 +2840,6 @@ This is your own one-time link!</source>
<target>I při vypnutí v konverzaci.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Ukončit bez uložení</target>
@@ -2888,7 +2894,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Oblíbené</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3620,7 +3626,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Připojte se na</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3703,7 +3709,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Opustit</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4031,10 +4037,6 @@ This is your link for group %@!</source>
<target>Moderovat</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Upraveno v</target>
@@ -4067,7 +4069,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Ztlumit</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4077,7 +4079,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Jméno</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4106,10 +4108,6 @@ This is your link for group %@!</source>
<target>Stav sítě</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nové heslo</target>
@@ -4119,6 +4117,10 @@ This is your link for group %@!</source>
<source>New chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Žádost o nový kontakt</target>
@@ -4149,6 +4151,10 @@ This is your link for group %@!</source>
<target>Nový V %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Nová role člena</target>
@@ -4282,10 +4288,6 @@ This is your link for group %@!</source>
<target>Archiv staré databáze</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Jednorázový zvací odkaz</target>
@@ -4538,6 +4540,10 @@ Vyžaduje povolení sítě VPN.</target>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -4820,8 +4826,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>Ohodnoťte aplikaci</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -4832,7 +4838,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Číst</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -4980,7 +4986,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Odmítnout</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5076,6 +5083,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Obnovit</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5688,6 +5699,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Sdílet adresu s kontakty?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Sdílet odkaz</target>
@@ -6328,11 +6343,19 @@ Před zapnutím této funkce budete vyzváni k dokončení ověření.</target>
<target>Chcete-li ověřit koncové šifrování u svého kontaktu, porovnejte (nebo naskenujte) kód na svých zařízeních.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Změnit inkognito režim při připojení.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6403,7 +6426,7 @@ Před zapnutím této funkce budete vyzváni k dokončení ověření.</target>
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Odobl.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6477,12 +6500,12 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Zrušit ztlumení</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Nepřečtený</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -6928,6 +6951,10 @@ Repeat join request?</source>
<target>Můžete přijímat hovory z obrazovky zámku, bez ověření zařízení a aplikace.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Můžete vytvořit později</target>
@@ -7197,10 +7224,6 @@ Repeat connection request?</source>
<target>Vaše kontakty zůstanou připojeny.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Vaše aktuální chat databáze bude ODSTRANĚNA a NAHRAZENA importovanou.</target>
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -529,17 +524,17 @@
</trans-unit>
<trans-unit id="Abort" xml:space="preserve">
<source>Abort</source>
<target>Abbrechen</target>
<target>Beenden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Abort changing address" xml:space="preserve">
<source>Abort changing address</source>
<target>Wechsel der Empfängeradresse abbrechen</target>
<target>Wechsel der Empfängeradresse beenden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Abort changing address?" xml:space="preserve">
<source>Abort changing address?</source>
<target>Wechsel der Empfängeradresse abbrechen?</target>
<target>Wechsel der Empfängeradresse beenden?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="About SimpleX" xml:space="preserve">
@@ -566,7 +561,8 @@
<source>Accept</source>
<target>Annehmen</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -581,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Inkognito akzeptieren</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -660,7 +657,7 @@
</trans-unit>
<trans-unit id="Address change will be aborted. Old receiving address will be used." xml:space="preserve">
<source>Address change will be aborted. Old receiving address will be used.</source>
<target>Der Wechsel der Empfängeradresse wird abgebrochen. Die bisherige Adresse wird weiter verwendet.</target>
<target>Der Wechsel der Empfängeradresse wird beendet. Die bisherige Adresse wird weiter verwendet.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
@@ -755,6 +752,7 @@
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Anrufe erlauben?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
@@ -947,8 +945,14 @@
<target>Archivieren und Hochladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<target>Kontakte für spätere Chats archivieren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Archivierte Kontakte</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
@@ -1051,6 +1055,11 @@
<target>Verbesserungen bei Nachrichten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<target>Kontrollieren Sie Ihr Netzwerk</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Schwarz</target>
@@ -1091,6 +1100,11 @@
<target>wurde vom Administrator blockiert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<target>Für bessere Privatsphäre verpixeln.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Medium unscharf machen</target>
@@ -1143,6 +1157,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Anrufe nicht zugelassen!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1152,10 +1167,12 @@
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<target>Kontakt kann nicht angerufen werden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<target>Mitglied kann nicht angerufen werden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
@@ -1170,6 +1187,7 @@
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<target>Mitglied kann nicht benachrichtigt werden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
@@ -1308,6 +1326,11 @@
<target>Der Chat ist angehalten. Wenn Sie diese Datenbank bereits auf einem anderen Gerät genutzt haben, sollten Sie diese vor dem Starten des Chats wieder zurückspielen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<target>Chat-Liste</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat wurde migriert!</target>
@@ -1371,7 +1394,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Löschen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1393,6 +1416,11 @@
<target>Überprüfung zurücknehmen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<target>Farbige Chats mit neuen Designs.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Farbvariante</target>
@@ -1435,6 +1463,7 @@
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<target>Löschen des Kontakts bestätigen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
@@ -1492,8 +1521,9 @@
<target>Mit dem Desktop verbinden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<target>Schneller mit Ihren Freunden verbinden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1572,6 +1602,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<target>Verbinde mit Kontakt, bitte warten oder später erneut überprüfen!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
@@ -1586,6 +1617,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<target>Verbindungs- und Server-Status.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
@@ -1640,6 +1672,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<target>Kontakt gelöscht!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
@@ -1654,6 +1687,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<target>Kontakt wurde gelöscht.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1668,6 +1702,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<target>Kontakt wird gelöscht. Dies kann nicht rückgängig gemacht werden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
@@ -1685,12 +1720,9 @@ Das ist Ihr eigener Einmal-Link!</target>
<target>Weiter</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Unterhaltung gelöscht!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
@@ -1964,7 +1996,8 @@ Das ist Ihr eigener Einmal-Link!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Löschen</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2033,6 +2066,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Kontakt löschen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2142,6 +2176,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<target>Löschen Sie bis zu 20 Nachrichten auf einmal.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
@@ -2151,6 +2186,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<target>Ohne Benachrichtigung löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
@@ -2168,10 +2204,6 @@ Das ist Ihr eigener Einmal-Link!</target>
<target>Gelöscht um: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Fehler beim Löschen</target>
@@ -2244,6 +2276,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<target>Optionen für Entwickler</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
@@ -2668,7 +2701,7 @@ Das ist Ihr eigener Einmal-Link!</target>
</trans-unit>
<trans-unit id="Error aborting address change" xml:space="preserve">
<source>Error aborting address change</source>
<target>Fehler beim Abbrechen des Adresswechsels</target>
<target>Fehler beim Beenden des Adresswechsels</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error accepting contact request" xml:space="preserve">
@@ -2992,10 +3025,6 @@ Das ist Ihr eigener Einmal-Link!</target>
<target>Auch wenn sie im Chat deaktiviert sind.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Beenden ohne Speichern</target>
@@ -3054,7 +3083,7 @@ Das ist Ihr eigener Einmal-Link!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Favorit</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3810,6 +3839,7 @@ Fehler: %2$@</target>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<target>Ihre IP-Adresse und Verbindungen werden geschützt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
@@ -3830,7 +3860,7 @@ Fehler: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Beitreten</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3876,6 +3906,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<target>Unterhaltung behalten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
@@ -3921,7 +3952,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Verlassen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4278,10 +4309,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Moderieren</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderiert um</target>
@@ -4315,7 +4342,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Stummschalten</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4325,7 +4352,7 @@ Das ist Ihr Link für die Gruppe %@!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Name</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4357,10 +4384,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Netzwerkstatus</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Neuer Zugangscode</target>
@@ -4371,6 +4394,11 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Neuer Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<target>Neue Chat-Erfahrung 🎉</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Neue Kontaktanfrage</target>
@@ -4401,6 +4429,11 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Neu in %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<target>Neue Medien-Optionen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Neue Mitgliedsrolle</target>
@@ -4540,10 +4573,6 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Altes Datenbankarchiv</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Einmal-Einladungslink</target>
@@ -4575,6 +4604,7 @@ Dies erfordert die Aktivierung eines VPNs.</target>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<target>Nur die Unterhaltung löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
@@ -4812,8 +4842,14 @@ Dies erfordert die Aktivierung eines VPNs.</target>
<target>Bild-in-Bild-Anrufe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<target>Direkt aus der Chat-Liste abspielen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Bitten Sie Ihren Kontakt darum, Anrufe zu aktivieren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
@@ -5117,8 +5153,9 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Bewerten Sie die App</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<target>Erreichbare Chat-Symbolleiste</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5129,7 +5166,7 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Gelesen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5289,7 +5326,8 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Ablehnen</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5391,6 +5429,11 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Zurücksetzen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<target>Alle Hinweise zurücksetzen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Alle Statistiken zurücksetzen</target>
@@ -5758,6 +5801,7 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<target>Nachricht senden, um Anrufe zu aktivieren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
@@ -6045,6 +6089,11 @@ Aktivieren Sie es in den *Netzwerk &amp; Server* Einstellungen.</target>
<target>Die Adresse mit Kontakten teilen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<target>Aus anderen Apps heraus teilen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Link teilen</target>
@@ -6729,11 +6778,21 @@ Sie werden aufgefordert, die Authentifizierung abzuschließen, bevor diese Funkt
<target>Um die Ende-zu-Ende-Verschlüsselung mit Ihrem Kontakt zu überprüfen, müssen Sie den Sicherheitscode in Ihren Apps vergleichen oder scannen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<target>Chat-Liste umschalten:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Inkognito beim Verbinden einschalten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<target>Deckkraft der Symbolleiste</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Summe aller Abonnements</target>
@@ -6812,7 +6871,7 @@ Sie werden aufgefordert, die Authentifizierung abzuschließen, bevor diese Funkt
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Fav. entf.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6889,12 +6948,12 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Stummschaltung aufheben</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Ungelesen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7028,6 +7087,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<target>Die App mit einer Hand nutzen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
@@ -7387,6 +7447,11 @@ Verbindungsanfrage wiederholen?</target>
<target>Sie können Anrufe ohne Geräte- und App-Authentifizierung vom Sperrbildschirm aus annehmen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<target>Kann von Ihnen in den Erscheinungsbild-Einstellungen geändert werden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Sie können dies später erstellen</target>
@@ -7424,6 +7489,7 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<target>Sie können aus den archivierten Kontakten heraus Nachrichten an %@ versenden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -7453,6 +7519,7 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<target>Sie können in der Chatliste weiterhin die Unterhaltung mit %@ einsehen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
@@ -7534,6 +7601,7 @@ Verbindungsanfrage wiederholen?</target>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target>Sie müssen Ihrem Kontakt Anrufe zu Ihnen erlauben, bevor Sie ihn selbst anrufen können.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
@@ -7666,10 +7734,6 @@ Verbindungsanfrage wiederholen?</target>
<target>Ihre Kontakte bleiben weiterhin verbunden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Ihre aktuelle Chat-Datenbank wird GELÖSCHT und durch die Importierte ERSETZT.</target>
@@ -7849,6 +7913,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<target>Anrufen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
@@ -8223,6 +8288,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<target>Einladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
@@ -8282,6 +8348,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<target>Nachricht</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
@@ -8316,6 +8383,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<target>Stummschalten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
@@ -8452,6 +8520,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<target>Suchen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
@@ -8540,6 +8609,7 @@ Zuletzt empfangene Nachricht: %2$@</target>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<target>Stummschaltung aufheben</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
@@ -8589,6 +8659,7 @@ Zuletzt empfangene Nachricht: %2$@</target>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<target>Video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
@@ -8971,7 +9042,7 @@ Zuletzt empfangene Nachricht: %2$@</target>
</trans-unit>
<trans-unit id="You can allow sharing in Privacy &amp; Security / SimpleX Lock settings." xml:space="preserve">
<source>You can allow sharing in Privacy &amp; Security / SimpleX Lock settings.</source>
<target>Du kannst das Teilen in den Einstellungen zu Datenschutz &amp; Sicherheit bzw. SimpleX-Sperre erlauben.</target>
<target>Du kannst das Teilen in den Einstellungen zu Datenschutz &amp; Sicherheit - SimpleX-Sperre erlauben.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
</body>
@@ -392,13 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<target>- Search contacts when starting chat.
- Archive contacts to chat later.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -568,7 +561,8 @@
<source>Accept</source>
<target>Accept</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -583,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Accept incognito</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -950,6 +945,11 @@
<target>Archive and upload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<target>Archive contacts to chat later.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Archived contacts</target>
@@ -1055,6 +1055,11 @@
<target>Better messages</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<target>Better networking</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Black</target>
@@ -1095,6 +1100,11 @@
<target>Blocked by admin</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<target>Blur for better privacy.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Blur media</target>
@@ -1316,6 +1326,11 @@
<target>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<target>Chat list</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat migrated!</target>
@@ -1379,7 +1394,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Clear</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1401,6 +1416,11 @@
<target>Clear verification</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<target>Color chats with the new themes.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Color mode</target>
@@ -1501,9 +1521,9 @@
<target>Connect to desktop</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<target>Connect to your friends faster</target>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<target>Connect to your friends faster.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1700,11 +1720,6 @@ This is your own one-time link!</target>
<target>Continue</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<target>Control your network</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Conversation deleted!</target>
@@ -1981,7 +1996,8 @@ This is your own one-time link!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Delete</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2188,11 +2204,6 @@ This is your own one-time link!</target>
<target>Deleted at: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<target>Deleted chats</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Deletion errors</target>
@@ -3014,11 +3025,6 @@ This is your own one-time link!</target>
<target>Even when disabled in the conversation.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<target>Even when they are offline.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Exit without saving</target>
@@ -3077,7 +3083,7 @@ This is your own one-time link!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Favorite</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3854,7 +3860,7 @@ Error: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Join</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3946,7 +3952,7 @@ This is your link for group %@!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Leave</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4303,11 +4309,6 @@ This is your link for group %@!</target>
<target>Moderate</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<target>Moderate like a pro ✋</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderated at</target>
@@ -4341,7 +4342,7 @@ This is your link for group %@!</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Mute</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4351,7 +4352,7 @@ This is your link for group %@!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Name</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4383,11 +4384,6 @@ This is your link for group %@!</target>
<target>Network status</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<target>New Chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>New Passcode</target>
@@ -4398,6 +4394,11 @@ This is your link for group %@!</target>
<target>New chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<target>New chat experience 🎉</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>New contact request</target>
@@ -4428,6 +4429,11 @@ This is your link for group %@!</target>
<target>New in %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<target>New media options</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>New member role</target>
@@ -4567,11 +4573,6 @@ This is your link for group %@!</target>
<target>Old database archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<target>One-hand UI</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>One-time invitation link</target>
@@ -4841,6 +4842,11 @@ Requires compatible VPN.</target>
<target>Picture-in-picture calls</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<target>Play from the chat list.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Please ask your contact to enable calls.</target>
@@ -5147,9 +5153,9 @@ Enable in *Network &amp; servers* settings.</target>
<target>Rate the app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<target>Reachable chat toolbar 👋</target>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<target>Reachable chat toolbar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5160,7 +5166,7 @@ Enable in *Network &amp; servers* settings.</target>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Read</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5320,7 +5326,8 @@ Enable in *Network &amp; servers* settings.</target>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Reject</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5422,6 +5429,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>Reset</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<target>Reset all hints</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Reset all statistics</target>
@@ -6077,6 +6089,11 @@ Enable in *Network &amp; servers* settings.</target>
<target>Share address with contacts?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<target>Share from other apps.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Share link</target>
@@ -6761,11 +6778,21 @@ You will be prompted to complete authentication before this feature is enabled.<
<target>To verify end-to-end encryption with your contact compare (or scan) the code on your devices.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<target>Toggle chat list:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Toggle incognito when connecting.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<target>Toolbar opacity</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Total</target>
@@ -6844,7 +6871,7 @@ You will be prompted to complete authentication before this feature is enabled.<
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Unfav.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6921,12 +6948,12 @@ To connect, please ask your contact to create another connection link and check
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Unmute</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Unread</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7420,6 +7447,11 @@ Repeat join request?</target>
<target>You can accept calls from lock screen, without device and app authentication.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<target>You can change it in Appearance settings.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>You can create it later</target>
@@ -7702,11 +7734,6 @@ Repeat connection request?</target>
<target>Your contacts will remain connected.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<target>Your contacts your way</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Your current chat database will be DELETED and REPLACED with the imported one.</target>
File diff suppressed because it is too large Load Diff
@@ -376,11 +376,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -542,7 +537,8 @@
<source>Accept</source>
<target>Hyväksy</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -557,7 +553,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Hyväksy tuntematon</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -898,6 +895,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -998,6 +999,10 @@
<target>Parempia viestejä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1030,6 +1035,10 @@
<source>Blocked by admin</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1237,6 +1246,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
@@ -1294,7 +1307,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Tyhjennä</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1315,6 +1328,10 @@
<target>Tyhjennä vahvistus</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1405,8 +1422,8 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1581,10 +1598,6 @@ This is your own one-time link!</source>
<target>Jatka</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1846,7 +1859,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Poista</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2045,10 +2059,6 @@ This is your own one-time link!</source>
<target>Poistettu klo: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2820,10 +2830,6 @@ This is your own one-time link!</source>
<target>Jopa kun ei käytössä keskustelussa.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Poistu tallentamatta</target>
@@ -2878,7 +2884,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Suosikki</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3610,7 +3616,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Liity</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3693,7 +3699,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Poistu</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4021,10 +4027,6 @@ This is your link for group %@!</source>
<target>Moderoi</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderoitu klo</target>
@@ -4057,7 +4059,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Mykistä</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4067,7 +4069,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Nimi</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4096,10 +4098,6 @@ This is your link for group %@!</source>
<target>Verkon tila</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Uusi pääsykoodi</target>
@@ -4109,6 +4107,10 @@ This is your link for group %@!</source>
<source>New chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Uusi kontaktipyyntö</target>
@@ -4138,6 +4140,10 @@ This is your link for group %@!</source>
<target>Uutta %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Uusi jäsenrooli</target>
@@ -4271,10 +4277,6 @@ This is your link for group %@!</source>
<target>Vanha tietokanta-arkisto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Kertakutsulinkki</target>
@@ -4526,6 +4528,10 @@ Edellyttää VPN:n sallimista.</target>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -4808,8 +4814,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>Arvioi sovellus</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -4820,7 +4826,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Lue</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -4968,7 +4974,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Hylkää</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5064,6 +5071,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Oletustilaan</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5675,6 +5686,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Jaa osoite kontakteille?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Jaa linkki</target>
@@ -6314,10 +6329,18 @@ Sinua kehotetaan suorittamaan todennus loppuun, ennen kuin tämä ominaisuus ote
<target>Voit tarkistaa päästä päähän -salauksen kontaktisi kanssa vertaamalla (tai skannaamalla) laitteidenne koodia.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6388,7 +6411,7 @@ Sinua kehotetaan suorittamaan todennus loppuun, ennen kuin tämä ominaisuus ote
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Epäsuotuisa.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6462,12 +6485,12 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Poista mykistys</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Lukematon</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -6913,6 +6936,10 @@ Repeat join request?</source>
<target>Voit vastaanottaa puheluita lukitusnäytöltä ilman laitteen ja sovelluksen todennusta.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Voit luoda sen myöhemmin</target>
@@ -7182,10 +7209,6 @@ Repeat connection request?</source>
<target>Kontaktisi pysyvät yhdistettyinä.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Nykyinen keskustelut-tietokantasi poistetaan ja korvataan tuodulla tietokannalla.</target>
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -529,7 +524,7 @@
</trans-unit>
<trans-unit id="Abort" xml:space="preserve">
<source>Abort</source>
<target>Annuler</target>
<target>Abandonner</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Abort changing address" xml:space="preserve">
@@ -566,7 +561,8 @@
<source>Accept</source>
<target>Accepter</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -581,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Accepter en incognito</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -755,6 +752,7 @@
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Autoriser les appels?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
@@ -944,11 +942,17 @@
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archiver et transférer</target>
<target>Archiver et téléverser</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<target>Archiver les contacts pour discuter plus tard.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Contacts archivés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
@@ -1051,6 +1055,11 @@
<target>Meilleurs messages</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<target>Meilleure gestion de réseau</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Noir</target>
@@ -1091,6 +1100,11 @@
<target>Bloqué par l'administrateur</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<target>Rendez les images floues et protégez-les contre les regards indiscrets.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Flouter les médias</target>
@@ -1143,6 +1157,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Les appels ne sont pas autorisés!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1152,10 +1167,12 @@
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<target>Impossible d'appeler le contact</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<target>Impossible d'appeler le membre</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
@@ -1170,6 +1187,7 @@
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<target>Impossible d'envoyer un message à ce membre</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
@@ -1285,6 +1303,7 @@
</trans-unit>
<trans-unit id="Chat database exported" xml:space="preserve">
<source>Chat database exported</source>
<target>Exportation de la base de données des discussions</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat database imported" xml:space="preserve">
@@ -1307,6 +1326,11 @@
<target>Le chat est arrêté. Si vous avez déjà utilisé cette base de données sur un autre appareil, vous devez la transférer à nouveau avant de démarrer le chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<target>Liste de discussion</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Messagerie transférée!</target>
@@ -1370,7 +1394,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Effacer</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1392,6 +1416,11 @@
<target>Retirer la vérification</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<target>Colorez vos discussions avec les nouveaux thèmes.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Mode de couleur</target>
@@ -1409,7 +1438,7 @@
</trans-unit>
<trans-unit id="Completed" xml:space="preserve">
<source>Completed</source>
<target>Complété</target>
<target>Complétées</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Configure ICE servers" xml:space="preserve">
@@ -1434,6 +1463,7 @@
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<target>Confirmer la suppression du contact?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
@@ -1491,8 +1521,9 @@
<target>Connexion au bureau</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<target>Connectez-vous à vos amis plus rapidement.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1571,6 +1602,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<target>Connexion au contact, veuillez patienter ou vérifier plus tard!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
@@ -1585,6 +1617,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<target>État de la connexion et des serveurs.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
@@ -1639,6 +1672,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<target>Contact supprimé !</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
@@ -1653,6 +1687,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<target>Le contact est supprimé.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1667,6 +1702,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<target>Le contact sera supprimé - il n'est pas possible de revenir en arrière!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
@@ -1684,12 +1720,9 @@ Il s'agit de votre propre lien unique !</target>
<target>Continuer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Conversation supprimée!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
@@ -1779,7 +1812,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Created" xml:space="preserve">
<source>Created</source>
<target>Créé</target>
<target>Créées</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Created at" xml:space="preserve">
@@ -1963,7 +1996,8 @@ Il s'agit de votre propre lien unique !</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Supprimer</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2032,6 +2066,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Supprimer le contact?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2141,6 +2176,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<target>Supprimez jusqu'à 20 messages à la fois.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
@@ -2150,11 +2186,12 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<target>Supprimer sans notification</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
<source>Deleted</source>
<target>Supprimé</target>
<target>Supprimées</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted at" xml:space="preserve">
@@ -2167,10 +2204,6 @@ Il s'agit de votre propre lien unique !</target>
<target>Supprimé à : %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Erreurs de suppression</target>
@@ -2243,6 +2276,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<target>Options pour les développeurs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
@@ -2991,10 +3025,6 @@ Il s'agit de votre propre lien unique !</target>
<target>Même s'il est désactivé dans la conversation.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Quitter sans enregistrer</target>
@@ -3053,7 +3083,7 @@ Il s'agit de votre propre lien unique !</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Favoris</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3809,6 +3839,7 @@ Erreur: %2$@</target>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<target>Il protège votre adresse IP et vos connexions.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
@@ -3829,7 +3860,7 @@ Erreur: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Rejoindre</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3875,6 +3906,7 @@ Voici votre lien pour le groupe %@ !</target>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<target>Garder la conversation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
@@ -3920,7 +3952,7 @@ Voici votre lien pour le groupe %@ !</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Quitter</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4054,6 +4086,7 @@ Voici votre lien pour le groupe %@ !</target>
</trans-unit>
<trans-unit id="Media &amp; file servers" xml:space="preserve">
<source>Media &amp; file servers</source>
<target>Serveurs de fichiers et de médias</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Medium" xml:space="preserve">
@@ -4148,6 +4181,7 @@ Voici votre lien pour le groupe %@ !</target>
</trans-unit>
<trans-unit id="Message servers" xml:space="preserve">
<source>Message servers</source>
<target>Serveurs de messages</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message source remains private." xml:space="preserve">
@@ -4275,10 +4309,6 @@ Voici votre lien pour le groupe %@ !</target>
<target>Modérer</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Modéré à</target>
@@ -4312,7 +4342,7 @@ Voici votre lien pour le groupe %@ !</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Muet</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4322,7 +4352,7 @@ Voici votre lien pour le groupe %@ !</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Nom</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4354,10 +4384,6 @@ Voici votre lien pour le groupe %@ !</target>
<target>État du réseau</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nouveau code d'accès</target>
@@ -4368,6 +4394,11 @@ Voici votre lien pour le groupe %@ !</target>
<target>Nouveau chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<target>Nouvelle expérience de discussion 🎉</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Nouvelle demande de contact</target>
@@ -4398,6 +4429,11 @@ Voici votre lien pour le groupe %@ !</target>
<target>Nouveautés de la %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<target>Nouvelles options de médias</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Nouveau rôle</target>
@@ -4537,10 +4573,6 @@ Voici votre lien pour le groupe %@ !</target>
<target>Archives de l'ancienne base de données</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Lien d'invitation unique</target>
@@ -4572,6 +4604,7 @@ Nécessite l'activation d'un VPN.</target>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<target>Ne supprimer que la conversation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
@@ -4809,8 +4842,14 @@ Nécessite l'activation d'un VPN.</target>
<target>Appels picture-in-picture</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<target>Aperçu depuis la liste de conversation.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Veuillez demander à votre contact d'autoriser les appels.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
@@ -5114,8 +5153,9 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Évaluer l'app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<target>Barre d'outils accessible</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5126,7 +5166,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Lire</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5286,7 +5326,8 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Rejeter</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5388,6 +5429,11 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Réinitialisation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<target>Rétablir tous les conseils</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Réinitialiser toutes les statistiques</target>
@@ -5520,6 +5566,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Save and reconnect" xml:space="preserve">
<source>Save and reconnect</source>
<target>Sauvegarder et se reconnecter</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save and update group profile" xml:space="preserve">
@@ -5664,7 +5711,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Secured" xml:space="preserve">
<source>Secured</source>
<target>Sécurisé</target>
<target>Sécurisées</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Security assessment" xml:space="preserve">
@@ -5744,7 +5791,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Send link previews" xml:space="preserve">
<source>Send link previews</source>
<target>Envoi d'aperçus de liens</target>
<target>Aperçu des liens</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send live message" xml:space="preserve">
@@ -5754,6 +5801,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<target>Envoyer un message pour activer les appels.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
@@ -5918,7 +5966,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Server requires authorization to upload, check password" xml:space="preserve">
<source>Server requires authorization to upload, check password</source>
<target>Le serveur requiert une autorisation pour uploader, vérifiez le mot de passe</target>
<target>Le serveur requiert une autorisation pour téléverser, vérifiez le mot de passe</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Server test failed!" xml:space="preserve">
@@ -6041,6 +6089,11 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
<target>Partager l'adresse avec vos contacts ?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<target>Partager depuis d'autres applications.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Partager le lien</target>
@@ -6078,7 +6131,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Show last messages" xml:space="preserve">
<source>Show last messages</source>
<target>Voir les derniers messages</target>
<target>Aperçu des derniers messages</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show message status" xml:space="preserve">
@@ -6093,7 +6146,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Show preview" xml:space="preserve">
<source>Show preview</source>
<target>Afficher l'aperçu</target>
<target>Aperçu affiché</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show → on messages sent via private routing." xml:space="preserve">
@@ -6213,6 +6266,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Some file(s) were not exported:" xml:space="preserve">
<source>Some file(s) were not exported:</source>
<target>Certains fichiers n'ont pas été exportés:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
@@ -6222,6 +6276,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<target>L'importation a entraîné des erreurs non fatales:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
@@ -6331,7 +6386,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="Subscribed" xml:space="preserve">
<source>Subscribed</source>
<target>Inscrit</target>
<target>Inscriptions</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Subscription errors" xml:space="preserve">
@@ -6361,6 +6416,7 @@ Activez-le dans les paramètres *Réseau et serveurs*.</target>
</trans-unit>
<trans-unit id="TCP connection" xml:space="preserve">
<source>TCP connection</source>
<target>Connexion TCP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="TCP connection timeout" xml:space="preserve">
@@ -6722,11 +6778,21 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s
<target>Pour vérifier le chiffrement de bout en bout avec votre contact, comparez (ou scannez) le code sur vos appareils.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<target>Afficher la liste des conversations:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Basculer en mode incognito lors de la connexion.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<target>Opacité de la barre d'outils</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Total</target>
@@ -6805,7 +6871,7 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Unfav.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6882,12 +6948,12 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Démute</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Non lu</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -6911,6 +6977,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
</trans-unit>
<trans-unit id="Update settings?" xml:space="preserve">
<source>Update settings?</source>
<target>Mettre à jour les paramètres?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Updating settings will re-connect the client to all servers." xml:space="preserve">
@@ -6935,7 +7002,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Transférer le fichier</target>
<target>Téléverser le fichier</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploaded" xml:space="preserve">
@@ -7020,6 +7087,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<target>Utiliser l'application d'une main.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
@@ -7089,7 +7157,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
</trans-unit>
<trans-unit id="Video will be received when your contact completes uploading it." xml:space="preserve">
<source>Video will be received when your contact completes uploading it.</source>
<target>La vidéo ne sera reçue que lorsque votre contact aura fini de la transférer.</target>
<target>La vidéo ne sera reçue que lorsque votre contact aura fini la mettre en ligne.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Video will be received when your contact is online, please wait or check later!" xml:space="preserve">
@@ -7379,6 +7447,11 @@ Répéter la demande d'adhésion ?</target>
<target>Vous pouvez accepter des appels à partir de l'écran de verrouillage, sans authentification de l'appareil ou de l'application.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<target>Vous pouvez choisir de le modifier dans les paramètres d'apparence.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Vous pouvez la créer plus tard</target>
@@ -7416,6 +7489,7 @@ Répéter la demande d'adhésion ?</target>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<target>Vous pouvez envoyer des messages à %@ à partir des contacts archivés.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -7445,6 +7519,7 @@ Répéter la demande d'adhésion ?</target>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<target>Vous pouvez toujours voir la conversation avec %@ dans la liste des discussions.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
@@ -7511,10 +7586,12 @@ Répéter la demande de connexion ?</target>
</trans-unit>
<trans-unit id="You may migrate the exported database." xml:space="preserve">
<source>You may migrate the exported database.</source>
<target>Vous pouvez migrer la base de données exportée.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You may save the exported archive." xml:space="preserve">
<source>You may save the exported archive.</source>
<target>Vous pouvez enregistrer l'archive exportée.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." xml:space="preserve">
@@ -7524,6 +7601,7 @@ Répéter la demande de connexion ?</target>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target>Vous devez autoriser votre contact à appeler pour pouvoir l'appeler.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
@@ -7656,10 +7734,6 @@ Répéter la demande de connexion ?</target>
<target>Vos contacts resteront connectés.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Votre base de données de chat actuelle va être SUPPRIMEE et REMPLACEE par celle importée.</target>
@@ -7839,6 +7913,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<target>appeler</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
@@ -8213,6 +8288,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<target>inviter</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
@@ -8272,6 +8348,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<target>message</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
@@ -8306,6 +8383,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<target>muet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
@@ -8442,6 +8520,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<target>rechercher</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
@@ -8530,6 +8609,7 @@ dernier message reçu: %2$@</target>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<target>démuter</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
@@ -8579,6 +8659,7 @@ dernier message reçu: %2$@</target>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<target>vidéo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
@@ -8921,10 +9002,12 @@ dernier message reçu: %2$@</target>
</trans-unit>
<trans-unit id="Sending a message takes longer than expected." xml:space="preserve">
<source>Sending a message takes longer than expected.</source>
<target>L'envoi d'un message prend plus de temps que prévu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Sending message…" xml:space="preserve">
<source>Sending message…</source>
<target>Envoi du message…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share" xml:space="preserve">
@@ -8934,6 +9017,7 @@ dernier message reçu: %2$@</target>
</trans-unit>
<trans-unit id="Slow network?" xml:space="preserve">
<source>Slow network?</source>
<target>Réseau lent?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unknown database error: %@" xml:space="preserve">
@@ -8948,6 +9032,7 @@ dernier message reçu: %2$@</target>
</trans-unit>
<trans-unit id="Wait" xml:space="preserve">
<source>Wait</source>
<target>Attendez</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Wrong database passphrase" xml:space="preserve">
@@ -219,12 +219,12 @@
</trans-unit>
<trans-unit id="%lld messages blocked" xml:space="preserve">
<source>%lld messages blocked</source>
<target>%lld üzenet blokkolva</target>
<target>%lld üzenet letiltva</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld messages blocked by admin" xml:space="preserve">
<source>%lld messages blocked by admin</source>
<target>%lld üzenet blokkolva az admin által</target>
<target>%lld üzenet letiltva az admin által</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld messages marked deleted" xml:space="preserve">
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -566,7 +561,8 @@
<source>Accept</source>
<target>Elfogadás</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -581,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Fogadás inkognítóban</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -755,6 +752,7 @@
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Hívások engedélyezése?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
@@ -947,8 +945,14 @@
<target>Archiválás és feltöltés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<target>Ismerősök archiválása a későbbi csevegéshez.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Archivált ismerősök</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
@@ -1051,6 +1055,11 @@
<target>Jobb üzenetek</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<target>Jobb hálózatkezelés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Fekete</target>
@@ -1058,7 +1067,7 @@
</trans-unit>
<trans-unit id="Block" xml:space="preserve">
<source>Block</source>
<target>Blokkolás</target>
<target>Letiltás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Block for all" xml:space="preserve">
@@ -1068,12 +1077,12 @@
</trans-unit>
<trans-unit id="Block group members" xml:space="preserve">
<source>Block group members</source>
<target>Csoporttagok blokkolása</target>
<target>Csoporttagok letiltása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Block member" xml:space="preserve">
<source>Block member</source>
<target>Tag blokkolása</target>
<target>Tag letiltása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Block member for all?" xml:space="preserve">
@@ -1083,7 +1092,7 @@
</trans-unit>
<trans-unit id="Block member?" xml:space="preserve">
<source>Block member?</source>
<target>Tag blokkolása?</target>
<target>Tag letiltása?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blocked by admin" xml:space="preserve">
@@ -1091,6 +1100,11 @@
<target>Letiltva az admin által</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<target>Elhomályosítás a jobb adatvédelemért.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Média elhomályosítása</target>
@@ -1143,6 +1157,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>A hívások le vannak tiltva!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1152,10 +1167,12 @@
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<target>Nem lehet felhívni az ismerőst</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<target>Nem lehet felhívni a tagot</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
@@ -1170,6 +1187,7 @@
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<target>Nem lehet üzenetet küldeni a tagnak</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
@@ -1308,6 +1326,11 @@
<target>A csevegés leállt. Ha már használta ezt az adatbázist egy másik eszközön, úgy visszaállítás szükséges a csevegés megkezdése előtt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<target>Csevegőlista</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>A csevegés átköltöztetve!</target>
@@ -1371,7 +1394,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Kiürítés</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1393,6 +1416,11 @@
<target>Hitelesítés törlése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<target>Csevegések színezése új témákkal.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Színmód</target>
@@ -1435,6 +1463,7 @@
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<target>Biztosan törli az ismerőst?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
@@ -1492,8 +1521,9 @@
<target>Kapcsolódás számítógéphez</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<target>Kapcsolódjon gyorsabban az ismerőseihez.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1572,6 +1602,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<target>Kapcsolódás az ismerőshöz, várjon vagy ellenőrizze később!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
@@ -1586,6 +1617,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<target>Kapcsolatok- és kiszolgálók állapotának megjelenítése.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
@@ -1640,6 +1672,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<target>Ismerős törölve!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
@@ -1654,6 +1687,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<target>Törölt ismerős.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1668,6 +1702,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<target>Az ismerős törlésre fog kerülni - ez a művelet nem vonható vissza!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
@@ -1685,12 +1720,9 @@ Ez az egyszer használatos hivatkozása!</target>
<target>Folytatás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Beszélgetés törölve!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
@@ -1964,7 +1996,8 @@ Ez az egyszer használatos hivatkozása!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Törlés</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2033,6 +2066,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Ismerős törlése?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2142,6 +2176,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<target>Legfeljebb 20 üzenet törlése egyszerre.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
@@ -2151,6 +2186,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<target>Törlés értesítés nélkül</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
@@ -2168,10 +2204,6 @@ Ez az egyszer használatos hivatkozása!</target>
<target>Törölve ekkor: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Törlési hibák</target>
@@ -2244,6 +2276,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<target>Fejlesztői beállítások</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
@@ -2928,7 +2961,7 @@ Ez az egyszer használatos hivatkozása!</target>
</trans-unit>
<trans-unit id="Error synchronizing connection" xml:space="preserve">
<source>Error synchronizing connection</source>
<target>Hiba a kapcsolat szinkronizálása során</target>
<target>Hiba a kapcsolat szinkronizálása közben</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error updating group link" xml:space="preserve">
@@ -2992,10 +3025,6 @@ Ez az egyszer használatos hivatkozása!</target>
<target>Akkor is, ha le van tiltva a beszélgetésben.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Kilépés mentés nélkül</target>
@@ -3054,7 +3083,7 @@ Ez az egyszer használatos hivatkozása!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Kedvenc</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3512,7 +3541,7 @@ Hiba: %2$@</target>
</trans-unit>
<trans-unit id="If you can't meet in person, show QR code in a video call, or share the link." xml:space="preserve">
<source>If you can't meet in person, show QR code in a video call, or share the link.</source>
<target>Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás során, vagy ossza meg a hivatkozást.</target>
<target>Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás közben, vagy ossza meg a hivatkozást.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="If you enter this passcode when opening the app, all app data will be irreversibly removed!" xml:space="preserve">
@@ -3810,6 +3839,7 @@ Hiba: %2$@</target>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<target>Védi az IP-címét és a kapcsolatokat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
@@ -3830,7 +3860,7 @@ Hiba: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Csatlakozás</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3876,6 +3906,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<target>Beszélgetés megtartása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
@@ -3921,7 +3952,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Elhagyás</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4278,10 +4309,6 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<target>Moderálás</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderálva lett ekkor:</target>
@@ -4314,8 +4341,8 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
</trans-unit>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Elnémítás</target>
<note>No comment provided by engineer.</note>
<target>Némítás</target>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4325,7 +4352,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Név</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4357,10 +4384,6 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<target>Hálózat állapota</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Új jelkód</target>
@@ -4371,6 +4394,11 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<target>Új beszélgetés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<target>Új csevegési élmény 🎉</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Új kapcsolattartási kérelem</target>
@@ -4401,6 +4429,11 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<target>Újdonságok a(z) %@ verzióban</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<target>Új médiabeállítások</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Új tag szerepköre</target>
@@ -4540,10 +4573,6 @@ Ez az ön hivatkozása a(z) %@ csoporthoz!</target>
<target>Régi adatbázis archívum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Egyszer használatos meghívó hivatkozás</target>
@@ -4575,6 +4604,7 @@ VPN engedélyezése szükséges.</target>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<target>Csak a beszélgetés törlése</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
@@ -4812,8 +4842,14 @@ VPN engedélyezése szükséges.</target>
<target>Kép a képben hívások</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<target>Lejátszás a csevegési listából.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Kérje meg az ismerősét, hogy engedélyezze a hívásokat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
@@ -5069,7 +5105,7 @@ Hiba: %@</target>
<source>Protect your IP address from the messaging relays chosen by your contacts.
Enable in *Network &amp; servers* settings.</source>
<target>Védje IP-címét az ismerősei által kiválasztott üzenetküldő átjátszókkal szemben.
Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.</target>
Engedélyezze a Beállítások / Hálózat és kiszolgálók menüben.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Protect your chat profiles with a password!" xml:space="preserve">
@@ -5117,8 +5153,9 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
<target>Értékelje az alkalmazást</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<target>Könnyen elérhető eszköztár</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5129,7 +5166,7 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Olvasd el</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5289,7 +5326,8 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Elutasítás</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5391,6 +5429,11 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
<target>Alaphelyzetbe állítás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<target>Tippek visszaállítása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Minden statisztika visszaállítása</target>
@@ -5758,6 +5801,7 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<target>Üzenet küldése a hívások engedélyezéséhez.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
@@ -5927,7 +5971,7 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
</trans-unit>
<trans-unit id="Server test failed!" xml:space="preserve">
<source>Server test failed!</source>
<target>Sikertelen kiszolgáló-teszt!</target>
<target>Sikertelen kiszolgáló teszt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Server type" xml:space="preserve">
@@ -6045,6 +6089,11 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
<target>Megosztja a címet az ismerőseivel?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<target>Megosztás más alkalmazásokból.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Hivatkozás megosztása</target>
@@ -6222,12 +6271,12 @@ Engedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.<
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import - you may see Chat console for more details." xml:space="preserve">
<source>Some non-fatal errors occurred during import - you may see Chat console for more details.</source>
<target>Néhány nem végzetes hiba történt az importálás során további részletekért a csevegési konzolban olvashat.</target>
<target>Néhány nem végzetes hiba történt az importálás közben további részletekért a csevegési konzolban olvashat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Some non-fatal errors occurred during import:" xml:space="preserve">
<source>Some non-fatal errors occurred during import:</source>
<target>Néhány nem végzetes hiba történt az importálás során:</target>
<target>Néhány nem végzetes hiba történt az importálás közben:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Somebody" xml:space="preserve">
@@ -6514,7 +6563,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
</trans-unit>
<trans-unit id="The created archive is available via app Settings / Database / Old database archive." xml:space="preserve">
<source>The created archive is available via app Settings / Database / Old database archive.</source>
<target>A létrehozott archívum a Beállítások / Adatbázis / Régi adatbázis-archívum menüpontban érhető el.</target>
<target>A létrehozott archívum a Beállítások / Adatbázis / Régi adatbázis-archívum menüben érhető el.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The encryption is working and the new encryption agreement is not required. It may result in connection errors!" xml:space="preserve">
@@ -6554,7 +6603,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő.</target>
</trans-unit>
<trans-unit id="The old database was not removed during the migration, it can be deleted." xml:space="preserve">
<source>The old database was not removed during the migration, it can be deleted.</source>
<target>A régi adatbázis nem került eltávolításra az átköltöztetés során, így törölhető.</target>
<target>A régi adatbázis nem került eltávolításra az átköltöztetés közben, így törölhető.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="The profile is only shared with your contacts." xml:space="preserve">
@@ -6729,11 +6778,21 @@ A funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beáll
<target>A végpontok közötti titkosítás ellenőrzéséhez hasonlítsa össze (vagy olvassa be a QR-kódot) az ismerőse eszközén lévő kóddal.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<target>Csevegőlista átváltása:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Inkognitó mód kapcsolódáskor.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<target>Eszköztár átlátszatlansága</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Összesen</target>
@@ -6812,7 +6871,7 @@ A funkció bekapcsolása előtt a rendszer felszólítja a képernyőzár beáll
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Nem kedvelt.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6889,12 +6948,12 @@ A kapcsolódáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsol
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Némítás feloldása</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Olvasatlan</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7028,6 +7087,7 @@ A kapcsolódáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsol
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<target>Használja az alkalmazást egy kézzel.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
@@ -7387,6 +7447,11 @@ Csatlakozási kérés megismétlése?</target>
<target>Hívásokat fogadhat a lezárási képernyőről, eszköz- és alkalmazáshitelesítés nélkül.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<target>Ezt a „Megjelenés” menüben módosíthatja.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Létrehozás később</target>
@@ -7399,7 +7464,7 @@ Csatlakozási kérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can enable them later via app Privacy &amp; Security settings." xml:space="preserve">
<source>You can enable them later via app Privacy &amp; Security settings.</source>
<target>Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüpontban.</target>
<target>Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüben.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
@@ -7424,6 +7489,7 @@ Csatlakozási kérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<target>Az „Archivált ismerősökből” továbbra is küldhet üzeneteket neki: %@.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -7448,11 +7514,12 @@ Csatlakozási kérés megismétlése?</target>
</trans-unit>
<trans-unit id="You can start chat via app Settings / Database or by restarting the app" xml:space="preserve">
<source>You can start chat via app Settings / Database or by restarting the app</source>
<target>A csevegést az alkalmazás Beállítások / Adatbázis menü segítségével vagy az alkalmazás újraindításával indíthatja el</target>
<target>A csevegést az alkalmazás Beállítások / Adatbázis menüben vagy az alkalmazás újraindításával indíthatja el</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<target>A(z) %@ nevű ismerősével folytatott beszélgetéseit továbbra is megtekintheti a csevegések listájában.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
@@ -7534,6 +7601,7 @@ Kapcsolódási kérés megismétlése?</target>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target>Engedélyeznie kell a hívásokat az ismerőse számára, hogy fel tudják hívni egymást.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
@@ -7666,10 +7734,6 @@ Kapcsolódási kérés megismétlése?</target>
<target>Az ismerősei továbbra is kapcsolódva maradnak.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>A jelenlegi csevegési adatbázis TÖRLŐDNI FOG, és a HELYÉRE az importált adatbázis kerül.</target>
@@ -7829,12 +7893,12 @@ A SimpleX kiszolgálók nem látjhatják profilját.</target>
</trans-unit>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>blokkolva</target>
<target>letiltva</target>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
<target>letiltotta őt: %@</target>
<target>letiltotta %@-t</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="blocked by admin" xml:space="preserve">
@@ -7849,6 +7913,7 @@ A SimpleX kiszolgálók nem látjhatják profilját.</target>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<target>hívás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
@@ -8223,6 +8288,7 @@ A SimpleX kiszolgálók nem látjhatják profilját.</target>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<target>meghívás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
@@ -8282,6 +8348,7 @@ A SimpleX kiszolgálók nem látjhatják profilját.</target>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<target>üzenet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
@@ -8316,6 +8383,7 @@ A SimpleX kiszolgálók nem látjhatják profilját.</target>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<target>némítás</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
@@ -8452,6 +8520,7 @@ A SimpleX kiszolgálók nem látjhatják profilját.</target>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<target>keresés</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
@@ -8520,7 +8589,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="unblocked %@" xml:space="preserve">
<source>unblocked %@</source>
<target>%@ feloldva</target>
<target>feloldotta %@ letiltását</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="unknown" xml:space="preserve">
@@ -8540,6 +8609,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<target>némítás feloldása</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
@@ -8589,6 +8659,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<target>videó</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
@@ -8643,7 +8714,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="you blocked %@" xml:space="preserve">
<source>you blocked %@</source>
<target>blokkolta őt: %@</target>
<target>ön letiltotta %@-t</target>
<note>snd group event chat item</note>
</trans-unit>
<trans-unit id="you changed address" xml:space="preserve">
@@ -8688,7 +8759,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="you unblocked %@" xml:space="preserve">
<source>you unblocked %@</source>
<target>feloldotta %@ blokkolását</target>
<target>ön feloldotta %@ letiltását</target>
<note>snd group event chat item</note>
</trans-unit>
<trans-unit id="you: " xml:space="preserve">
@@ -8971,7 +9042,7 @@ utoljára fogadott üzenet: %2$@</target>
</trans-unit>
<trans-unit id="You can allow sharing in Privacy &amp; Security / SimpleX Lock settings." xml:space="preserve">
<source>You can allow sharing in Privacy &amp; Security / SimpleX Lock settings.</source>
<target>A megosztást az Adatvédelem és biztonság / SimpleX zár menüpontban engedélyezheti.</target>
<target>A megosztást az Adatvédelem és biztonság / SimpleX zár menüben engedélyezheti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
</body>
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -566,7 +561,8 @@
<source>Accept</source>
<target>Accetta</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -581,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Accetta in incognito</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -755,6 +752,7 @@
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Consentire le chiamate?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
@@ -947,8 +945,14 @@
<target>Archivia e carica</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<target>Archivia contatti per chattare più tardi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Contatti archiviati</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
@@ -1051,6 +1055,11 @@
<target>Messaggi migliorati</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<target>Rete migliorata</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Nero</target>
@@ -1091,6 +1100,11 @@
<target>Bloccato dall'amministratore</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<target>Sfoca per una privacy maggiore.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Sfocatura file multimediali</target>
@@ -1143,6 +1157,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Chiamate proibite!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1152,10 +1167,12 @@
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<target>Impossibile chiamare il contatto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<target>Impossibile chiamare il membro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
@@ -1170,6 +1187,7 @@
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<target>Impossibile inviare un messaggio al membro</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
@@ -1308,6 +1326,11 @@
<target>La chat è ferma. Se hai già usato questo database su un altro dispositivo, dovresti trasferirlo prima di avviare la chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<target>Elenco delle chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat migrata!</target>
@@ -1371,7 +1394,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Svuota</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1393,6 +1416,11 @@
<target>Annulla la verifica</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<target>Colora le chat con i nuovi temi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Modalità di colore</target>
@@ -1435,6 +1463,7 @@
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<target>Confermare l'eliminazione del contatto?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
@@ -1492,8 +1521,9 @@
<target>Connetti al desktop</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<target>Connettiti più velocemente ai tuoi amici.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1572,6 +1602,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<target>In collegamento con il contatto, attendi o controlla più tardi!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
@@ -1586,6 +1617,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<target>Stato di connessione e server.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
@@ -1640,6 +1672,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<target>Contatto eliminato!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
@@ -1654,6 +1687,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<target>Il contatto è stato eliminato.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1668,6 +1702,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<target>Il contatto verrà eliminato - non è reversibile!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
@@ -1685,12 +1720,9 @@ Questo è il tuo link una tantum!</target>
<target>Continua</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Conversazione eliminata!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
@@ -1964,7 +1996,8 @@ Questo è il tuo link una tantum!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Elimina</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2033,6 +2066,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Eliminare il contatto?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2142,6 +2176,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<target>Elimina fino a 20 messaggi contemporaneamente.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
@@ -2151,6 +2186,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<target>Elimina senza avvisare</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
@@ -2168,10 +2204,6 @@ Questo è il tuo link una tantum!</target>
<target>Eliminato il: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Errori di eliminazione</target>
@@ -2244,6 +2276,7 @@ Questo è il tuo link una tantum!</target>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<target>Opzioni sviluppatore</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
@@ -2992,10 +3025,6 @@ Questo è il tuo link una tantum!</target>
<target>Anche quando disattivato nella conversazione.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Esci senza salvare</target>
@@ -3054,7 +3083,7 @@ Questo è il tuo link una tantum!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Preferito</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3810,6 +3839,7 @@ Errore: %2$@</target>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<target>Protegge il tuo indirizzo IP e le connessioni.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
@@ -3830,7 +3860,7 @@ Errore: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Entra</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3876,6 +3906,7 @@ Questo è il tuo link per il gruppo %@!</target>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<target>Tieni la conversazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
@@ -3921,7 +3952,7 @@ Questo è il tuo link per il gruppo %@!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Esci</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4278,10 +4309,6 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Modera</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderato il</target>
@@ -4315,7 +4342,7 @@ Questo è il tuo link per il gruppo %@!</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Silenzia</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4325,7 +4352,7 @@ Questo è il tuo link per il gruppo %@!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Nome</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4357,10 +4384,6 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Stato della rete</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nuovo codice di accesso</target>
@@ -4371,6 +4394,11 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Nuova chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<target>Una nuova esperienza di chat 🎉</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Nuova richiesta di contatto</target>
@@ -4401,6 +4429,11 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Novità nella %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<target>Nuove opzioni multimediali</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Nuovo ruolo del membro</target>
@@ -4540,10 +4573,6 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Vecchio archivio del database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Link di invito una tantum</target>
@@ -4575,6 +4604,7 @@ Richiede l'attivazione della VPN.</target>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<target>Elimina solo la conversazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
@@ -4812,8 +4842,14 @@ Richiede l'attivazione della VPN.</target>
<target>Chiamate picture-in-picture</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<target>Riproduci dall'elenco delle chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Chiedi al contatto di attivare le chiamate.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
@@ -5117,8 +5153,9 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Valuta l'app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<target>Barra degli strumenti di chat accessibile</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5129,7 +5166,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Leggi</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5289,7 +5326,8 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Rifiuta</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5391,6 +5429,11 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Ripristina</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<target>Ripristina tutti i suggerimenti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Azzera tutte le statistiche</target>
@@ -5758,6 +5801,7 @@ Attivalo nelle impostazioni *Rete e server*.</target>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<target>Invia un messaggio per attivare le chiamate.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
@@ -6045,6 +6089,11 @@ Attivalo nelle impostazioni *Rete e server*.</target>
<target>Condividere l'indirizzo con i contatti?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<target>Condividi da altre app.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Condividi link</target>
@@ -6729,11 +6778,21 @@ Ti verrà chiesto di completare l'autenticazione prima di attivare questa funzio
<target>Per verificare la crittografia end-to-end con il tuo contatto, confrontate (o scansionate) il codice sui vostri dispositivi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<target>Cambia l'elenco delle chat:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Attiva/disattiva l'incognito quando ti colleghi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<target>Opacità barra degli strumenti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Totale</target>
@@ -6812,7 +6871,7 @@ Ti verrà chiesto di completare l'autenticazione prima di attivare questa funzio
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Non pref.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6889,12 +6948,12 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Riattiva notifiche</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Non letto</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7028,6 +7087,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<target>Usa l'app con una mano sola.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
@@ -7387,6 +7447,11 @@ Ripetere la richiesta di ingresso?</target>
<target>Puoi accettare chiamate dalla schermata di blocco, senza l'autenticazione del dispositivo e dell'app.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<target>Puoi cambiarlo nelle impostazioni dell'aspetto.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Puoi crearlo più tardi</target>
@@ -7424,6 +7489,7 @@ Ripetere la richiesta di ingresso?</target>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<target>Puoi inviare messaggi a %@ dai contatti archiviati.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -7453,6 +7519,7 @@ Ripetere la richiesta di ingresso?</target>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<target>Puoi ancora vedere la conversazione con %@ nell'elenco delle chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
@@ -7534,6 +7601,7 @@ Ripetere la richiesta di connessione?</target>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target>Devi consentire le chiamate al tuo contatto per poterlo chiamare.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
@@ -7666,10 +7734,6 @@ Ripetere la richiesta di connessione?</target>
<target>I tuoi contatti resteranno connessi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Il tuo attuale database della chat verrà ELIMINATO e SOSTITUITO con quello importato.</target>
@@ -7849,6 +7913,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<target>chiama</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
@@ -8223,6 +8288,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<target>invita</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
@@ -8282,6 +8348,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<target>messaggio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
@@ -8316,6 +8383,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<target>silenzia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
@@ -8452,6 +8520,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<target>cerca</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
@@ -8540,6 +8609,7 @@ ultimo msg ricevuto: %2$@</target>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<target>riattiva notifiche</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
@@ -8589,6 +8659,7 @@ ultimo msg ricevuto: %2$@</target>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<target>video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -559,7 +554,8 @@
<source>Accept</source>
<target>承諾</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -574,7 +570,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>シークレットモードで承諾</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -921,6 +918,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1021,6 +1022,10 @@
<target>より良いメッセージ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1053,6 +1058,10 @@
<source>Blocked by admin</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1261,6 +1270,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
@@ -1318,7 +1331,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>消す</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1339,6 +1352,10 @@
<target>検証を消す</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1429,8 +1446,8 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1605,10 +1622,6 @@ This is your own one-time link!</source>
<target>続ける</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1870,7 +1883,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>削除</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2069,10 +2083,6 @@ This is your own one-time link!</source>
<target>削除完了: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2845,10 +2855,6 @@ This is your own one-time link!</source>
<target>会話中に無効になっている場合でも。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>保存せずに閉じる</target>
@@ -2903,7 +2909,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>お気に入り</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3635,7 +3641,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>参加</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3718,7 +3724,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>脱退</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4045,10 +4051,6 @@ This is your link for group %@!</source>
<target>モデレート</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>モデレーターによって介入済み</target>
@@ -4081,7 +4083,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>ミュート</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4091,7 +4093,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>名前</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4120,10 +4122,6 @@ This is your link for group %@!</source>
<target>ネットワーク状況</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>新しいパスコード</target>
@@ -4133,6 +4131,10 @@ This is your link for group %@!</source>
<source>New chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>新しい繋がりのリクエスト</target>
@@ -4163,6 +4165,10 @@ This is your link for group %@!</source>
<target>%@ の新機能</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>新しいメンバーの役割</target>
@@ -4296,10 +4302,6 @@ This is your link for group %@!</source>
<target>過去のデータベースアーカイブ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>使い捨ての招待リンク</target>
@@ -4552,6 +4554,10 @@ VPN を有効にする必要があります。</target>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -4834,8 +4840,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>アプリを評価</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -4846,7 +4852,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>読む</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -4993,7 +4999,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>拒否</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5089,6 +5096,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>戻す</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5693,6 +5704,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>アドレスを連絡先と共有しますか?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>リンクを送る</target>
@@ -6332,10 +6347,18 @@ You will be prompted to complete authentication before this feature is enabled.<
<target>エンドツーエンド暗号化を確認するには、ご自分の端末と連絡先の端末のコードを比べます (スキャンします)。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6406,7 +6429,7 @@ You will be prompted to complete authentication before this feature is enabled.<
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>お気に入りを取り消す。</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6480,12 +6503,12 @@ To connect, please ask your contact to create another connection link and check
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>ミュート解除</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>未読</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -6931,6 +6954,10 @@ Repeat join request?</source>
<target>デバイスやアプリの認証を行わずに、ロック画面から通話を受けることができます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>後からでも作成できます</target>
@@ -7200,10 +7227,6 @@ Repeat connection request?</source>
<target>連絡先は接続されたままになります。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>現在のチャット データベースは削除され、インポートされたデータベースに置き換えられます。</target>
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -566,7 +561,8 @@
<source>Accept</source>
<target>Accepteer</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -581,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Accepteer incognito</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -755,6 +752,7 @@
</trans-unit>
<trans-unit id="Allow calls?" xml:space="preserve">
<source>Allow calls?</source>
<target>Oproepen toestaan?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
@@ -947,8 +945,14 @@
<target>Archiveren en uploaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<target>Archiveer contacten om later te chatten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<target>Gearchiveerde contacten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
@@ -1051,6 +1055,11 @@
<target>Betere berichten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<target>Beter netwerk</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Zwart</target>
@@ -1091,6 +1100,11 @@
<target>Geblokkeerd door beheerder</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<target>Vervagen voor betere privacy.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<target>Vervaag media</target>
@@ -1143,6 +1157,7 @@
</trans-unit>
<trans-unit id="Calls prohibited!" xml:space="preserve">
<source>Calls prohibited!</source>
<target>Bellen verboden!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Camera not available" xml:space="preserve">
@@ -1152,10 +1167,12 @@
</trans-unit>
<trans-unit id="Can't call contact" xml:space="preserve">
<source>Can't call contact</source>
<target>Kan contact niet bellen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't call member" xml:space="preserve">
<source>Can't call member</source>
<target>Kan lid niet bellen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Can't invite contact!" xml:space="preserve">
@@ -1170,6 +1187,7 @@
</trans-unit>
<trans-unit id="Can't message member" xml:space="preserve">
<source>Can't message member</source>
<target>Kan geen bericht sturen naar lid</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
@@ -1308,6 +1326,11 @@
<target>Chat is gestopt. Als je deze database al op een ander apparaat hebt gebruikt, moet je deze terugzetten voordat je met chatten begint.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<target>Chatlijst</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat gemigreerd!</target>
@@ -1371,7 +1394,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Wissen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1393,6 +1416,11 @@
<target>Verwijderd verificatie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<target>Kleurchats met de nieuwe thema's.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Kleur mode</target>
@@ -1435,6 +1463,7 @@
</trans-unit>
<trans-unit id="Confirm contact deletion?" xml:space="preserve">
<source>Confirm contact deletion?</source>
<target>Contact verwijderen bevestigen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm database upgrades" xml:space="preserve">
@@ -1492,8 +1521,9 @@
<target>Verbinden met desktop</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<target>Maak sneller verbinding met je vrienden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1572,6 +1602,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Connecting to contact, please wait or check later!" xml:space="preserve">
<source>Connecting to contact, please wait or check later!</source>
<target>Er wordt verbinding gemaakt met het contact. Even geduld of controleer het later!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connecting to desktop" xml:space="preserve">
@@ -1586,6 +1617,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Connection and servers status." xml:space="preserve">
<source>Connection and servers status.</source>
<target>Verbindings- en serverstatus.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connection error" xml:space="preserve">
@@ -1640,6 +1672,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Contact deleted!" xml:space="preserve">
<source>Contact deleted!</source>
<target>Contact verwijderd!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact hidden:" xml:space="preserve">
@@ -1654,6 +1687,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Contact is deleted." xml:space="preserve">
<source>Contact is deleted.</source>
<target>Contact is verwijderd.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contact name" xml:space="preserve">
@@ -1668,6 +1702,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Contact will be deleted - this cannot be undone!" xml:space="preserve">
<source>Contact will be deleted - this cannot be undone!</source>
<target>Het contact wordt verwijderd. Dit kan niet ongedaan worden gemaakt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Contacts" xml:space="preserve">
@@ -1685,12 +1720,9 @@ Dit is uw eigen eenmalige link!</target>
<target>Doorgaan</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<target>Gesprek verwijderd!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Copy" xml:space="preserve">
@@ -1964,7 +1996,8 @@ Dit is uw eigen eenmalige link!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Verwijderen</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2033,6 +2066,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete contact?" xml:space="preserve">
<source>Delete contact?</source>
<target>Verwijder contact?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database" xml:space="preserve">
@@ -2142,6 +2176,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete up to 20 messages at once." xml:space="preserve">
<source>Delete up to 20 messages at once.</source>
<target>Verwijder maximaal 20 berichten tegelijk.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete user profile?" xml:space="preserve">
@@ -2151,6 +2186,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Delete without notification" xml:space="preserve">
<source>Delete without notification</source>
<target>Verwijderen zonder melding</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deleted" xml:space="preserve">
@@ -2168,10 +2204,6 @@ Dit is uw eigen eenmalige link!</target>
<target>Verwijderd om: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Verwijderingsfouten</target>
@@ -2244,6 +2276,7 @@ Dit is uw eigen eenmalige link!</target>
</trans-unit>
<trans-unit id="Developer options" xml:space="preserve">
<source>Developer options</source>
<target>Ontwikkelaars opties</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Developer tools" xml:space="preserve">
@@ -2992,10 +3025,6 @@ Dit is uw eigen eenmalige link!</target>
<target>Zelfs wanneer uitgeschakeld in het gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Afsluiten zonder opslaan</target>
@@ -3054,7 +3083,7 @@ Dit is uw eigen eenmalige link!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Favoriet</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3810,6 +3839,7 @@ Fout: %2$@</target>
</trans-unit>
<trans-unit id="It protects your IP address and connections." xml:space="preserve">
<source>It protects your IP address and connections.</source>
<target>Het beschermt uw IP-adres en verbindingen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="It seems like you are already connected via this link. If it is not the case, there was an error (%@)." xml:space="preserve">
@@ -3830,7 +3860,7 @@ Fout: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Word lid van</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3876,6 +3906,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Keep conversation" xml:space="preserve">
<source>Keep conversation</source>
<target>Blijf in gesprek</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Keep the app open to use it from desktop" xml:space="preserve">
@@ -3921,7 +3952,7 @@ Dit is jouw link voor groep %@!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Verlaten</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4260,7 +4291,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." xml:space="preserve">
<source>Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat).</source>
<target>Migratie mislukt. Tik hieronder op **Overslaan** om de huidige database te blijven gebruiken. Meld het probleem aan de app-ontwikkelaars via chat of e-mail [chat@simplex.chat](mailto:chat@simplex.chat).</target>
<target>Migratie mislukt. Tik hier onder op **Overslaan** om de huidige database te blijven gebruiken. Meld het probleem aan de app-ontwikkelaars via chat of e-mail [chat@simplex.chat](mailto:chat@simplex.chat).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration is completed" xml:space="preserve">
@@ -4278,10 +4309,6 @@ Dit is jouw link voor groep %@!</target>
<target>Modereren</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Gemodereerd om</target>
@@ -4315,7 +4342,7 @@ Dit is jouw link voor groep %@!</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Dempen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4325,7 +4352,7 @@ Dit is jouw link voor groep %@!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Naam</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4357,10 +4384,6 @@ Dit is jouw link voor groep %@!</target>
<target>Netwerk status</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nieuwe toegangscode</target>
@@ -4371,6 +4394,11 @@ Dit is jouw link voor groep %@!</target>
<target>Nieuw gesprek</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<target>Nieuwe chatervaring 🎉</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Nieuw contactverzoek</target>
@@ -4401,6 +4429,11 @@ Dit is jouw link voor groep %@!</target>
<target>Nieuw in %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<target>Nieuwe media-opties</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Nieuwe leden rol</target>
@@ -4540,10 +4573,6 @@ Dit is jouw link voor groep %@!</target>
<target>Oud database archief</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Eenmalige uitnodiging link</target>
@@ -4575,6 +4604,7 @@ Vereist het inschakelen van VPN.</target>
</trans-unit>
<trans-unit id="Only delete conversation" xml:space="preserve">
<source>Only delete conversation</source>
<target>Alleen conversatie verwijderen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Only group owners can change group preferences." xml:space="preserve">
@@ -4812,8 +4842,14 @@ Vereist het inschakelen van VPN.</target>
<target>Beeld-in-beeld oproepen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<target>Afspelen via de gesprekken lijst.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<target>Vraag uw contactpersoon om oproepen in te schakelen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
@@ -5117,8 +5153,9 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Beoordeel de app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<target>Toegankelijke chatwerkbalk</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5129,7 +5166,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Lees</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5289,7 +5326,8 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Afwijzen</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5391,6 +5429,11 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Resetten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<target>Alle hints resetten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Reset alle statistieken</target>
@@ -5758,6 +5801,7 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
</trans-unit>
<trans-unit id="Send message to enable calls." xml:space="preserve">
<source>Send message to enable calls.</source>
<target>Stuur een bericht om oproepen mogelijk te maken.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Send messages directly when IP address is protected and your or destination server does not support private routing." xml:space="preserve">
@@ -6045,6 +6089,11 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
<target>Adres delen met contacten?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<target>Delen vanuit andere apps.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Deel link</target>
@@ -6402,32 +6451,32 @@ Schakel dit in in *Netwerk en servers*-instellingen.</target>
</trans-unit>
<trans-unit id="Tap to Connect" xml:space="preserve">
<source>Tap to Connect</source>
<target>Tik om verbinding te maken</target>
<target>Tik hier om verbinding te maken</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to activate profile." xml:space="preserve">
<source>Tap to activate profile.</source>
<target>Tik om profiel te activeren.</target>
<target>Tik hier om profiel te activeren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to join" xml:space="preserve">
<source>Tap to join</source>
<target>Tik om lid te worden</target>
<target>Tik hier om lid te worden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to join incognito" xml:space="preserve">
<source>Tap to join incognito</source>
<target>Tik om incognito lid te worden</target>
<target>Tik hier om incognito lid te worden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to paste link" xml:space="preserve">
<source>Tap to paste link</source>
<target>Tik om de link te plakken</target>
<target>Tik hier om de link te plakken</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Tap to scan" xml:space="preserve">
<source>Tap to scan</source>
<target>Tik om te scannen</target>
<target>Tik hier om te scannen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Temporary file error" xml:space="preserve">
@@ -6729,11 +6778,21 @@ U wordt gevraagd de authenticatie te voltooien voordat deze functie wordt ingesc
<target>Vergelijk (of scan) de code op uw apparaten om end-to-end-codering met uw contact te verifiëren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<target>Chatlijst wisselen:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Schakel incognito in tijdens het verbinden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<target>De transparantie van de werkbalk</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Totaal</target>
@@ -6812,7 +6871,7 @@ U wordt gevraagd de authenticatie te voltooien voordat deze functie wordt ingesc
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Niet fav.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6889,12 +6948,12 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Dempen opheffen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Ongelezen</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7028,6 +7087,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
</trans-unit>
<trans-unit id="Use the app with one hand." xml:space="preserve">
<source>Use the app with one hand.</source>
<target>Gebruik de app met één hand.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
@@ -7387,6 +7447,11 @@ Deelnameverzoek herhalen?</target>
<target>U kunt oproepen van het vergrendelingsscherm accepteren, zonder apparaat- en app-verificatie.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<target>U kunt dit wijzigen in de instellingen onder uiterlijk.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>U kan het later maken</target>
@@ -7424,6 +7489,7 @@ Deelnameverzoek herhalen?</target>
</trans-unit>
<trans-unit id="You can send messages to %@ from Archived contacts." xml:space="preserve">
<source>You can send messages to %@ from Archived contacts.</source>
<target>U kunt berichten naar %@ sturen vanuit gearchiveerde contacten.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can set lock screen notification preview via settings." xml:space="preserve">
@@ -7453,6 +7519,7 @@ Deelnameverzoek herhalen?</target>
</trans-unit>
<trans-unit id="You can still view conversation with %@ in the list of chats." xml:space="preserve">
<source>You can still view conversation with %@ in the list of chats.</source>
<target>Je kunt het gesprek met %@ nog steeds bekijken in de lijst met chats.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can turn on SimpleX Lock via Settings." xml:space="preserve">
@@ -7534,6 +7601,7 @@ Verbindingsverzoek herhalen?</target>
</trans-unit>
<trans-unit id="You need to allow your contact to call to be able to call them." xml:space="preserve">
<source>You need to allow your contact to call to be able to call them.</source>
<target>U moet uw contactpersoon toestemming geven om te bellen, zodat hij/zij je kan bellen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You need to allow your contact to send voice messages to be able to send them." xml:space="preserve">
@@ -7666,10 +7734,6 @@ Verbindingsverzoek herhalen?</target>
<target>Uw contacten blijven verbonden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Uw huidige chat database wordt VERWIJDERD en VERVANGEN door de geïmporteerde.</target>
@@ -7849,6 +7913,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="call" xml:space="preserve">
<source>call</source>
<target>bellen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="call error" xml:space="preserve">
@@ -8223,6 +8288,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="invite" xml:space="preserve">
<source>invite</source>
<target>uitnodiging</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="invited" xml:space="preserve">
@@ -8282,6 +8348,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="message" xml:space="preserve">
<source>message</source>
<target>bericht</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="message received" xml:space="preserve">
@@ -8316,6 +8383,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="mute" xml:space="preserve">
<source>mute</source>
<target>dempen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="never" xml:space="preserve">
@@ -8452,6 +8520,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="search" xml:space="preserve">
<source>search</source>
<target>zoekopdracht</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="sec" xml:space="preserve">
@@ -8540,6 +8609,7 @@ laatst ontvangen bericht: %2$@</target>
</trans-unit>
<trans-unit id="unmute" xml:space="preserve">
<source>unmute</source>
<target>dempen opheffen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="unprotected" xml:space="preserve">
@@ -8589,6 +8659,7 @@ laatst ontvangen bericht: %2$@</target>
</trans-unit>
<trans-unit id="video" xml:space="preserve">
<source>video</source>
<target>video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="video call (not e2e encrypted)" xml:space="preserve">
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -566,7 +561,8 @@
<source>Accept</source>
<target>Akceptuj</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -581,7 +577,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Akceptuj incognito</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -946,6 +943,10 @@
<target>Archiwizuj i prześlij</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1050,6 +1051,10 @@
<target>Lepsze wiadomości</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<target>Czarny</target>
@@ -1090,6 +1095,10 @@
<target>Zablokowany przez admina</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1305,6 +1314,10 @@
<target>Czat został zatrzymany. Jeśli korzystałeś już z tej bazy danych na innym urządzeniu, powinieneś przenieść ją z powrotem przed rozpoczęciem czatu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Czat zmigrowany!</target>
@@ -1368,7 +1381,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Wyczyść</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1390,6 +1403,10 @@
<target>Wyczyść weryfikację</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<target>Tryb koloru</target>
@@ -1489,8 +1506,8 @@
<target>Połącz do komputera</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1681,10 +1698,6 @@ To jest twój jednorazowy link!</target>
<target>Kontynuuj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1960,7 +1973,8 @@ To jest twój jednorazowy link!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Usuń</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2163,10 +2177,6 @@ To jest twój jednorazowy link!</target>
<target>Usunięto o: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<target>Błędy usuwania</target>
@@ -2982,10 +2992,6 @@ To jest twój jednorazowy link!</target>
<target>Nawet po wyłączeniu w rozmowie.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Wyjdź bez zapisywania</target>
@@ -3044,7 +3050,7 @@ To jest twój jednorazowy link!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Ulubione</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3817,7 +3823,7 @@ Błąd: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Dołącz</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3908,7 +3914,7 @@ To jest twój link do grupy %@!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Opuść</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4262,10 +4268,6 @@ To jest twój link do grupy %@!</target>
<target>Moderowany</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Moderowany o</target>
@@ -4299,7 +4301,7 @@ To jest twój link do grupy %@!</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Wycisz</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4309,7 +4311,7 @@ To jest twój link do grupy %@!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Nazwa</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4341,10 +4343,6 @@ To jest twój link do grupy %@!</target>
<target>Status sieci</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Nowy Pin</target>
@@ -4355,6 +4353,10 @@ To jest twój link do grupy %@!</target>
<target>Nowy czat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Nowa prośba o kontakt</target>
@@ -4385,6 +4387,10 @@ To jest twój link do grupy %@!</target>
<target>Nowość w %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Nowa rola członka</target>
@@ -4523,10 +4529,6 @@ To jest twój link do grupy %@!</target>
<target>Stare archiwum bazy danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Jednorazowy link zaproszenia</target>
@@ -4795,6 +4797,10 @@ Wymaga włączenia VPN.</target>
<target>Połączenia obraz-w-obrazie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -5100,8 +5106,8 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Oceń aplikację</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5112,7 +5118,7 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Czytaj</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5272,7 +5278,8 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Odrzuć</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5374,6 +5381,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Resetuj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<target>Resetuj wszystkie statystyki</target>
@@ -6026,6 +6037,10 @@ Włącz w ustawianiach *Sieć i serwery* .</target>
<target>Udostępnić adres kontaktom?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Udostępnij link</target>
@@ -6702,11 +6717,19 @@ Przed włączeniem tej funkcji zostanie wyświetlony monit uwierzytelniania.</ta
<target>Aby zweryfikować szyfrowanie end-to-end z Twoim kontaktem porównaj (lub zeskanuj) kod na waszych urządzeniach.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Przełącz incognito przy połączeniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<target>Łącznie</target>
@@ -6785,7 +6808,7 @@ Przed włączeniem tej funkcji zostanie wyświetlony monit uwierzytelniania.</ta
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Nie ulub.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6862,12 +6885,12 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Wyłącz wyciszenie</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Nieprzeczytane</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7359,6 +7382,10 @@ Powtórzyć prośbę dołączenia?</target>
<target>Możesz przyjmować połączenia z ekranu blokady, bez uwierzytelniania urządzenia i aplikacji.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Możesz go utworzyć później</target>
@@ -7636,10 +7663,6 @@ Powtórzyć prośbę połączenia?</target>
<target>Twoje kontakty pozostaną połączone.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Twoja obecna baza danych czatu zostanie usunięta i zastąpiona zaimportowaną.</target>
File diff suppressed because it is too large Load Diff
@@ -370,11 +370,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -535,7 +530,8 @@
<source>Accept</source>
<target>รับ</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -549,7 +545,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>ยอมรับโหมดไม่ระบุตัวตน</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -890,6 +887,10 @@
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -990,6 +991,10 @@
<target>ข้อความที่ดีขึ้น</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1022,6 +1027,10 @@
<source>Blocked by admin</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1229,6 +1238,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
@@ -1286,7 +1299,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>ลบ</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1307,6 +1320,10 @@
<target>ล้างการยืนยัน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1396,8 +1413,8 @@
<source>Connect to desktop</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1571,10 +1588,6 @@ This is your own one-time link!</source>
<target>ดำเนินการต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1835,7 +1848,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>ลบ</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2034,10 +2048,6 @@ This is your own one-time link!</source>
<target>ลบที่: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2805,10 +2815,6 @@ This is your own one-time link!</source>
<target>แม้ในขณะที่ปิดใช้งานในการสนทนา</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>ออกโดยไม่บันทึก</target>
@@ -2863,7 +2869,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>ที่ชอบ</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3593,7 +3599,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>เข้าร่วม</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3676,7 +3682,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>ออกจาก</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4004,10 +4010,6 @@ This is your link for group %@!</source>
<target>กลั่นกรอง</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>กลั่นกรองที่</target>
@@ -4039,7 +4041,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>ปิดเสียง</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4049,7 +4051,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>ชื่อ</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4078,10 +4080,6 @@ This is your link for group %@!</source>
<target>สถานะเครือข่าย</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>รหัสผ่านใหม่</target>
@@ -4091,6 +4089,10 @@ This is your link for group %@!</source>
<source>New chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>คำขอติดต่อใหม่</target>
@@ -4120,6 +4122,10 @@ This is your link for group %@!</source>
<target>ใหม่ใน %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>บทบาทของสมาชิกใหม่</target>
@@ -4252,10 +4258,6 @@ This is your link for group %@!</source>
<target>คลังฐานข้อมูลเก่า</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>ลิงก์คำเชิญแบบใช้ครั้งเดียว</target>
@@ -4505,6 +4507,10 @@ Requires compatible VPN.</source>
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -4787,8 +4793,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>ให้คะแนนแอป</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -4799,7 +4805,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>อ่าน</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -4946,7 +4952,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>ปฏิเสธ</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5041,6 +5048,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>รีเซ็ต</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5650,6 +5661,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>แชร์ที่อยู่กับผู้ติดต่อ?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>แชร์ลิงก์</target>
@@ -6286,10 +6301,18 @@ You will be prompted to complete authentication before this feature is enabled.<
<target>ในการตรวจสอบการเข้ารหัสแบบ encrypt จากต้นจนจบ กับผู้ติดต่อของคุณ ให้เปรียบเทียบ (หรือสแกน) รหัสบนอุปกรณ์ของคุณ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6360,7 +6383,7 @@ You will be prompted to complete authentication before this feature is enabled.<
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>เลิกชอบ</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6434,12 +6457,12 @@ To connect, please ask your contact to create another connection link and check
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>เปิดเสียง</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>เปลี่ยนเป็นยังไม่ได้อ่าน</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -6883,6 +6906,10 @@ Repeat join request?</source>
<target>คุณสามารถรับสายจากหน้าจอล็อกโดยไม่ต้องมีการตรวจสอบสิทธิ์อุปกรณ์และแอป</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>คุณสามารถสร้างได้ในภายหลัง</target>
@@ -7151,10 +7178,6 @@ Repeat connection request?</source>
<target>ผู้ติดต่อของคุณจะยังคงเชื่อมต่ออยู่</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>ฐานข้อมูลแชทปัจจุบันของคุณจะถูกลบและแทนที่ด้วยฐานข้อมูลที่นำเข้า</target>
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -565,7 +560,8 @@
<source>Accept</source>
<target>Kabul et</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -580,7 +576,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Takma adla kabul et</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -935,6 +932,10 @@
<target>Arşivle ve yükle</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1038,6 +1039,10 @@
<target>Daha iyi mesajlar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1077,6 +1082,10 @@
<target>Yönetici tarafından engellendi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1290,6 +1299,10 @@
<target>Sohbet durduruldu. Bu veritabanını zaten başka bir cihazda kullandıysanız, sohbete başlamadan önce onu geri aktarmalısınız.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Sohbet taşındı!</target>
@@ -1349,7 +1362,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Temizle</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1371,6 +1384,10 @@
<target>Doğrulamayı temizle</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1467,8 +1484,8 @@
<target>Bilgisayara bağlan</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1654,10 +1671,6 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Devam et</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1928,7 +1941,8 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Sil</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2130,10 +2144,6 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>%@ de silindi</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2938,10 +2948,6 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<target>Konuşma sırasında devre dışı bırakılsa bile.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Kaydetmeden çık</target>
@@ -2999,7 +3005,7 @@ Bu senin kendi tek kullanımlık bağlantın!</target>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Favori</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3763,7 +3769,7 @@ Hata: %2$@</target>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Katıl</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3854,7 +3860,7 @@ Bu senin grup için bağlantın %@!</target>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Ayrıl</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4199,10 +4205,6 @@ Bu senin grup için bağlantın %@!</target>
<target>Yönet</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>de yönetildi</target>
@@ -4236,7 +4238,7 @@ Bu senin grup için bağlantın %@!</target>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Sustur</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4246,7 +4248,7 @@ Bu senin grup için bağlantın %@!</target>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>İsim</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4278,10 +4280,6 @@ Bu senin grup için bağlantın %@!</target>
<target>Ağ durumu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Yeni şifre</target>
@@ -4292,6 +4290,10 @@ Bu senin grup için bağlantın %@!</target>
<target>Yeni sohbet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Yeni bağlantı isteği</target>
@@ -4322,6 +4324,10 @@ Bu senin grup için bağlantın %@!</target>
<target>%@ da yeni</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Yeni üye rolü</target>
@@ -4458,10 +4464,6 @@ Bu senin grup için bağlantın %@!</target>
<target>Eski veritabanı arşivi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Tek zamanlı bağlantı daveti</target>
@@ -4727,6 +4729,10 @@ VPN'nin etkinleştirilmesi gerekir.</target>
<target>Resim içinde resim aramaları</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -5025,8 +5031,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>Uygulamayı değerlendir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5037,7 +5043,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Oku</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5188,7 +5194,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Reddet</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5289,6 +5296,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Sıfırla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5918,6 +5929,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Kişilerle adres paylaşılsın mı?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Bağlantıyı paylaş</target>
@@ -6582,11 +6597,19 @@ Bu özellik etkinleştirilmeden önce kimlik doğrulamayı tamamlamanız istenec
<target>Kişinizle uçtan uca şifrelemeyi doğrulamak için cihazlarınızdaki kodu karşılaştırın (veya tarayın).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Bağlanırken gizli moda geçiş yap.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6663,7 +6686,7 @@ Bu özellik etkinleştirilmeden önce kimlik doğrulamayı tamamlamanız istenec
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Favorilerden çık.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6740,12 +6763,12 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Susturmayı kaldır</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Okunmamış</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7228,6 +7251,10 @@ Katılma isteği tekrarlansın mı?</target>
<target>Cihaz ve uygulama kimlik doğrulaması olmadan kilit ekranından çağrı kabul edebilirsiniz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Daha sonra oluşturabilirsiniz</target>
@@ -7505,10 +7532,6 @@ Bağlantı isteği tekrarlansın mı?</target>
<target>Kişileriniz bağlı kalacaktır.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Mevcut sohbet veritabanınız SİLİNECEK ve içe aktarılan veritabanıyla DEĞİŞTİRİLECEKTİR.</target>
@@ -392,11 +392,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -565,7 +560,8 @@
<source>Accept</source>
<target>Прийняти</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -580,7 +576,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>Прийняти інкогніто</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -935,6 +932,10 @@
<target>Архівування та завантаження</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1038,6 +1039,10 @@
<target>Кращі повідомлення</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1077,6 +1082,10 @@
<target>Заблокований адміністратором</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1290,6 +1299,10 @@
<target>Чат зупинено. Якщо ви вже використовували цю базу даних на іншому пристрої, перенесіть її назад перед запуском чату.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Чат перемістився!</target>
@@ -1349,7 +1362,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>Чисто</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1371,6 +1384,10 @@
<target>Очистити перевірку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1467,8 +1484,8 @@
<target>Підключення до комп'ютера</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1654,10 +1671,6 @@ This is your own one-time link!</source>
<target>Продовжуйте</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1928,7 +1941,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>Видалити</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2130,10 +2144,6 @@ This is your own one-time link!</source>
<target>Видалено за: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2938,10 +2948,6 @@ This is your own one-time link!</source>
<target>Навіть коли вимкнений у розмові.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>Вихід без збереження</target>
@@ -2999,7 +3005,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>Улюблений</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3763,7 +3769,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>Приєднуйтесь</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3854,7 +3860,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>Залишити</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4199,10 +4205,6 @@ This is your link for group %@!</source>
<target>Модерується</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>Модерується на</target>
@@ -4236,7 +4238,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>Вимкнути звук</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4246,7 +4248,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>Ім'я</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4278,10 +4280,6 @@ This is your link for group %@!</source>
<target>Стан мережі</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>Новий пароль</target>
@@ -4292,6 +4290,10 @@ This is your link for group %@!</source>
<target>Новий чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>Новий запит на контакт</target>
@@ -4322,6 +4324,10 @@ This is your link for group %@!</source>
<target>Нове в %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>Нова роль учасника</target>
@@ -4458,10 +4464,6 @@ This is your link for group %@!</source>
<target>Старий архів бази даних</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>Посилання на одноразове запрошення</target>
@@ -4727,6 +4729,10 @@ Requires compatible VPN.</source>
<target>Дзвінки "картинка в картинці</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -5025,8 +5031,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>Оцініть додаток</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -5037,7 +5043,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>Читати</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5188,7 +5194,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>Відхилити</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5289,6 +5296,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Перезавантаження</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5918,6 +5929,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>Поділіться адресою з контактами?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>Поділіться посиланням</target>
@@ -6582,11 +6597,19 @@ You will be prompted to complete authentication before this feature is enabled.<
<target>Щоб перевірити наскрізне шифрування з вашим контактом, порівняйте (або відскануйте) код на ваших пристроях.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>Увімкніть інкогніто при підключенні.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6663,7 +6686,7 @@ You will be prompted to complete authentication before this feature is enabled.<
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>Нелюб.</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6740,12 +6763,12 @@ To connect, please ask your contact to create another connection link and check
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>Увімкнути звук</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>Непрочитане</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7228,6 +7251,10 @@ Repeat join request?</source>
<target>Ви можете приймати дзвінки з екрана блокування без автентифікації пристрою та програми.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>Ви можете створити його пізніше</target>
@@ -7505,10 +7532,6 @@ Repeat connection request?</source>
<target>Ваші контакти залишаться на зв'язку.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>Ваша поточна база даних чату буде ВИДАЛЕНА і ЗАМІНЕНА імпортованою.</target>
@@ -381,11 +381,6 @@
<target>, </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- Search contacts when starting chat.&#10;- Archive contacts to chat later." xml:space="preserve">
<source>- Search contacts when starting chat.
- Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!&#10;- delivery receipts (up to 20 members).&#10;- faster and more stable." xml:space="preserve">
<source>- connect to [directory service](simplex:/contact#/?v=1-4&amp;smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!
- delivery receipts (up to 20 members).
@@ -553,7 +548,8 @@
<source>Accept</source>
<target>接受</target>
<note>accept contact request via notification
accept incoming call via notification</note>
accept incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Accept connection request?" xml:space="preserve">
<source>Accept connection request?</source>
@@ -568,7 +564,8 @@
<trans-unit id="Accept incognito" xml:space="preserve">
<source>Accept incognito</source>
<target>接受隐身聊天</target>
<note>accept contact request via notification</note>
<note>accept contact request via notification
swipe action</note>
</trans-unit>
<trans-unit id="Acknowledged" xml:space="preserve">
<source>Acknowledged</source>
@@ -920,6 +917,10 @@
<target>存档和上传</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive contacts to chat later." xml:space="preserve">
<source>Archive contacts to chat later.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archived contacts" xml:space="preserve">
<source>Archived contacts</source>
<note>No comment provided by engineer.</note>
@@ -1023,6 +1024,10 @@
<target>更好的消息</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Better networking" xml:space="preserve">
<source>Better networking</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Black" xml:space="preserve">
<source>Black</source>
<note>No comment provided by engineer.</note>
@@ -1062,6 +1067,10 @@
<target>由管理员封禁</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur for better privacy." xml:space="preserve">
<source>Blur for better privacy.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Blur media" xml:space="preserve">
<source>Blur media</source>
<note>No comment provided by engineer.</note>
@@ -1274,6 +1283,10 @@
<target>聊天已停止。如果你已经在另一台设备商使用过此数据库,你应该在启动聊天前将数据库传输回来。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat list" xml:space="preserve">
<source>Chat list</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>已迁移聊天!</target>
@@ -1332,7 +1345,7 @@
<trans-unit id="Clear" xml:space="preserve">
<source>Clear</source>
<target>清除</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Clear conversation" xml:space="preserve">
<source>Clear conversation</source>
@@ -1354,6 +1367,10 @@
<target>清除验证</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color chats with the new themes." xml:space="preserve">
<source>Color chats with the new themes.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Color mode" xml:space="preserve">
<source>Color mode</source>
<note>No comment provided by engineer.</note>
@@ -1449,8 +1466,8 @@
<target>连接到桌面</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to your friends faster" xml:space="preserve">
<source>Connect to your friends faster</source>
<trans-unit id="Connect to your friends faster." xml:space="preserve">
<source>Connect to your friends faster.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect to yourself?" xml:space="preserve">
@@ -1630,10 +1647,6 @@ This is your own one-time link!</source>
<target>继续</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Control your network" xml:space="preserve">
<source>Control your network</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Conversation deleted!" xml:space="preserve">
<source>Conversation deleted!</source>
<note>No comment provided by engineer.</note>
@@ -1901,7 +1914,8 @@ This is your own one-time link!</source>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target>删除</target>
<note>chat item action</note>
<note>chat item action
swipe action</note>
</trans-unit>
<trans-unit id="Delete %lld messages of members?" xml:space="preserve">
<source>Delete %lld messages of members?</source>
@@ -2102,10 +2116,6 @@ This is your own one-time link!</source>
<target>已删除于:%@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="Deleted chats" xml:space="preserve">
<source>Deleted chats</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Deletion errors" xml:space="preserve">
<source>Deletion errors</source>
<note>No comment provided by engineer.</note>
@@ -2901,10 +2911,6 @@ This is your own one-time link!</source>
<target>即使在对话中被禁用。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Even when they are offline." xml:space="preserve">
<source>Even when they are offline.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exit without saving" xml:space="preserve">
<source>Exit without saving</source>
<target>退出而不保存</target>
@@ -2962,7 +2968,7 @@ This is your own one-time link!</source>
<trans-unit id="Favorite" xml:space="preserve">
<source>Favorite</source>
<target>最喜欢</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="File error" xml:space="preserve">
<source>File error</source>
@@ -3718,7 +3724,7 @@ Error: %2$@</source>
<trans-unit id="Join" xml:space="preserve">
<source>Join</source>
<target>加入</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Join group" xml:space="preserve">
<source>Join group</source>
@@ -3805,7 +3811,7 @@ This is your link for group %@!</source>
<trans-unit id="Leave" xml:space="preserve">
<source>Leave</source>
<target>离开</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Leave group" xml:space="preserve">
<source>Leave group</source>
@@ -4145,10 +4151,6 @@ This is your link for group %@!</source>
<target>管理员移除</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Moderate like a pro ✋" xml:space="preserve">
<source>Moderate like a pro ✋</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Moderated at" xml:space="preserve">
<source>Moderated at</source>
<target>已被管理员移除于</target>
@@ -4182,7 +4184,7 @@ This is your link for group %@!</source>
<trans-unit id="Mute" xml:space="preserve">
<source>Mute</source>
<target>静音</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Muted when inactive!" xml:space="preserve">
<source>Muted when inactive!</source>
@@ -4192,7 +4194,7 @@ This is your link for group %@!</source>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target>名称</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Network &amp; servers" xml:space="preserve">
<source>Network &amp; servers</source>
@@ -4223,10 +4225,6 @@ This is your link for group %@!</source>
<target>网络状态</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Chat" xml:space="preserve">
<source>New Chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New Passcode" xml:space="preserve">
<source>New Passcode</source>
<target>新密码</target>
@@ -4237,6 +4235,10 @@ This is your link for group %@!</source>
<target>新聊天</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New chat experience 🎉" xml:space="preserve">
<source>New chat experience 🎉</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New contact request" xml:space="preserve">
<source>New contact request</source>
<target>新联系人请求</target>
@@ -4267,6 +4269,10 @@ This is your link for group %@!</source>
<target>%@ 的新内容</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New media options" xml:space="preserve">
<source>New media options</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="New member role" xml:space="preserve">
<source>New member role</source>
<target>新成员角色</target>
@@ -4403,10 +4409,6 @@ This is your link for group %@!</source>
<target>旧数据库存档</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-hand UI" xml:space="preserve">
<source>One-hand UI</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="One-time invitation link" xml:space="preserve">
<source>One-time invitation link</source>
<target>一次性邀请链接</target>
@@ -4667,6 +4669,10 @@ Requires compatible VPN.</source>
<target>画中画通话</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Play from the chat list." xml:space="preserve">
<source>Play from the chat list.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable calls." xml:space="preserve">
<source>Please ask your contact to enable calls.</source>
<note>No comment provided by engineer.</note>
@@ -4954,8 +4960,8 @@ Enable in *Network &amp; servers* settings.</source>
<target>评价此应用程序</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reachable chat toolbar 👋" xml:space="preserve">
<source>Reachable chat toolbar 👋</source>
<trans-unit id="Reachable chat toolbar" xml:space="preserve">
<source>Reachable chat toolbar</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="React…" xml:space="preserve">
@@ -4966,7 +4972,7 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Read" xml:space="preserve">
<source>Read</source>
<target>已读</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Read more" xml:space="preserve">
<source>Read more</source>
@@ -5116,7 +5122,8 @@ Enable in *Network &amp; servers* settings.</source>
<trans-unit id="Reject" xml:space="preserve">
<source>Reject</source>
<target>拒绝</target>
<note>reject incoming call via notification</note>
<note>reject incoming call via notification
swipe action</note>
</trans-unit>
<trans-unit id="Reject (sender NOT notified)" xml:space="preserve">
<source>Reject (sender NOT notified)</source>
@@ -5217,6 +5224,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>重置</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all hints" xml:space="preserve">
<source>Reset all hints</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reset all statistics" xml:space="preserve">
<source>Reset all statistics</source>
<note>No comment provided by engineer.</note>
@@ -5841,6 +5852,10 @@ Enable in *Network &amp; servers* settings.</source>
<target>与联系人分享地址?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share from other apps." xml:space="preserve">
<source>Share from other apps.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Share link" xml:space="preserve">
<source>Share link</source>
<target>分享链接</target>
@@ -6501,11 +6516,19 @@ You will be prompted to complete authentication before this feature is enabled.<
<target>要与您的联系人验证端到端加密,请比较(或扫描)您设备上的代码。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle chat list:" xml:space="preserve">
<source>Toggle chat list:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toggle incognito when connecting." xml:space="preserve">
<source>Toggle incognito when connecting.</source>
<target>在连接时切换隐身模式。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Toolbar opacity" xml:space="preserve">
<source>Toolbar opacity</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Total" xml:space="preserve">
<source>Total</source>
<note>No comment provided by engineer.</note>
@@ -6581,7 +6604,7 @@ You will be prompted to complete authentication before this feature is enabled.<
<trans-unit id="Unfav." xml:space="preserve">
<source>Unfav.</source>
<target>取消最喜欢</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unhide" xml:space="preserve">
<source>Unhide</source>
@@ -6657,12 +6680,12 @@ To connect, please ask your contact to create another connection link and check
<trans-unit id="Unmute" xml:space="preserve">
<source>Unmute</source>
<target>取消静音</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Unread" xml:space="preserve">
<source>Unread</source>
<target>未读</target>
<note>No comment provided by engineer.</note>
<note>swipe action</note>
</trans-unit>
<trans-unit id="Up to 100 last messages are sent to new members." xml:space="preserve">
<source>Up to 100 last messages are sent to new members.</source>
@@ -7131,6 +7154,10 @@ Repeat join request?</source>
<target>您可以从锁屏上接听电话,无需设备和应用程序的认证。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can change it in Appearance settings." xml:space="preserve">
<source>You can change it in Appearance settings.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can create it later" xml:space="preserve">
<source>You can create it later</source>
<target>您可以以后创建它</target>
@@ -7405,10 +7432,6 @@ Repeat connection request?</source>
<target>与您的联系人保持连接。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your contacts your way" xml:space="preserve">
<source>Your contacts your way</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
<source>Your current chat database will be DELETED and REPLACED with the imported one.</source>
<target>您当前的聊天数据库将被删除并替换为导入的数据库。</target>
+1 -1
View File
@@ -74,7 +74,7 @@ class ShareModel: ObservableObject {
}
func setup(context: NSExtensionContext) {
if performLAGroupDefault.get() && !allowShareExtensionGroupDefault.get() {
if appLocalAuthEnabledGroupDefault.get() && !allowShareExtensionGroupDefault.get() {
errorAlert = ErrorAlert(title: "App is locked!", message: "You can allow sharing in Privacy & Security / SimpleX Lock settings.")
return
}
+24 -1
View File
@@ -132,7 +132,7 @@ struct ShareView: View {
switch content {
case let .image(preview, _): imagePreview(preview)
case let .movie(preview, _, _): imagePreview(preview)
case let .url(linkPreview): imagePreview(linkPreview.image)
case let .url(preview): linkPreview(preview)
case let .data(cryptoFile):
previewArea {
Image(systemName: "doc.fill")
@@ -160,6 +160,29 @@ struct ShareView: View {
}
}
@ViewBuilder private func linkPreview(_ linkPreview: LinkPreview) -> some View {
previewArea {
HStack(alignment: .center, spacing: 8) {
if let uiImage = UIImage(base64Encoded: linkPreview.image) {
Image(uiImage: uiImage)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(maxWidth: 80, maxHeight: 60)
}
VStack(alignment: .center, spacing: 4) {
Text(linkPreview.title)
.lineLimit(1)
Text(linkPreview.uri.absoluteString)
.font(.caption)
.lineLimit(1)
.foregroundColor(.secondary)
}
.padding(.vertical, 5)
.frame(maxWidth: .infinity, minHeight: 60)
}
}
}
@ViewBuilder private func previewArea<V: View>(@ViewBuilder content: @escaping () -> V) -> some View {
HStack(alignment: .center, spacing: 8) {
content()
@@ -107,5 +107,5 @@
"Wrong database passphrase" = "Falsches Datenbank-Passwort";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Du kannst das Teilen in den Einstellungen zu Datenschutz & Sicherheit bzw. SimpleX-Sperre erlauben.";
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Du kannst das Teilen in den Einstellungen zu Datenschutz & Sicherheit - SimpleX-Sperre erlauben.";
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. Todos los derechos reservados.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,7 +1,111 @@
/*
Localizable.strings
SimpleX
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "¡Aplicación bloqueada!";
/* No comment provided by engineer. */
"Cancel" = "Cancelar";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Keychain inaccesible para guardar la contraseña de la base de datos";
/* No comment provided by engineer. */
"Cannot forward message" = "No se puede reenviar el mensaje";
/* No comment provided by engineer. */
"Comment" = "Comentario";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "El tamaño máximo de archivo admitido es %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Se requiere volver a versión anterior de la base de datos";
/* No comment provided by engineer. */
"Database encrypted!" = "¡Base de datos cifrada!";
/* No comment provided by engineer. */
"Database error" = "Error en base de datos";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "La contraseña de la base de datos es distinta a la almacenada en keychain.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "Se requiere la contraseña de la base de datos para abrir la aplicación.";
/* No comment provided by engineer. */
"Database upgrade required" = "Se requiere actualizar la base de datos";
/* No comment provided by engineer. */
"Error preparing file" = "Error al preparar el archivo";
/* No comment provided by engineer. */
"Error preparing message" = "Error al preparar el mensaje";
/* No comment provided by engineer. */
"Error: %@" = "Error: %@";
/* No comment provided by engineer. */
"File error" = "Error de archivo";
/* No comment provided by engineer. */
"Incompatible database version" = "Versión de base de datos incompatible";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Confirmación de migración no válida";
/* No comment provided by engineer. */
"Keychain error" = "Error en keychain";
/* No comment provided by engineer. */
"Large file!" = "¡Archivo grande!";
/* No comment provided by engineer. */
"No active profile" = "Ningún perfil activo";
/* No comment provided by engineer. */
"Ok" = "Ok";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Abre la aplicación para volver a versión anterior de la base de datos.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Abre la aplicación para actualizar la base de datos.";
/* No comment provided by engineer. */
"Passphrase" = "Frase de contraseña";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Por favor, crea un perfil en SimpleX";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Las preferencias seleccionadas no permiten este mensaje.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "Enviar el mensaje lleva más tiempo del esperado.";
/* No comment provided by engineer. */
"Sending message…" = "Enviando mensaje…";
/* No comment provided by engineer. */
"Share" = "Compartir";
/* No comment provided by engineer. */
"Slow network?" = "¿Red lenta?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Error desconocido en la base de datos: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Formato sin soporte";
/* No comment provided by engineer. */
"Wait" = "Espera";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Contraseña incorrecta de la base de datos";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Puedes dar permiso para compartir en Privacidad y Seguridad / Bloque SimpleX.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -82,15 +82,27 @@
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Les paramètres de chat sélectionnés ne permettent pas l'envoi de ce message.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "L'envoi d'un message prend plus de temps que prévu.";
/* No comment provided by engineer. */
"Sending message…" = "Envoi du message…";
/* No comment provided by engineer. */
"Share" = "Partager";
/* No comment provided by engineer. */
"Slow network?" = "Réseau lent?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Erreur inconnue de la base de données: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Format non pris en charge";
/* No comment provided by engineer. */
"Wait" = "Attendez";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Mauvaise phrase secrète pour la base de données";
@@ -107,5 +107,5 @@
"Wrong database passphrase" = "Hibás adatbázis jelmondat";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "A megosztást az Adatvédelem és biztonság / SimpleX zár menüpontban engedélyezheti.";
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "A megosztást az Adatvédelem és biztonság / SimpleX zár menüben engedélyezheti.";
@@ -1,7 +1,9 @@
/*
InfoPlist.strings
SimpleX
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX SE";
/* Bundle name */
"CFBundleName" = "SimpleX SE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2024 SimpleX Chat. Все права защищены.";
Created by EP on 30/07/2024.
Copyright © 2024 SimpleX Chat. All rights reserved.
*/
@@ -1,3 +1,111 @@
/* No comment provided by engineer. */
"%@" = "%@";
/* No comment provided by engineer. */
"App is locked!" = "Приложение заблокировано!";
/* No comment provided by engineer. */
"Cancel" = "Отменить";
/* No comment provided by engineer. */
"Cannot access keychain to save database password" = "Невозможно сохранить пароль в keychain";
/* No comment provided by engineer. */
"Cannot forward message" = "Невозможно переслать сообщение";
/* No comment provided by engineer. */
"Comment" = "Комментарий";
/* No comment provided by engineer. */
"Currently maximum supported file size is %@." = "В настоящее время максимальный поддерживаемый размер файла составляет %@.";
/* No comment provided by engineer. */
"Database downgrade required" = "Требуется откат базы данных";
/* No comment provided by engineer. */
"Database encrypted!" = "База данных зашифрована!";
/* No comment provided by engineer. */
"Database error" = "Ошибка базы данных";
/* No comment provided by engineer. */
"Database passphrase is different from saved in the keychain." = "Пароль базы данных отличается от сохраненного в keychain.";
/* No comment provided by engineer. */
"Database passphrase is required to open chat." = "Введите пароль базы данных, чтобы открыть чат.";
/* No comment provided by engineer. */
"Database upgrade required" = "Требуется обновление базы данных";
/* No comment provided by engineer. */
"Error preparing file" = "Ошибка подготовки файла";
/* No comment provided by engineer. */
"Error preparing message" = "Ошибка подготовки сообщения";
/* No comment provided by engineer. */
"Error: %@" = "Ошибка: %@";
/* No comment provided by engineer. */
"File error" = "Ошибка файла";
/* No comment provided by engineer. */
"Incompatible database version" = "Несовместимая версия базы данных";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Ошибка подтверждения миграции";
/* No comment provided by engineer. */
"Keychain error" = "Ошибка keychain";
/* No comment provided by engineer. */
"Large file!" = "Большой файл!";
/* No comment provided by engineer. */
"No active profile" = "Нет активного профиля";
/* No comment provided by engineer. */
"Ok" = "Ок";
/* No comment provided by engineer. */
"Open the app to downgrade the database." = "Откройте приложение, чтобы откатить базу данных.";
/* No comment provided by engineer. */
"Open the app to upgrade the database." = "Откройте приложение, чтобы обновить базу данных.";
/* No comment provided by engineer. */
"Passphrase" = "Пароль";
/* No comment provided by engineer. */
"Please create a profile in the SimpleX app" = "Пожалуйста, создайте профиль в приложении SimpleX.";
/* No comment provided by engineer. */
"Selected chat preferences prohibit this message." = "Выбранные настройки чата запрещают это сообщение.";
/* No comment provided by engineer. */
"Sending a message takes longer than expected." = "Отправка сообщения занимает дольше ожиданного.";
/* No comment provided by engineer. */
"Sending message…" = "Отправка сообщения…";
/* No comment provided by engineer. */
"Share" = "Поделиться";
/* No comment provided by engineer. */
"Slow network?" = "Медленная сеть?";
/* No comment provided by engineer. */
"Unknown database error: %@" = "Неизвестная ошибка базы данных: %@";
/* No comment provided by engineer. */
"Unsupported format" = "Неподдерживаемый формат";
/* No comment provided by engineer. */
"Wait" = "Подождать";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Неправильный пароль базы данных";
/* No comment provided by engineer. */
"You can allow sharing in Privacy & Security / SimpleX Lock settings." = "Вы можете разрешить функцию Поделиться в настройках Конфиденциальности / Блокировка SimpleX.";
+41 -53
View File
@@ -135,7 +135,6 @@
5CE4407927ADB701007B033A /* EmojiItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CE4407827ADB701007B033A /* EmojiItemView.swift */; };
5CEACCE327DE9246000BD591 /* ComposeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEACCE227DE9246000BD591 /* ComposeView.swift */; };
5CEACCED27DEA495000BD591 /* MsgContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEACCEC27DEA495000BD591 /* MsgContentView.swift */; };
5CEBD7462A5C0A8F00665FE2 /* KeyboardPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */; };
5CEBD7482A5F115D00665FE2 /* SetDeliveryReceiptsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */; };
5CF937202B24DE8C00E1D781 /* SharedFileSubscriber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF9371F2B24DE8C00E1D781 /* SharedFileSubscriber.swift */; };
5CF937232B2503D000E1D781 /* NSESubscriber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF937212B25034A00E1D781 /* NSESubscriber.swift */; };
@@ -214,17 +213,16 @@
D741547A29AF90B00022400A /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D741547929AF90B00022400A /* PushKit.framework */; };
D77B92DC2952372200A5A1CC /* SwiftyGif in Frameworks */ = {isa = PBXBuildFile; productRef = D77B92DB2952372200A5A1CC /* SwiftyGif */; };
D7F0E33929964E7E0068AF69 /* LZString in Frameworks */ = {isa = PBXBuildFile; productRef = D7F0E33829964E7E0068AF69 /* LZString */; };
E50581062C3DDD9D009C3F71 /* Yams in Frameworks */ = {isa = PBXBuildFile; productRef = E50581052C3DDD9D009C3F71 /* Yams */; };
E51CC1E62C62085600DB91FE /* OneHandUICard.swift in Sources */ = {isa = PBXBuildFile; fileRef = E51CC1E52C62085600DB91FE /* OneHandUICard.swift */; };
E51CC1F62C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E51CC1F12C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu-ghc9.6.3.a */; };
E51CC1F72C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E51CC1F22C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu.a */; };
E51CC1F82C62BAB900DB91FE /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E51CC1F32C62BAB900DB91FE /* libgmp.a */; };
E51CC1F92C62BAB900DB91FE /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E51CC1F42C62BAB900DB91FE /* libgmpxx.a */; };
E51CC1FA2C62BAB900DB91FE /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E51CC1F52C62BAB900DB91FE /* libffi.a */; };
E5DCF8DB2C56FAC1007928CC /* SimpleXChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */; };
E5DCF9712C590272007928CC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E5DCF96F2C590272007928CC /* Localizable.strings */; };
E5DCF9842C5902CE007928CC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E5DCF9822C5902CE007928CC /* Localizable.strings */; };
E5DCF9982C5906FF007928CC /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E5DCF9962C5906FF007928CC /* InfoPlist.strings */; };
E5E218532C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E5E2184E2C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q-ghc9.6.3.a */; };
E5E218542C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E5E2184F2C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q.a */; };
E5E218552C6D4C0F0013B4C6 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E5E218502C6D4C0F0013B4C6 /* libgmp.a */; };
E5E218562C6D4C0F0013B4C6 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E5E218512C6D4C0F0013B4C6 /* libffi.a */; };
E5E218572C6D4C0F0013B4C6 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E5E218522C6D4C0F0013B4C6 /* libgmpxx.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -475,7 +473,6 @@
5CE6C7B42AAB1527007F345C /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = "<group>"; };
5CEACCE227DE9246000BD591 /* ComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeView.swift; sourceTree = "<group>"; };
5CEACCEC27DEA495000BD591 /* MsgContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MsgContentView.swift; sourceTree = "<group>"; };
5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardPadding.swift; sourceTree = "<group>"; };
5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetDeliveryReceiptsView.swift; sourceTree = "<group>"; };
5CF9371F2B24DE8C00E1D781 /* SharedFileSubscriber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedFileSubscriber.swift; sourceTree = "<group>"; };
5CF937212B25034A00E1D781 /* NSESubscriber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSESubscriber.swift; sourceTree = "<group>"; };
@@ -553,11 +550,6 @@
D741547929AF90B00022400A /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/PushKit.framework; sourceTree = DEVELOPER_DIR; };
D7AA2C3429A936B400737B40 /* MediaEncryption.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; name = MediaEncryption.playground; path = Shared/MediaEncryption.playground; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
E51CC1E52C62085600DB91FE /* OneHandUICard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneHandUICard.swift; sourceTree = "<group>"; };
E51CC1F12C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu-ghc9.6.3.a"; sourceTree = "<group>"; };
E51CC1F22C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu.a"; sourceTree = "<group>"; };
E51CC1F32C62BAB900DB91FE /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
E51CC1F42C62BAB900DB91FE /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
E51CC1F52C62BAB900DB91FE /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
E5DCF9702C590272007928CC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
E5DCF9722C590274007928CC /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = "<group>"; };
E5DCF9732C590275007928CC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
@@ -610,6 +602,11 @@
E5DCF9A62C590731007928CC /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/InfoPlist.strings; sourceTree = "<group>"; };
E5DCF9A72C590732007928CC /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
E5DCF9A82C590732007928CC /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/InfoPlist.strings; sourceTree = "<group>"; };
E5E2184E2C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q-ghc9.6.3.a"; sourceTree = "<group>"; };
E5E2184F2C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q.a"; sourceTree = "<group>"; };
E5E218502C6D4C0F0013B4C6 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
E5E218512C6D4C0F0013B4C6 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
E5E218522C6D4C0F0013B4C6 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -648,15 +645,14 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E51CC1F72C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu.a in Frameworks */,
E51CC1F82C62BAB900DB91FE /* libgmp.a in Frameworks */,
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
E5E218542C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
E51CC1F92C62BAB900DB91FE /* libgmpxx.a in Frameworks */,
E50581062C3DDD9D009C3F71 /* Yams in Frameworks */,
CE38A29C2C3FCD72005ED185 /* SwiftyGif in Frameworks */,
E51CC1FA2C62BAB900DB91FE /* libffi.a in Frameworks */,
E51CC1F62C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu-ghc9.6.3.a in Frameworks */,
E5E218572C6D4C0F0013B4C6 /* libgmpxx.a in Frameworks */,
E5E218562C6D4C0F0013B4C6 /* libffi.a in Frameworks */,
E5E218552C6D4C0F0013B4C6 /* libgmp.a in Frameworks */,
E5E218532C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q-ghc9.6.3.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -733,11 +729,11 @@
5C764E5C279C70B7000C6508 /* Libraries */ = {
isa = PBXGroup;
children = (
E51CC1F52C62BAB900DB91FE /* libffi.a */,
E51CC1F32C62BAB900DB91FE /* libgmp.a */,
E51CC1F42C62BAB900DB91FE /* libgmpxx.a */,
E51CC1F12C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu-ghc9.6.3.a */,
E51CC1F22C62BAB900DB91FE /* libHSsimplex-chat-6.0.0.4-3xUPNxPQ4Yz9H0nVfm7Usu.a */,
E5E218512C6D4C0F0013B4C6 /* libffi.a */,
E5E218502C6D4C0F0013B4C6 /* libgmp.a */,
E5E218522C6D4C0F0013B4C6 /* libgmpxx.a */,
E5E2184E2C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q-ghc9.6.3.a */,
E5E2184F2C6D4C0F0013B4C6 /* libHSsimplex-chat-6.0.0.8-9fvDFLivFrv8AINTqPH03q.a */,
);
path = Libraries;
sourceTree = "<group>";
@@ -788,7 +784,6 @@
18415DAAAD1ADBEDB0EDA852 /* VideoPlayerView.swift */,
64466DCB29FFE3E800E3D48D /* MailView.swift */,
64C3B0202A0D359700E19930 /* CustomTimePicker.swift */,
5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */,
8C7F8F0D2C19C0C100D16888 /* ViewModifiers.swift */,
8C74C3ED2C1B942300039E77 /* ChatWallpaper.swift */,
8C9BC2642C240D5100875A27 /* ThemeModeEditor.swift */,
@@ -1205,7 +1200,6 @@
);
name = SimpleXChat;
packageProductDependencies = (
E50581052C3DDD9D009C3F71 /* Yams */,
CE38A29B2C3FCD72005ED185 /* SwiftyGif */,
);
productName = SimpleXChat;
@@ -1438,7 +1432,6 @@
646BB38E283FDB6D001CE359 /* LocalAuthenticationUtils.swift in Sources */,
8C74C3EA2C1B90AF00039E77 /* ThemeManager.swift in Sources */,
5C7505A227B65FDB00BE3227 /* CIMetaView.swift in Sources */,
5CEBD7462A5C0A8F00665FE2 /* KeyboardPadding.swift in Sources */,
5C35CFC827B2782E00FB6C6D /* BGManager.swift in Sources */,
5CB634B129E5EFEA0066AD6B /* PasscodeView.swift in Sources */,
8C69FE7D2B8C7D2700267E38 /* AppSettings.swift in Sources */,
@@ -1886,7 +1879,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -1911,7 +1904,7 @@
"@executable_path/Frameworks",
);
LLVM_LTO = YES_THIN;
MARKETING_VERSION = 6.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -1935,7 +1928,7 @@
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
@@ -1960,7 +1953,7 @@
"@executable_path/Frameworks",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -1976,11 +1969,11 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.Tests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -1996,11 +1989,11 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.Tests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -2021,7 +2014,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
@@ -2036,7 +2029,7 @@
"@executable_path/../../Frameworks",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -2058,7 +2051,7 @@
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
@@ -2073,7 +2066,7 @@
"@executable_path/../../Frameworks",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -2095,7 +2088,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2121,7 +2114,7 @@
"$(PROJECT_DIR)/Libraries/sim",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
@@ -2146,7 +2139,7 @@
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -2172,7 +2165,7 @@
"$(PROJECT_DIR)/Libraries/sim",
);
LLVM_LTO = YES;
MARKETING_VERSION = 6.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
@@ -2197,7 +2190,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -2212,7 +2205,7 @@
"@executable_path/../../Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-SE";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -2231,7 +2224,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 230;
CURRENT_PROJECT_VERSION = 233;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
@@ -2246,7 +2239,7 @@
"@executable_path/../../Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 6.0.1;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-SE";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@@ -2323,7 +2316,7 @@
repositoryURL = "https://github.com/twostraws/CodeScanner";
requirement = {
kind = exactVersion;
version = 2.1.1;
version = 2.5.0;
};
};
8C73C1162C21E17B00892670 /* XCRemoteSwiftPackageReference "Yams" */ = {
@@ -2391,11 +2384,6 @@
package = D7F0E33729964E7D0068AF69 /* XCRemoteSwiftPackageReference "lzstring-swift" */;
productName = LZString;
};
E50581052C3DDD9D009C3F71 /* Yams */ = {
isa = XCSwiftPackageProductDependency;
package = 8C73C1162C21E17B00892670 /* XCRemoteSwiftPackageReference "Yams" */;
productName = Yams;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 5CA059BE279559F40002BEB4 /* Project object */;
@@ -6,8 +6,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/twostraws/CodeScanner",
"state" : {
"revision" : "c27a66149b7483fe42e2ec6aad61d5c3fffe522d",
"version" : "2.1.1"
"revision" : "34da57fb63b47add20de8a85da58191523ccce57",
"version" : "2.5.0"
}
},
{
@@ -23,7 +23,6 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/kirualex/SwiftyGif",
"state" : {
"branch" : "master",
"revision" : "5e8619335d394901379c9add5c4c1c2f420b3800"
}
},
+1 -2
View File
@@ -8,7 +8,6 @@
import Foundation
import SwiftUI
import Yams
public let jsonDecoder = getJSONDecoder()
public let jsonEncoder = getJSONEncoder()
@@ -1933,7 +1932,7 @@ public enum DatabaseError: Decodable, Hashable {
public enum SQLiteError: Decodable, Hashable {
case errorNotADatabase
case error(String)
case error(dbError: String)
}
public enum AgentErrorType: Decodable, Hashable {
+3 -3
View File
@@ -23,7 +23,7 @@ let GROUP_DEFAULT_NTF_PREVIEW_MODE = "ntfPreviewMode"
public let GROUP_DEFAULT_NTF_ENABLE_LOCAL = "ntfEnableLocal" // no longer used
public let GROUP_DEFAULT_NTF_ENABLE_PERIODIC = "ntfEnablePeriodic" // no longer used
// replaces DEFAULT_PERFORM_LA
let GROUP_DEFAULT_PERFORM_LA = "performLocalAuthentication"
let GROUP_DEFAULT_APP_LOCAL_AUTH_ENABLED = "appLocalAuthEnabled"
public let GROUP_DEFAULT_ALLOW_SHARE_EXTENSION = "allowShareExtension"
// replaces DEFAULT_PRIVACY_LINK_PREVIEWS
let GROUP_DEFAULT_PRIVACY_LINK_PREVIEWS = "privacyLinkPreviews"
@@ -82,7 +82,7 @@ public func registerGroupDefaults() {
GROUP_DEFAULT_INCOGNITO: false,
GROUP_DEFAULT_STORE_DB_PASSPHRASE: true,
GROUP_DEFAULT_INITIAL_RANDOM_DB_PASSPHRASE: false,
GROUP_DEFAULT_PERFORM_LA: false,
GROUP_DEFAULT_APP_LOCAL_AUTH_ENABLED: true,
GROUP_DEFAULT_ALLOW_SHARE_EXTENSION: false,
GROUP_DEFAULT_PRIVACY_LINK_PREVIEWS: false,
GROUP_DEFAULT_PRIVACY_ACCEPT_IMAGES: true,
@@ -205,7 +205,7 @@ public let ntfPreviewModeGroupDefault = EnumDefault<NotificationPreviewMode>(
public let incognitoGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_INCOGNITO)
public let performLAGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_PERFORM_LA)
public let appLocalAuthEnabledGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_APP_LOCAL_AUTH_ENABLED)
public let allowShareExtensionGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_ALLOW_SHARE_EXTENSION)
+18 -14
View File
@@ -335,7 +335,8 @@
"above, then choose:" = "по-горе, след това избери:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Приеми";
/* No comment provided by engineer. */
@@ -344,7 +345,8 @@
/* notification body */
"Accept contact request from %@?" = "Приемане на заявка за контакт от %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Приеми инкогнито";
/* call status */
@@ -807,7 +809,7 @@
/* No comment provided by engineer. */
"Choose from library" = "Избери от библиотеката";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Изчисти";
/* No comment provided by engineer. */
@@ -1158,7 +1160,8 @@
/* No comment provided by engineer. */
"default (yes)" = "по подразбиране (да)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Изтрий";
/* No comment provided by engineer. */
@@ -1801,7 +1804,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "По-бързо присъединяване и по-надеждни съобщения.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Любим";
/* No comment provided by engineer. */
@@ -2269,7 +2272,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Японски интерфейс";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Присъединяване";
/* No comment provided by engineer. */
@@ -2320,7 +2323,7 @@
/* No comment provided by engineer. */
"Learn more" = "Научете повече";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Напусни";
/* No comment provided by engineer. */
@@ -2548,13 +2551,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "Множество профили за чат";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "Без звук";
/* No comment provided by engineer. */
"Muted when inactive!" = "Без звук при неактивност!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Име";
/* No comment provided by engineer. */
@@ -3006,7 +3009,7 @@
/* chat item menu */
"React…" = "Реагирай…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Прочетено";
/* No comment provided by engineer. */
@@ -3081,7 +3084,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Намалена консумация на батерията";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Отхвърляне";
/* No comment provided by engineer. */
@@ -3879,7 +3883,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Неочаквано състояние на миграция";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Премахни от любимите";
/* No comment provided by engineer. */
@@ -3927,10 +3931,10 @@
/* authentication reason */
"Unlock app" = "Отключи приложението";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "Уведомявай";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Непрочетено";
/* No comment provided by engineer. */
+18 -14
View File
@@ -287,7 +287,8 @@
"above, then choose:" = "výše, pak vyberte:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Přijmout";
/* No comment provided by engineer. */
@@ -296,7 +297,8 @@
/* notification body */
"Accept contact request from %@?" = "Přijmout žádost o kontakt od %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Přijmout inkognito";
/* call status */
@@ -657,7 +659,7 @@
/* No comment provided by engineer. */
"Choose from library" = "Vybrat z knihovny";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Vyčistit";
/* No comment provided by engineer. */
@@ -936,7 +938,8 @@
/* No comment provided by engineer. */
"default (yes)" = "výchozí (ano)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Smazat";
/* No comment provided by engineer. */
@@ -1474,7 +1477,7 @@
/* No comment provided by engineer. */
"Fast and no wait until the sender is online!" = "Rychle a bez čekání, než bude odesílatel online!";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Oblíbené";
/* No comment provided by engineer. */
@@ -1858,7 +1861,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japonské rozhraní";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Připojte se na";
/* No comment provided by engineer. */
@@ -1888,7 +1891,7 @@
/* No comment provided by engineer. */
"Learn more" = "Zjistit více";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Opustit";
/* No comment provided by engineer. */
@@ -2065,13 +2068,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "Více chatovacích profilů";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "Ztlumit";
/* No comment provided by engineer. */
"Muted when inactive!" = "Ztlumit při neaktivitě!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Jméno";
/* No comment provided by engineer. */
@@ -2433,7 +2436,7 @@
/* chat item menu */
"React…" = "Reagovat…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Číst";
/* No comment provided by engineer. */
@@ -2499,7 +2502,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Snížení spotřeby baterie";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Odmítnout";
/* No comment provided by engineer. */
@@ -3144,7 +3148,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Neočekávaný stav přenášení";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Odobl.";
/* No comment provided by engineer. */
@@ -3183,10 +3187,10 @@
/* authentication reason */
"Unlock app" = "Odemknout aplikaci";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "Zrušit ztlumení";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Nepřečtený";
/* No comment provided by engineer. */
+165 -17
View File
@@ -314,13 +314,13 @@
"A separate TCP connection will be used **for each contact and group member**.\n**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail." = "**Für jeden Kontakt und jedes Gruppenmitglied** wird eine separate TCP-Verbindung genutzt.\n**Bitte beachten Sie**: Wenn Sie viele Verbindungen haben, kann der Batterieverbrauch und die Datennutzung wesentlich höher sein und einige Verbindungen können scheitern.";
/* No comment provided by engineer. */
"Abort" = "Abbrechen";
"Abort" = "Beenden";
/* No comment provided by engineer. */
"Abort changing address" = "Wechsel der Empfängeradresse abbrechen";
"Abort changing address" = "Wechsel der Empfängeradresse beenden";
/* No comment provided by engineer. */
"Abort changing address?" = "Wechsel der Empfängeradresse abbrechen?";
"Abort changing address?" = "Wechsel der Empfängeradresse beenden?";
/* No comment provided by engineer. */
"About SimpleX" = "Über SimpleX";
@@ -338,7 +338,8 @@
"Accent" = "Akzent";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Annehmen";
/* No comment provided by engineer. */
@@ -347,7 +348,8 @@
/* notification body */
"Accept contact request from %@?" = "Die Kontaktanfrage von %@ annehmen?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Inkognito akzeptieren";
/* call status */
@@ -399,7 +401,7 @@
"Address" = "Adresse";
/* No comment provided by engineer. */
"Address change will be aborted. Old receiving address will be used." = "Der Wechsel der Empfängeradresse wird abgebrochen. Die bisherige Adresse wird weiter verwendet.";
"Address change will be aborted. Old receiving address will be used." = "Der Wechsel der Empfängeradresse wird beendet. Die bisherige Adresse wird weiter verwendet.";
/* member role */
"admin" = "Admin";
@@ -470,6 +472,9 @@
/* No comment provided by engineer. */
"Allow calls only if your contact allows them." = "Erlauben Sie Anrufe nur dann, wenn es Ihr Kontakt ebenfalls erlaubt.";
/* No comment provided by engineer. */
"Allow calls?" = "Anrufe erlauben?";
/* No comment provided by engineer. */
"Allow disappearing messages only if your contact allows it to you." = "Erlauben Sie verschwindende Nachrichten nur dann, wenn es Ihr Kontakt ebenfalls erlaubt.";
@@ -590,6 +595,12 @@
/* No comment provided by engineer. */
"Archive and upload" = "Archivieren und Hochladen";
/* No comment provided by engineer. */
"Archive contacts to chat later." = "Kontakte für spätere Chats archivieren.";
/* No comment provided by engineer. */
"Archived contacts" = "Archivierte Kontakte";
/* No comment provided by engineer. */
"Archiving database" = "Datenbank wird archiviert";
@@ -665,6 +676,9 @@
/* No comment provided by engineer. */
"Better messages" = "Verbesserungen bei Nachrichten";
/* No comment provided by engineer. */
"Better networking" = "Kontrollieren Sie Ihr Netzwerk";
/* No comment provided by engineer. */
"Black" = "Schwarz";
@@ -698,6 +712,9 @@
/* No comment provided by engineer. */
"Blocked by admin" = "wurde vom Administrator blockiert";
/* No comment provided by engineer. */
"Blur for better privacy." = "Für bessere Privatsphäre verpixeln.";
/* No comment provided by engineer. */
"Blur media" = "Medium unscharf machen";
@@ -725,6 +742,9 @@
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per Chat-Profil (Voreinstellung) oder [per Verbindung](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
/* No comment provided by engineer. */
"call" = "Anrufen";
/* No comment provided by engineer. */
"Call already ended!" = "Anruf ist bereits beendet!";
@@ -740,15 +760,27 @@
/* No comment provided by engineer. */
"Calls" = "Anrufe";
/* No comment provided by engineer. */
"Calls prohibited!" = "Anrufe nicht zugelassen!";
/* No comment provided by engineer. */
"Camera not available" = "Kamera nicht verfügbar";
/* No comment provided by engineer. */
"Can't call contact" = "Kontakt kann nicht angerufen werden";
/* No comment provided by engineer. */
"Can't call member" = "Mitglied kann nicht angerufen werden";
/* No comment provided by engineer. */
"Can't invite contact!" = "Kontakt kann nicht eingeladen werden!";
/* No comment provided by engineer. */
"Can't invite contacts!" = "Kontakte können nicht eingeladen werden!";
/* No comment provided by engineer. */
"Can't message member" = "Mitglied kann nicht benachrichtigt werden";
/* No comment provided by engineer. */
"Cancel" = "Abbrechen";
@@ -849,6 +881,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Der Chat ist angehalten. Wenn Sie diese Datenbank bereits auf einem anderen Gerät genutzt haben, sollten Sie diese vor dem Starten des Chats wieder zurückspielen.";
/* No comment provided by engineer. */
"Chat list" = "Chat-Liste";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat wurde migriert!";
@@ -885,7 +920,7 @@
/* No comment provided by engineer. */
"Chunks uploaded" = "Daten-Pakete hochgeladen";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Löschen";
/* No comment provided by engineer. */
@@ -900,6 +935,9 @@
/* No comment provided by engineer. */
"Clear verification" = "Überprüfung zurücknehmen";
/* No comment provided by engineer. */
"Color chats with the new themes." = "Farbige Chats mit neuen Designs.";
/* No comment provided by engineer. */
"Color mode" = "Farbvariante";
@@ -927,6 +965,9 @@
/* No comment provided by engineer. */
"Confirm" = "Bestätigen";
/* No comment provided by engineer. */
"Confirm contact deletion?" = "Löschen des Kontakts bestätigen?";
/* No comment provided by engineer. */
"Confirm database upgrades" = "Datenbank-Aktualisierungen bestätigen";
@@ -966,6 +1007,9 @@
/* No comment provided by engineer. */
"connect to SimpleX Chat developers." = "Mit den SimpleX Chat-Entwicklern verbinden.";
/* No comment provided by engineer. */
"Connect to your friends faster." = "Schneller mit Ihren Freunden verbinden.";
/* No comment provided by engineer. */
"Connect to yourself?" = "Mit Ihnen selbst verbinden?";
@@ -1032,6 +1076,9 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Mit dem Server verbinden… (Fehler: %@)";
/* No comment provided by engineer. */
"Connecting to contact, please wait or check later!" = "Verbinde mit Kontakt, bitte warten oder später erneut überprüfen!";
/* No comment provided by engineer. */
"Connecting to desktop" = "Mit dem Desktop verbinden";
@@ -1041,6 +1088,9 @@
/* No comment provided by engineer. */
"Connection" = "Verbindung";
/* No comment provided by engineer. */
"Connection and servers status." = "Verbindungs- und Server-Status.";
/* No comment provided by engineer. */
"Connection error" = "Verbindungsfehler";
@@ -1080,6 +1130,9 @@
/* No comment provided by engineer. */
"Contact already exists" = "Der Kontakt ist bereits vorhanden";
/* No comment provided by engineer. */
"Contact deleted!" = "Kontakt gelöscht!";
/* No comment provided by engineer. */
"contact has e2e encryption" = "Kontakt nutzt E2E-Verschlüsselung";
@@ -1092,12 +1145,18 @@
/* notification */
"Contact is connected" = "Mit Ihrem Kontakt verbunden";
/* No comment provided by engineer. */
"Contact is deleted." = "Kontakt wurde gelöscht.";
/* No comment provided by engineer. */
"Contact name" = "Kontaktname";
/* No comment provided by engineer. */
"Contact preferences" = "Kontakt-Präferenzen";
/* No comment provided by engineer. */
"Contact will be deleted - this cannot be undone!" = "Kontakt wird gelöscht. Dies kann nicht rückgängig gemacht werden!";
/* No comment provided by engineer. */
"Contacts" = "Kontakte";
@@ -1107,6 +1166,9 @@
/* No comment provided by engineer. */
"Continue" = "Weiter";
/* No comment provided by engineer. */
"Conversation deleted!" = "Unterhaltung gelöscht!";
/* No comment provided by engineer. */
"Copy" = "Kopieren";
@@ -1287,7 +1349,8 @@
/* No comment provided by engineer. */
"default (yes)" = "Voreinstellung (Ja)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Löschen";
/* No comment provided by engineer. */
@@ -1329,6 +1392,9 @@
/* No comment provided by engineer. */
"Delete contact" = "Kontakt löschen";
/* No comment provided by engineer. */
"Delete contact?" = "Kontakt löschen?";
/* No comment provided by engineer. */
"Delete database" = "Datenbank löschen";
@@ -1392,9 +1458,15 @@
/* server test step */
"Delete queue" = "Lösche Warteschlange";
/* No comment provided by engineer. */
"Delete up to 20 messages at once." = "Löschen Sie bis zu 20 Nachrichten auf einmal.";
/* No comment provided by engineer. */
"Delete user profile?" = "Benutzerprofil löschen?";
/* No comment provided by engineer. */
"Delete without notification" = "Ohne Benachrichtigung löschen";
/* deleted chat item */
"deleted" = "Gelöscht";
@@ -1455,6 +1527,9 @@
/* No comment provided by engineer. */
"Develop" = "Entwicklung";
/* No comment provided by engineer. */
"Developer options" = "Optionen für Entwickler";
/* No comment provided by engineer. */
"Developer tools" = "Entwicklertools";
@@ -1768,7 +1843,7 @@
"Error" = "Fehler";
/* No comment provided by engineer. */
"Error aborting address change" = "Fehler beim Abbrechen des Adresswechsels";
"Error aborting address change" = "Fehler beim Beenden des Adresswechsels";
/* No comment provided by engineer. */
"Error accepting contact request" = "Fehler beim Annehmen der Kontaktanfrage";
@@ -2002,7 +2077,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Schnellerer Gruppenbeitritt und zuverlässigere Nachrichtenzustellung.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Favorit";
/* No comment provided by engineer. */
@@ -2461,6 +2536,9 @@
/* group name */
"invitation to group %@" = "Einladung zur Gruppe %@";
/* No comment provided by engineer. */
"invite" = "Einladen";
/* No comment provided by engineer. */
"Invite friends" = "Freunde einladen";
@@ -2506,6 +2584,9 @@
/* No comment provided by engineer. */
"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Dies kann unter folgenden Umständen passieren:\n1. Die Nachrichten verfallen auf dem sendenden Client-System nach 2 Tagen oder auf dem Server nach 30 Tagen.\n2. Die Nachrichten-Entschlüsselung ist fehlgeschlagen, da von Ihnen oder Ihrem Kontakt ein altes Datenbank-Backup genutzt wurde.\n3. Die Verbindung wurde kompromittiert.";
/* No comment provided by engineer. */
"It protects your IP address and connections." = "Ihre IP-Adresse und Verbindungen werden geschützt.";
/* No comment provided by engineer. */
"It seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Es sieht so aus, als ob Sie bereits über diesen Link verbunden sind. Wenn das nicht der Fall ist, gab es einen Fehler (%@).";
@@ -2518,7 +2599,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japanische Benutzeroberfläche";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Beitreten";
/* No comment provided by engineer. */
@@ -2548,6 +2629,9 @@
/* No comment provided by engineer. */
"Keep" = "Behalten";
/* No comment provided by engineer. */
"Keep conversation" = "Unterhaltung behalten";
/* No comment provided by engineer. */
"Keep the app open to use it from desktop" = "Die App muss geöffnet bleiben, um sie vom Desktop aus nutzen zu können";
@@ -2569,7 +2653,7 @@
/* No comment provided by engineer. */
"Learn more" = "Mehr erfahren";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Verlassen";
/* No comment provided by engineer. */
@@ -2692,6 +2776,9 @@
/* No comment provided by engineer. */
"Menus" = "Menüs";
/* No comment provided by engineer. */
"message" = "Nachricht";
/* item status text */
"Message delivery error" = "Fehler bei der Nachrichtenzustellung";
@@ -2840,12 +2927,15 @@
"Multiple chat profiles" = "Mehrere Chat-Profile";
/* No comment provided by engineer. */
"mute" = "Stummschalten";
/* swipe action */
"Mute" = "Stummschalten";
/* No comment provided by engineer. */
"Muted when inactive!" = "Bei Inaktivität stummgeschaltet!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Name";
/* No comment provided by engineer. */
@@ -2872,6 +2962,9 @@
/* No comment provided by engineer. */
"New chat" = "Neuer Chat";
/* No comment provided by engineer. */
"New chat experience 🎉" = "Neue Chat-Erfahrung 🎉";
/* notification */
"New contact request" = "Neue Kontaktanfrage";
@@ -2890,6 +2983,9 @@
/* No comment provided by engineer. */
"New in %@" = "Neu in %@";
/* No comment provided by engineer. */
"New media options" = "Neue Medien-Optionen";
/* No comment provided by engineer. */
"New member role" = "Neue Mitgliedsrolle";
@@ -3018,6 +3114,9 @@
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**." = "Nur die Endgeräte speichern die Benutzerprofile, Kontakte, Gruppen und Nachrichten, welche über eine **2-Schichten Ende-zu-Ende-Verschlüsselung** gesendet werden.";
/* No comment provided by engineer. */
"Only delete conversation" = "Nur die Unterhaltung löschen";
/* No comment provided by engineer. */
"Only group owners can change group preferences." = "Gruppen-Präferenzen können nur von Gruppen-Eigentümern geändert werden.";
@@ -3174,6 +3273,12 @@
/* No comment provided by engineer. */
"PING interval" = "PING-Intervall";
/* No comment provided by engineer. */
"Play from the chat list." = "Direkt aus der Chat-Liste abspielen.";
/* No comment provided by engineer. */
"Please ask your contact to enable calls." = "Bitten Sie Ihren Kontakt darum, Anrufe zu aktivieren.";
/* No comment provided by engineer. */
"Please ask your contact to enable sending voice messages." = "Bitten Sie Ihren Kontakt darum, das Senden von Sprachnachrichten zu aktivieren.";
@@ -3354,10 +3459,13 @@
/* No comment provided by engineer. */
"Rate the app" = "Bewerten Sie die App";
/* No comment provided by engineer. */
"Reachable chat toolbar" = "Erreichbare Chat-Symbolleiste";
/* chat item menu */
"React…" = "Reagiere…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Gelesen";
/* No comment provided by engineer. */
@@ -3459,7 +3567,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Reduzierter Batterieverbrauch";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Ablehnen";
/* No comment provided by engineer. */
@@ -3540,6 +3649,9 @@
/* No comment provided by engineer. */
"Reset" = "Zurücksetzen";
/* No comment provided by engineer. */
"Reset all hints" = "Alle Hinweise zurücksetzen";
/* No comment provided by engineer. */
"Reset all statistics" = "Alle Statistiken zurücksetzen";
@@ -3693,6 +3805,9 @@
/* No comment provided by engineer. */
"Scan server QR code" = "Scannen Sie den QR-Code des Servers";
/* No comment provided by engineer. */
"search" = "Suchen";
/* No comment provided by engineer. */
"Search" = "Suche";
@@ -3777,6 +3892,9 @@
/* No comment provided by engineer. */
"Send live message" = "Live Nachricht senden";
/* No comment provided by engineer. */
"Send message to enable calls." = "Nachricht senden, um Anrufe zu aktivieren.";
/* No comment provided by engineer. */
"Send messages directly when IP address is protected and your or destination server does not support private routing." = "Nachrichten werden direkt versendet, wenn die IP-Adresse geschützt ist, und Ihr oder der Zielserver kein privates Routing unterstützt.";
@@ -3957,6 +4075,9 @@
/* No comment provided by engineer. */
"Share address with contacts?" = "Die Adresse mit Kontakten teilen?";
/* No comment provided by engineer. */
"Share from other apps." = "Aus anderen Apps heraus teilen.";
/* No comment provided by engineer. */
"Share link" = "Link teilen";
@@ -4380,9 +4501,15 @@
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "Um die Ende-zu-Ende-Verschlüsselung mit Ihrem Kontakt zu überprüfen, müssen Sie den Sicherheitscode in Ihren Apps vergleichen oder scannen.";
/* No comment provided by engineer. */
"Toggle chat list:" = "Chat-Liste umschalten:";
/* No comment provided by engineer. */
"Toggle incognito when connecting." = "Inkognito beim Verbinden einschalten.";
/* No comment provided by engineer. */
"Toolbar opacity" = "Deckkraft der Symbolleiste";
/* No comment provided by engineer. */
"Total" = "Summe aller Abonnements";
@@ -4431,7 +4558,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Unerwarteter Migrationsstatus";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Fav. entf.";
/* No comment provided by engineer. */
@@ -4486,12 +4613,15 @@
"Unlock app" = "App entsperren";
/* No comment provided by engineer. */
"unmute" = "Stummschaltung aufheben";
/* swipe action */
"Unmute" = "Stummschaltung aufheben";
/* No comment provided by engineer. */
"unprotected" = "Ungeschützt";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Ungelesen";
/* No comment provided by engineer. */
@@ -4578,6 +4708,9 @@
/* No comment provided by engineer. */
"Use the app while in the call." = "Die App kann während eines Anrufs genutzt werden.";
/* No comment provided by engineer. */
"Use the app with one hand." = "Die App mit einer Hand nutzen.";
/* No comment provided by engineer. */
"User profile" = "Benutzerprofil";
@@ -4632,6 +4765,9 @@
/* No comment provided by engineer. */
"Via secure quantum resistant protocol." = "Über ein sicheres quantenbeständiges Protokoll.";
/* No comment provided by engineer. */
"video" = "Video";
/* No comment provided by engineer. */
"Video call" = "Videoanruf";
@@ -4842,6 +4978,9 @@
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Sie können Anrufe ohne Geräte- und App-Authentifizierung vom Sperrbildschirm aus annehmen.";
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "Kann von Ihnen in den Erscheinungsbild-Einstellungen geändert werden.";
/* No comment provided by engineer. */
"You can create it later" = "Sie können dies später erstellen";
@@ -4863,6 +5002,9 @@
/* notification body */
"You can now chat with %@" = "Sie können nun Nachrichten an %@ versenden";
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "Sie können aus den archivierten Kontakten heraus Nachrichten an %@ versenden.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "Über die Geräte-Einstellungen können Sie die Benachrichtigungsvorschau im Sperrbildschirm erlauben.";
@@ -4878,6 +5020,9 @@
/* No comment provided by engineer. */
"You can start chat via app Settings / Database or by restarting the app" = "Sie können den Chat über die App-Einstellungen / Datenbank oder durch Neustart der App starten";
/* No comment provided by engineer. */
"You can still view conversation with %@ in the list of chats." = "Sie können in der Chatliste weiterhin die Unterhaltung mit %@ einsehen.";
/* No comment provided by engineer. */
"You can turn on SimpleX Lock via Settings." = "Sie können die SimpleX-Sperre über die Einstellungen aktivieren.";
@@ -4938,6 +5083,9 @@
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "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.";
/* No comment provided by engineer. */
"You need to allow your contact to call to be able to call them." = "Sie müssen Ihrem Kontakt Anrufe zu Ihnen erlauben, bevor Sie ihn selbst anrufen können.";
/* No comment provided by engineer. */
"You need to allow your contact to send voice messages to be able to send them." = "Sie müssen Ihrem Kontakt das Senden von Sprachnachrichten erlauben, um diese senden zu können.";
File diff suppressed because it is too large Load Diff
+18 -14
View File
@@ -278,7 +278,8 @@
"above, then choose:" = "edellä, valitse sitten:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Hyväksy";
/* No comment provided by engineer. */
@@ -287,7 +288,8 @@
/* notification body */
"Accept contact request from %@?" = "Hyväksy kontaktipyyntö %@:ltä?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Hyväksy tuntematon";
/* call status */
@@ -642,7 +644,7 @@
/* No comment provided by engineer. */
"Choose from library" = "Valitse kirjastosta";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Tyhjennä";
/* No comment provided by engineer. */
@@ -918,7 +920,8 @@
/* No comment provided by engineer. */
"default (yes)" = "oletusarvo (kyllä)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Poista";
/* No comment provided by engineer. */
@@ -1450,7 +1453,7 @@
/* No comment provided by engineer. */
"Fast and no wait until the sender is online!" = "Nopea ja ei odotusta, kunnes lähettäjä on online-tilassa!";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Suosikki";
/* No comment provided by engineer. */
@@ -1834,7 +1837,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japanilainen käyttöliittymä";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Liity";
/* No comment provided by engineer. */
@@ -1864,7 +1867,7 @@
/* No comment provided by engineer. */
"Learn more" = "Lue lisää";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Poistu";
/* No comment provided by engineer. */
@@ -2041,13 +2044,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "Useita keskusteluprofiileja";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "Mykistä";
/* No comment provided by engineer. */
"Muted when inactive!" = "Mykistetty ei-aktiivisena!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Nimi";
/* No comment provided by engineer. */
@@ -2403,7 +2406,7 @@
/* chat item menu */
"React…" = "Reagoi…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Lue";
/* No comment provided by engineer. */
@@ -2469,7 +2472,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Pienempi akun käyttö";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Hylkää";
/* No comment provided by engineer. */
@@ -3102,7 +3106,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Odottamaton siirtotila";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Epäsuotuisa.";
/* No comment provided by engineer. */
@@ -3141,10 +3145,10 @@
/* authentication reason */
"Unlock app" = "Avaa sovellus";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "Poista mykistys";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Lukematon";
/* No comment provided by engineer. */
+203 -25
View File
@@ -314,7 +314,7 @@
"A separate TCP connection will be used **for each contact and group member**.\n**Please note**: if you have many connections, your battery and traffic consumption can be substantially higher and some connections may fail." = "Une connexion TCP distincte sera utilisée **pour chaque contact et membre de groupe**.\n**Veuillez noter** : 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.";
/* No comment provided by engineer. */
"Abort" = "Annuler";
"Abort" = "Abandonner";
/* No comment provided by engineer. */
"Abort changing address" = "Annuler le changement d'adresse";
@@ -338,7 +338,8 @@
"Accent" = "Principale";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Accepter";
/* No comment provided by engineer. */
@@ -347,7 +348,8 @@
/* notification body */
"Accept contact request from %@?" = "Accepter la demande de contact de %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Accepter en incognito";
/* call status */
@@ -470,6 +472,9 @@
/* No comment provided by engineer. */
"Allow calls only if your contact allows them." = "Autoriser les appels que si votre contact les autorise.";
/* No comment provided by engineer. */
"Allow calls?" = "Autoriser les appels?";
/* No comment provided by engineer. */
"Allow disappearing messages only if your contact allows it to you." = "Autorise les messages éphémères seulement si votre contact vous lautorise.";
@@ -588,7 +593,13 @@
"Apply to" = "Appliquer à";
/* No comment provided by engineer. */
"Archive and upload" = "Archiver et transférer";
"Archive and upload" = "Archiver et téléverser";
/* No comment provided by engineer. */
"Archive contacts to chat later." = "Archiver les contacts pour discuter plus tard.";
/* No comment provided by engineer. */
"Archived contacts" = "Contacts archivés";
/* No comment provided by engineer. */
"Archiving database" = "Archivage de la base de données";
@@ -665,6 +676,9 @@
/* No comment provided by engineer. */
"Better messages" = "Meilleurs messages";
/* No comment provided by engineer. */
"Better networking" = "Meilleure gestion de réseau";
/* No comment provided by engineer. */
"Black" = "Noir";
@@ -698,6 +712,9 @@
/* No comment provided by engineer. */
"Blocked by admin" = "Bloqué par l'administrateur";
/* No comment provided by engineer. */
"Blur for better privacy." = "Rendez les images floues et protégez-les contre les regards indiscrets.";
/* No comment provided by engineer. */
"Blur media" = "Flouter les médias";
@@ -725,6 +742,9 @@
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Par profil de chat (par défaut) ou [par connexion](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
/* No comment provided by engineer. */
"call" = "appeler";
/* No comment provided by engineer. */
"Call already ended!" = "Appel déjà terminé !";
@@ -740,15 +760,27 @@
/* No comment provided by engineer. */
"Calls" = "Appels";
/* No comment provided by engineer. */
"Calls prohibited!" = "Les appels ne sont pas autorisés!";
/* No comment provided by engineer. */
"Camera not available" = "Caméra non disponible";
/* No comment provided by engineer. */
"Can't call contact" = "Impossible d'appeler le contact";
/* No comment provided by engineer. */
"Can't call member" = "Impossible d'appeler le membre";
/* No comment provided by engineer. */
"Can't invite contact!" = "Impossible d'inviter le contact!";
/* No comment provided by engineer. */
"Can't invite contacts!" = "Impossible d'inviter les contacts !";
/* No comment provided by engineer. */
"Can't message member" = "Impossible d'envoyer un message à ce membre";
/* No comment provided by engineer. */
"Cancel" = "Annuler";
@@ -834,6 +866,9 @@
/* No comment provided by engineer. */
"Chat database deleted" = "Base de données du chat supprimée";
/* No comment provided by engineer. */
"Chat database exported" = "Exportation de la base de données des discussions";
/* No comment provided by engineer. */
"Chat database imported" = "Base de données du chat importée";
@@ -846,6 +881,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Le chat est arrêté. Si vous avez déjà utilisé cette base de données sur un autre appareil, vous devez la transférer à nouveau avant de démarrer le chat.";
/* No comment provided by engineer. */
"Chat list" = "Liste de discussion";
/* No comment provided by engineer. */
"Chat migrated!" = "Messagerie transférée!";
@@ -882,7 +920,7 @@
/* No comment provided by engineer. */
"Chunks uploaded" = "Chunks téléversés";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Effacer";
/* No comment provided by engineer. */
@@ -897,6 +935,9 @@
/* No comment provided by engineer. */
"Clear verification" = "Retirer la vérification";
/* No comment provided by engineer. */
"Color chats with the new themes." = "Colorez vos discussions avec les nouveaux thèmes.";
/* No comment provided by engineer. */
"Color mode" = "Mode de couleur";
@@ -913,7 +954,7 @@
"complete" = "complet";
/* No comment provided by engineer. */
"Completed" = "Complété";
"Completed" = "Complétées";
/* No comment provided by engineer. */
"Configure ICE servers" = "Configurer les serveurs ICE";
@@ -924,6 +965,9 @@
/* No comment provided by engineer. */
"Confirm" = "Confirmer";
/* No comment provided by engineer. */
"Confirm contact deletion?" = "Confirmer la suppression du contact?";
/* No comment provided by engineer. */
"Confirm database upgrades" = "Confirmer la mise à niveau de la base de données";
@@ -963,6 +1007,9 @@
/* No comment provided by engineer. */
"connect to SimpleX Chat developers." = "se connecter aux developpeurs de SimpleX Chat.";
/* No comment provided by engineer. */
"Connect to your friends faster." = "Connectez-vous à vos amis plus rapidement.";
/* No comment provided by engineer. */
"Connect to yourself?" = "Se connecter à soi-même ?";
@@ -1029,6 +1076,9 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Connexion au serveur… (erreur : %@)";
/* No comment provided by engineer. */
"Connecting to contact, please wait or check later!" = "Connexion au contact, veuillez patienter ou vérifier plus tard!";
/* No comment provided by engineer. */
"Connecting to desktop" = "Connexion au bureau";
@@ -1038,6 +1088,9 @@
/* No comment provided by engineer. */
"Connection" = "Connexion";
/* No comment provided by engineer. */
"Connection and servers status." = "État de la connexion et des serveurs.";
/* No comment provided by engineer. */
"Connection error" = "Erreur de connexion";
@@ -1077,6 +1130,9 @@
/* No comment provided by engineer. */
"Contact already exists" = "Contact déjà existant";
/* No comment provided by engineer. */
"Contact deleted!" = "Contact supprimé !";
/* No comment provided by engineer. */
"contact has e2e encryption" = "Ce contact a le chiffrement de bout en bout";
@@ -1089,12 +1145,18 @@
/* notification */
"Contact is connected" = "Le contact est connecté";
/* No comment provided by engineer. */
"Contact is deleted." = "Le contact est supprimé.";
/* No comment provided by engineer. */
"Contact name" = "Nom du contact";
/* No comment provided by engineer. */
"Contact preferences" = "Préférences de contact";
/* No comment provided by engineer. */
"Contact will be deleted - this cannot be undone!" = "Le contact sera supprimé - il n'est pas possible de revenir en arrière!";
/* No comment provided by engineer. */
"Contacts" = "Contacts";
@@ -1104,6 +1166,9 @@
/* No comment provided by engineer. */
"Continue" = "Continuer";
/* No comment provided by engineer. */
"Conversation deleted!" = "Conversation supprimée!";
/* No comment provided by engineer. */
"Copy" = "Copier";
@@ -1156,7 +1221,7 @@
"Create your profile" = "Créez votre profil";
/* No comment provided by engineer. */
"Created" = "Créé";
"Created" = "Créées";
/* No comment provided by engineer. */
"Created at" = "Créé à";
@@ -1284,7 +1349,8 @@
/* No comment provided by engineer. */
"default (yes)" = "par défaut (oui)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Supprimer";
/* No comment provided by engineer. */
@@ -1326,6 +1392,9 @@
/* No comment provided by engineer. */
"Delete contact" = "Supprimer le contact";
/* No comment provided by engineer. */
"Delete contact?" = "Supprimer le contact?";
/* No comment provided by engineer. */
"Delete database" = "Supprimer la base de données";
@@ -1389,14 +1458,20 @@
/* server test step */
"Delete queue" = "Supprimer la file d'attente";
/* No comment provided by engineer. */
"Delete up to 20 messages at once." = "Supprimez jusqu'à 20 messages à la fois.";
/* No comment provided by engineer. */
"Delete user profile?" = "Supprimer le profil utilisateur ?";
/* No comment provided by engineer. */
"Delete without notification" = "Supprimer sans notification";
/* deleted chat item */
"deleted" = "supprimé";
/* No comment provided by engineer. */
"Deleted" = "Supprimé";
"Deleted" = "Supprimées";
/* No comment provided by engineer. */
"Deleted at" = "Supprimé à";
@@ -1452,6 +1527,9 @@
/* No comment provided by engineer. */
"Develop" = "Développer";
/* No comment provided by engineer. */
"Developer options" = "Options pour les développeurs";
/* No comment provided by engineer. */
"Developer tools" = "Outils du développeur";
@@ -1999,7 +2077,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Connexion plus rapide et messages plus fiables.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Favoris";
/* No comment provided by engineer. */
@@ -2458,6 +2536,9 @@
/* group name */
"invitation to group %@" = "invitation au groupe %@";
/* No comment provided by engineer. */
"invite" = "inviter";
/* No comment provided by engineer. */
"Invite friends" = "Inviter des amis";
@@ -2503,6 +2584,9 @@
/* No comment provided by engineer. */
"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Cela peut arriver quand :\n1. Les messages ont expiré dans le client expéditeur après 2 jours ou sur le serveur après 30 jours.\n2. Le déchiffrement du message a échoué, car vous ou votre contact avez utilisé une ancienne sauvegarde de base de données.\n3. La connexion a été compromise.";
/* No comment provided by engineer. */
"It protects your IP address and connections." = "Il protège votre adresse IP et vos connexions.";
/* No comment provided by engineer. */
"It seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Il semblerait que vous êtes déjà connecté via ce lien. Si ce n'est pas le cas, il y a eu une erreur (%@).";
@@ -2515,7 +2599,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Interface en japonais";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Rejoindre";
/* No comment provided by engineer. */
@@ -2545,6 +2629,9 @@
/* No comment provided by engineer. */
"Keep" = "Conserver";
/* No comment provided by engineer. */
"Keep conversation" = "Garder la conversation";
/* No comment provided by engineer. */
"Keep the app open to use it from desktop" = "Garder l'application ouverte pour l'utiliser depuis le bureau";
@@ -2566,7 +2653,7 @@
/* No comment provided by engineer. */
"Learn more" = "En savoir plus";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Quitter";
/* No comment provided by engineer. */
@@ -2656,6 +2743,9 @@
/* No comment provided by engineer. */
"Max 30 seconds, received instantly." = "Max 30 secondes, réception immédiate.";
/* No comment provided by engineer. */
"Media & file servers" = "Serveurs de fichiers et de médias";
/* blur media */
"Medium" = "Modéré";
@@ -2686,6 +2776,9 @@
/* No comment provided by engineer. */
"Menus" = "Menus";
/* No comment provided by engineer. */
"message" = "message";
/* item status text */
"Message delivery error" = "Erreur de distribution du message";
@@ -2722,6 +2815,9 @@
/* No comment provided by engineer. */
"Message reception" = "Réception de message";
/* No comment provided by engineer. */
"Message servers" = "Serveurs de messages";
/* No comment provided by engineer. */
"Message source remains private." = "La source du message reste privée.";
@@ -2831,12 +2927,15 @@
"Multiple chat profiles" = "Différents profils de chat";
/* No comment provided by engineer. */
"mute" = "muet";
/* swipe action */
"Mute" = "Muet";
/* No comment provided by engineer. */
"Muted when inactive!" = "Mute en cas d'inactivité !";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Nom";
/* No comment provided by engineer. */
@@ -2863,6 +2962,9 @@
/* No comment provided by engineer. */
"New chat" = "Nouveau chat";
/* No comment provided by engineer. */
"New chat experience 🎉" = "Nouvelle expérience de discussion 🎉";
/* notification */
"New contact request" = "Nouvelle demande de contact";
@@ -2881,6 +2983,9 @@
/* No comment provided by engineer. */
"New in %@" = "Nouveautés de la %@";
/* No comment provided by engineer. */
"New media options" = "Nouvelles options de médias";
/* No comment provided by engineer. */
"New member role" = "Nouveau rôle";
@@ -3009,6 +3114,9 @@
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**." = "Seuls les appareils clients stockent les profils des utilisateurs, les contacts, les groupes et les messages envoyés avec un **chiffrement de bout en bout à deux couches**.";
/* No comment provided by engineer. */
"Only delete conversation" = "Ne supprimer que la conversation";
/* No comment provided by engineer. */
"Only group owners can change group preferences." = "Seuls les propriétaires du groupe peuvent modifier les préférences du groupe.";
@@ -3165,6 +3273,12 @@
/* No comment provided by engineer. */
"PING interval" = "Intervalle de PING";
/* No comment provided by engineer. */
"Play from the chat list." = "Aperçu depuis la liste de conversation.";
/* No comment provided by engineer. */
"Please ask your contact to enable calls." = "Veuillez demander à votre contact d'autoriser les appels.";
/* No comment provided by engineer. */
"Please ask your contact to enable sending voice messages." = "Veuillez demander à votre contact de permettre l'envoi de messages vocaux.";
@@ -3345,10 +3459,13 @@
/* No comment provided by engineer. */
"Rate the app" = "Évaluer l'app";
/* No comment provided by engineer. */
"Reachable chat toolbar" = "Barre d'outils accessible";
/* chat item menu */
"React…" = "Réagissez…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Lire";
/* No comment provided by engineer. */
@@ -3450,7 +3567,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Réduction de la consommation de batterie";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Rejeter";
/* No comment provided by engineer. */
@@ -3531,6 +3649,9 @@
/* No comment provided by engineer. */
"Reset" = "Réinitialisation";
/* No comment provided by engineer. */
"Reset all hints" = "Rétablir tous les conseils";
/* No comment provided by engineer. */
"Reset all statistics" = "Réinitialiser toutes les statistiques";
@@ -3606,6 +3727,9 @@
/* No comment provided by engineer. */
"Save and notify group members" = "Enregistrer et en informer les membres du groupe";
/* No comment provided by engineer. */
"Save and reconnect" = "Sauvegarder et se reconnecter";
/* No comment provided by engineer. */
"Save and update group profile" = "Enregistrer et mettre à jour le profil du groupe";
@@ -3681,6 +3805,9 @@
/* No comment provided by engineer. */
"Scan server QR code" = "Scanner un code QR de serveur";
/* No comment provided by engineer. */
"search" = "rechercher";
/* No comment provided by engineer. */
"Search" = "Rechercher";
@@ -3706,7 +3833,7 @@
"Secure queue" = "File d'attente sécurisée";
/* No comment provided by engineer. */
"Secured" = "Sécurisé";
"Secured" = "Sécurisées";
/* No comment provided by engineer. */
"Security assessment" = "Évaluation de sécurité";
@@ -3760,11 +3887,14 @@
"Send errors" = "Erreurs d'envoi";
/* No comment provided by engineer. */
"Send link previews" = "Envoi d'aperçus de liens";
"Send link previews" = "Aperçu des liens";
/* No comment provided by engineer. */
"Send live message" = "Envoyer un message dynamique";
/* No comment provided by engineer. */
"Send message to enable calls." = "Envoyer un message pour activer les appels.";
/* No comment provided by engineer. */
"Send messages directly when IP address is protected and your or destination server does not support private routing." = "Envoyer les messages de manière directe lorsque l'adresse IP est protégée et que votre serveur ou le serveur de destination ne prend pas en charge le routage privé.";
@@ -3865,7 +3995,7 @@
"Server requires authorization to create queues, check password" = "Le serveur requiert une autorisation pour créer des files d'attente, vérifiez le mot de passe";
/* server test error */
"Server requires authorization to upload, check password" = "Le serveur requiert une autorisation pour uploader, vérifiez le mot de passe";
"Server requires authorization to upload, check password" = "Le serveur requiert une autorisation pour téléverser, vérifiez le mot de passe";
/* No comment provided by engineer. */
"Server test failed!" = "Échec du test du serveur !";
@@ -3945,6 +4075,9 @@
/* No comment provided by engineer. */
"Share address with contacts?" = "Partager l'adresse avec vos contacts ?";
/* No comment provided by engineer. */
"Share from other apps." = "Partager depuis d'autres applications.";
/* No comment provided by engineer. */
"Share link" = "Partager le lien";
@@ -3967,7 +4100,7 @@
"Show developer options" = "Afficher les options pour les développeurs";
/* No comment provided by engineer. */
"Show last messages" = "Voir les derniers messages";
"Show last messages" = "Aperçu des derniers messages";
/* No comment provided by engineer. */
"Show message status" = "Afficher le statut du message";
@@ -3976,7 +4109,7 @@
"Show percentage" = "Afficher le pourcentage";
/* No comment provided by engineer. */
"Show preview" = "Afficher l'aperçu";
"Show preview" = "Aperçu affiché";
/* No comment provided by engineer. */
"Show QR code" = "Afficher le code QR";
@@ -4050,9 +4183,15 @@
/* blur media */
"Soft" = "Léger";
/* No comment provided by engineer. */
"Some file(s) were not exported:" = "Certains fichiers n'ont pas été exportés:";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Des erreurs non fatales se sont produites lors de l'importation - vous pouvez consulter la console de chat pour plus de détails.";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "L'importation a entraîné des erreurs non fatales:";
/* notification title */
"Somebody" = "Quelqu'un";
@@ -4126,7 +4265,7 @@
"Submit" = "Soumettre";
/* No comment provided by engineer. */
"Subscribed" = "Inscrit";
"Subscribed" = "Inscriptions";
/* No comment provided by engineer. */
"Subscription errors" = "Erreurs d'inscription";
@@ -4167,6 +4306,9 @@
/* No comment provided by engineer. */
"Tap to scan" = "Appuyez pour scanner";
/* No comment provided by engineer. */
"TCP connection" = "Connexion TCP";
/* No comment provided by engineer. */
"TCP connection timeout" = "Délai de connexion TCP";
@@ -4359,9 +4501,15 @@
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "Pour vérifier le chiffrement de bout en bout avec votre contact, comparez (ou scannez) le code sur vos appareils.";
/* No comment provided by engineer. */
"Toggle chat list:" = "Afficher la liste des conversations:";
/* No comment provided by engineer. */
"Toggle incognito when connecting." = "Basculer en mode incognito lors de la connexion.";
/* No comment provided by engineer. */
"Toolbar opacity" = "Opacité de la barre d'outils";
/* No comment provided by engineer. */
"Total" = "Total";
@@ -4410,7 +4558,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "État de la migration inattendu";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Unfav.";
/* No comment provided by engineer. */
@@ -4465,12 +4613,15 @@
"Unlock app" = "Déverrouiller l'app";
/* No comment provided by engineer. */
"unmute" = "démuter";
/* swipe action */
"Unmute" = "Démute";
/* No comment provided by engineer. */
"unprotected" = "non protégé";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Non lu";
/* No comment provided by engineer. */
@@ -4485,6 +4636,9 @@
/* No comment provided by engineer. */
"Update network settings?" = "Mettre à jour les paramètres réseau ?";
/* No comment provided by engineer. */
"Update settings?" = "Mettre à jour les paramètres?";
/* rcv group event chat item */
"updated group profile" = "mise à jour du profil de groupe";
@@ -4504,7 +4658,7 @@
"Upload failed" = "Échec de l'envoi";
/* server test step */
"Upload file" = "Transférer le fichier";
"Upload file" = "Téléverser le fichier";
/* No comment provided by engineer. */
"Uploaded" = "Téléversé";
@@ -4554,6 +4708,9 @@
/* No comment provided by engineer. */
"Use the app while in the call." = "Utiliser l'application pendant l'appel.";
/* No comment provided by engineer. */
"Use the app with one hand." = "Utiliser l'application d'une main.";
/* No comment provided by engineer. */
"User profile" = "Profil d'utilisateur";
@@ -4608,6 +4765,9 @@
/* No comment provided by engineer. */
"Via secure quantum resistant protocol." = "Via un protocole sécurisé de cryptographie post-quantique.";
/* No comment provided by engineer. */
"video" = "vidéo";
/* No comment provided by engineer. */
"Video call" = "Appel vidéo";
@@ -4615,7 +4775,7 @@
"video call (not e2e encrypted)" = "appel vidéo (sans chiffrement)";
/* No comment provided by engineer. */
"Video will be received when your contact completes uploading it." = "La vidéo ne sera reçue que lorsque votre contact aura fini de la transférer.";
"Video will be received when your contact completes uploading it." = "La vidéo ne sera reçue que lorsque votre contact aura fini la mettre en ligne.";
/* No comment provided by engineer. */
"Video will be received when your contact is online, please wait or check later!" = "La vidéo ne sera reçue que lorsque votre contact sera en ligne. Veuillez patienter ou vérifier plus tard !";
@@ -4818,6 +4978,9 @@
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Vous pouvez accepter des appels à partir de l'écran de verrouillage, sans authentification de l'appareil ou de l'application.";
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "Vous pouvez choisir de le modifier dans les paramètres d'apparence.";
/* No comment provided by engineer. */
"You can create it later" = "Vous pouvez la créer plus tard";
@@ -4839,6 +5002,9 @@
/* notification body */
"You can now chat with %@" = "Vous pouvez maintenant envoyer des messages à %@";
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "Vous pouvez envoyer des messages à %@ à partir des contacts archivés.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "Vous pouvez configurer l'aperçu des notifications sur l'écran de verrouillage via les paramètres.";
@@ -4854,6 +5020,9 @@
/* No comment provided by engineer. */
"You can start chat via app Settings / Database or by restarting the app" = "Vous pouvez lancer le chat via Paramètres / Base de données ou en redémarrant l'app";
/* No comment provided by engineer. */
"You can still view conversation with %@ in the list of chats." = "Vous pouvez toujours voir la conversation avec %@ dans la liste des discussions.";
/* No comment provided by engineer. */
"You can turn on SimpleX Lock via Settings." = "Vous pouvez activer SimpleX Lock dans les Paramètres.";
@@ -4905,9 +5074,18 @@
/* snd group event chat item */
"you left" = "vous avez quitté";
/* No comment provided by engineer. */
"You may migrate the exported database." = "Vous pouvez migrer la base de données exportée.";
/* No comment provided by engineer. */
"You may save the exported archive." = "Vous pouvez enregistrer l'archive exportée.";
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "Vous devez utiliser la version la plus récente de votre base de données de chat sur un seul appareil UNIQUEMENT, sinon vous risquez de ne plus recevoir les messages de certains contacts.";
/* No comment provided by engineer. */
"You need to allow your contact to call to be able to call them." = "Vous devez autoriser votre contact à appeler pour pouvoir l'appeler.";
/* No comment provided by engineer. */
"You need to allow your contact to send voice messages to be able to send them." = "Vous devez autoriser votre contact à envoyer des messages vocaux pour pouvoir en envoyer.";
+182 -34
View File
@@ -209,10 +209,10 @@
"%lld members" = "%lld tag";
/* No comment provided by engineer. */
"%lld messages blocked" = "%lld üzenet blokkolva";
"%lld messages blocked" = "%lld üzenet letiltva";
/* No comment provided by engineer. */
"%lld messages blocked by admin" = "%lld üzenet blokkolva az admin által";
"%lld messages blocked by admin" = "%lld üzenet letiltva az admin által";
/* No comment provided by engineer. */
"%lld messages marked deleted" = "%lld törlésre megjelölt üzenet";
@@ -338,7 +338,8 @@
"Accent" = "Kiemelés";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Elfogadás";
/* No comment provided by engineer. */
@@ -347,7 +348,8 @@
/* notification body */
"Accept contact request from %@?" = "Elfogadja %@ kapcsolat kérését?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Fogadás inkognítóban";
/* call status */
@@ -470,6 +472,9 @@
/* No comment provided by engineer. */
"Allow calls only if your contact allows them." = "A hívások kezdeményezése kizárólag abban az esetben van engedélyezve, ha az ismerőse is engedélyezi.";
/* No comment provided by engineer. */
"Allow calls?" = "Hívások engedélyezése?";
/* No comment provided by engineer. */
"Allow disappearing messages only if your contact allows it to you." = "Az eltűnő üzenetek küldése kizárólag abban az esetben van engedélyezve, ha az ismerőse is engedélyezi az ön számára.";
@@ -590,6 +595,12 @@
/* No comment provided by engineer. */
"Archive and upload" = "Archiválás és feltöltés";
/* No comment provided by engineer. */
"Archive contacts to chat later." = "Ismerősök archiválása a későbbi csevegéshez.";
/* No comment provided by engineer. */
"Archived contacts" = "Archivált ismerősök";
/* No comment provided by engineer. */
"Archiving database" = "Adatbázis archiválása";
@@ -665,32 +676,35 @@
/* No comment provided by engineer. */
"Better messages" = "Jobb üzenetek";
/* No comment provided by engineer. */
"Better networking" = "Jobb hálózatkezelés";
/* No comment provided by engineer. */
"Black" = "Fekete";
/* No comment provided by engineer. */
"Block" = "Blokkolás";
"Block" = "Letiltás";
/* No comment provided by engineer. */
"Block for all" = "Letiltás mindenki számára";
/* No comment provided by engineer. */
"Block group members" = "Csoporttagok blokkolása";
"Block group members" = "Csoporttagok letiltása";
/* No comment provided by engineer. */
"Block member" = "Tag blokkolása";
"Block member" = "Tag letiltása";
/* No comment provided by engineer. */
"Block member for all?" = "Mindenki számára letiltja ezt a tagot?";
/* No comment provided by engineer. */
"Block member?" = "Tag blokkolása?";
"Block member?" = "Tag letiltása?";
/* marked deleted chat item preview text */
"blocked" = "blokkolva";
"blocked" = "letiltva";
/* rcv group event chat item */
"blocked %@" = "letiltotta őt: %@";
"blocked %@" = "letiltotta %@-t";
/* marked deleted chat item preview text */
"blocked by admin" = "letiltva az admin által";
@@ -698,6 +712,9 @@
/* No comment provided by engineer. */
"Blocked by admin" = "Letiltva az admin által";
/* No comment provided by engineer. */
"Blur for better privacy." = "Elhomályosítás a jobb adatvédelemért.";
/* No comment provided by engineer. */
"Blur media" = "Média elhomályosítása";
@@ -725,6 +742,9 @@
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Csevegési profil (alapértelmezett) vagy [kapcsolat alapján] (https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BÉTA).";
/* No comment provided by engineer. */
"call" = "hívás";
/* No comment provided by engineer. */
"Call already ended!" = "A hívás már befejeződött!";
@@ -740,15 +760,27 @@
/* No comment provided by engineer. */
"Calls" = "Hívások";
/* No comment provided by engineer. */
"Calls prohibited!" = "A hívások le vannak tiltva!";
/* No comment provided by engineer. */
"Camera not available" = "A kamera nem elérhető";
/* No comment provided by engineer. */
"Can't call contact" = "Nem lehet felhívni az ismerőst";
/* No comment provided by engineer. */
"Can't call member" = "Nem lehet felhívni a tagot";
/* No comment provided by engineer. */
"Can't invite contact!" = "Ismerősök meghívása le van tiltva!";
/* No comment provided by engineer. */
"Can't invite contacts!" = "Ismerősök meghívása nem lehetséges!";
/* No comment provided by engineer. */
"Can't message member" = "Nem lehet üzenetet küldeni a tagnak";
/* No comment provided by engineer. */
"Cancel" = "Mégse";
@@ -849,6 +881,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "A csevegés leállt. Ha már használta ezt az adatbázist egy másik eszközön, úgy visszaállítás szükséges a csevegés megkezdése előtt.";
/* No comment provided by engineer. */
"Chat list" = "Csevegőlista";
/* No comment provided by engineer. */
"Chat migrated!" = "A csevegés átköltöztetve!";
@@ -885,7 +920,7 @@
/* No comment provided by engineer. */
"Chunks uploaded" = "Feltöltött fájltöredékek";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Kiürítés";
/* No comment provided by engineer. */
@@ -900,6 +935,9 @@
/* No comment provided by engineer. */
"Clear verification" = "Hitelesítés törlése";
/* No comment provided by engineer. */
"Color chats with the new themes." = "Csevegések színezése új témákkal.";
/* No comment provided by engineer. */
"Color mode" = "Színmód";
@@ -927,6 +965,9 @@
/* No comment provided by engineer. */
"Confirm" = "Megerősítés";
/* No comment provided by engineer. */
"Confirm contact deletion?" = "Biztosan törli az ismerőst?";
/* No comment provided by engineer. */
"Confirm database upgrades" = "Adatbázis fejlesztésének megerősítése";
@@ -966,6 +1007,9 @@
/* No comment provided by engineer. */
"connect to SimpleX Chat developers." = "Kapcsolódás a SimpleX Chat fejlesztőkhöz.";
/* No comment provided by engineer. */
"Connect to your friends faster." = "Kapcsolódjon gyorsabban az ismerőseihez.";
/* No comment provided by engineer. */
"Connect to yourself?" = "Kapcsolódás saját magához?";
@@ -1032,6 +1076,9 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Kapcsolódás a kiszolgálóhoz... (hiba: %@)";
/* No comment provided by engineer. */
"Connecting to contact, please wait or check later!" = "Kapcsolódás az ismerőshöz, várjon vagy ellenőrizze később!";
/* No comment provided by engineer. */
"Connecting to desktop" = "Kapcsolódás a számítógéphez";
@@ -1041,6 +1088,9 @@
/* No comment provided by engineer. */
"Connection" = "Kapcsolat";
/* No comment provided by engineer. */
"Connection and servers status." = "Kapcsolatok- és kiszolgálók állapotának megjelenítése.";
/* No comment provided by engineer. */
"Connection error" = "Kapcsolódási hiba";
@@ -1080,6 +1130,9 @@
/* No comment provided by engineer. */
"Contact already exists" = "Létező ismerős";
/* No comment provided by engineer. */
"Contact deleted!" = "Ismerős törölve!";
/* No comment provided by engineer. */
"contact has e2e encryption" = "az ismerősnél az e2e titkosítás elérhető";
@@ -1092,12 +1145,18 @@
/* notification */
"Contact is connected" = "Ismerőse kapcsolódott";
/* No comment provided by engineer. */
"Contact is deleted." = "Törölt ismerős.";
/* No comment provided by engineer. */
"Contact name" = "Ismerős neve";
/* No comment provided by engineer. */
"Contact preferences" = "Ismerős beállításai";
/* No comment provided by engineer. */
"Contact will be deleted - this cannot be undone!" = "Az ismerős törlésre fog kerülni - ez a művelet nem vonható vissza!";
/* No comment provided by engineer. */
"Contacts" = "Ismerősök";
@@ -1107,6 +1166,9 @@
/* No comment provided by engineer. */
"Continue" = "Folytatás";
/* No comment provided by engineer. */
"Conversation deleted!" = "Beszélgetés törölve!";
/* No comment provided by engineer. */
"Copy" = "Másolás";
@@ -1287,7 +1349,8 @@
/* No comment provided by engineer. */
"default (yes)" = "alapértelmezett (igen)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Törlés";
/* No comment provided by engineer. */
@@ -1329,6 +1392,9 @@
/* No comment provided by engineer. */
"Delete contact" = "Ismerős törlése";
/* No comment provided by engineer. */
"Delete contact?" = "Ismerős törlése?";
/* No comment provided by engineer. */
"Delete database" = "Adatbázis törlése";
@@ -1392,9 +1458,15 @@
/* server test step */
"Delete queue" = "Várólista törlése";
/* No comment provided by engineer. */
"Delete up to 20 messages at once." = "Legfeljebb 20 üzenet törlése egyszerre.";
/* No comment provided by engineer. */
"Delete user profile?" = "Felhasználói profil törlése?";
/* No comment provided by engineer. */
"Delete without notification" = "Törlés értesítés nélkül";
/* deleted chat item */
"deleted" = "törölve";
@@ -1455,6 +1527,9 @@
/* No comment provided by engineer. */
"Develop" = "Fejlesztés";
/* No comment provided by engineer. */
"Developer options" = "Fejlesztői beállítások";
/* No comment provided by engineer. */
"Developer tools" = "Fejlesztői eszközök";
@@ -1924,7 +1999,7 @@
"Error switching profile!" = "Hiba a profil váltásakor!";
/* No comment provided by engineer. */
"Error synchronizing connection" = "Hiba a kapcsolat szinkronizálása során";
"Error synchronizing connection" = "Hiba a kapcsolat szinkronizálása közben";
/* No comment provided by engineer. */
"Error updating group link" = "Hiba a csoport hivatkozás frissítésekor";
@@ -2002,7 +2077,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Gyorsabb csatlakozás és megbízhatóbb üzenet kézbesítés.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Kedvenc";
/* No comment provided by engineer. */
@@ -2288,7 +2363,7 @@
"ICE servers (one per line)" = "ICE-kiszolgálók (soronként egy)";
/* No comment provided by engineer. */
"If you can't meet in person, show QR code in a video call, or share the link." = "Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás során, vagy ossza meg a hivatkozást.";
"If you can't meet in person, show QR code in a video call, or share the link." = "Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás közben, vagy ossza meg a hivatkozást.";
/* No comment provided by engineer. */
"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat véglegesen törlődik!";
@@ -2461,6 +2536,9 @@
/* group name */
"invitation to group %@" = "meghívás a(z) %@ csoportba";
/* No comment provided by engineer. */
"invite" = "meghívás";
/* No comment provided by engineer. */
"Invite friends" = "Barátok meghívása";
@@ -2506,6 +2584,9 @@
/* No comment provided by engineer. */
"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Ez akkor fordulhat elő, ha:\n1. Az üzenetek 2 nap után, vagy a kiszolgálón 30 nap után lejártak.\n2. Az üzenet visszafejtése sikertelen volt, mert vagy az ismerőse régebbi adatbázis biztonsági mentést használt.\n3. A kapcsolat sérült.";
/* No comment provided by engineer. */
"It protects your IP address and connections." = "Védi az IP-címét és a kapcsolatokat.";
/* No comment provided by engineer. */
"It seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Úgy tűnik, már kapcsolódott ezen a hivatkozáson keresztül. Ha ez nem így van, akkor hiba történt (%@).";
@@ -2518,7 +2599,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japán kezelőfelület";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Csatlakozás";
/* No comment provided by engineer. */
@@ -2548,6 +2629,9 @@
/* No comment provided by engineer. */
"Keep" = "Megtart";
/* No comment provided by engineer. */
"Keep conversation" = "Beszélgetés megtartása";
/* No comment provided by engineer. */
"Keep the app open to use it from desktop" = "A számítógépről való használathoz tartsd nyitva az alkalmazást";
@@ -2569,7 +2653,7 @@
/* No comment provided by engineer. */
"Learn more" = "Tudjon meg többet";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Elhagyás";
/* No comment provided by engineer. */
@@ -2692,6 +2776,9 @@
/* No comment provided by engineer. */
"Menus" = "Menük";
/* No comment provided by engineer. */
"message" = "üzenet";
/* item status text */
"Message delivery error" = "Üzenetkézbesítési hiba";
@@ -2840,12 +2927,15 @@
"Multiple chat profiles" = "Több csevegőprofil";
/* No comment provided by engineer. */
"Mute" = "Elnémítás";
"mute" = "némítás";
/* swipe action */
"Mute" = "Némítás";
/* No comment provided by engineer. */
"Muted when inactive!" = "Némítás, ha inaktív!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Név";
/* No comment provided by engineer. */
@@ -2872,6 +2962,9 @@
/* No comment provided by engineer. */
"New chat" = "Új beszélgetés";
/* No comment provided by engineer. */
"New chat experience 🎉" = "Új csevegési élmény 🎉";
/* notification */
"New contact request" = "Új kapcsolattartási kérelem";
@@ -2890,6 +2983,9 @@
/* No comment provided by engineer. */
"New in %@" = "Újdonságok a(z) %@ verzióban";
/* No comment provided by engineer. */
"New media options" = "Új médiabeállítások";
/* No comment provided by engineer. */
"New member role" = "Új tag szerepköre";
@@ -3018,6 +3114,9 @@
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**." = "Csak a klienseszközök tárolják a felhasználói profilokat, névjegyeket, csoportokat és a **2 rétegű végponttól-végpontig titkosítással** küldött üzeneteket.";
/* No comment provided by engineer. */
"Only delete conversation" = "Csak a beszélgetés törlése";
/* No comment provided by engineer. */
"Only group owners can change group preferences." = "Csak a csoporttulajdonosok módosíthatják a csoportbeállításokat.";
@@ -3174,6 +3273,12 @@
/* No comment provided by engineer. */
"PING interval" = "PING időköze";
/* No comment provided by engineer. */
"Play from the chat list." = "Lejátszás a csevegési listából.";
/* No comment provided by engineer. */
"Please ask your contact to enable calls." = "Kérje meg az ismerősét, hogy engedélyezze a hívásokat.";
/* No comment provided by engineer. */
"Please ask your contact to enable sending voice messages." = "Ismerős felkérése, hogy engedélyezze a hangüzenetek küldését.";
@@ -3325,7 +3430,7 @@
"Protect your chat profiles with a password!" = "Csevegési profiljok védelme jelszóval!";
/* No comment provided by engineer. */
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Védje IP-címét az ismerősei által kiválasztott üzenetküldő átjátszókkal szemben.\nEngedélyezze a beállításokban a *Hálózat és kiszolgálók* menüpontban.";
"Protect your IP address from the messaging relays chosen by your contacts.\nEnable in *Network & servers* settings." = "Védje IP-címét az ismerősei által kiválasztott üzenetküldő átjátszókkal szemben.\nEngedélyezze a Beállítások / Hálózat és kiszolgálók menüben.";
/* No comment provided by engineer. */
"Protocol timeout" = "Protokoll időtúllépés";
@@ -3354,10 +3459,13 @@
/* No comment provided by engineer. */
"Rate the app" = "Értékelje az alkalmazást";
/* No comment provided by engineer. */
"Reachable chat toolbar" = "Könnyen elérhető eszköztár";
/* chat item menu */
"React…" = "Reagálj…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Olvasd el";
/* No comment provided by engineer. */
@@ -3459,7 +3567,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Csökkentett akkumulátorhasználat";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Elutasítás";
/* No comment provided by engineer. */
@@ -3540,6 +3649,9 @@
/* No comment provided by engineer. */
"Reset" = "Alaphelyzetbe állítás";
/* No comment provided by engineer. */
"Reset all hints" = "Tippek visszaállítása";
/* No comment provided by engineer. */
"Reset all statistics" = "Minden statisztika visszaállítása";
@@ -3693,6 +3805,9 @@
/* No comment provided by engineer. */
"Scan server QR code" = "A kiszolgáló QR-kódjának beolvasása";
/* No comment provided by engineer. */
"search" = "keresés";
/* No comment provided by engineer. */
"Search" = "Keresés";
@@ -3777,6 +3892,9 @@
/* No comment provided by engineer. */
"Send live message" = "Élő üzenet küldése";
/* No comment provided by engineer. */
"Send message to enable calls." = "Üzenet küldése a hívások engedélyezéséhez.";
/* No comment provided by engineer. */
"Send messages directly when IP address is protected and your or destination server does not support private routing." = "Közvetlen üzenetküldés, ha az IP-cím védett és az ön kiszolgálója vagy a célkiszolgáló nem támogatja a privát útválasztást.";
@@ -3880,7 +3998,7 @@
"Server requires authorization to upload, check password" = "A kiszolgálónak engedélyre van szüksége a várólisták feltöltéséhez, ellenőrizze jelszavát";
/* No comment provided by engineer. */
"Server test failed!" = "Sikertelen kiszolgáló-teszt!";
"Server test failed!" = "Sikertelen kiszolgáló teszt!";
/* No comment provided by engineer. */
"Server type" = "Kiszolgáló típusa";
@@ -3957,6 +4075,9 @@
/* No comment provided by engineer. */
"Share address with contacts?" = "Megosztja a címet az ismerőseivel?";
/* No comment provided by engineer. */
"Share from other apps." = "Megosztás más alkalmazásokból.";
/* No comment provided by engineer. */
"Share link" = "Hivatkozás megosztása";
@@ -4066,10 +4187,10 @@
"Some file(s) were not exported:" = "Néhány fájl nem került exportálásra:";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Néhány nem végzetes hiba történt az importálás során további részletekért a csevegési konzolban olvashat.";
"Some non-fatal errors occurred during import - you may see Chat console for more details." = "Néhány nem végzetes hiba történt az importálás közben további részletekért a csevegési konzolban olvashat.";
/* No comment provided by engineer. */
"Some non-fatal errors occurred during import:" = "Néhány nem végzetes hiba történt az importálás során:";
"Some non-fatal errors occurred during import:" = "Néhány nem végzetes hiba történt az importálás közben:";
/* notification title */
"Somebody" = "Valaki";
@@ -4246,7 +4367,7 @@
"The contact you shared this link with will NOT be able to connect!" = "Ismerőse, akivel megosztotta ezt a hivatkozást, NEM fog tudni kapcsolódni!";
/* No comment provided by engineer. */
"The created archive is available via app Settings / Database / Old database archive." = "A létrehozott archívum a Beállítások / Adatbázis / Régi adatbázis-archívum menüpontban érhető el.";
"The created archive is available via app Settings / Database / Old database archive." = "A létrehozott archívum a Beállítások / Adatbázis / Régi adatbázis-archívum menüben érhető el.";
/* No comment provided by engineer. */
"The encryption is working and the new encryption agreement is not required. It may result in connection errors!" = "A titkosítás működik, és új titkosítási egyezményre nincs szükség. Ez kapcsolati hibákat eredményezhet!";
@@ -4273,7 +4394,7 @@
"The next generation of private messaging" = "A privát üzenetküldés következő generációja";
/* No comment provided by engineer. */
"The old database was not removed during the migration, it can be deleted." = "A régi adatbázis nem került eltávolításra az átköltöztetés során, így törölhető.";
"The old database was not removed during the migration, it can be deleted." = "A régi adatbázis nem került eltávolításra az átköltöztetés közben, így törölhető.";
/* No comment provided by engineer. */
"The profile is only shared with your contacts." = "Profilja csak az ismerőseivel kerül megosztásra.";
@@ -4380,9 +4501,15 @@
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "A végpontok közötti titkosítás ellenőrzéséhez hasonlítsa össze (vagy olvassa be a QR-kódot) az ismerőse eszközén lévő kóddal.";
/* No comment provided by engineer. */
"Toggle chat list:" = "Csevegőlista átváltása:";
/* No comment provided by engineer. */
"Toggle incognito when connecting." = "Inkognitó mód kapcsolódáskor.";
/* No comment provided by engineer. */
"Toolbar opacity" = "Eszköztár átlátszatlansága";
/* No comment provided by engineer. */
"Total" = "Összesen";
@@ -4426,12 +4553,12 @@
"Unblock member?" = "Tag feloldása?";
/* rcv group event chat item */
"unblocked %@" = "%@ feloldva";
"unblocked %@" = "feloldotta %@ letiltását";
/* No comment provided by engineer. */
"Unexpected migration state" = "Váratlan átköltöztetési állapot";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Nem kedvelt.";
/* No comment provided by engineer. */
@@ -4486,12 +4613,15 @@
"Unlock app" = "Alkalmazás feloldása";
/* No comment provided by engineer. */
"unmute" = "némítás feloldása";
/* swipe action */
"Unmute" = "Némítás feloldása";
/* No comment provided by engineer. */
"unprotected" = "nem védett";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Olvasatlan";
/* No comment provided by engineer. */
@@ -4578,6 +4708,9 @@
/* No comment provided by engineer. */
"Use the app while in the call." = "Használja az alkalmazást hívás közben.";
/* No comment provided by engineer. */
"Use the app with one hand." = "Használja az alkalmazást egy kézzel.";
/* No comment provided by engineer. */
"User profile" = "Felhasználói profil";
@@ -4632,6 +4765,9 @@
/* No comment provided by engineer. */
"Via secure quantum resistant protocol." = "Biztonságos kvantum ellenálló protokoll által.";
/* No comment provided by engineer. */
"video" = "videó";
/* No comment provided by engineer. */
"Video call" = "Videóhívás";
@@ -4837,11 +4973,14 @@
"you are observer" = "megfigyelő szerep";
/* snd group event chat item */
"you blocked %@" = "blokkolta őt: %@";
"you blocked %@" = "ön letiltotta %@-t";
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Hívásokat fogadhat a lezárási képernyőről, eszköz- és alkalmazáshitelesítés nélkül.";
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "Ezt a „Megjelenés” menüben módosíthatja.";
/* No comment provided by engineer. */
"You can create it later" = "Létrehozás később";
@@ -4849,7 +4988,7 @@
"You can enable later via Settings" = "Később engedélyezheti a Beállításokban";
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüpontban.";
"You can enable them later via app Privacy & Security settings." = "Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüben.";
/* No comment provided by engineer. */
"You can give another try." = "Megpróbálhatja még egyszer.";
@@ -4863,6 +5002,9 @@
/* notification body */
"You can now chat with %@" = "Mostantól küldhet üzeneteket %@ számára";
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "Az „Archivált ismerősökből” továbbra is küldhet üzeneteket neki: %@.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "A beállításokon keresztül beállíthatja a lezárási képernyő értesítési előnézetét.";
@@ -4876,7 +5018,10 @@
"You can share your address as a link or QR code - anybody can connect to you." = "Megoszthatja a címét egy hivatkozásként vagy QR-kódként így bárki kapcsolódhat önhöz.";
/* No comment provided by engineer. */
"You can start chat via app Settings / Database or by restarting the app" = "A csevegést az alkalmazás Beállítások / Adatbázis menü segítségével vagy az alkalmazás újraindításával indíthatja el";
"You can start chat via app Settings / Database or by restarting the app" = "A csevegést az alkalmazás Beállítások / Adatbázis menüben vagy az alkalmazás újraindításával indíthatja el";
/* No comment provided by engineer. */
"You can still view conversation with %@ in the list of chats." = "A(z) %@ nevű ismerősével folytatott beszélgetéseit továbbra is megtekintheti a csevegések listájában.";
/* No comment provided by engineer. */
"You can turn on SimpleX Lock via Settings." = "A SimpleX zár az „Adatvédelem és biztonság” menüben kapcsolható be.";
@@ -4938,6 +5083,9 @@
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerőstől.";
/* No comment provided by engineer. */
"You need to allow your contact to call to be able to call them." = "Engedélyeznie kell a hívásokat az ismerőse számára, hogy fel tudják hívni egymást.";
/* No comment provided by engineer. */
"You need to allow your contact to send voice messages to be able to send them." = "Hangüzeneteket küldéséhez engedélyeznie kell azok küldését az ismerősök számára.";
@@ -4957,7 +5105,7 @@
"you shared one-time link incognito" = "egyszer használatos hivatkozást osztott meg inkognitóban";
/* snd group event chat item */
"you unblocked %@" = "feloldotta %@ blokkolását";
"you unblocked %@" = "ön feloldotta %@ letiltását";
/* No comment provided by engineer. */
"You will be connected to group when the group host's device is online, please wait or check later!" = "Akkor lesz kapcsolódva a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később!";
+161 -13
View File
@@ -338,7 +338,8 @@
"Accent" = "Principale";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Accetta";
/* No comment provided by engineer. */
@@ -347,7 +348,8 @@
/* notification body */
"Accept contact request from %@?" = "Accettare la richiesta di contatto da %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Accetta in incognito";
/* call status */
@@ -470,6 +472,9 @@
/* No comment provided by engineer. */
"Allow calls only if your contact allows them." = "Consenti le chiamate solo se il tuo contatto le consente.";
/* No comment provided by engineer. */
"Allow calls?" = "Consentire le chiamate?";
/* No comment provided by engineer. */
"Allow disappearing messages only if your contact allows it to you." = "Consenti i messaggi a tempo solo se il contatto li consente a te.";
@@ -590,6 +595,12 @@
/* No comment provided by engineer. */
"Archive and upload" = "Archivia e carica";
/* No comment provided by engineer. */
"Archive contacts to chat later." = "Archivia contatti per chattare più tardi.";
/* No comment provided by engineer. */
"Archived contacts" = "Contatti archiviati";
/* No comment provided by engineer. */
"Archiving database" = "Archiviazione del database";
@@ -665,6 +676,9 @@
/* No comment provided by engineer. */
"Better messages" = "Messaggi migliorati";
/* No comment provided by engineer. */
"Better networking" = "Rete migliorata";
/* No comment provided by engineer. */
"Black" = "Nero";
@@ -692,12 +706,15 @@
/* rcv group event chat item */
"blocked %@" = "ha bloccato %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "bloccato dall'amministratore";
/* No comment provided by engineer. */
"Blocked by admin" = "Bloccato dall'amministratore";
/* No comment provided by engineer. */
"Blur for better privacy." = "Sfoca per una privacy maggiore.";
/* No comment provided by engineer. */
"Blur media" = "Sfocatura file multimediali";
@@ -725,6 +742,9 @@
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Per profilo di chat (predefinito) o [per connessione](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
/* No comment provided by engineer. */
"call" = "chiama";
/* No comment provided by engineer. */
"Call already ended!" = "Chiamata già terminata!";
@@ -740,15 +760,27 @@
/* No comment provided by engineer. */
"Calls" = "Chiamate";
/* No comment provided by engineer. */
"Calls prohibited!" = "Chiamate proibite!";
/* No comment provided by engineer. */
"Camera not available" = "Fotocamera non disponibile";
/* No comment provided by engineer. */
"Can't call contact" = "Impossibile chiamare il contatto";
/* No comment provided by engineer. */
"Can't call member" = "Impossibile chiamare il membro";
/* No comment provided by engineer. */
"Can't invite contact!" = "Impossibile invitare il contatto!";
/* No comment provided by engineer. */
"Can't invite contacts!" = "Impossibile invitare i contatti!";
/* No comment provided by engineer. */
"Can't message member" = "Impossibile inviare un messaggio al membro";
/* No comment provided by engineer. */
"Cancel" = "Annulla";
@@ -849,6 +881,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "La chat è ferma. Se hai già usato questo database su un altro dispositivo, dovresti trasferirlo prima di avviare la chat.";
/* No comment provided by engineer. */
"Chat list" = "Elenco delle chat";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat migrata!";
@@ -885,7 +920,7 @@
/* No comment provided by engineer. */
"Chunks uploaded" = "Blocchi inviati";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Svuota";
/* No comment provided by engineer. */
@@ -900,6 +935,9 @@
/* No comment provided by engineer. */
"Clear verification" = "Annulla la verifica";
/* No comment provided by engineer. */
"Color chats with the new themes." = "Colora le chat con i nuovi temi.";
/* No comment provided by engineer. */
"Color mode" = "Modalità di colore";
@@ -927,6 +965,9 @@
/* No comment provided by engineer. */
"Confirm" = "Conferma";
/* No comment provided by engineer. */
"Confirm contact deletion?" = "Confermare l'eliminazione del contatto?";
/* No comment provided by engineer. */
"Confirm database upgrades" = "Conferma aggiornamenti database";
@@ -966,6 +1007,9 @@
/* No comment provided by engineer. */
"connect to SimpleX Chat developers." = "connettiti agli sviluppatori di SimpleX Chat.";
/* No comment provided by engineer. */
"Connect to your friends faster." = "Connettiti più velocemente ai tuoi amici.";
/* No comment provided by engineer. */
"Connect to yourself?" = "Connettersi a te stesso?";
@@ -1032,6 +1076,9 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Connessione al server… (errore: %@)";
/* No comment provided by engineer. */
"Connecting to contact, please wait or check later!" = "In collegamento con il contatto, attendi o controlla più tardi!";
/* No comment provided by engineer. */
"Connecting to desktop" = "Connessione al desktop";
@@ -1041,6 +1088,9 @@
/* No comment provided by engineer. */
"Connection" = "Connessione";
/* No comment provided by engineer. */
"Connection and servers status." = "Stato di connessione e server.";
/* No comment provided by engineer. */
"Connection error" = "Errore di connessione";
@@ -1080,6 +1130,9 @@
/* No comment provided by engineer. */
"Contact already exists" = "Il contatto esiste già";
/* No comment provided by engineer. */
"Contact deleted!" = "Contatto eliminato!";
/* No comment provided by engineer. */
"contact has e2e encryption" = "il contatto ha la crittografia e2e";
@@ -1092,12 +1145,18 @@
/* notification */
"Contact is connected" = "Il contatto è connesso";
/* No comment provided by engineer. */
"Contact is deleted." = "Il contatto è stato eliminato.";
/* No comment provided by engineer. */
"Contact name" = "Nome del contatto";
/* No comment provided by engineer. */
"Contact preferences" = "Preferenze del contatto";
/* No comment provided by engineer. */
"Contact will be deleted - this cannot be undone!" = "Il contatto verrà eliminato - non è reversibile!";
/* No comment provided by engineer. */
"Contacts" = "Contatti";
@@ -1107,6 +1166,9 @@
/* No comment provided by engineer. */
"Continue" = "Continua";
/* No comment provided by engineer. */
"Conversation deleted!" = "Conversazione eliminata!";
/* No comment provided by engineer. */
"Copy" = "Copia";
@@ -1287,7 +1349,8 @@
/* No comment provided by engineer. */
"default (yes)" = "predefinito (sì)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Elimina";
/* No comment provided by engineer. */
@@ -1329,6 +1392,9 @@
/* No comment provided by engineer. */
"Delete contact" = "Elimina contatto";
/* No comment provided by engineer. */
"Delete contact?" = "Eliminare il contatto?";
/* No comment provided by engineer. */
"Delete database" = "Elimina database";
@@ -1392,9 +1458,15 @@
/* server test step */
"Delete queue" = "Elimina coda";
/* No comment provided by engineer. */
"Delete up to 20 messages at once." = "Elimina fino a 20 messaggi contemporaneamente.";
/* No comment provided by engineer. */
"Delete user profile?" = "Eliminare il profilo utente?";
/* No comment provided by engineer. */
"Delete without notification" = "Elimina senza avvisare";
/* deleted chat item */
"deleted" = "eliminato";
@@ -1455,6 +1527,9 @@
/* No comment provided by engineer. */
"Develop" = "Sviluppa";
/* No comment provided by engineer. */
"Developer options" = "Opzioni sviluppatore";
/* No comment provided by engineer. */
"Developer tools" = "Strumenti di sviluppo";
@@ -2002,7 +2077,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Ingresso più veloce e messaggi più affidabili.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Preferito";
/* No comment provided by engineer. */
@@ -2461,6 +2536,9 @@
/* group name */
"invitation to group %@" = "invito al gruppo %@";
/* No comment provided by engineer. */
"invite" = "invita";
/* No comment provided by engineer. */
"Invite friends" = "Invita amici";
@@ -2506,6 +2584,9 @@
/* No comment provided by engineer. */
"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Può accadere quando:\n1. I messaggi sono scaduti sul client mittente dopo 2 giorni o sul server dopo 30 giorni.\n2. La decifrazione del messaggio è fallita, perché tu o il tuo contatto avete usato un backup del database vecchio.\n3. La connessione è stata compromessa.";
/* No comment provided by engineer. */
"It protects your IP address and connections." = "Protegge il tuo indirizzo IP e le connessioni.";
/* No comment provided by engineer. */
"It seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Sembra che tu sia già connesso tramite questo link. In caso contrario, c'è stato un errore (%@).";
@@ -2518,7 +2599,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Interfaccia giapponese";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Entra";
/* No comment provided by engineer. */
@@ -2548,6 +2629,9 @@
/* No comment provided by engineer. */
"Keep" = "Tieni";
/* No comment provided by engineer. */
"Keep conversation" = "Tieni la conversazione";
/* No comment provided by engineer. */
"Keep the app open to use it from desktop" = "Tieni aperta l'app per usarla dal desktop";
@@ -2569,7 +2653,7 @@
/* No comment provided by engineer. */
"Learn more" = "Maggiori informazioni";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Esci";
/* No comment provided by engineer. */
@@ -2692,6 +2776,9 @@
/* No comment provided by engineer. */
"Menus" = "Menu";
/* No comment provided by engineer. */
"message" = "messaggio";
/* item status text */
"Message delivery error" = "Errore di recapito del messaggio";
@@ -2840,12 +2927,15 @@
"Multiple chat profiles" = "Profili di chat multipli";
/* No comment provided by engineer. */
"mute" = "silenzia";
/* swipe action */
"Mute" = "Silenzia";
/* No comment provided by engineer. */
"Muted when inactive!" = "Silenzioso quando inattivo!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Nome";
/* No comment provided by engineer. */
@@ -2872,6 +2962,9 @@
/* No comment provided by engineer. */
"New chat" = "Nuova chat";
/* No comment provided by engineer. */
"New chat experience 🎉" = "Una nuova esperienza di chat 🎉";
/* notification */
"New contact request" = "Nuova richiesta di contatto";
@@ -2890,6 +2983,9 @@
/* No comment provided by engineer. */
"New in %@" = "Novità nella %@";
/* No comment provided by engineer. */
"New media options" = "Nuove opzioni multimediali";
/* No comment provided by engineer. */
"New member role" = "Nuovo ruolo del membro";
@@ -3018,6 +3114,9 @@
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**." = "Solo i dispositivi client archiviano profili utente, i contatti, i gruppi e i messaggi inviati con la **crittografia end-to-end a 2 livelli**.";
/* No comment provided by engineer. */
"Only delete conversation" = "Elimina solo la conversazione";
/* No comment provided by engineer. */
"Only group owners can change group preferences." = "Solo i proprietari del gruppo possono modificarne le preferenze.";
@@ -3174,6 +3273,12 @@
/* No comment provided by engineer. */
"PING interval" = "Intervallo PING";
/* No comment provided by engineer. */
"Play from the chat list." = "Riproduci dall'elenco delle chat.";
/* No comment provided by engineer. */
"Please ask your contact to enable calls." = "Chiedi al contatto di attivare le chiamate.";
/* No comment provided by engineer. */
"Please ask your contact to enable sending voice messages." = "Chiedi al tuo contatto di attivare l'invio dei messaggi vocali.";
@@ -3354,10 +3459,13 @@
/* No comment provided by engineer. */
"Rate the app" = "Valuta l'app";
/* No comment provided by engineer. */
"Reachable chat toolbar" = "Barra degli strumenti di chat accessibile";
/* chat item menu */
"React…" = "Reagisci…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Leggi";
/* No comment provided by engineer. */
@@ -3459,7 +3567,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Consumo di batteria ridotto";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Rifiuta";
/* No comment provided by engineer. */
@@ -3540,6 +3649,9 @@
/* No comment provided by engineer. */
"Reset" = "Ripristina";
/* No comment provided by engineer. */
"Reset all hints" = "Ripristina tutti i suggerimenti";
/* No comment provided by engineer. */
"Reset all statistics" = "Azzera tutte le statistiche";
@@ -3693,6 +3805,9 @@
/* No comment provided by engineer. */
"Scan server QR code" = "Scansiona codice QR del server";
/* No comment provided by engineer. */
"search" = "cerca";
/* No comment provided by engineer. */
"Search" = "Cerca";
@@ -3777,6 +3892,9 @@
/* No comment provided by engineer. */
"Send live message" = "Invia messaggio in diretta";
/* No comment provided by engineer. */
"Send message to enable calls." = "Invia un messaggio per attivare le chiamate.";
/* No comment provided by engineer. */
"Send messages directly when IP address is protected and your or destination server does not support private routing." = "Invia messaggi direttamente quando l'indirizzo IP è protetto e il tuo server o quello di destinazione non supporta l'instradamento privato.";
@@ -3957,6 +4075,9 @@
/* No comment provided by engineer. */
"Share address with contacts?" = "Condividere l'indirizzo con i contatti?";
/* No comment provided by engineer. */
"Share from other apps." = "Condividi da altre app.";
/* No comment provided by engineer. */
"Share link" = "Condividi link";
@@ -4380,9 +4501,15 @@
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "Per verificare la crittografia end-to-end con il tuo contatto, confrontate (o scansionate) il codice sui vostri dispositivi.";
/* No comment provided by engineer. */
"Toggle chat list:" = "Cambia l'elenco delle chat:";
/* No comment provided by engineer. */
"Toggle incognito when connecting." = "Attiva/disattiva l'incognito quando ti colleghi.";
/* No comment provided by engineer. */
"Toolbar opacity" = "Opacità barra degli strumenti";
/* No comment provided by engineer. */
"Total" = "Totale";
@@ -4431,7 +4558,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Stato di migrazione imprevisto";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Non pref.";
/* No comment provided by engineer. */
@@ -4486,12 +4613,15 @@
"Unlock app" = "Sblocca l'app";
/* No comment provided by engineer. */
"unmute" = "riattiva notifiche";
/* swipe action */
"Unmute" = "Riattiva notifiche";
/* No comment provided by engineer. */
"unprotected" = "non protetto";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Non letto";
/* No comment provided by engineer. */
@@ -4578,6 +4708,9 @@
/* No comment provided by engineer. */
"Use the app while in the call." = "Usa l'app mentre sei in chiamata.";
/* No comment provided by engineer. */
"Use the app with one hand." = "Usa l'app con una mano sola.";
/* No comment provided by engineer. */
"User profile" = "Profilo utente";
@@ -4632,6 +4765,9 @@
/* No comment provided by engineer. */
"Via secure quantum resistant protocol." = "Tramite protocollo sicuro resistente alla quantistica.";
/* No comment provided by engineer. */
"video" = "video";
/* No comment provided by engineer. */
"Video call" = "Videochiamata";
@@ -4842,6 +4978,9 @@
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Puoi accettare chiamate dalla schermata di blocco, senza l'autenticazione del dispositivo e dell'app.";
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "Puoi cambiarlo nelle impostazioni dell'aspetto.";
/* No comment provided by engineer. */
"You can create it later" = "Puoi crearlo più tardi";
@@ -4863,6 +5002,9 @@
/* notification body */
"You can now chat with %@" = "Ora puoi inviare messaggi a %@";
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "Puoi inviare messaggi a %@ dai contatti archiviati.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "Puoi impostare l'anteprima della notifica nella schermata di blocco tramite le impostazioni.";
@@ -4878,6 +5020,9 @@
/* No comment provided by engineer. */
"You can start chat via app Settings / Database or by restarting the app" = "Puoi avviare la chat via Impostazioni / Database o riavviando l'app";
/* No comment provided by engineer. */
"You can still view conversation with %@ in the list of chats." = "Puoi ancora vedere la conversazione con %@ nell'elenco delle chat.";
/* No comment provided by engineer. */
"You can turn on SimpleX Lock via Settings." = "Puoi attivare SimpleX Lock tramite le impostazioni.";
@@ -4938,6 +5083,9 @@
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "Devi usare la versione più recente del tuo database della chat SOLO su un dispositivo, altrimenti potresti non ricevere più i messaggi da alcuni contatti.";
/* No comment provided by engineer. */
"You need to allow your contact to call to be able to call them." = "Devi consentire le chiamate al tuo contatto per poterlo chiamare.";
/* No comment provided by engineer. */
"You need to allow your contact to send voice messages to be able to send them." = "Devi consentire al tuo contatto di inviare messaggi vocali per poterli inviare anche tu.";
+18 -14
View File
@@ -329,7 +329,8 @@
"above, then choose:" = "上で選んでください:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "承諾";
/* No comment provided by engineer. */
@@ -338,7 +339,8 @@
/* notification body */
"Accept contact request from %@?" = "%@ からの連絡要求を受け入れますか?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "シークレットモードで承諾";
/* call status */
@@ -714,7 +716,7 @@
/* No comment provided by engineer. */
"Choose from library" = "ライブラリから選択";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "消す";
/* No comment provided by engineer. */
@@ -990,7 +992,8 @@
/* No comment provided by engineer. */
"default (yes)" = "デフォルト(はい)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "削除";
/* No comment provided by engineer. */
@@ -1525,7 +1528,7 @@
/* No comment provided by engineer. */
"Fast and no wait until the sender is online!" = "送信者がオンラインになるまでの待ち時間がなく、速い!";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "お気に入り";
/* No comment provided by engineer. */
@@ -1909,7 +1912,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "日本語UI";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "参加";
/* No comment provided by engineer. */
@@ -1939,7 +1942,7 @@
/* No comment provided by engineer. */
"Learn more" = "さらに詳しく";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "脱退";
/* No comment provided by engineer. */
@@ -2113,13 +2116,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "複数チャットのプロフィール";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "ミュート";
/* No comment provided by engineer. */
"Muted when inactive!" = "非アクティブ時はミュート!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "名前";
/* No comment provided by engineer. */
@@ -2481,7 +2484,7 @@
/* chat item menu */
"React…" = "反応する…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "読む";
/* No comment provided by engineer. */
@@ -2544,7 +2547,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "電池使用量低減";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "拒否";
/* No comment provided by engineer. */
@@ -3156,7 +3160,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "予期しない移行状態";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "お気に入りを取り消す。";
/* No comment provided by engineer. */
@@ -3195,10 +3199,10 @@
/* authentication reason */
"Unlock app" = "アプリのロック解除";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "ミュート解除";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "未読";
/* No comment provided by engineer. */
+167 -19
View File
@@ -338,7 +338,8 @@
"Accent" = "Accent";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Accepteer";
/* No comment provided by engineer. */
@@ -347,7 +348,8 @@
/* notification body */
"Accept contact request from %@?" = "Accepteer contactverzoek van %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Accepteer incognito";
/* call status */
@@ -470,6 +472,9 @@
/* No comment provided by engineer. */
"Allow calls only if your contact allows them." = "Sta oproepen alleen toe als uw contact dit toestaat.";
/* No comment provided by engineer. */
"Allow calls?" = "Oproepen toestaan?";
/* No comment provided by engineer. */
"Allow disappearing messages only if your contact allows it to you." = "Sta verdwijnende berichten alleen toe als uw contact dit toestaat.";
@@ -590,6 +595,12 @@
/* No comment provided by engineer. */
"Archive and upload" = "Archiveren en uploaden";
/* No comment provided by engineer. */
"Archive contacts to chat later." = "Archiveer contacten om later te chatten.";
/* No comment provided by engineer. */
"Archived contacts" = "Gearchiveerde contacten";
/* No comment provided by engineer. */
"Archiving database" = "Database archiveren";
@@ -665,6 +676,9 @@
/* No comment provided by engineer. */
"Better messages" = "Betere berichten";
/* No comment provided by engineer. */
"Better networking" = "Beter netwerk";
/* No comment provided by engineer. */
"Black" = "Zwart";
@@ -698,6 +712,9 @@
/* No comment provided by engineer. */
"Blocked by admin" = "Geblokkeerd door beheerder";
/* No comment provided by engineer. */
"Blur for better privacy." = "Vervagen voor betere privacy.";
/* No comment provided by engineer. */
"Blur media" = "Vervaag media";
@@ -725,6 +742,9 @@
/* No comment provided by engineer. */
"By chat profile (default) or [by connection](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA)." = "Via chat profiel (standaard) of [via verbinding](https://simplex.chat/blog/20230204-simplex-chat-v4-5-user-chat-profiles.html#transport-isolation) (BETA).";
/* No comment provided by engineer. */
"call" = "bellen";
/* No comment provided by engineer. */
"Call already ended!" = "Oproep al beëindigd!";
@@ -740,15 +760,27 @@
/* No comment provided by engineer. */
"Calls" = "Oproepen";
/* No comment provided by engineer. */
"Calls prohibited!" = "Bellen verboden!";
/* No comment provided by engineer. */
"Camera not available" = "Camera niet beschikbaar";
/* No comment provided by engineer. */
"Can't call contact" = "Kan contact niet bellen";
/* No comment provided by engineer. */
"Can't call member" = "Kan lid niet bellen";
/* No comment provided by engineer. */
"Can't invite contact!" = "Kan contact niet uitnodigen!";
/* No comment provided by engineer. */
"Can't invite contacts!" = "Kan geen contacten uitnodigen!";
/* No comment provided by engineer. */
"Can't message member" = "Kan geen bericht sturen naar lid";
/* No comment provided by engineer. */
"Cancel" = "Annuleren";
@@ -849,6 +881,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Chat is gestopt. Als je deze database al op een ander apparaat hebt gebruikt, moet je deze terugzetten voordat je met chatten begint.";
/* No comment provided by engineer. */
"Chat list" = "Chatlijst";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat gemigreerd!";
@@ -885,7 +920,7 @@
/* No comment provided by engineer. */
"Chunks uploaded" = "Stukken geüpload";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Wissen";
/* No comment provided by engineer. */
@@ -900,6 +935,9 @@
/* No comment provided by engineer. */
"Clear verification" = "Verwijderd verificatie";
/* No comment provided by engineer. */
"Color chats with the new themes." = "Kleurchats met de nieuwe thema's.";
/* No comment provided by engineer. */
"Color mode" = "Kleur mode";
@@ -927,6 +965,9 @@
/* No comment provided by engineer. */
"Confirm" = "Bevestigen";
/* No comment provided by engineer. */
"Confirm contact deletion?" = "Contact verwijderen bevestigen?";
/* No comment provided by engineer. */
"Confirm database upgrades" = "Bevestig database upgrades";
@@ -966,6 +1007,9 @@
/* No comment provided by engineer. */
"connect to SimpleX Chat developers." = "maak verbinding met SimpleX Chat-ontwikkelaars.";
/* No comment provided by engineer. */
"Connect to your friends faster." = "Maak sneller verbinding met je vrienden.";
/* No comment provided by engineer. */
"Connect to yourself?" = "Verbinding maken met jezelf?";
@@ -1032,6 +1076,9 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Verbinden met server... (fout: %@)";
/* No comment provided by engineer. */
"Connecting to contact, please wait or check later!" = "Er wordt verbinding gemaakt met het contact. Even geduld of controleer het later!";
/* No comment provided by engineer. */
"Connecting to desktop" = "Verbinding maken met desktop";
@@ -1041,6 +1088,9 @@
/* No comment provided by engineer. */
"Connection" = "Verbinding";
/* No comment provided by engineer. */
"Connection and servers status." = "Verbindings- en serverstatus.";
/* No comment provided by engineer. */
"Connection error" = "Verbindingsfout";
@@ -1080,6 +1130,9 @@
/* No comment provided by engineer. */
"Contact already exists" = "Contact bestaat al";
/* No comment provided by engineer. */
"Contact deleted!" = "Contact verwijderd!";
/* No comment provided by engineer. */
"contact has e2e encryption" = "contact heeft e2e-codering";
@@ -1092,12 +1145,18 @@
/* notification */
"Contact is connected" = "Contact is verbonden";
/* No comment provided by engineer. */
"Contact is deleted." = "Contact is verwijderd.";
/* No comment provided by engineer. */
"Contact name" = "Contact naam";
/* No comment provided by engineer. */
"Contact preferences" = "Contact voorkeuren";
/* No comment provided by engineer. */
"Contact will be deleted - this cannot be undone!" = "Het contact wordt verwijderd. Dit kan niet ongedaan worden gemaakt!";
/* No comment provided by engineer. */
"Contacts" = "Contacten";
@@ -1107,6 +1166,9 @@
/* No comment provided by engineer. */
"Continue" = "Doorgaan";
/* No comment provided by engineer. */
"Conversation deleted!" = "Gesprek verwijderd!";
/* No comment provided by engineer. */
"Copy" = "Kopiëren";
@@ -1287,7 +1349,8 @@
/* No comment provided by engineer. */
"default (yes)" = "standaard (ja)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Verwijderen";
/* No comment provided by engineer. */
@@ -1329,6 +1392,9 @@
/* No comment provided by engineer. */
"Delete contact" = "Verwijder contact";
/* No comment provided by engineer. */
"Delete contact?" = "Verwijder contact?";
/* No comment provided by engineer. */
"Delete database" = "Database verwijderen";
@@ -1392,9 +1458,15 @@
/* server test step */
"Delete queue" = "Wachtrij verwijderen";
/* No comment provided by engineer. */
"Delete up to 20 messages at once." = "Verwijder maximaal 20 berichten tegelijk.";
/* No comment provided by engineer. */
"Delete user profile?" = "Gebruikers profiel verwijderen?";
/* No comment provided by engineer. */
"Delete without notification" = "Verwijderen zonder melding";
/* deleted chat item */
"deleted" = "verwijderd";
@@ -1455,6 +1527,9 @@
/* No comment provided by engineer. */
"Develop" = "Ontwikkelen";
/* No comment provided by engineer. */
"Developer options" = "Ontwikkelaars opties";
/* No comment provided by engineer. */
"Developer tools" = "Ontwikkel gereedschap";
@@ -2002,7 +2077,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Snellere deelname en betrouwbaardere berichten.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Favoriet";
/* No comment provided by engineer. */
@@ -2461,6 +2536,9 @@
/* group name */
"invitation to group %@" = "uitnodiging voor groep %@";
/* No comment provided by engineer. */
"invite" = "uitnodiging";
/* No comment provided by engineer. */
"Invite friends" = "Nodig vrienden uit";
@@ -2506,6 +2584,9 @@
/* No comment provided by engineer. */
"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Het kan gebeuren wanneer:\n1. De berichten zijn na 2 dagen verlopen bij de verzendende client of na 30 dagen op de server.\n2. Decodering van het bericht is mislukt, omdat u of uw contact een oude database back-up heeft gebruikt.\n3. De verbinding is verbroken.";
/* No comment provided by engineer. */
"It protects your IP address and connections." = "Het beschermt uw IP-adres en verbindingen.";
/* No comment provided by engineer. */
"It seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Het lijkt erop dat u al bent verbonden via deze link. Als dit niet het geval is, is er een fout opgetreden (%@).";
@@ -2518,7 +2599,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japanse interface";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Word lid van";
/* No comment provided by engineer. */
@@ -2548,6 +2629,9 @@
/* No comment provided by engineer. */
"Keep" = "Bewaar";
/* No comment provided by engineer. */
"Keep conversation" = "Blijf in gesprek";
/* No comment provided by engineer. */
"Keep the app open to use it from desktop" = "Houd de app geopend om deze vanaf de desktop te gebruiken";
@@ -2569,7 +2653,7 @@
/* No comment provided by engineer. */
"Learn more" = "Kom meer te weten";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Verlaten";
/* No comment provided by engineer. */
@@ -2692,6 +2776,9 @@
/* No comment provided by engineer. */
"Menus" = "Menu's";
/* No comment provided by engineer. */
"message" = "bericht";
/* item status text */
"Message delivery error" = "Fout bij bezorging van bericht";
@@ -2795,7 +2882,7 @@
"Migration error:" = "Migratiefout:";
/* No comment provided by engineer. */
"Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." = "Migratie mislukt. Tik hieronder op **Overslaan** om de huidige database te blijven gebruiken. Meld het probleem aan de app-ontwikkelaars via chat of e-mail [chat@simplex.chat](mailto:chat@simplex.chat).";
"Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." = "Migratie mislukt. Tik hier onder op **Overslaan** om de huidige database te blijven gebruiken. Meld het probleem aan de app-ontwikkelaars via chat of e-mail [chat@simplex.chat](mailto:chat@simplex.chat).";
/* No comment provided by engineer. */
"Migration is completed" = "Migratie is voltooid";
@@ -2840,12 +2927,15 @@
"Multiple chat profiles" = "Meerdere chat profielen";
/* No comment provided by engineer. */
"mute" = "dempen";
/* swipe action */
"Mute" = "Dempen";
/* No comment provided by engineer. */
"Muted when inactive!" = "Gedempt wanneer inactief!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Naam";
/* No comment provided by engineer. */
@@ -2872,6 +2962,9 @@
/* No comment provided by engineer. */
"New chat" = "Nieuw gesprek";
/* No comment provided by engineer. */
"New chat experience 🎉" = "Nieuwe chatervaring 🎉";
/* notification */
"New contact request" = "Nieuw contactverzoek";
@@ -2890,6 +2983,9 @@
/* No comment provided by engineer. */
"New in %@" = "Nieuw in %@";
/* No comment provided by engineer. */
"New media options" = "Nieuwe media-opties";
/* No comment provided by engineer. */
"New member role" = "Nieuwe leden rol";
@@ -3018,6 +3114,9 @@
/* No comment provided by engineer. */
"Only client devices store user profiles, contacts, groups, and messages sent with **2-layer end-to-end encryption**." = "Alleen client apparaten slaan gebruikers profielen, contacten, groepen en berichten op die zijn verzonden met **2-laags end-to-end-codering**.";
/* No comment provided by engineer. */
"Only delete conversation" = "Alleen conversatie verwijderen";
/* No comment provided by engineer. */
"Only group owners can change group preferences." = "Alleen groep eigenaren kunnen groep voorkeuren wijzigen.";
@@ -3174,6 +3273,12 @@
/* No comment provided by engineer. */
"PING interval" = "PING interval";
/* No comment provided by engineer. */
"Play from the chat list." = "Afspelen via de gesprekken lijst.";
/* No comment provided by engineer. */
"Please ask your contact to enable calls." = "Vraag uw contactpersoon om oproepen in te schakelen.";
/* No comment provided by engineer. */
"Please ask your contact to enable sending voice messages." = "Vraag uw contact om het verzenden van spraak berichten in te schakelen.";
@@ -3354,10 +3459,13 @@
/* No comment provided by engineer. */
"Rate the app" = "Beoordeel de app";
/* No comment provided by engineer. */
"Reachable chat toolbar" = "Toegankelijke chatwerkbalk";
/* chat item menu */
"React…" = "Reageer…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Lees";
/* No comment provided by engineer. */
@@ -3459,7 +3567,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Verminderd batterijgebruik";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Afwijzen";
/* No comment provided by engineer. */
@@ -3540,6 +3649,9 @@
/* No comment provided by engineer. */
"Reset" = "Resetten";
/* No comment provided by engineer. */
"Reset all hints" = "Alle hints resetten";
/* No comment provided by engineer. */
"Reset all statistics" = "Reset alle statistieken";
@@ -3693,6 +3805,9 @@
/* No comment provided by engineer. */
"Scan server QR code" = "Scan server QR-code";
/* No comment provided by engineer. */
"search" = "zoekopdracht";
/* No comment provided by engineer. */
"Search" = "Zoeken";
@@ -3777,6 +3892,9 @@
/* No comment provided by engineer. */
"Send live message" = "Stuur een livebericht";
/* No comment provided by engineer. */
"Send message to enable calls." = "Stuur een bericht om oproepen mogelijk te maken.";
/* No comment provided by engineer. */
"Send messages directly when IP address is protected and your or destination server does not support private routing." = "Stuur berichten rechtstreeks als het IP-adres beschermd is en uw of bestemmingsserver geen privéroutering ondersteunt.";
@@ -3957,6 +4075,9 @@
/* No comment provided by engineer. */
"Share address with contacts?" = "Adres delen met contacten?";
/* No comment provided by engineer. */
"Share from other apps." = "Delen vanuit andere apps.";
/* No comment provided by engineer. */
"Share link" = "Deel link";
@@ -4168,22 +4289,22 @@
"Tap button " = "Tik op de knop ";
/* No comment provided by engineer. */
"Tap to activate profile." = "Tik om profiel te activeren.";
"Tap to activate profile." = "Tik hier om profiel te activeren.";
/* No comment provided by engineer. */
"Tap to Connect" = "Tik om verbinding te maken";
"Tap to Connect" = "Tik hier om verbinding te maken";
/* No comment provided by engineer. */
"Tap to join" = "Tik om lid te worden";
"Tap to join" = "Tik hier om lid te worden";
/* No comment provided by engineer. */
"Tap to join incognito" = "Tik om incognito lid te worden";
"Tap to join incognito" = "Tik hier om incognito lid te worden";
/* No comment provided by engineer. */
"Tap to paste link" = "Tik om de link te plakken";
"Tap to paste link" = "Tik hier om de link te plakken";
/* No comment provided by engineer. */
"Tap to scan" = "Tik om te scannen";
"Tap to scan" = "Tik hier om te scannen";
/* No comment provided by engineer. */
"TCP connection" = "TCP verbinding";
@@ -4380,9 +4501,15 @@
/* No comment provided by engineer. */
"To verify end-to-end encryption with your contact compare (or scan) the code on your devices." = "Vergelijk (of scan) de code op uw apparaten om end-to-end-codering met uw contact te verifiëren.";
/* No comment provided by engineer. */
"Toggle chat list:" = "Chatlijst wisselen:";
/* No comment provided by engineer. */
"Toggle incognito when connecting." = "Schakel incognito in tijdens het verbinden.";
/* No comment provided by engineer. */
"Toolbar opacity" = "De transparantie van de werkbalk";
/* No comment provided by engineer. */
"Total" = "Totaal";
@@ -4431,7 +4558,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Onverwachte migratiestatus";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Niet fav.";
/* No comment provided by engineer. */
@@ -4486,12 +4613,15 @@
"Unlock app" = "Ontgrendel app";
/* No comment provided by engineer. */
"unmute" = "dempen opheffen";
/* swipe action */
"Unmute" = "Dempen opheffen";
/* No comment provided by engineer. */
"unprotected" = "onbeschermd";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Ongelezen";
/* No comment provided by engineer. */
@@ -4578,6 +4708,9 @@
/* No comment provided by engineer. */
"Use the app while in the call." = "Gebruik de app tijdens het gesprek.";
/* No comment provided by engineer. */
"Use the app with one hand." = "Gebruik de app met één hand.";
/* No comment provided by engineer. */
"User profile" = "Gebruikers profiel";
@@ -4632,6 +4765,9 @@
/* No comment provided by engineer. */
"Via secure quantum resistant protocol." = "Via een beveiligd kwantumbestendig protocol.";
/* No comment provided by engineer. */
"video" = "video";
/* No comment provided by engineer. */
"Video call" = "video oproep";
@@ -4842,6 +4978,9 @@
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "U kunt oproepen van het vergrendelingsscherm accepteren, zonder apparaat- en app-verificatie.";
/* No comment provided by engineer. */
"You can change it in Appearance settings." = "U kunt dit wijzigen in de instellingen onder uiterlijk.";
/* No comment provided by engineer. */
"You can create it later" = "U kan het later maken";
@@ -4863,6 +5002,9 @@
/* notification body */
"You can now chat with %@" = "Je kunt nu berichten sturen naar %@";
/* No comment provided by engineer. */
"You can send messages to %@ from Archived contacts." = "U kunt berichten naar %@ sturen vanuit gearchiveerde contacten.";
/* No comment provided by engineer. */
"You can set lock screen notification preview via settings." = "U kunt een voorbeeld van een melding op het vergrendeld scherm instellen via instellingen.";
@@ -4878,6 +5020,9 @@
/* No comment provided by engineer. */
"You can start chat via app Settings / Database or by restarting the app" = "U kunt de chat starten via app Instellingen / Database of door de app opnieuw op te starten";
/* No comment provided by engineer. */
"You can still view conversation with %@ in the list of chats." = "Je kunt het gesprek met %@ nog steeds bekijken in de lijst met chats.";
/* No comment provided by engineer. */
"You can turn on SimpleX Lock via Settings." = "Je kunt SimpleX Vergrendeling aanzetten via Instellingen.";
@@ -4938,6 +5083,9 @@
/* No comment provided by engineer. */
"You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "U mag ALLEEN de meest recente versie van uw chat database op één apparaat gebruiken, anders ontvangt u mogelijk geen berichten meer van sommige contacten.";
/* No comment provided by engineer. */
"You need to allow your contact to call to be able to call them." = "U moet uw contactpersoon toestemming geven om te bellen, zodat hij/zij je kan bellen.";
/* No comment provided by engineer. */
"You need to allow your contact to send voice messages to be able to send them." = "U moet uw contact toestemming geven om spraak berichten te verzenden om ze te kunnen verzenden.";
+18 -14
View File
@@ -338,7 +338,8 @@
"Accent" = "Akcent";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Akceptuj";
/* No comment provided by engineer. */
@@ -347,7 +348,8 @@
/* notification body */
"Accept contact request from %@?" = "Zaakceptuj prośbę o kontakt od %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Akceptuj incognito";
/* call status */
@@ -876,7 +878,7 @@
/* No comment provided by engineer. */
"Chunks uploaded" = "Fragmenty przesłane";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Wyczyść";
/* No comment provided by engineer. */
@@ -1275,7 +1277,8 @@
/* No comment provided by engineer. */
"default (yes)" = "domyślnie (tak)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Usuń";
/* No comment provided by engineer. */
@@ -1972,7 +1975,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Szybsze dołączenie i bardziej niezawodne wiadomości.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Ulubione";
/* No comment provided by engineer. */
@@ -2479,7 +2482,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japoński interfejs";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Dołącz";
/* No comment provided by engineer. */
@@ -2530,7 +2533,7 @@
/* No comment provided by engineer. */
"Learn more" = "Dowiedz się więcej";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Opuść";
/* No comment provided by engineer. */
@@ -2791,13 +2794,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "Wiele profili czatu";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "Wycisz";
/* No comment provided by engineer. */
"Muted when inactive!" = "Wyciszony, gdy jest nieaktywny!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Nazwa";
/* No comment provided by engineer. */
@@ -3306,7 +3309,7 @@
/* chat item menu */
"React…" = "Reaguj…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Czytaj";
/* No comment provided by engineer. */
@@ -3408,7 +3411,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Zmniejszone zużycie baterii";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Odrzuć";
/* No comment provided by engineer. */
@@ -4350,7 +4354,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Nieoczekiwany stan migracji";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Nie ulub.";
/* No comment provided by engineer. */
@@ -4404,13 +4408,13 @@
/* authentication reason */
"Unlock app" = "Odblokuj aplikację";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "Wyłącz wyciszenie";
/* No comment provided by engineer. */
"unprotected" = "niezabezpieczony";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Nieprzeczytane";
/* No comment provided by engineer. */
File diff suppressed because it is too large Load Diff
+18 -14
View File
@@ -257,13 +257,15 @@
"above, then choose:" = "ด้านบน จากนั้นเลือก:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "รับ";
/* notification body */
"Accept contact request from %@?" = "รับการขอติดต่อจาก %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "ยอมรับโหมดไม่ระบุตัวตน";
/* call status */
@@ -618,7 +620,7 @@
/* No comment provided by engineer. */
"Choose from library" = "เลือกจากอัลบั้ม";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "ลบ";
/* No comment provided by engineer. */
@@ -885,7 +887,8 @@
/* No comment provided by engineer. */
"default (yes)" = "ค่าเริ่มต้น (ใช่)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "ลบ";
/* No comment provided by engineer. */
@@ -1399,7 +1402,7 @@
/* No comment provided by engineer. */
"Fast and no wait until the sender is online!" = "รวดเร็วและไม่ต้องรอจนกว่าผู้ส่งจะออนไลน์!";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "ที่ชอบ";
/* No comment provided by engineer. */
@@ -1777,7 +1780,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "อินเทอร์เฟซภาษาญี่ปุ่น";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "เข้าร่วม";
/* No comment provided by engineer. */
@@ -1807,7 +1810,7 @@
/* No comment provided by engineer. */
"Learn more" = "ศึกษาเพิ่มเติม";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "ออกจาก";
/* No comment provided by engineer. */
@@ -1981,13 +1984,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "โปรไฟล์การแชทหลายรายการ";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "ปิดเสียง";
/* No comment provided by engineer. */
"Muted when inactive!" = "ปิดเสียงเมื่อไม่ได้ใช้งาน!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "ชื่อ";
/* No comment provided by engineer. */
@@ -2340,7 +2343,7 @@
/* chat item menu */
"React…" = "ตอบสนอง…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "อ่าน";
/* No comment provided by engineer. */
@@ -2403,7 +2406,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "ลดการใช้แบตเตอรี่";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "ปฏิเสธ";
/* No comment provided by engineer. */
@@ -3015,7 +3019,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "สถานะการย้ายข้อมูลที่ไม่คาดคิด";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "เลิกชอบ";
/* No comment provided by engineer. */
@@ -3054,10 +3058,10 @@
/* authentication reason */
"Unlock app" = "ปลดล็อคแอป";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "เปิดเสียง";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "เปลี่ยนเป็นยังไม่ได้อ่าน";
/* No comment provided by engineer. */
+18 -14
View File
@@ -335,7 +335,8 @@
"above, then choose:" = "yukarı çıkın, ardından seçin:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Kabul et";
/* No comment provided by engineer. */
@@ -344,7 +345,8 @@
/* notification body */
"Accept contact request from %@?" = "%@ 'den gelen iletişim isteği kabul edilsin mi?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Takma adla kabul et";
/* call status */
@@ -816,7 +818,7 @@
/* No comment provided by engineer. */
"Choose from library" = "Kütüphaneden seç";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Temizle";
/* No comment provided by engineer. */
@@ -1173,7 +1175,8 @@
/* No comment provided by engineer. */
"default (yes)" = "varsayılan (evet)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Sil";
/* No comment provided by engineer. */
@@ -1825,7 +1828,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Daha hızlı katılma ve daha güvenilir mesajlar.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Favori";
/* No comment provided by engineer. */
@@ -2302,7 +2305,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Japonca arayüz";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Katıl";
/* No comment provided by engineer. */
@@ -2353,7 +2356,7 @@
/* No comment provided by engineer. */
"Learn more" = "Daha fazlası";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Ayrıl";
/* No comment provided by engineer. */
@@ -2587,13 +2590,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "Çoklu sohbet profili";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "Sustur";
/* No comment provided by engineer. */
"Muted when inactive!" = "Aktif değilken susturuldu!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "İsim";
/* No comment provided by engineer. */
@@ -3063,7 +3066,7 @@
/* chat item menu */
"React…" = "Tepki ver…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Oku";
/* No comment provided by engineer. */
@@ -3138,7 +3141,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Azaltılmış pil kullanımı";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Reddet";
/* No comment provided by engineer. */
@@ -3966,7 +3970,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Beklenmeyen geçiş durumu";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Favorilerden çık.";
/* No comment provided by engineer. */
@@ -4020,13 +4024,13 @@
/* authentication reason */
"Unlock app" = "Uygulama kilidini aç";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "Susturmayı kaldır";
/* No comment provided by engineer. */
"unprotected" = "korumasız";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Okunmamış";
/* No comment provided by engineer. */
+18 -14
View File
@@ -335,7 +335,8 @@
"above, then choose:" = "вище, а потім обирайте:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "Прийняти";
/* No comment provided by engineer. */
@@ -344,7 +345,8 @@
/* notification body */
"Accept contact request from %@?" = "Прийняти запит на контакт від %@?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "Прийняти інкогніто";
/* call status */
@@ -816,7 +818,7 @@
/* No comment provided by engineer. */
"Choose from library" = "Виберіть з бібліотеки";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "Чисто";
/* No comment provided by engineer. */
@@ -1173,7 +1175,8 @@
/* No comment provided by engineer. */
"default (yes)" = "за замовчуванням (так)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "Видалити";
/* No comment provided by engineer. */
@@ -1825,7 +1828,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "Швидше приєднання та надійніші повідомлення.";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "Улюблений";
/* No comment provided by engineer. */
@@ -2302,7 +2305,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "Японський інтерфейс";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "Приєднуйтесь";
/* No comment provided by engineer. */
@@ -2353,7 +2356,7 @@
/* No comment provided by engineer. */
"Learn more" = "Дізнайтеся більше";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "Залишити";
/* No comment provided by engineer. */
@@ -2587,13 +2590,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "Кілька профілів чату";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "Вимкнути звук";
/* No comment provided by engineer. */
"Muted when inactive!" = "Вимкнено, коли неактивний!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "Ім'я";
/* No comment provided by engineer. */
@@ -3063,7 +3066,7 @@
/* chat item menu */
"React…" = "Реагуй…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "Читати";
/* No comment provided by engineer. */
@@ -3138,7 +3141,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "Зменшення використання акумулятора";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "Відхилити";
/* No comment provided by engineer. */
@@ -3966,7 +3970,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "Неочікуваний стан міграції";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "Нелюб.";
/* No comment provided by engineer. */
@@ -4020,13 +4024,13 @@
/* authentication reason */
"Unlock app" = "Розблокувати додаток";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "Увімкнути звук";
/* No comment provided by engineer. */
"unprotected" = "незахищені";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "Непрочитане";
/* No comment provided by engineer. */
+18 -14
View File
@@ -299,7 +299,8 @@
"above, then choose:" = "上面,然后选择:";
/* accept contact request via notification
accept incoming call via notification */
accept incoming call via notification
swipe action */
"Accept" = "接受";
/* No comment provided by engineer. */
@@ -308,7 +309,8 @@
/* notification body */
"Accept contact request from %@?" = "接受来自 %@ 的联系人请求?";
/* accept contact request via notification */
/* accept contact request via notification
swipe action */
"Accept incognito" = "接受隐身聊天";
/* call status */
@@ -762,7 +764,7 @@
/* No comment provided by engineer. */
"Choose from library" = "从库中选择";
/* No comment provided by engineer. */
/* swipe action */
"Clear" = "清除";
/* No comment provided by engineer. */
@@ -1092,7 +1094,8 @@
/* No comment provided by engineer. */
"default (yes)" = "默认 (是)";
/* chat item action */
/* chat item action
swipe action */
"Delete" = "删除";
/* No comment provided by engineer. */
@@ -1714,7 +1717,7 @@
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "加入速度更快、信息更可靠。";
/* No comment provided by engineer. */
/* swipe action */
"Favorite" = "最喜欢";
/* No comment provided by engineer. */
@@ -2173,7 +2176,7 @@
/* No comment provided by engineer. */
"Japanese interface" = "日语界面";
/* No comment provided by engineer. */
/* swipe action */
"Join" = "加入";
/* No comment provided by engineer. */
@@ -2215,7 +2218,7 @@
/* No comment provided by engineer. */
"Learn more" = "了解更多";
/* No comment provided by engineer. */
/* swipe action */
"Leave" = "离开";
/* No comment provided by engineer. */
@@ -2431,13 +2434,13 @@
/* No comment provided by engineer. */
"Multiple chat profiles" = "多个聊天资料";
/* No comment provided by engineer. */
/* swipe action */
"Mute" = "静音";
/* No comment provided by engineer. */
"Muted when inactive!" = "不活动时静音!";
/* No comment provided by engineer. */
/* swipe action */
"Name" = "名称";
/* No comment provided by engineer. */
@@ -2868,7 +2871,7 @@
/* chat item menu */
"React…" = "回应…";
/* No comment provided by engineer. */
/* swipe action */
"Read" = "已读";
/* No comment provided by engineer. */
@@ -2940,7 +2943,8 @@
/* No comment provided by engineer. */
"Reduced battery usage" = "减少电池使用量";
/* reject incoming call via notification */
/* reject incoming call via notification
swipe action */
"Reject" = "拒绝";
/* No comment provided by engineer. */
@@ -3729,7 +3733,7 @@
/* No comment provided by engineer. */
"Unexpected migration state" = "未预料的迁移状态";
/* No comment provided by engineer. */
/* swipe action */
"Unfav." = "取消最喜欢";
/* No comment provided by engineer. */
@@ -3777,10 +3781,10 @@
/* authentication reason */
"Unlock app" = "解锁应用程序";
/* No comment provided by engineer. */
/* swipe action */
"Unmute" = "取消静音";
/* No comment provided by engineer. */
/* swipe action */
"Unread" = "未读";
/* No comment provided by engineer. */
@@ -19,6 +19,7 @@ import chat.simplex.common.views.chatlist.*
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.onboarding.*
import chat.simplex.common.platform.*
import chat.simplex.res.MR
import kotlinx.coroutines.*
import java.lang.ref.WeakReference
@@ -149,7 +150,12 @@ fun processIntent(intent: Intent?) {
"android.intent.action.VIEW" -> {
val uri = intent.data
if (uri != null) {
chatModel.appOpenUrl.value = null to uri.toURI()
val transformedUri = uri.toURIOrNull()
if (transformedUri != null) {
chatModel.appOpenUrl.value = null to transformedUri
} else {
AlertManager.shared.showAlertMsg(generalGetString(MR.strings.error_parsing_uri_title), generalGetString(MR.strings.error_parsing_uri_desc))
}
}
}
}
@@ -26,6 +26,7 @@ import chat.simplex.common.model.ChatModel.withChats
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
import chat.simplex.common.views.call.*
import chat.simplex.common.views.chatlist.statusBarColorAfterCall
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.onboarding.OnboardingStage
import com.jakewharton.processphoenix.ProcessPhoenix
@@ -276,12 +277,22 @@ class SimplexApp: Application(), LifecycleEventObserver {
@Suppress("DEPRECATION")
val windowInsetController = ViewCompat.getWindowInsetsController(window.decorView)
val statusBar = (if (hasTop) {
var statusBar = (if (hasTop && appPrefs.onboardingStage.get() == OnboardingStage.OnboardingComplete) {
backgroundColor.mixWith(CurrentColors.value.colors.onBackground, 0.97f)
} else {
backgroundColor
if (CurrentColors.value.base == DefaultTheme.SIMPLEX) {
backgroundColor.lighter(0.4f)
} else {
backgroundColor
}
}).toArgb()
val navBar = (if (hasBottom) {
// SimplexGreen while in call
if (window.statusBarColor == SimplexGreen.toArgb()) {
statusBarColorAfterCall.intValue = statusBar
statusBar = SimplexGreen.toArgb()
}
val navBar = (if (hasBottom && appPrefs.onboardingStage.get() == OnboardingStage.OnboardingComplete) {
backgroundColor.mixWith(CurrentColors.value.colors.onBackground, 0.97f)
} else {
backgroundColor
@@ -18,5 +18,6 @@ val NotificationsMode.requiresIgnoringBattery
lateinit var APPLICATION_ID: String
fun Uri.toURI(): URI = URI(toString().replace("\n", ""))
fun Uri.toURIOrNull(): URI? = try { toURI() } catch (e: Exception) { null }
fun URI.toUri(): Uri = Uri.parse(toString())
@@ -15,13 +15,14 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
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.toArgb
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.graphics.drawable.DrawableCompat
@@ -35,11 +36,12 @@ import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel
import chat.simplex.common.ui.theme.CurrentColors
import chat.simplex.common.views.chat.*
import chat.simplex.common.views.helpers.SharedContent
import chat.simplex.common.views.helpers.generalGetString
import chat.simplex.common.views.helpers.*
import chat.simplex.res.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.filter
import java.lang.reflect.Field
import java.net.URI
@@ -52,6 +54,7 @@ actual fun PlatformTextField(
showDeleteTextButton: MutableState<Boolean>,
userIsObserver: Boolean,
placeholder: String,
showVoiceButton: Boolean,
onMessageChange: (String) -> Unit,
onUpArrow: () -> Unit,
onFilesPasted: (List<URI>) -> Unit,
@@ -82,7 +85,15 @@ actual fun PlatformTextField(
freeFocus = true
}
}
LaunchedEffect(Unit) {
snapshotFlow { ModalManager.start.modalCount.value }
.filter { it > 0 }
.collect {
freeFocus = true
}
}
val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl
AndroidView(modifier = Modifier, factory = {
val editText = @SuppressLint("AppCompatCustomView") object: EditText(it) {
override fun setOnReceiveContentListener(
@@ -113,7 +124,8 @@ actual fun PlatformTextField(
editText.setTextColor(textColor.toArgb())
editText.textSize = textStyle.value.fontSize.value * appPrefs.fontScale.get()
editText.background = ColorDrawable(Color.Transparent.toArgb())
editText.setPadding(paddingStart, paddingTop, paddingEnd, paddingBottom)
editText.textDirection = if (isRtl) EditText.TEXT_DIRECTION_LOCALE else EditText.TEXT_DIRECTION_ANY_RTL
editText.setPaddingRelative(paddingStart, paddingTop, paddingEnd, paddingBottom)
editText.setText(cs.message)
editText.hint = placeholder
editText.setHintTextColor(hintColor.toArgb())
@@ -64,6 +64,9 @@ actual fun ActiveCallInteractiveArea(call: Call) {
}
}
// Temporary solution for storing a color that needs to be applied after call ends
var statusBarColorAfterCall = mutableIntStateOf(CurrentColors.value.colors.background.toArgb())
@Composable
private fun GreenLine(call: Call) {
Row(
@@ -81,9 +84,10 @@ private fun GreenLine(call: Call) {
}
val window = (LocalContext.current as Activity).window
DisposableEffect(Unit) {
statusBarColorAfterCall.intValue = window.statusBarColor
window.statusBarColor = SimplexGreen.toArgb()
onDispose {
window.statusBarColor = Color.Black.toArgb()
window.statusBarColor = statusBarColorAfterCall.intValue
}
}
}
@@ -241,10 +241,15 @@ private fun calculateInSampleSize(options: BitmapFactory.Options, reqWidth: Int,
}
actual fun getFileName(uri: URI): String? {
return androidAppContext.contentResolver.query(uri.toUri(), null, null, null, null)?.use { cursor ->
val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
cursor.moveToFirst()
cursor.getString(nameIndex)
return try {
androidAppContext.contentResolver.query(uri.toUri(), null, null, null, null)?.use { cursor ->
val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
cursor.moveToFirst()
// Can make an exception
cursor.getString(nameIndex)
}
} catch (e: Exception) {
null
}
}
@@ -1,6 +1,8 @@
package chat.simplex.common.views.onboarding
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import chat.simplex.common.model.SharedPreference
import chat.simplex.common.model.User
import chat.simplex.res.MR
@@ -8,8 +10,8 @@ import chat.simplex.res.MR
@Composable
actual fun OnboardingActionButton(user: User?, onboardingStage: SharedPreference<OnboardingStage>, onclick: (() -> Unit)?) {
if (user == null) {
OnboardingActionButton(MR.strings.create_your_profile, onboarding = OnboardingStage.Step2_CreateProfile, true, onclick = onclick)
OnboardingActionButton(Modifier.fillMaxWidth(), labelId = MR.strings.create_your_profile, onboarding = OnboardingStage.Step2_CreateProfile, onclick = onclick)
} else {
OnboardingActionButton(MR.strings.make_private_connection, onboarding = OnboardingStage.OnboardingComplete, true, onclick = onclick)
OnboardingActionButton(Modifier.fillMaxWidth(), labelId = MR.strings.make_private_connection, onboarding = OnboardingStage.OnboardingComplete, onclick = onclick)
}
}
@@ -1,5 +1,7 @@
package chat.simplex.common
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.SizeTransform
import androidx.compose.animation.core.Animatable
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -29,6 +31,8 @@ import chat.simplex.common.views.chat.ChatView
import chat.simplex.common.views.chatlist.*
import chat.simplex.common.views.database.DatabaseErrorView
import chat.simplex.common.views.helpers.*
import chat.simplex.common.views.helpers.ModalManager.Companion.fromEndToStartTransition
import chat.simplex.common.views.helpers.ModalManager.Companion.fromStartToEndTransition
import chat.simplex.common.views.localauth.VerticalDivider
import chat.simplex.common.views.onboarding.*
import chat.simplex.common.views.usersettings.*
@@ -70,7 +74,7 @@ fun MainScreen() {
!chatModel.controller.appPrefs.laNoticeShown.get()
&& showAdvertiseLAAlert
&& chatModel.controller.appPrefs.onboardingStage.get() == OnboardingStage.OnboardingComplete
&& chatModel.chats.size > 2
&& chatModel.chats.size > 3
&& chatModel.activeCallInvitation.value == null
) {
AppLock.showLANotice(ChatModel.controller.appPrefs.laNoticeShown) }
@@ -148,17 +152,30 @@ fun MainScreen() {
}
}
}
onboarding == OnboardingStage.Step1_SimpleXInfo -> {
SimpleXInfo(chatModel, onboarding = true)
if (appPlatform.isDesktop) {
ModalManager.fullscreen.showInView()
else -> AnimatedContent(targetState = onboarding,
transitionSpec = {
if (targetState > initialState) {
fromEndToStartTransition()
} else {
fromStartToEndTransition()
}.using(SizeTransform(clip = false))
}
) { state ->
when (state) {
OnboardingStage.OnboardingComplete -> { /* handled out of AnimatedContent block */}
OnboardingStage.Step1_SimpleXInfo -> {
SimpleXInfo(chatModel, onboarding = true)
if (appPlatform.isDesktop) {
ModalManager.fullscreen.showInView()
}
}
OnboardingStage.Step2_CreateProfile -> CreateFirstProfile(chatModel) {}
OnboardingStage.LinkAMobile -> LinkAMobile()
OnboardingStage.Step2_5_SetupDatabasePassphrase -> SetupDatabasePassphrase(chatModel)
OnboardingStage.Step3_CreateSimpleXAddress -> CreateSimpleXAddress(chatModel, null)
OnboardingStage.Step4_SetNotificationsMode -> SetNotificationsMode(chatModel)
}
}
onboarding == OnboardingStage.Step2_CreateProfile -> CreateFirstProfile(chatModel) {}
onboarding == OnboardingStage.LinkAMobile -> LinkAMobile()
onboarding == OnboardingStage.Step2_5_SetupDatabasePassphrase -> SetupDatabasePassphrase(chatModel)
onboarding == OnboardingStage.Step3_CreateSimpleXAddress -> CreateSimpleXAddress(chatModel, null)
onboarding == OnboardingStage.Step4_SetNotificationsMode -> SetNotificationsMode(chatModel)
}
if (appPlatform.isAndroid) {
ModalManager.fullscreen.showInView()
@@ -316,7 +333,7 @@ fun StartPartOfScreen(settingsState: SettingsViewState) {
fun CenterPartOfScreen() {
val currentChatId = remember { ChatModel.chatId }
LaunchedEffect(Unit) {
snapshotFlow { currentChatId }
snapshotFlow { currentChatId.value }
.distinctUntilChanged()
.collect {
if (it != null) {
@@ -19,6 +19,8 @@ import chat.simplex.res.MR
import dev.icerock.moko.resources.ImageResource
import dev.icerock.moko.resources.StringResource
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.flow.internal.ChannelFlow
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.datetime.*
@@ -204,7 +206,10 @@ object ChatModel {
class ChatsContext {
val chats = _chats
fun addChat(chat: Chat) = chats.add(index = 0, chat)
suspend fun addChat(chat: Chat) {
chats.add(index = 0, chat)
popChatCollector.throttlePopChat(chat.remoteHostId, chat.id, currentPosition = 0)
}
fun updateChatInfo(rhId: Long?, cInfo: ChatInfo) {
val i = getChatIndex(rhId, cInfo.id)
@@ -229,19 +234,19 @@ object ChatModel {
}
}
fun updateContactConnection(rhId: Long?, contactConnection: PendingContactConnection) = updateChat(rhId, ChatInfo.ContactConnection(contactConnection))
suspend fun updateContactConnection(rhId: Long?, contactConnection: PendingContactConnection) = updateChat(rhId, ChatInfo.ContactConnection(contactConnection))
fun updateContact(rhId: Long?, contact: Contact) = updateChat(rhId, ChatInfo.Direct(contact), addMissing = contact.directOrUsed)
suspend fun updateContact(rhId: Long?, contact: Contact) = updateChat(rhId, ChatInfo.Direct(contact), addMissing = contact.directOrUsed)
fun updateContactConnectionStats(rhId: Long?, contact: Contact, connectionStats: ConnectionStats) {
suspend fun updateContactConnectionStats(rhId: Long?, contact: Contact, connectionStats: ConnectionStats) {
val updatedConn = contact.activeConn?.copy(connectionStats = connectionStats)
val updatedContact = contact.copy(activeConn = updatedConn)
updateContact(rhId, updatedContact)
}
fun updateGroup(rhId: Long?, groupInfo: GroupInfo) = updateChat(rhId, ChatInfo.Group(groupInfo))
suspend fun updateGroup(rhId: Long?, groupInfo: GroupInfo) = updateChat(rhId, ChatInfo.Group(groupInfo))
private fun updateChat(rhId: Long?, cInfo: ChatInfo, addMissing: Boolean = true) {
private suspend fun updateChat(rhId: Long?, cInfo: ChatInfo, addMissing: Boolean = true) {
if (hasChat(rhId, cInfo.id)) {
updateChatInfo(rhId, cInfo)
} else if (addMissing) {
@@ -250,8 +255,8 @@ object ChatModel {
}
fun updateChats(newChats: List<Chat>) {
chats.clear()
chats.addAll(newChats)
chats.replaceAll(newChats)
popChatCollector.clear()
val cId = chatId.value
// If chat is null, it was deleted in background after apiGetChats call
@@ -260,16 +265,21 @@ object ChatModel {
}
}
fun replaceChat(rhId: Long?, id: String, chat: Chat) {
suspend fun replaceChat(rhId: Long?, id: String, chat: Chat) {
val i = getChatIndex(rhId, id)
if (i >= 0) {
chats[i] = chat
} else {
// invalid state, correcting
chats.add(index = 0, chat)
addChat(chat)
}
}
suspend fun addChatItem(rhId: Long?, cInfo: ChatInfo, cItem: ChatItem) {
// mark chat non deleted
if (cInfo is ChatInfo.Direct && cInfo.chatDeleted) {
val updatedContact = cInfo.contact.copy(chatDeleted = false)
updateContact(rhId, updatedContact)
}
// update previews
val i = getChatIndex(rhId, cInfo.id)
val chat: Chat
@@ -301,8 +311,10 @@ object ChatModel {
else
chat.chatStats
)
if (i > 0) {
chats.add(index = 0, chats.removeAt(i))
if (appPlatform.isDesktop && cItem.chatDir.sent) {
addChat(chats.removeAt(i))
} else {
popChatCollector.throttlePopChat(chat.remoteHostId, chat.id, currentPosition = i)
}
} else {
addChat(Chat(remoteHostId = rhId, chatInfo = cInfo, chatItems = arrayListOf(cItem)))
@@ -421,6 +433,56 @@ object ChatModel {
}
}
val popChatCollector = PopChatCollector()
class PopChatCollector {
private val subject = MutableSharedFlow<Unit>()
private var remoteHostId: Long? = null
private val chatsToPop = mutableMapOf<ChatId, Instant>()
init {
withLongRunningApi {
subject
.throttleLatest(2000)
.collect {
withChats {
chats.replaceAll(popCollectedChats())
}
}
}
}
suspend fun throttlePopChat(rhId: Long?, chatId: ChatId, currentPosition: Int) {
if (rhId != remoteHostId) {
chatsToPop.clear()
remoteHostId = rhId
}
if (currentPosition > 0 || chatsToPop.isNotEmpty()) {
chatsToPop[chatId] = Clock.System.now()
subject.emit(Unit)
}
}
fun clear() = chatsToPop.clear()
private fun popCollectedChats(): List<Chat> {
val chs = mutableListOf<Chat>()
// collect chats that received updates
for ((chatId, popTs) in chatsToPop.entries) {
val ch = getChat(chatId)
if (ch != null) {
ch.popTs = popTs
chs.add(ch)
}
}
// sort chats by pop timestamp in descending order
val newChats = ArrayList(chs.sortedByDescending { it.popTs })
newChats.addAll(chats.value.filter { !chatsToPop.containsKey(it.chatInfo.id) } )
chatsToPop.clear()
return newChats
}
}
fun markChatItemsRead(remoteHostId: Long?, chatInfo: ChatInfo, range: CC.ItemRange? = null, unreadCountAfter: Int? = null) {
val cInfo = chatInfo
val markedRead = markItemsReadInCurrentChat(chatInfo, range)
@@ -461,7 +523,7 @@ object ChatModel {
chats.removeAll { it.id == id && it.remoteHostId == rhId }
}
fun upsertGroupMember(rhId: Long?, groupInfo: GroupInfo, member: GroupMember): Boolean {
suspend fun upsertGroupMember(rhId: Long?, groupInfo: GroupInfo, member: GroupMember): Boolean {
// user member was updated
if (groupInfo.membership.groupMemberId == member.groupMemberId) {
updateGroup(rhId, groupInfo)
@@ -498,7 +560,7 @@ object ChatModel {
}
}
fun updateGroupMemberConnectionStats(rhId: Long?, groupInfo: GroupInfo, member: GroupMember, connectionStats: ConnectionStats) {
suspend fun updateGroupMemberConnectionStats(rhId: Long?, groupInfo: GroupInfo, member: GroupMember, connectionStats: ConnectionStats) {
val memberConn = member.activeConn
if (memberConn != null) {
val updatedConn = memberConn.copy(connectionStats = connectionStats)
@@ -822,6 +884,11 @@ interface NamedChat {
val localAlias: String
val chatViewName: String
get() = localAlias.ifEmpty { displayName + (if (fullName == "" || fullName == displayName) "" else " / $fullName") }
fun anyNameContains(searchAnyCase: String): Boolean {
val s = searchAnyCase.trim().lowercase()
return chatViewName.lowercase().contains(s) || displayName.lowercase().contains(s) || fullName.lowercase().contains(s)
}
}
interface SomeChat {
@@ -847,6 +914,9 @@ data class Chat(
val chatItems: List<ChatItem>,
val chatStats: ChatStats = ChatStats()
) {
@Transient
var popTs: Instant? = null
val nextSendGrpInv: Boolean
get() = when (chatInfo) {
is ChatInfo.Direct -> chatInfo.contact.nextSendGrpInv
@@ -1422,21 +1492,23 @@ data class GroupMember (
val memberContactId: Long? = null,
val memberContactProfileId: Long,
var activeConn: Connection? = null
) {
): NamedChat {
val id: String get() = "#$groupId @$groupMemberId"
val displayName: String
override val displayName: String
get() {
val p = memberProfile
val name = p.localAlias.ifEmpty { p.displayName }
return pastMember(name)
}
val fullName: String get() = memberProfile.fullName
val image: String? get() = memberProfile.image
override val fullName: String get() = memberProfile.fullName
override val image: String? get() = memberProfile.image
val contactLink: String? = memberProfile.contactLink
val verified get() = activeConn?.connectionCode != null
val blocked get() = blockedByAdmin || !memberSettings.showMessages
val chatViewName: String
override val localAlias: String = memberProfile.localAlias
override val chatViewName: String
get() {
val p = memberProfile
val name = p.localAlias.ifEmpty { p.displayName + (if (p.fullName == "" || p.fullName == p.displayName) "" else " / ${p.fullName}") }
@@ -159,6 +159,7 @@ class AppPreferences {
val incognito = mkBoolPreference(SHARED_PREFS_INCOGNITO, false)
val liveMessageAlertShown = mkBoolPreference(SHARED_PREFS_LIVE_MESSAGE_ALERT_SHOWN, false)
val showHiddenProfilesNotice = mkBoolPreference(SHARED_PREFS_SHOW_HIDDEN_PROFILES_NOTICE, true)
val oneHandUICardShown = mkBoolPreference(SHARED_PREFS_ONE_HAND_UI_CARD_SHOWN, false)
val showMuteProfileAlert = mkBoolPreference(SHARED_PREFS_SHOW_MUTE_PROFILE_ALERT, true)
val appLanguage = mkStrPreference(SHARED_PREFS_APP_LANGUAGE, null)
val appUpdateChannel = mkEnumPreference(SHARED_PREFS_APP_UPDATE_CHANNEL, AppUpdatesChannel.DISABLED) { AppUpdatesChannel.entries.firstOrNull { it.name == this } }
@@ -227,6 +228,16 @@ class AppPreferences {
val oneHandUI = mkBoolPreference(SHARED_PREFS_ONE_HAND_UI, appPlatform.isAndroid)
val hintPreferences: List<Pair<SharedPreference<Boolean>, Boolean>> = listOf(
laNoticeShown to false,
oneHandUICardShown to false,
liveMessageAlertShown to false,
showHiddenProfilesNotice to true,
showMuteProfileAlert to true,
showDeleteConversationNotice to true,
showDeleteContactNotice to true,
)
private fun mkIntPreference(prefName: String, default: Int) =
SharedPreference(
get = fun() = settings.getInt(prefName, default),
@@ -372,6 +383,7 @@ class AppPreferences {
private const val SHARED_PREFS_INCOGNITO = "Incognito"
private const val SHARED_PREFS_LIVE_MESSAGE_ALERT_SHOWN = "LiveMessageAlertShown"
private const val SHARED_PREFS_SHOW_HIDDEN_PROFILES_NOTICE = "ShowHiddenProfilesNotice"
private const val SHARED_PREFS_ONE_HAND_UI_CARD_SHOWN = "OneHandUICardShown"
private const val SHARED_PREFS_SHOW_MUTE_PROFILE_ALERT = "ShowMuteProfileAlert"
private const val SHARED_PREFS_STORE_DB_PASSPHRASE = "StoreDBPassphrase"
private const val SHARED_PREFS_INITIAL_RANDOM_DB_PASSPHRASE = "InitialRandomDBPassphrase"
@@ -519,7 +531,10 @@ object ChatController {
suspend fun startChatWithTemporaryDatabase(ctrl: ChatCtrl, netCfg: NetCfg): User? {
Log.d(TAG, "startChatWithTemporaryDatabase")
val migrationActiveUser = apiGetActiveUser(null, ctrl) ?: apiCreateActiveUser(null, Profile(displayName = "Temp", fullName = ""), ctrl = ctrl)
apiSetNetworkConfig(netCfg, ctrl)
if (!apiSetNetworkConfig(netCfg, ctrl)) {
Log.e(TAG, "Error setting network config, stopping migration")
return null
}
apiSetAppFilePaths(
getMigrationTempFilesDirectory().absolutePath,
getMigrationTempFilesDirectory().absolutePath,
@@ -2121,12 +2136,6 @@ object ChatController {
val cInfo = r.chatItem.chatInfo
val cItem = r.chatItem.chatItem
if (active(r.user)) {
if (cInfo is ChatInfo.Direct && cInfo.chatDeleted) {
val updatedContact = cInfo.contact.copy(chatDeleted = false)
withChats {
updateContact(rhId, updatedContact)
}
}
withChats {
addChatItem(rhId, cInfo, cItem)
}
@@ -2514,6 +2523,8 @@ object ChatController {
ModalManager.fullscreen.closeModals()
fun showAlert(chatError: ChatError) {
when {
r.rcStopReason is RemoteCtrlStopReason.Disconnected ->
{}
r.rcStopReason is RemoteCtrlStopReason.ConnectionFailed
&& r.rcStopReason.chatError is ChatError.ChatErrorAgent
&& r.rcStopReason.chatError.agentError is AgentErrorType.RCP
@@ -2703,6 +2714,7 @@ object ChatController {
chatModel.chatItems.clear()
withChats {
chats.clear()
popChatCollector.clear()
}
}
val statuses = apiGetNetworkStatuses(rhId)
@@ -5759,7 +5771,7 @@ sealed class DatabaseError {
@Serializable
sealed class SQLiteError {
@Serializable @SerialName("errorNotADatabase") object ErrorNotADatabase: SQLiteError()
@Serializable @SerialName("error") class Error(val error: String): SQLiteError()
@Serializable @SerialName("error") class Error(val dbError: String): SQLiteError()
}
@Serializable
@@ -15,6 +15,7 @@ expect fun PlatformTextField(
showDeleteTextButton: MutableState<Boolean>,
userIsObserver: Boolean,
placeholder: String,
showVoiceButton: Boolean,
onMessageChange: (String) -> Unit,
onUpArrow: () -> Unit,
onFilesPasted: (List<URI>) -> Unit,
@@ -2,8 +2,8 @@ package chat.simplex.common.views
import SectionTextFooter
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material.*
import androidx.compose.material.MaterialTheme.colors
@@ -17,11 +17,12 @@ import androidx.compose.ui.graphics.SolidColor
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.style.*
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel.controller
import chat.simplex.common.platform.*
import chat.simplex.common.ui.theme.*
@@ -112,47 +113,47 @@ fun CreateFirstProfile(chatModel: ChatModel, close: () -> Unit) {
var savedKeyboardState by remember { mutableStateOf(keyboardState) }
ProvideWindowInsets(windowInsetsAnimationsEnabled = true) {
Box(
Column(
modifier = Modifier
.fillMaxSize()
.padding(top = 20.dp)
.themedBackground(),
horizontalAlignment = Alignment.CenterHorizontally
) {
val displayName = rememberSaveable { mutableStateOf("") }
val focusRequester = remember { FocusRequester() }
CloseSheetBar(close = {
if (chatModel.users.none { !it.user.hidden }) {
appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo)
} else {
close()
}
})
BackHandler(onBack = {
appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo)
})
ColumnWithScrollBar(
modifier = Modifier.fillMaxSize()
modifier = if (appPlatform.isAndroid) Modifier.fillMaxSize() else Modifier.widthIn(max = 600.dp).fillMaxHeight(),
) {
/*CloseSheetBar(close = {
if (chatModel.users.isEmpty()) {
chatModel.onboardingStage.value = OnboardingStage.Step1_SimpleXInfo
} else {
close()
}
})*/
val displayName = rememberSaveable { mutableStateOf("") }
val focusRequester = remember { FocusRequester() }
Column(Modifier.padding(horizontal = DEFAULT_PADDING)) {
AppBarTitle(stringResource(MR.strings.create_profile), bottomPadding = DEFAULT_PADDING)
ReadableText(MR.strings.your_profile_is_stored_on_your_device, TextAlign.Center, padding = PaddingValues(), style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary))
ReadableText(MR.strings.profile_is_only_shared_with_your_contacts, TextAlign.Center, style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary))
ProfileNameField(displayName, stringResource(MR.strings.display_name), { it.trim() == mkValidName(it) }, focusRequester)
Spacer(Modifier.height(DEFAULT_PADDING))
Row(Modifier.padding(bottom = DEFAULT_PADDING_HALF).fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
Text(
stringResource(MR.strings.display_name),
fontSize = 16.sp
)
val name = displayName.value.trim()
val validName = mkValidName(name)
Spacer(Modifier.height(20.dp))
if (name != validName) {
IconButton({ showInvalidNameAlert(mkValidName(displayName.value), displayName) }, Modifier.size(20.dp)) {
Icon(painterResource(MR.images.ic_info), null, tint = MaterialTheme.colors.error)
}
}
}
ProfileNameField(displayName, "", { it.trim() == mkValidName(it) }, focusRequester)
ReadableText(MR.strings.your_profile_is_stored_on_your_device, TextAlign.Start, padding = PaddingValues(), style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary))
ReadableText(MR.strings.profile_is_only_shared_with_your_contacts, TextAlign.Start, style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary))
}
Spacer(Modifier.fillMaxHeight().weight(1f))
OnboardingButtons(displayName, close)
Column(Modifier.widthIn(max = if (appPlatform.isAndroid) 450.dp else 1000.dp).align(Alignment.CenterHorizontally), horizontalAlignment = Alignment.CenterHorizontally) {
OnboardingActionButton(
if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier.widthIn(min = 300.dp),
labelId = MR.strings.create_profile_button,
onboarding = null,
enabled = canCreateProfile(displayName.value),
onclick = { createProfileOnboarding(chat.simplex.common.platform.chatModel, displayName.value, close) }
)
// Reserve space
TextButtonBelowOnboardingButton("", null)
}
LaunchedEffect(Unit) {
delay(300)
@@ -230,28 +231,6 @@ fun createProfileOnboarding(chatModel: ChatModel, displayName: String, close: ()
}
}
@Composable
fun OnboardingButtons(displayName: MutableState<String>, close: () -> Unit) {
Row {
SimpleButtonDecorated(
text = stringResource(MR.strings.about_simplex),
icon = painterResource(MR.images.ic_arrow_back_ios_new),
textDecoration = TextDecoration.None,
fontWeight = FontWeight.Medium
) { chatModel.controller.appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo) }
Spacer(Modifier.fillMaxWidth().weight(1f))
val enabled = canCreateProfile(displayName.value)
val createModifier: Modifier = Modifier.clickable(enabled) { createProfileOnboarding(chatModel, displayName.value, close) }.padding(8.dp)
val createColor: Color = if (enabled) MaterialTheme.colors.primary else MaterialTheme.colors.secondary
Surface(shape = RoundedCornerShape(20.dp), color = Color.Transparent, contentColor = LocalContentColor.current) {
Row(verticalAlignment = Alignment.CenterVertically, modifier = createModifier) {
Text(stringResource(MR.strings.create_profile_button), style = MaterialTheme.typography.caption, color = createColor, fontWeight = FontWeight.Medium)
Icon(painterResource(MR.images.ic_arrow_forward_ios), stringResource(MR.strings.create_profile_button), tint = createColor)
}
}
}
}
@Composable
fun ProfileNameField(name: MutableState<String>, placeholder: String = "", isValid: (String) -> Boolean = { true }, focusRequester: FocusRequester? = null) {
var valid by rememberSaveable { mutableStateOf(true) }
@@ -269,15 +248,13 @@ fun ProfileNameField(name: MutableState<String>, placeholder: String = "", isVal
}
val modifier = Modifier
.fillMaxWidth()
.padding(horizontal = DEFAULT_PADDING)
.heightIn(min = 50.dp)
.navigationBarsWithImePadding()
.onFocusChanged { focused = it.isFocused }
Box(
Column(
Modifier
.fillMaxWidth()
.height(52.dp)
.border(border = BorderStroke(1.dp, strokeColor), shape = RoundedCornerShape(50)),
contentAlignment = Alignment.Center
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
BasicTextField(
value = name.value,
@@ -285,8 +262,31 @@ fun ProfileNameField(name: MutableState<String>, placeholder: String = "", isVal
modifier = if (focusRequester == null) modifier else modifier.focusRequester(focusRequester),
textStyle = TextStyle(fontSize = 18.sp, color = colors.onBackground),
singleLine = true,
cursorBrush = SolidColor(MaterialTheme.colors.secondary)
cursorBrush = SolidColor(MaterialTheme.colors.secondary),
decorationBox = @Composable { innerTextField ->
TextFieldDefaults.TextFieldDecorationBox(
value = name.value,
innerTextField = innerTextField,
placeholder = if (placeholder != "") {{ Text(placeholder, style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.secondary, lineHeight = 22.sp)) }} else null,
contentPadding = PaddingValues(),
label = null,
visualTransformation = VisualTransformation.None,
leadingIcon = null,
trailingIcon = if (!valid && placeholder != "") {
{
IconButton({ showInvalidNameAlert(mkValidName(name.value), name) }, Modifier.size(20.dp)) {
Icon(painterResource(MR.images.ic_info), null, tint = MaterialTheme.colors.error)
}
}
} else null,
singleLine = true,
enabled = true,
isError = false,
interactionSource = remember { MutableInteractionSource() },
)
}
)
Divider(color = strokeColor)
}
LaunchedEffect(Unit) {
snapshotFlow { name.value }
@@ -31,8 +31,7 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.unit.*
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel.controller
@@ -545,20 +544,22 @@ fun ChatInfoLayout(
SectionSpacer()
Row(
Modifier
.fillMaxWidth()
.padding(horizontal = DEFAULT_PADDING),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically
Box(
Modifier.fillMaxWidth(),
contentAlignment = Alignment.Center
) {
SearchButton(chat, contact, close, onSearchClicked)
Spacer(Modifier.weight(1f))
AudioCallButton(chat, contact)
Spacer(Modifier.weight(1f))
VideoButton(chat, contact)
Spacer(Modifier.weight(1f))
MuteButton(chat, contact)
Row(
Modifier
.widthIn(max = 460.dp)
.padding(horizontal = DEFAULT_PADDING),
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically
) {
SearchButton(modifier = Modifier.fillMaxWidth(0.25f), chat, contact, close, onSearchClicked)
AudioCallButton(modifier = Modifier.fillMaxWidth(0.33f), chat, contact)
VideoButton(modifier = Modifier.fillMaxWidth(0.5f), chat, contact)
MuteButton(modifier = Modifier.fillMaxWidth(1f), chat, contact)
}
}
SectionSpacer()
@@ -779,9 +780,16 @@ fun LocalAliasEditor(
}
@Composable
fun SearchButton(chat: Chat, contact: Contact, close: () -> Unit, onSearchClicked: () -> Unit) {
fun SearchButton(
modifier: Modifier,
chat: Chat,
contact: Contact,
close: () -> Unit,
onSearchClicked: () -> Unit
) {
val disabled = !contact.ready || chat.chatItems.isEmpty()
InfoViewActionButton(
modifier = modifier,
icon = painterResource(MR.images.ic_search),
title = generalGetString(MR.strings.info_view_search_button),
disabled = disabled,
@@ -796,11 +804,16 @@ fun SearchButton(chat: Chat, contact: Contact, close: () -> Unit, onSearchClicke
}
@Composable
fun MuteButton(chat: Chat, contact: Contact) {
fun MuteButton(
modifier: Modifier,
chat: Chat,
contact: Contact
) {
val ntfsEnabled = remember { mutableStateOf(chat.chatInfo.ntfsEnabled) }
val disabled = !contact.ready || !contact.active
InfoViewActionButton(
modifier = modifier,
icon = if (ntfsEnabled.value) painterResource(MR.images.ic_notifications_off) else painterResource(MR.images.ic_notifications),
title = if (ntfsEnabled.value) stringResource(MR.strings.mute_chat) else stringResource(MR.strings.unmute_chat),
disabled = disabled,
@@ -812,8 +825,13 @@ fun MuteButton(chat: Chat, contact: Contact) {
}
@Composable
fun AudioCallButton(chat: Chat, contact: Contact) {
fun AudioCallButton(
modifier: Modifier,
chat: Chat,
contact: Contact
) {
CallButton(
modifier = modifier,
chat,
contact,
icon = painterResource(MR.images.ic_call),
@@ -823,8 +841,13 @@ fun AudioCallButton(chat: Chat, contact: Contact) {
}
@Composable
fun VideoButton(chat: Chat, contact: Contact) {
fun VideoButton(
modifier: Modifier,
chat: Chat,
contact: Contact
) {
CallButton(
modifier = modifier,
chat,
contact,
icon = painterResource(MR.images.ic_videocam),
@@ -834,7 +857,14 @@ fun VideoButton(chat: Chat, contact: Contact) {
}
@Composable
fun CallButton(chat: Chat, contact: Contact, icon: Painter, title: String, mediaType: CallMediaType) {
fun CallButton(
modifier: Modifier,
chat: Chat,
contact: Contact,
icon: Painter,
title: String,
mediaType: CallMediaType
) {
val canCall = contact.ready && contact.active && contact.mergedPreferences.calls.enabled.forUser && chatModel.activeCall.value == null
val needToAllowCallsToContact = remember(chat.chatInfo) {
chat.chatInfo is ChatInfo.Direct && with(chat.chatInfo.contact.mergedPreferences.calls) {
@@ -845,6 +875,7 @@ fun CallButton(chat: Chat, contact: Contact, icon: Painter, title: String, media
val allowedCallsByPrefs = remember(chat.chatInfo) { chat.chatInfo.featureEnabled(ChatFeature.Calls) }
InfoViewActionButton(
modifier = modifier,
icon = icon,
title = title,
disabled = chatModel.activeCall.value != null,
@@ -907,42 +938,52 @@ private fun showCallsProhibitedAlert() {
)
}
// for ChatInfoView (it has most buttons - 4) we use Spacer(Modifier.weight(1f)) to fit,
// for GroupChat And GroupMemberInfoViews (2 to 3 buttons) we use this as approximately equal to spacing in ChatInfoView
val INFO_VIEW_BUTTONS_PADDING = 36.dp
@Composable
fun InfoViewActionButton(icon: Painter, title: String, disabled: Boolean, disabledLook: Boolean, onClick: () -> Unit) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
IconButton(
onClick = onClick,
enabled = !disabled
fun InfoViewActionButton(
modifier: Modifier,
icon: Painter,
title: String,
disabled: Boolean,
disabledLook: Boolean,
onClick: () -> Unit
) {
Box(modifier) {
Column(
Modifier
.fillMaxWidth()
.padding(8.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Box(
modifier = Modifier
.background(
if (disabledLook) MaterialTheme.colors.secondaryVariant else MaterialTheme.colors.primary,
shape = CircleShape
)
.padding(16.dp)
IconButton(
onClick = onClick,
enabled = !disabled
) {
Icon(
icon,
contentDescription = null,
Modifier.size(24.dp * fontSizeSqrtMultiplier),
tint = if (disabledLook) MaterialTheme.colors.secondary else MaterialTheme.colors.onPrimary
)
Box(
Modifier
.size(56.dp)
.background(
if (disabledLook) MaterialTheme.colors.secondaryVariant else MaterialTheme.colors.primary,
shape = CircleShape
),
contentAlignment = Alignment.Center
) {
Icon(
icon,
contentDescription = null,
Modifier.size(24.dp * fontSizeSqrtMultiplier),
tint = if (disabledLook) MaterialTheme.colors.secondary else MaterialTheme.colors.onPrimary
)
}
}
Text(
title.capitalize(Locale.current),
Modifier.padding(top = DEFAULT_SPACE_AFTER_ICON),
style = MaterialTheme.typography.subtitle2.copy(fontWeight = FontWeight.Normal, fontSize = 12.sp),
color = MaterialTheme.colors.secondary,
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
}
Text(
title.capitalize(Locale.current),
style = MaterialTheme.typography.subtitle2.copy(fontWeight = FontWeight.Normal),
color = MaterialTheme.colors.secondary,
modifier = Modifier.padding(top = DEFAULT_SPACE_AFTER_ICON)
)
}
}
@@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.mapSaver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.*
import androidx.compose.ui.draw.drawWithCache
@@ -49,26 +48,17 @@ import kotlin.math.sign
// staleChatId means the id that was before chatModel.chatId becomes null. It's needed for Android only to make transition from chat
// to chat list smooth. Otherwise, chat view will become blank right before the transition starts
fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -> Unit) {
val shouldReturn = remember { mutableStateOf(false) }
val remoteHostId = remember { derivedStateOf { chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == staleChatId.value }?.remoteHostId } }
val showSearch = rememberSaveable { mutableStateOf(false) }
val activeChatInfo = remember {
derivedStateOf {
val info = chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == staleChatId.value }?.chatInfo
if (info == null) {
shouldReturn.value = true
}
return@derivedStateOf info ?: ChatInfo.Direct.sampleData
}
}
val activeChatInfo = remember { derivedStateOf { chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == staleChatId.value }?.chatInfo } }
val user = chatModel.currentUser.value
if (shouldReturn.value || user == null) {
val chatInfo = activeChatInfo.value
if (chatInfo == null || user == null) {
LaunchedEffect(Unit) {
chatModel.chatId.value = null
ModalManager.end.closeModals()
}
} else {
val chatInfo = activeChatInfo.value
val searchText = rememberSaveable { mutableStateOf("") }
val useLinkPreviews = chatModel.controller.appPrefs.privacyLinkPreviews.get()
val composeState = rememberSaveable(saver = ComposeState.saver()) {
@@ -96,21 +86,17 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
.collect { chatId ->
markUnreadChatAsRead(chatId)
showSearch.value = false
selectedChatItems.value = null
}
}
}
KeyChangeEffect(chatModel.chatId.value) {
if (chatModel.chatId.value != null) {
selectedChatItems.value = null
}
}
val view = LocalMultiplatformView()
val chatRh = remoteHostId.value
// We need to have real unreadCount value for displaying it inside top right button
// Having activeChat reloaded on every change in it is inefficient (UI lags)
val unreadCount = remember {
derivedStateOf {
chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == chatModel.chatId.value }?.chatStats?.unreadCount ?: 0
chatModel.chats.value.firstOrNull { chat -> chat.chatInfo.id == activeChatInfo.value?.id }?.chatStats?.unreadCount ?: 0
}
}
val clipboard = LocalClipboardManager.current
@@ -267,9 +253,9 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
}
}
},
loadPrevMessages = {
if (chatModel.chatId.value != activeChatInfo.value.id) return@ChatLayout
val c = chatModel.getChat(chatModel.chatId.value ?: return@ChatLayout)
loadPrevMessages = { chatId ->
val c = chatModel.getChat(chatId)
if (chatModel.chatId.value != chatId) return@ChatLayout
val firstId = chatModel.chatItems.value.firstOrNull()?.id
if (c != null && firstId != null) {
withBGApi {
@@ -279,7 +265,6 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
},
deleteMessage = { itemId, mode ->
withBGApi {
val cInfo = chatInfo
val toDeleteItem = chatModel.chatItems.value.firstOrNull { it.id == itemId }
val toModerate = toDeleteItem?.memberToModerate(chatInfo)
val groupInfo = toModerate?.first
@@ -295,8 +280,8 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
} else {
chatModel.controller.apiDeleteChatItems(
chatRh,
type = cInfo.chatType,
id = cInfo.apiId,
type = chatInfo.chatType,
id = chatInfo.apiId,
itemIds = listOf(itemId),
mode = mode
)
@@ -307,9 +292,9 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
toChatItem = deleted.toChatItem?.chatItem
withChats {
if (toChatItem != null) {
upsertChatItem(chatRh, cInfo, toChatItem)
upsertChatItem(chatRh, chatInfo, toChatItem)
} else {
removeChatItem(chatRh, cInfo, deletedChatItem)
removeChatItem(chatRh, chatInfo, deletedChatItem)
}
}
}
@@ -472,7 +457,10 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
markRead = { range, unreadCountAfter ->
withBGApi {
withChats {
markChatItemsRead(chatRh, chatInfo, range, unreadCountAfter)
// It's important to call it on Main thread. Otherwise, composable crash occurs from time-to-time without useful stacktrace
withContext(Dispatchers.Main) {
markChatItemsRead(chatRh, chatInfo, range, unreadCountAfter)
}
ntfManager.cancelNotificationsForChat(chatInfo.id)
chatModel.controller.apiChatRead(
chatRh,
@@ -486,8 +474,8 @@ fun ChatView(staleChatId: State<String?>, onComposed: suspend (chatId: String) -
changeNtfsState = { enabled, currentValue -> toggleNotifications(chatRh, chatInfo, enabled, chatModel, currentValue) },
onSearchValueChanged = { value ->
if (searchText.value == value) return@ChatLayout
if (chatModel.chatId.value != activeChatInfo.value.id) return@ChatLayout
val c = chatModel.getChat(chatModel.chatId.value ?: return@ChatLayout) ?: return@ChatLayout
val c = chatModel.getChat(chatInfo.id) ?: return@ChatLayout
if (chatModel.chatId.value != chatInfo.id) return@ChatLayout
withBGApi {
apiFindMessages(c, chatModel, value)
searchText.value = value
@@ -556,7 +544,7 @@ fun startChatCall(remoteHostId: Long?, chatInfo: ChatInfo, media: CallMediaType)
@Composable
fun ChatLayout(
remoteHostId: State<Long?>,
chatInfo: State<ChatInfo>,
chatInfo: State<ChatInfo?>,
unreadCount: State<Int>,
composeState: MutableState<ComposeState>,
composeView: (@Composable () -> Unit),
@@ -569,7 +557,7 @@ fun ChatLayout(
back: () -> Unit,
info: () -> Unit,
showMemberInfo: (GroupInfo, GroupMember) -> Unit,
loadPrevMessages: () -> Unit,
loadPrevMessages: (ChatId) -> Unit,
deleteMessage: (Long, CIDeleteMode) -> Unit,
deleteMessages: (List<Long>) -> Unit,
receiveFile: (Long) -> Unit,
@@ -601,12 +589,11 @@ fun ChatLayout(
) {
val scope = rememberCoroutineScope()
val attachmentDisabled = remember { derivedStateOf { composeState.value.attachmentDisabled } }
Box(
Modifier
.fillMaxWidth()
.desktopOnExternalDrag(
enabled = !attachmentDisabled.value && rememberUpdatedState(chatInfo.value).value.userCanSend,
enabled = remember(attachmentDisabled.value, chatInfo.value?.userCanSend) { mutableStateOf(!attachmentDisabled.value && chatInfo.value?.userCanSend == true) }.value,
onFiles = { paths -> composeState.onFilesAttached(paths.map { it.toURI() }) },
onImage = {
// TODO: file is not saved anywhere?!
@@ -623,11 +610,10 @@ fun ChatLayout(
)
) {
ProvideWindowInsets(windowInsetsAnimationsEnabled = true) {
val elevation = remember { derivedStateOf { if (attachmentBottomSheetState.currentValue == ModalBottomSheetValue.Hidden) 0.dp else ModalBottomSheetDefaults.Elevation } }
ModalBottomSheetLayout(
scrimColor = Color.Black.copy(alpha = 0.12F),
modifier = Modifier.navigationBarsWithImePadding(),
sheetElevation = elevation.value,
sheetElevation = 0.dp,
sheetContent = {
ChooseAttachmentView(
attachmentOption,
@@ -645,7 +631,10 @@ fun ChatLayout(
Scaffold(
topBar = {
if (selectedChatItems.value == null) {
ChatInfoToolbar(chatInfo, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch)
val chatInfo = chatInfo.value
if (chatInfo != null) {
ChatInfoToolbar(chatInfo, back, info, startCall, endCall, addMembers, openGroupLink, changeNtfsState, onSearchValueChanged, showSearch)
}
} else {
SelectedItemsTopToolbar(selectedChatItems)
}
@@ -670,13 +659,17 @@ fun ChatLayout(
Modifier)
.padding(contentPadding)
) {
ChatItemsList(
remoteHostId, chatInfo, unreadCount, composeState, searchValue,
useLinkPreviews, linkMode, selectedChatItems, showMemberInfo, loadPrevMessages, deleteMessage, deleteMessages,
receiveFile, cancelFile, joinGroup, acceptCall, acceptFeature, openDirectChat, forwardItem,
updateContactStats, updateMemberStats, syncContactConnection, syncMemberConnection, findModelChat, findModelMember,
setReaction, showItemDetails, markRead, setFloatingButton, onComposed, developerTools, showViaProxy,
)
val remoteHostId = remember { remoteHostId }.value
val chatInfo = remember { chatInfo }.value
if (chatInfo != null) {
ChatItemsList(
remoteHostId, chatInfo, unreadCount, composeState, searchValue,
useLinkPreviews, linkMode, selectedChatItems, showMemberInfo, loadPrevMessages, deleteMessage, deleteMessages,
receiveFile, cancelFile, joinGroup, acceptCall, acceptFeature, openDirectChat, forwardItem,
updateContactStats, updateMemberStats, syncContactConnection, syncMemberConnection, findModelChat, findModelMember,
setReaction, showItemDetails, markRead, setFloatingButton, onComposed, developerTools, showViaProxy,
)
}
}
}
}
@@ -686,7 +679,7 @@ fun ChatLayout(
@Composable
fun ChatInfoToolbar(
chatInfo: State<ChatInfo>,
chatInfo: ChatInfo,
back: () -> Unit,
info: () -> Unit,
startCall: (CallMediaType) -> Unit,
@@ -711,7 +704,6 @@ fun ChatInfoToolbar(
if (appPlatform.isAndroid) {
BackHandler(onBack = onBackClicked)
}
val chatInfo = chatInfo.value
val barButtons = arrayListOf<@Composable RowScope.() -> Unit>()
val menuItems = arrayListOf<@Composable () -> Unit>()
val activeCall by remember { chatModel.activeCall }
@@ -916,22 +908,10 @@ private fun ContactVerifiedShield() {
Icon(painterResource(MR.images.ic_verified_user), null, Modifier.size(18.dp * fontSizeSqrtMultiplier).padding(end = 3.dp, top = 1.dp), tint = MaterialTheme.colors.secondary)
}
data class CIListState(val scrolled: Boolean, val itemCount: Int, val keyboardState: KeyboardState)
val CIListStateSaver = run {
val scrolledKey = "scrolled"
val countKey = "itemCount"
val keyboardKey = "keyboardState"
mapSaver(
save = { mapOf(scrolledKey to it.scrolled, countKey to it.itemCount, keyboardKey to it.keyboardState) },
restore = { CIListState(it[scrolledKey] as Boolean, it[countKey] as Int, it[keyboardKey] as KeyboardState) }
)
}
@Composable
fun BoxWithConstraintsScope.ChatItemsList(
remoteHostId: State<Long?>,
chatInfo: State<ChatInfo>,
remoteHostId: Long?,
chatInfo: ChatInfo,
unreadCount: State<Int>,
composeState: MutableState<ComposeState>,
searchValue: State<String>,
@@ -939,7 +919,7 @@ fun BoxWithConstraintsScope.ChatItemsList(
linkMode: SimplexLinkMode,
selectedChatItems: MutableState<Set<Long>?>,
showMemberInfo: (GroupInfo, GroupMember) -> Unit,
loadPrevMessages: () -> Unit,
loadPrevMessages: (ChatId) -> Unit,
deleteMessage: (Long, CIDeleteMode) -> Unit,
deleteMessages: (List<Long>) -> Unit,
receiveFile: (Long) -> Unit,
@@ -965,8 +945,6 @@ fun BoxWithConstraintsScope.ChatItemsList(
) {
val listState = rememberLazyListState()
val scope = rememberCoroutineScope()
val remoteHostId = remember { remoteHostId }.value
val chatInfo = remember { chatInfo }.value
ScrollToBottom(chatInfo.id, listState, chatModel.chatItems)
var prevSearchEmptiness by rememberSaveable { mutableStateOf(searchValue.value.isEmpty()) }
// Scroll to bottom when search value changes from something to nothing and back
@@ -981,7 +959,7 @@ fun BoxWithConstraintsScope.ChatItemsList(
}
}
PreloadItems(listState, ChatPagination.UNTIL_PRELOAD_COUNT, loadPrevMessages)
PreloadItems(chatInfo.id, listState, ChatPagination.UNTIL_PRELOAD_COUNT, loadPrevMessages)
Spacer(Modifier.size(8.dp))
val reversedChatItems by remember { derivedStateOf { chatModel.chatItems.asReversed() } }
@@ -992,6 +970,7 @@ fun BoxWithConstraintsScope.ChatItemsList(
scope.launch { listState.animateScrollToItem(kotlin.math.min(reversedChatItems.lastIndex, index + 1), -maxHeightRounded) }
}
}
// TODO: Having this block on desktop makes ChatItemsList() to recompose twice on chatModel.chatId update instead of once
LaunchedEffect(chatInfo.id) {
var stopListening = false
snapshotFlow { listState.layoutInfo.visibleItemsInfo.lastIndex }
@@ -1344,14 +1323,17 @@ fun BoxWithConstraintsScope.FloatingButtons(
@Composable
fun PreloadItems(
chatId: String,
listState: LazyListState,
remaining: Int = 10,
onLoadMore: () -> Unit,
onLoadMore: (ChatId) -> Unit,
) {
// Prevent situation when initial load and load more happens one after another after selecting a chat with long scroll position from previous selection
val allowLoad = remember { mutableStateOf(false) }
val chatId = rememberUpdatedState(chatId)
val onLoadMore = rememberUpdatedState(onLoadMore)
LaunchedEffect(Unit) {
snapshotFlow { chatModel.chatId.value }
snapshotFlow { chatId.value }
.filterNotNull()
.collect {
allowLoad.value = listState.layoutInfo.totalItemsCount == listState.layoutInfo.visibleItemsInfo.size
@@ -1371,7 +1353,7 @@ fun PreloadItems(
}
.filter { it > 0 }
.collect {
onLoadMore()
onLoadMore.value(chatId.value)
}
}
}
@@ -118,10 +118,11 @@ private fun recheckItems(chatInfo: ChatInfo,
rDeleteEnabled = rDeleteEnabled && ci.canBeDeletedForSelf
rDeleteForEveryoneEnabled = rDeleteForEveryoneEnabled && ci.meta.deletable && !ci.localNote
rOnlyOwnGroupItems = rOnlyOwnGroupItems && ci.chatDir is CIDirection.GroupSnd
rModerateEnabled = rModerateEnabled && !rOnlyOwnGroupItems && ci.content.msgContent != null && ci.memberToModerate(chatInfo) != null
rModerateEnabled = rModerateEnabled && ci.content.msgContent != null && ci.memberToModerate(chatInfo) != null
rSelectedChatItems.add(ci.id) // we are collecting new selected items here to account for any changes in chat items list
}
}
rModerateEnabled = rModerateEnabled && !rOnlyOwnGroupItems
deleteEnabled.value = rDeleteEnabled
deleteForEveryoneEnabled.value = rDeleteForEveryoneEnabled
moderateEnabled.value = rModerateEnabled
@@ -88,6 +88,7 @@ fun SendMsgView(
showDeleteTextButton,
userIsObserver,
if (clicksOnTextFieldDisabled) "" else placeholder,
showVoiceButton,
onMessageChange,
editPrevMessage,
onFilesPasted

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