From 67f13831ceac80e745a0957e84e7665959f89b68 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Tue, 18 Apr 2023 22:30:18 +0200 Subject: [PATCH 1/7] mobile: translations (#2207) * Translated using Weblate (German) Currently translated at 97.8% (1101 of 1125 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 100.0% (1125 of 1125 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/ * Translated using Weblate (German) Currently translated at 97.6% (1018 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Russian) Currently translated at 100.0% (1043 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/ * Translated using Weblate (French) Currently translated at 99.2% (1035 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/ * Translated using Weblate (Italian) Currently translated at 99.2% (1035 of 1043 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 97.6% (1018 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/ * Translated using Weblate (Spanish) Currently translated at 97.6% (1018 of 1043 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% (1125 of 1125 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% (1043 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1043 of 1043 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 97.6% (1018 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/cs/ * Translated using Weblate (Polish) Currently translated at 100.0% (1125 of 1125 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ * Translated using Weblate (Polish) Currently translated at 100.0% (1043 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/ * Translated using Weblate (Polish) Currently translated at 100.0% (1043 of 1043 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/ * ios: import/export localizations --------- Co-authored-by: mlanp Co-authored-by: John m Co-authored-by: B.O.S.S --- .../app/src/main/res/values-de/strings.xml | 2 + .../app/src/main/res/values-nl/strings.xml | 6 + .../app/src/main/res/values-pl/strings.xml | 6 + .../app/src/main/res/values-ru/strings.xml | 98 +++++++- .../cs.xcloc/Localized Contents/cs.xliff | 14 ++ .../de.xcloc/Localized Contents/de.xliff | 14 ++ .../es.xcloc/Localized Contents/es.xliff | 14 ++ .../fr.xcloc/Localized Contents/fr.xliff | 31 +++ .../it.xcloc/Localized Contents/it.xliff | 31 +++ .../nl.xcloc/Localized Contents/nl.xliff | 40 +++ .../pl.xcloc/Localized Contents/pl.xliff | 40 +++ .../ru.xcloc/Localized Contents/ru.xliff | 81 +++++++ .../Localized Contents/zh-Hans.xliff | 14 ++ apps/ios/cs.lproj/Localizable.strings | 30 +++ apps/ios/de.lproj/Localizable.strings | 30 +++ apps/ios/es.lproj/Localizable.strings | 30 +++ apps/ios/fr.lproj/Localizable.strings | 81 +++++++ apps/ios/it.lproj/Localizable.strings | 81 +++++++ apps/ios/nl.lproj/Localizable.strings | 105 ++++++++ apps/ios/pl.lproj/Localizable.strings | 105 ++++++++ apps/ios/ru.lproj/Localizable.strings | 228 ++++++++++++++++++ apps/ios/zh-Hans.lproj/Localizable.strings | 30 +++ scripts/ios/import-localizations.sh | 2 +- 23 files changed, 1105 insertions(+), 8 deletions(-) diff --git a/apps/android/app/src/main/res/values-de/strings.xml b/apps/android/app/src/main/res/values-de/strings.xml index fd234e75e2..e3d51b4acd 100644 --- a/apps/android/app/src/main/res/values-de/strings.xml +++ b/apps/android/app/src/main/res/values-de/strings.xml @@ -1194,4 +1194,6 @@ Es handelt sich um einen permanenten Fehler für diese Verbindung - bitte verbinden Sie sich neu. Datei hochladen %1$d Nachrichten übersprungen. + Anrufe sind nur erlaubt, wenn Ihr Kontakt das ebenfalls erlaubt. + Erlaubt Ihren Kontakten Sie anzurufen. \ No newline at end of file diff --git a/apps/android/app/src/main/res/values-nl/strings.xml b/apps/android/app/src/main/res/values-nl/strings.xml index 95c5fbc8f3..4a76436341 100644 --- a/apps/android/app/src/main/res/values-nl/strings.xml +++ b/apps/android/app/src/main/res/values-nl/strings.xml @@ -1134,4 +1134,10 @@ \nBeschikbaar in v5.1" Audio/video gesprekken verbieden. Audio/video gesprekken zijn verboden. + Snel en niet wachten tot de afzender online is! + App toegangscode + Stel het in in plaats van systeemverificatie. + Poolse interface + Dank aan de gebruikers – draag bij via Weblate! + Video\'s en bestanden tot 1 GB \ No newline at end of file diff --git a/apps/android/app/src/main/res/values-pl/strings.xml b/apps/android/app/src/main/res/values-pl/strings.xml index 2f0dc6860a..000627cda6 100644 --- a/apps/android/app/src/main/res/values-pl/strings.xml +++ b/apps/android/app/src/main/res/values-pl/strings.xml @@ -1137,4 +1137,10 @@ Przestać odbierać plik\? Przestać wysyłać plik\? Odwołaj + Pin aplikacji + Polski interfejs + Filmy i pliki do 1gb + Ustaw go zamiast uwierzytelniania systemowego. + Szybko i bez czekania aż nadawca będzie online! + Podziękowania dla użytkowników - wkład za pośrednictwem Weblate! \ No newline at end of file diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index 5b5939b69c..6798ead6ca 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -561,12 +561,10 @@ ошибка ID сообщения повторное сообщение Пропущенные сообщения - Это может случится, когда: -\n1. Сервер удалил сообщения, если они не были доставлены в течение 30 дней. -\n2. Сервер, через который Вы получаете сообщения от контакта, был обновлён и перезапущен. -\n3. Соединение компроментировано. -\nПожалуйста, соединитесь с девелоперами через Настройки, чтобы получать уведомления о серверах. -\nМы планируем добавить избыточную доставку сообщений, чтобы не терять сообщения. + Это может произойти, когда: +\n1. Клиент отправителя удалил неотправленные сообщения через 2 дня, или сервер – через 30 дней. +\n2. Расшифровка сообщения была невозможна, когда Вы или Ваш контакт использовали старую копию базы данных. +\n3. Соединение компроментировано. Конфиденциальность Конфиденциальность @@ -587,7 +585,7 @@ SOCKS ПРОКСИ ИКОНКА ТЕМЫ - СООБЩЕНИЯ + СООБЩЕНИЯ И ФАЙЛЫ ЗВОНКИ Режим Инкогнито @@ -1140,4 +1138,90 @@ Раскрыть профиль Видео будет получено, когда Ваш контакт будет онлайн, пожалуйста, подождите или проверьте позже! Раскрыть профиль чата + Ошибка при загрузке SMP серверов + Ошибка при загрузке XFTP серверов + Ошибка при сохранении XFTP серверов + Проверьте, что адреса XFTP северов в правильном формате и не дублируются. + Сервер требует авторизации для загрузки, проверьте пароль. + Сравнение файла + Удалить файл + Загрузка файла + Загрузка файла + XFTP серверы + Ваши XFTP серверы + Установите Использовать .onion хосты в Нет если SOCKS прокси их не поддерживает. + Ошибка аутентификации + Нет кода доступа + Ввод кода доступа + Режим Блокировки SimpleX + Системная аутентификация + Ошибка аутентификации; попробуйте еще раз. + Сразу + Аутентифицировать + Изменить код доступа + Текущий Код + Введите Код + Настройки SOCKS прокси + Использовать SOCKS прокси + Хост + Порт + порт %d + Включить блокировку + Аутентификация отменена + Системная + %d секунд + %1$d сообщений не удалось расшифровать. + Ошибка расшифровки + Блокировка SimpleX не включена! + Ошибка хэш сообщения + Хэш предыдущего сообщения отличается. + Подтвердить Код + Неправильный код + Заблокировать через + Режим блокировки + Новый Код + Продолжить + Код доступа + Код доступа изменён! + Код доступа не изменён! + Код доступа установлен! + Изменить режим блокировки + Приём файла будет прекращён. + Отозвать + Отозвать файл\? + Отправка файла будет остановлена. + Остановить + Остановить файл + Остановить отправку файла\? + Ошибка ID сообщения + Это может произойти, когда Вы или Ваш контакт используете старую копию базы данных. + Пожалуйста, сообщите об этой ошибке девелоперам. + Неправильный ID предыдущего сообщения (меньше или равен предыдущему). +\nЭто может произойти из-за ошибки программы, или когда соединение компроментировано. + Эта ошибка постоянная для этого соединения, пожалуйста, соединитесь снова. + %1$d сообщений пропущено. + Разрешить звонки, только если их разрешает Ваш контакт. + Разрешить Вашим контактам звонить Вам. + Аудио/видео звонки + Аудио/видео звонки запрещены. + " +\nДоступно в v5.1" + Вы и Ваш контакт можете совершать звонки. + Только Вы можете совершать звонки. + Только Ваш контакт может совершать звонки. + Запретить аудио/видео звонки. + Без пробелов! + Быстрые и не нужно ждать, когда отправитель онлайн! + Польский интерфейс + Установите код вместо системной аутентификации. + Благодаря пользователям – добавьте переводы через Weblate! + Видео и файлы до 1гб + Код доступа в приложение + Файл будет удалён с серверов. + Создание файла + %d минут(ы) + Пожалуйста, запомните или сохраните его - восстановить потерянный код доступа невозможно! + Отозвать файл + Остановить приём файла\? + Вы можете включить Блокировку SimpleX через Настройки. \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff index fde9e025ae..392e01dfda 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -625,10 +625,12 @@ Available in v5.1 Bad message ID + Špatné ID zprávy No comment provided by engineer. Bad message hash + Špatný hash zprávy No comment provided by engineer. @@ -1170,6 +1172,7 @@ Available in v5.1 Decryption error + Chyba dešifrování No comment provided by engineer. @@ -2264,6 +2267,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Může se to stát, když vy nebo vaše připojení použijete starou zálohu databáze. No comment provided by engineer. @@ -2271,6 +2275,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Může se to stát, když: +1. Zprávy vypršely v odesílajícím klientovi po 2 dnech nebo na serveru po 30 dnech. +2. Dešifrování zprávy se nezdařilo, protože vy nebo váš kontakt jste použili starou zálohu databáze. +3. Spojení je kompromitováno. No comment provided by engineer. @@ -2847,6 +2855,7 @@ Available in v5.1 Permanent decryption error + Chyba dešifrování message decrypt error item @@ -2891,6 +2900,7 @@ Available in v5.1 Please report it to the developers. + Nahlaste to prosím vývojářům. No comment provided by engineer. @@ -3715,6 +3725,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + ID další zprávy je nesprávné (menší nebo rovno předchozí). +Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitováno. No comment provided by engineer. @@ -3749,6 +3761,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + Hash předchozí zprávy se liší. No comment provided by engineer. @@ -3818,6 +3831,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + Tato chyba je pro toto připojení trvalá, připojte se znovu. No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff index 726a64e33e..bdc48d3636 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -625,10 +625,12 @@ Available in v5.1 Bad message ID + Falsche Nachrichten-ID No comment provided by engineer. Bad message hash + Ungültiger Nachrichten-Hash No comment provided by engineer. @@ -1170,6 +1172,7 @@ Available in v5.1 Decryption error + Entschlüsselungsfehler No comment provided by engineer. @@ -2264,6 +2267,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Dies kann passieren, falls Sie oder Ihre Verbindung ein altes Datenbank-Backup genutzt haben. No comment provided by engineer. @@ -2271,6 +2275,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Dies kann unter folgenden Umständen passieren: +1. Die Nachrichten verfallen auf dem sendenden Client-System nach 2 Tagen oder auf dem Server nach 30 Tagen. +2. Die Nachrichten-Entschlüsselung ist fehlgeschlagen, da von Ihnen oder Ihrem Kontakt ein altes Datenbank-Backup genutzt wurde. +3. Die Verbindung wurde kompromittiert. No comment provided by engineer. @@ -2847,6 +2855,7 @@ Available in v5.1 Permanent decryption error + Entschlüsselungsfehler message decrypt error item @@ -2891,6 +2900,7 @@ Available in v5.1 Please report it to the developers. + Bitte melden Sie es den Entwicklern. No comment provided by engineer. @@ -3715,6 +3725,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + Die ID der nächsten Nachricht ist falsch (kleiner oder gleich der Vorherigen). +Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompromittiert wurde. No comment provided by engineer. @@ -3749,6 +3761,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + Der Hash der vorherigen Nachricht ist unterschiedlich. No comment provided by engineer. @@ -3818,6 +3831,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + Es handelt sich um einen permanenten Fehler für diese Verbindung - bitte verbinden Sie sich neu. No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff index fda5c295f2..792f672d2a 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -625,10 +625,12 @@ Available in v5.1 Bad message ID + ID de mensaje incorrecto No comment provided by engineer. Bad message hash + Hash de mensaje incorrecto No comment provided by engineer. @@ -1170,6 +1172,7 @@ Available in v5.1 Decryption error + Error de descifrado No comment provided by engineer. @@ -2264,6 +2267,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Puede ocurrir cuando tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos. No comment provided by engineer. @@ -2271,6 +2275,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Esto puede suceder cuando: +1. Los mensajes caducan en el cliente saliente tras 2 días o en el servidor tras 30 días. +2. El descifrado ha fallado porque tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos. +3. La conexión ha sido comprometida. No comment provided by engineer. @@ -2847,6 +2855,7 @@ Available in v5.1 Permanent decryption error + Error de descifrado message decrypt error item @@ -2891,6 +2900,7 @@ Available in v5.1 Please report it to the developers. + Por favor, informa a los desarrolladores. No comment provided by engineer. @@ -3715,6 +3725,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + El ID del siguiente mensaje es incorrecto (menor o igual que el anterior). +Puede ocurrir por algún bug o cuando la conexión está comprometida. No comment provided by engineer. @@ -3749,6 +3761,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + El hash del mensaje anterior es diferente. No comment provided by engineer. @@ -3818,6 +3831,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + El error es permanente para esta conexión, por favor vuelve a conectarte. No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff index 93b56c37d5..8f9f063606 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -455,6 +455,7 @@ Available in v5.1 Allow calls only if your contact allows them. + Autoriser les appels que si votre contact les autorise. No comment provided by engineer. @@ -499,6 +500,7 @@ Available in v5.1 Allow your contacts to call you. + Autorise vos contacts à vous appeler. No comment provided by engineer. @@ -577,10 +579,12 @@ Available in v5.1 Audio/video calls + Appels audio/vidéo chat feature Audio/video calls are prohibited. + Interdire les appels audio/vidéo. No comment provided by engineer. @@ -625,10 +629,12 @@ Available in v5.1 Bad message ID + Mauvais ID de message No comment provided by engineer. Bad message hash + Mauvais hash de message No comment provided by engineer. @@ -638,6 +644,7 @@ Available in v5.1 Both you and your contact can make calls. + Vous et votre contact pouvez tous deux passer des appels. No comment provided by engineer. @@ -1170,6 +1177,7 @@ Available in v5.1 Decryption error + Erreur de déchiffrement No comment provided by engineer. @@ -1838,6 +1846,7 @@ Available in v5.1 File will be deleted from servers. + Le fichier sera supprimé des serveurs. No comment provided by engineer. @@ -2264,6 +2273,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Cela peut se produire lorsque vous ou votre contact avez utilisé une ancienne sauvegarde de base de données. No comment provided by engineer. @@ -2271,6 +2281,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Cela peut arriver quand : +1. Les messages ont expiré dans le client expéditeur après 2 jours ou sur le serveur après 30 jours. +2. Le déchiffrement du message a échoué, car vous ou votre contact avez utilisé une ancienne sauvegarde de base de données. +3. La connexion a été compromise. No comment provided by engineer. @@ -2714,6 +2728,7 @@ Available in v5.1 Only you can make calls. + Vous seul pouvez passer des appels. No comment provided by engineer. @@ -2733,6 +2748,7 @@ Available in v5.1 Only your contact can make calls. + Seul votre contact peut passer des appels. No comment provided by engineer. @@ -2847,6 +2863,7 @@ Available in v5.1 Permanent decryption error + Erreur de déchiffrement message decrypt error item @@ -2891,6 +2908,7 @@ Available in v5.1 Please report it to the developers. + Veuillez le signaler aux développeurs. No comment provided by engineer. @@ -2964,6 +2982,7 @@ Available in v5.1 Prohibit audio/video calls. + Interdire les appels audio/vidéo. No comment provided by engineer. @@ -3033,6 +3052,7 @@ Available in v5.1 Receiving file will be stopped. + La réception du fichier sera interrompue. No comment provided by engineer. @@ -3162,14 +3182,17 @@ Available in v5.1 Revoke + Révoquer No comment provided by engineer. Revoke file + Révoquer le fichier cancel file action Revoke file? + Révoquer le fichier ? No comment provided by engineer. @@ -3364,6 +3387,7 @@ Available in v5.1 Sending file will be stopped. + L'envoi du fichier sera interrompu. No comment provided by engineer. @@ -3592,14 +3616,17 @@ Available in v5.1 Stop file + Arrêter le fichier cancel file action Stop receiving file? + Arrêter de recevoir le fichier ? No comment provided by engineer. Stop sending file? + Arrêter l'envoi du fichier ? No comment provided by engineer. @@ -3715,6 +3742,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + L'ID du message suivant est incorrect (inférieur ou égal au précédent). +Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise. No comment provided by engineer. @@ -3749,6 +3778,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + Le hash du message précédent est différent. No comment provided by engineer. @@ -3818,6 +3848,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + Cette erreur est persistante pour cette connexion, veuillez vous reconnecter. No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff index ecb52894ce..0f6c0817eb 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -455,6 +455,7 @@ Available in v5.1 Allow calls only if your contact allows them. + Consenti le chiamate solo se il contatto le consente. No comment provided by engineer. @@ -499,6 +500,7 @@ Available in v5.1 Allow your contacts to call you. + Consenti ai tuoi contatti di chiamarti. No comment provided by engineer. @@ -577,10 +579,12 @@ Available in v5.1 Audio/video calls + Chiamate audio/video chat feature Audio/video calls are prohibited. + Le chiamate audio/video sono vietate. No comment provided by engineer. @@ -625,10 +629,12 @@ Available in v5.1 Bad message ID + ID del messaggio errato No comment provided by engineer. Bad message hash + Hash del messaggio errato No comment provided by engineer. @@ -638,6 +644,7 @@ Available in v5.1 Both you and your contact can make calls. + Sia tu che il tuo contatto potete effettuare chiamate. No comment provided by engineer. @@ -1170,6 +1177,7 @@ Available in v5.1 Decryption error + Errore di decifrazione No comment provided by engineer. @@ -1838,6 +1846,7 @@ Available in v5.1 File will be deleted from servers. + Il file verrà eliminato dai server. No comment provided by engineer. @@ -2264,6 +2273,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Può accadere quando tu o il tuo contatto avete usato il backup del database vecchio. No comment provided by engineer. @@ -2271,6 +2281,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Può accadere quando: +1. I messaggi sono scaduti sul client mittente dopo 2 giorni o sul server dopo 30 giorni. +2. La decifrazione del messaggio è fallita, perché tu o il tuo contatto avete usato un backup del database vecchio. +3. La connessione è stata compromessa. No comment provided by engineer. @@ -2714,6 +2728,7 @@ Available in v5.1 Only you can make calls. + Solo tu puoi effettuare chiamate. No comment provided by engineer. @@ -2733,6 +2748,7 @@ Available in v5.1 Only your contact can make calls. + Solo il tuo contatto può effettuare chiamate. No comment provided by engineer. @@ -2847,6 +2863,7 @@ Available in v5.1 Permanent decryption error + Errore di decifrazione message decrypt error item @@ -2891,6 +2908,7 @@ Available in v5.1 Please report it to the developers. + Si prega di segnalarlo agli sviluppatori. No comment provided by engineer. @@ -2964,6 +2982,7 @@ Available in v5.1 Prohibit audio/video calls. + Proibisci le chiamate audio/video. No comment provided by engineer. @@ -3033,6 +3052,7 @@ Available in v5.1 Receiving file will be stopped. + La ricezione del file verrà interrotta. No comment provided by engineer. @@ -3162,14 +3182,17 @@ Available in v5.1 Revoke + Revoca No comment provided by engineer. Revoke file + Revoca file cancel file action Revoke file? + Revocare il file? No comment provided by engineer. @@ -3364,6 +3387,7 @@ Available in v5.1 Sending file will be stopped. + L'invio del file verrà interrotto. No comment provided by engineer. @@ -3592,14 +3616,17 @@ Available in v5.1 Stop file + Ferma file cancel file action Stop receiving file? + Fermare la ricezione del file? No comment provided by engineer. Stop sending file? + Fermare l'invio del file? No comment provided by engineer. @@ -3715,6 +3742,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + L'ID del messaggio successivo non è corretto (inferiore o uguale al precedente). +Può accadere a causa di qualche bug o quando la connessione è compromessa. No comment provided by engineer. @@ -3749,6 +3778,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + L'hash del messaggio precedente è diverso. No comment provided by engineer. @@ -3818,6 +3848,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + L'errore è permanente per questa connessione, riconnettiti. No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff index f317c78bf5..b815d2becf 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -15,6 +15,8 @@ Available in v5.1 + +Beschikbaar in v5.1 No comment provided by engineer. @@ -199,10 +201,12 @@ Available in v5.1 %u messages failed to decrypt. + %u-berichten kunnen niet worden gedecodeerd. No comment provided by engineer. %u messages skipped. + %u berichten zijn overgeslagen. No comment provided by engineer. @@ -455,6 +459,7 @@ Available in v5.1 Allow calls only if your contact allows them. + Sta oproepen alleen toe als uw contact persoon dit toestaat. No comment provided by engineer. @@ -499,6 +504,7 @@ Available in v5.1 Allow your contacts to call you. + Sta toe dat uw contacten u bellen. No comment provided by engineer. @@ -543,6 +549,7 @@ Available in v5.1 App passcode + App toegangscode No comment provided by engineer. @@ -577,10 +584,12 @@ Available in v5.1 Audio/video calls + Audio/video oproepen chat feature Audio/video calls are prohibited. + Audio/video gesprekken zijn verboden. No comment provided by engineer. @@ -625,10 +634,12 @@ Available in v5.1 Bad message ID + Onjuiste bericht ID No comment provided by engineer. Bad message hash + Onjuiste bericht hash No comment provided by engineer. @@ -638,6 +649,7 @@ Available in v5.1 Both you and your contact can make calls. + Zowel u als uw contact persoon kunnen bellen. No comment provided by engineer. @@ -1170,6 +1182,7 @@ Available in v5.1 Decryption error + Decryptie fout No comment provided by engineer. @@ -1834,10 +1847,12 @@ Available in v5.1 Fast and no wait until the sender is online! + Snel en niet wachten tot de afzender online is! No comment provided by engineer. File will be deleted from servers. + Het bestand wordt van de servers verwijderd. No comment provided by engineer. @@ -2264,6 +2279,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Het kan gebeuren wanneer u of uw verbinding de oude databaseback-up gebruikte. No comment provided by engineer. @@ -2271,6 +2287,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Het kan gebeuren wanneer: +1. De berichten zijn na 2 dagen verlopen bij de verzendende client of na 30 dagen op de server. +2. Decodering van het bericht is mislukt, omdat u of uw contactpersoon een oude databaseback-up heeft gebruikt. +3. De verbinding is verbroken. No comment provided by engineer. @@ -2714,6 +2734,7 @@ Available in v5.1 Only you can make calls. + Alleen jij kunt bellen. No comment provided by engineer. @@ -2733,6 +2754,7 @@ Available in v5.1 Only your contact can make calls. + Alleen je contact kan bellen. No comment provided by engineer. @@ -2847,6 +2869,7 @@ Available in v5.1 Permanent decryption error + Decryptie fout message decrypt error item @@ -2891,6 +2914,7 @@ Available in v5.1 Please report it to the developers. + Meld het alsjeblieft aan de ontwikkelaars. No comment provided by engineer. @@ -2910,6 +2934,7 @@ Available in v5.1 Polish interface + Poolse interface No comment provided by engineer. @@ -2964,6 +2989,7 @@ Available in v5.1 Prohibit audio/video calls. + Audio/video gesprekken verbieden. No comment provided by engineer. @@ -3033,6 +3059,7 @@ Available in v5.1 Receiving file will be stopped. + Het ontvangen van het bestand wordt gestopt. No comment provided by engineer. @@ -3162,14 +3189,17 @@ Available in v5.1 Revoke + Intrekken No comment provided by engineer. Revoke file + Bestand intrekken cancel file action Revoke file? + Bestand intrekken? No comment provided by engineer. @@ -3364,6 +3394,7 @@ Available in v5.1 Sending file will be stopped. + Het verzenden van het bestand wordt gestopt. No comment provided by engineer. @@ -3418,6 +3449,7 @@ Available in v5.1 Set it instead of system authentication. + Stel het in in plaats van systeemverificatie. No comment provided by engineer. @@ -3592,14 +3624,17 @@ Available in v5.1 Stop file + Bestand stoppen cancel file action Stop receiving file? + Stopt met het ontvangen van een bestand? No comment provided by engineer. Stop sending file? + Bestand verzenden stoppen? No comment provided by engineer. @@ -3715,6 +3750,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + De ID van het volgende bericht is onjuist (minder of gelijk aan het vorige). +Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast. No comment provided by engineer. @@ -3749,6 +3786,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + De hash van het vorige bericht is anders. No comment provided by engineer. @@ -3818,6 +3856,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + Deze fout is permanent voor deze verbinding, maak opnieuw verbinding. No comment provided by engineer. @@ -4116,6 +4155,7 @@ Om verbinding te maken, vraagt u uw contactpersoon om een andere verbinding link Videos and files up to 1gb + Video's en bestanden tot 1 GB No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff index 04eb98a85b..13644ea600 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -15,6 +15,8 @@ Available in v5.1 + +Dostępny w v5.1 No comment provided by engineer. @@ -199,10 +201,12 @@ Available in v5.1 %u messages failed to decrypt. + Nie udało się odszyfrować %u wiadomości. No comment provided by engineer. %u messages skipped. + %u pominiętych wiadomości. No comment provided by engineer. @@ -455,6 +459,7 @@ Available in v5.1 Allow calls only if your contact allows them. + Zezwalaj na połączenia tylko wtedy, gdy Twój kontakt na to pozwala. No comment provided by engineer. @@ -499,6 +504,7 @@ Available in v5.1 Allow your contacts to call you. + Zezwól swoim kontaktom na połączenia do Ciebie. No comment provided by engineer. @@ -543,6 +549,7 @@ Available in v5.1 App passcode + Pin aplikacji No comment provided by engineer. @@ -577,10 +584,12 @@ Available in v5.1 Audio/video calls + Połączenia audio/wideo chat feature Audio/video calls are prohibited. + Połączenia audio/wideo są zabronione. No comment provided by engineer. @@ -625,10 +634,12 @@ Available in v5.1 Bad message ID + Zły identyfikator wiadomości No comment provided by engineer. Bad message hash + Zły hash wiadomości No comment provided by engineer. @@ -638,6 +649,7 @@ Available in v5.1 Both you and your contact can make calls. + Zarówno Ty, jak i Twój kontakt możecie nawiązywać połączenia. No comment provided by engineer. @@ -1170,6 +1182,7 @@ Available in v5.1 Decryption error + Błąd odszyfrowania No comment provided by engineer. @@ -1834,10 +1847,12 @@ Available in v5.1 Fast and no wait until the sender is online! + Szybko i bez czekania aż nadawca będzie online! No comment provided by engineer. File will be deleted from servers. + Plik zostanie usunięty z serwerów. No comment provided by engineer. @@ -2264,6 +2279,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Może się to zdarzyć, gdy Ty lub Twoje połączenie użyło starej kopii zapasowej bazy danych. No comment provided by engineer. @@ -2271,6 +2287,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Może to nastąpić, gdy: +1. Wiadomości wygasły w wysyłającym kliencie po 2 dniach lub na serwerze po 30 dniach. +2. Odszyfrowanie wiadomości nie powiodło się, ponieważ Ty lub Twój kontakt użyliście starej kopii zapasowej bazy danych. +3. Połączenie zostało skompromitowane. No comment provided by engineer. @@ -2714,6 +2734,7 @@ Available in v5.1 Only you can make calls. + Tylko Ty możesz wykonywać połączenia. No comment provided by engineer. @@ -2733,6 +2754,7 @@ Available in v5.1 Only your contact can make calls. + Tylko Twój kontakt może wykonywać połączenia. No comment provided by engineer. @@ -2847,6 +2869,7 @@ Available in v5.1 Permanent decryption error + Błąd odszyfrowania message decrypt error item @@ -2891,6 +2914,7 @@ Available in v5.1 Please report it to the developers. + Prosimy o zgłaszanie tego do deweloperów. No comment provided by engineer. @@ -2910,6 +2934,7 @@ Available in v5.1 Polish interface + Polski interfejs No comment provided by engineer. @@ -2964,6 +2989,7 @@ Available in v5.1 Prohibit audio/video calls. + Zabroń połączeń audio/wideo. No comment provided by engineer. @@ -3033,6 +3059,7 @@ Available in v5.1 Receiving file will be stopped. + Odbieranie pliku zostanie przerwane. No comment provided by engineer. @@ -3162,14 +3189,17 @@ Available in v5.1 Revoke + Odwołaj No comment provided by engineer. Revoke file + Odwołaj plik cancel file action Revoke file? + Odwołać plik? No comment provided by engineer. @@ -3364,6 +3394,7 @@ Available in v5.1 Sending file will be stopped. + Wysyłanie pliku zostanie przerwane. No comment provided by engineer. @@ -3418,6 +3449,7 @@ Available in v5.1 Set it instead of system authentication. + Ustaw go zamiast uwierzytelniania systemowego. No comment provided by engineer. @@ -3592,14 +3624,17 @@ Available in v5.1 Stop file + Zatrzymaj plik cancel file action Stop receiving file? + Przestać odbierać plik? No comment provided by engineer. Stop sending file? + Przestać wysyłać plik? No comment provided by engineer. @@ -3715,6 +3750,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + Identyfikator następnej wiadomości jest nieprawidłowy (mniejszy lub równy poprzedniej). +Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skompromitowane. No comment provided by engineer. @@ -3749,6 +3786,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + Hash poprzedniej wiadomości jest inny. No comment provided by engineer. @@ -3818,6 +3856,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + Ten błąd jest trwały dla tego połączenia, proszę o ponowne połączenie. No comment provided by engineer. @@ -4116,6 +4155,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Videos and files up to 1gb + Filmy i pliki do 1gb No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index 8c2f096a0c..6184b69528 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -15,6 +15,8 @@ Available in v5.1 + +Доступно в v5.1 No comment provided by engineer. @@ -149,6 +151,7 @@ Available in v5.1 %lld minutes + %lld минуты No comment provided by engineer. @@ -158,6 +161,7 @@ Available in v5.1 %lld seconds + %lld секунд No comment provided by engineer. @@ -197,10 +201,12 @@ Available in v5.1 %u messages failed to decrypt. + %u сообщений не могут быть расшифрованы. No comment provided by engineer. %u messages skipped. + %u сообщений пропущено. No comment provided by engineer. @@ -453,6 +459,7 @@ Available in v5.1 Allow calls only if your contact allows them. + Разрешить звонки, только если их разрешает Ваш контакт. No comment provided by engineer. @@ -497,6 +504,7 @@ Available in v5.1 Allow your contacts to call you. + Разрешить Вашим контактам звонить Вам. No comment provided by engineer. @@ -541,6 +549,7 @@ Available in v5.1 App passcode + Код доступа в приложение No comment provided by engineer. @@ -575,14 +584,17 @@ Available in v5.1 Audio/video calls + Аудио/видео звонки chat feature Audio/video calls are prohibited. + Аудио/видео звонки запрещены. No comment provided by engineer. Authentication cancelled + Аутентификация отменена PIN entry @@ -622,10 +634,12 @@ Available in v5.1 Bad message ID + Ошибка ID сообщения No comment provided by engineer. Bad message hash + Ошибка хэш сообщения No comment provided by engineer. @@ -635,6 +649,7 @@ Available in v5.1 Both you and your contact can make calls. + Вы и Ваш контакт можете совершать звонки. No comment provided by engineer. @@ -699,6 +714,7 @@ Available in v5.1 Change Passcode + Изменить код доступа No comment provided by engineer. @@ -708,6 +724,7 @@ Available in v5.1 Change lock mode + Изменить режим блокировки authentication reason @@ -717,6 +734,7 @@ Available in v5.1 Change passcode + Изменить код доступа authentication reason @@ -826,6 +844,7 @@ Available in v5.1 Compare file + Сравнение файла server test step @@ -845,6 +864,7 @@ Available in v5.1 Confirm Passcode + Подтвердить Код No comment provided by engineer. @@ -1004,6 +1024,7 @@ Available in v5.1 Create file + Создание файла server test step @@ -1043,6 +1064,7 @@ Available in v5.1 Current Passcode + Текущий Код No comment provided by engineer. @@ -1160,6 +1182,7 @@ Available in v5.1 Decryption error + Ошибка расшифровки No comment provided by engineer. @@ -1234,6 +1257,7 @@ Available in v5.1 Delete file + Удалить файл server test step @@ -1438,6 +1462,7 @@ Available in v5.1 Download file + Загрузка файла server test step @@ -1482,6 +1507,7 @@ Available in v5.1 Enable lock + Включить блокировку No comment provided by engineer. @@ -1541,6 +1567,7 @@ Available in v5.1 Enter Passcode + Введите Код No comment provided by engineer. @@ -1685,6 +1712,7 @@ Available in v5.1 Error loading %@ servers + Ошибка загрузки %@ серверов No comment provided by engineer. @@ -1714,6 +1742,7 @@ Available in v5.1 Error saving passcode + Ошибка сохранения кода No comment provided by engineer. @@ -1818,10 +1847,12 @@ Available in v5.1 Fast and no wait until the sender is online! + Быстрые и не нужно ждать, когда отправитель онлайн! No comment provided by engineer. File will be deleted from servers. + Файл будет удалён с серверов. No comment provided by engineer. @@ -2091,6 +2122,7 @@ Available in v5.1 Immediately + Сразу No comment provided by engineer. @@ -2165,6 +2197,7 @@ Available in v5.1 Incorrect passcode + Неправильный код PIN entry @@ -2246,6 +2279,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + Это может произойти, когда Вы или Ваш контакт используете старую копию базы данных. No comment provided by engineer. @@ -2253,6 +2287,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + Это может произойти, когда: +1. Клиент отправителя удалил неотправленные сообщения через 2 дня, или сервер – через 30 дней. +2. Расшифровка сообщения была невозможна, когда Вы или Ваш контакт использовали старую копию базы данных. +3. Соединение компроментировано. No comment provided by engineer. @@ -2287,6 +2325,7 @@ Available in v5.1 KeyChain error + Ошибка KeyChain No comment provided by engineer. @@ -2351,10 +2390,12 @@ Available in v5.1 Lock after + Заблокировать через No comment provided by engineer. Lock mode + Режим блокировки No comment provided by engineer. @@ -2529,6 +2570,7 @@ Available in v5.1 New Passcode + Новый Код No comment provided by engineer. @@ -2573,6 +2615,7 @@ Available in v5.1 No app password + Нет кода доступа Authentication unavailable @@ -2626,6 +2669,7 @@ Available in v5.1 Off + Выключено No comment provided by engineer. @@ -2690,6 +2734,7 @@ Available in v5.1 Only you can make calls. + Только Вы можете совершать звонки. No comment provided by engineer. @@ -2709,6 +2754,7 @@ Available in v5.1 Only your contact can make calls. + Только Ваш контакт может совершать звонки. No comment provided by engineer. @@ -2763,22 +2809,27 @@ Available in v5.1 Passcode + Код доступа No comment provided by engineer. Passcode changed! + Код доступа изменён! No comment provided by engineer. Passcode entry + Ввод кода доступа No comment provided by engineer. Passcode not changed! + Код доступа не изменён! No comment provided by engineer. Passcode set! + Код доступа установлен! No comment provided by engineer. @@ -2818,6 +2869,7 @@ Available in v5.1 Permanent decryption error + Ошибка расшифровки message decrypt error item @@ -2857,10 +2909,12 @@ Available in v5.1 Please remember or store it securely - there is no way to recover a lost passcode! + Пожалуйста, запомните или сохраните его - восстановить потерянный пароль невозможно! No comment provided by engineer. Please report it to the developers. + Пожалуйста, сообщите об этой ошибке девелоперам. No comment provided by engineer. @@ -2880,6 +2934,7 @@ Available in v5.1 Polish interface + Польский интерфейс No comment provided by engineer. @@ -2934,6 +2989,7 @@ Available in v5.1 Prohibit audio/video calls. + Запретить аудио/видео звонки. No comment provided by engineer. @@ -3003,6 +3059,7 @@ Available in v5.1 Receiving file will be stopped. + Приём файла будет прекращён. No comment provided by engineer. @@ -3132,14 +3189,17 @@ Available in v5.1 Revoke + Отозвать No comment provided by engineer. Revoke file + Отозвать файл cancel file action Revoke file? + Отозвать файл? No comment provided by engineer. @@ -3334,6 +3394,7 @@ Available in v5.1 Sending file will be stopped. + Отправка файла будет остановлена. No comment provided by engineer. @@ -3358,6 +3419,7 @@ Available in v5.1 Server requires authorization to upload, check password + Сервер требует авторизации для загрузки, проверьте пароль server test error @@ -3387,6 +3449,7 @@ Available in v5.1 Set it instead of system authentication. + Установите код вместо системной аутентификации. No comment provided by engineer. @@ -3466,10 +3529,12 @@ Available in v5.1 SimpleX Lock mode + Режим Блокировки SimpleX No comment provided by engineer. SimpleX Lock not enabled! + Блокировка SimpleX не включена! No comment provided by engineer. @@ -3559,18 +3624,22 @@ Available in v5.1 Stop file + Остановить файл cancel file action Stop receiving file? + Остановить приём файла? No comment provided by engineer. Stop sending file? + Остановить отправку файла? No comment provided by engineer. Submit + Продолжить No comment provided by engineer. @@ -3585,6 +3654,7 @@ Available in v5.1 System authentication + Системная аутентификация No comment provided by engineer. @@ -3680,6 +3750,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + Неправильный ID предыдущего сообщения (меньше или равен предыдущему). +Это может произойти из-за ошибки программы, или когда соединение компроментировано. No comment provided by engineer. @@ -3714,6 +3786,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + Хэш предыдущего сообщения отличается. No comment provided by engineer. @@ -3783,6 +3856,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + Эта ошибка постоянная для этого соединения, пожалуйста, соединитесь снова. No comment provided by engineer. @@ -3946,6 +4020,7 @@ To connect, please ask your contact to create another connection link and check Unlock app + Разблокировать authentication reason @@ -4000,6 +4075,7 @@ To connect, please ask your contact to create another connection link and check Upload file + Загрузка файла server test step @@ -4069,14 +4145,17 @@ To connect, please ask your contact to create another connection link and check Video will be received when your contact completes uploading it. + Видео будет получено когда Ваш контакт загрузит его. No comment provided by engineer. Video will be received when your contact is online, please wait or check later! + Видео будет получено, когда Ваш контакт будет онлайн, пожалуйста, подождите или проверьте позже! No comment provided by engineer. Videos and files up to 1gb + Видео и файлы до 1гб No comment provided by engineer. @@ -4121,6 +4200,7 @@ To connect, please ask your contact to create another connection link and check Waiting for video + Ожидание видео No comment provided by engineer. @@ -4257,6 +4337,7 @@ SimpleX Lock must be enabled. You can turn on SimpleX Lock via Settings. + Вы можете включить Блокировку SimpleX через Настройки. No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index f67c98bea0..baf6df031a 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -625,10 +625,12 @@ Available in v5.1 Bad message ID + 错误消息 ID No comment provided by engineer. Bad message hash + 错误消息散列 No comment provided by engineer. @@ -1170,6 +1172,7 @@ Available in v5.1 Decryption error + 解密错误 No comment provided by engineer. @@ -2264,6 +2267,7 @@ Available in v5.1 It can happen when you or your connection used the old database backup. + 当您或您的连接使用旧数据库备份时,可能会发生这种情况。 No comment provided by engineer. @@ -2271,6 +2275,10 @@ Available in v5.1 1. The messages expired in the sending client after 2 days or on the server after 30 days. 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. + 它可能在以下情况发生: +1. 消息在发送客户端 2 天后或在服务器上 30 天后过期。 +2. 消息解密失败,因为您或您的联系人使用了旧的数据库备份。 +3.连接被破坏。 No comment provided by engineer. @@ -2847,6 +2855,7 @@ Available in v5.1 Permanent decryption error + 解密错误 message decrypt error item @@ -2891,6 +2900,7 @@ Available in v5.1 Please report it to the developers. + 请向开发者报告。 No comment provided by engineer. @@ -3715,6 +3725,8 @@ Available in v5.1 The ID of the next message is incorrect (less or equal to the previous). It can happen because of some bug or when the connection is compromised. + 下一条消息的 ID 不正确(小于或等于上一条)。 +它可能是由于某些错误或连接被破坏才发生。 No comment provided by engineer. @@ -3749,6 +3761,7 @@ It can happen because of some bug or when the connection is compromised. The hash of the previous message is different. + 上一条消息的散列不同。 No comment provided by engineer. @@ -3818,6 +3831,7 @@ It can happen because of some bug or when the connection is compromised. This error is permanent for this connection, please re-connect. + 此错误对于此连接是永久性的,请重新连接。 No comment provided by engineer. diff --git a/apps/ios/cs.lproj/Localizable.strings b/apps/ios/cs.lproj/Localizable.strings index bc9e47cf2f..f60911e517 100644 --- a/apps/ios/cs.lproj/Localizable.strings +++ b/apps/ios/cs.lproj/Localizable.strings @@ -383,9 +383,15 @@ /* integrity error chat item */ "bad message hash" = "špatný hash zprávy"; +/* No comment provided by engineer. */ +"Bad message hash" = "Špatný hash zprávy"; + /* integrity error chat item */ "bad message ID" = "špatné ID zprávy"; +/* No comment provided by engineer. */ +"Bad message ID" = "Špatné ID zprávy"; + /* No comment provided by engineer. */ "bold" = "tučně"; @@ -782,6 +788,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Decentralizované"; +/* No comment provided by engineer. */ +"Decryption error" = "Chyba dešifrování"; + /* pref value */ "default (%@)" = "výchozí (%@)"; @@ -1517,6 +1526,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Umožňuje mít v jednom profilu chatu mnoho anonymních spojení bez jakýchkoli sdílených údajů mezi nimi."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Může se to stát, když vy nebo vaše připojení použijete starou zálohu databáze."; + +/* 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." = "Může se to stát, když:\n1. Zprávy vypršely v odesílajícím klientovi po 2 dnech nebo na serveru po 30 dnech.\n2. Dešifrování zprávy se nezdařilo, protože vy nebo váš kontakt jste použili starou zálohu databáze.\n3. Spojení je kompromitováno."; + /* 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 (%@)." = "Zdá se, že jste již připojeni prostřednictvím tohoto odkazu. Pokud tomu tak není, došlo k chybě (%@)."; @@ -1914,6 +1929,9 @@ /* No comment provided by engineer. */ "Periodically" = "Pravidelně"; +/* message decrypt error item */ +"Permanent decryption error" = "Chyba dešifrování"; + /* No comment provided by engineer. */ "PING count" = "Počet PING"; @@ -1944,6 +1962,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Zapamatujte si ho nebo bezpečně uložte - neexistuje žádný způsob, jak obnovit ztracený heslo!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Nahlaste to prosím vývojářům."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Restartujte aplikaci a přeneste databázi, abyste povolili doručování oznámení."; @@ -2457,6 +2478,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "Skupina je plně decentralizovaná - je viditelná pouze pro členy."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "Hash předchozí zprávy se liší."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "ID další zprávy je nesprávné (menší nebo rovno předchozí).\nMůže se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitováno."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Zpráva bude smazána pro všechny členy."; @@ -2499,6 +2526,9 @@ /* notification title */ "this contact" = "tento kontakt"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "Tato chyba je pro toto připojení trvalá, připojte se znovu."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Tato funkce je experimentální! Bude fungovat pouze v případě, že druhý klient má nainstalovanou verzi 4.2. Po dokončení změny adresy by se měla v konverzaci zobrazit zpráva - zkontrolujte, zda můžete od tohoto kontaktu (nebo člena skupiny) stále přijímat zprávy."; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 0530ed1a9d..883be89ac2 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -383,9 +383,15 @@ /* integrity error chat item */ "bad message hash" = "Ungültiger Nachrichten-Hash"; +/* No comment provided by engineer. */ +"Bad message hash" = "Ungültiger Nachrichten-Hash"; + /* integrity error chat item */ "bad message ID" = "Ungültige Nachrichten-ID"; +/* No comment provided by engineer. */ +"Bad message ID" = "Falsche Nachrichten-ID"; + /* No comment provided by engineer. */ "bold" = "fett"; @@ -782,6 +788,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Dezentral"; +/* No comment provided by engineer. */ +"Decryption error" = "Entschlüsselungsfehler"; + /* pref value */ "default (%@)" = "Voreinstellung (%@)"; @@ -1517,6 +1526,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Er ermöglicht mehrere anonyme Verbindungen in einem einzigen Chat-Profil ohne Daten zwischen diesen zu teilen."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Dies kann passieren, falls Sie oder Ihre Verbindung ein altes Datenbank-Backup genutzt haben."; + +/* 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 seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Es sieht so aus, dass Sie bereits über diesen Link verbunden sind. Wenn das nicht der Fall, gab es einen Fehler (%@)."; @@ -1914,6 +1929,9 @@ /* No comment provided by engineer. */ "Periodically" = "Periodisch"; +/* message decrypt error item */ +"Permanent decryption error" = "Entschlüsselungsfehler"; + /* No comment provided by engineer. */ "PING count" = "PING Zähler"; @@ -1944,6 +1962,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Es gibt keine Möglichkeit ein vergessenes Passwort wiederherzustellen - bitte erinnern Sie sich gut daran oder speichern Sie es sicher ab!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Bitte melden Sie es den Entwicklern."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Bitte führen Sie einen Neustart der App durch und migrieren Sie die Datenbank, um Benachrichtigungen zu aktivieren."; @@ -2457,6 +2478,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "Die Gruppe ist vollständig dezentralisiert – sie ist nur für Mitglieder sichtbar."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "Der Hash der vorherigen Nachricht ist unterschiedlich."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "Die ID der nächsten Nachricht ist falsch (kleiner oder gleich der Vorherigen).\nDies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompromittiert wurde."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Diese Nachricht wird für alle Gruppenmitglieder gelöscht."; @@ -2499,6 +2526,9 @@ /* notification title */ "this contact" = "Dieser Kontakt"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "Es handelt sich um einen permanenten Fehler für diese Verbindung - bitte verbinden Sie sich neu."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Diese Funktion ist experimentell! Sie wird nur funktionieren, wenn der Kontakt ebenfalls eine SimpleX-Version ab v4.2 installiert hat. Sobald der Adress-Wechsel abgeschlossen ist, sollten Sie die Nachricht im Chat-Verlauf sehen. Bitte prüfen Sie, ob Sie weiterhin Nachrichten von diesem Kontakt (oder Gruppenmitglied) empfangen können."; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index e5d4358567..5da00f7661 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -383,9 +383,15 @@ /* integrity error chat item */ "bad message hash" = "hash de mensaje erróneo"; +/* No comment provided by engineer. */ +"Bad message hash" = "Hash de mensaje incorrecto"; + /* integrity error chat item */ "bad message ID" = "ID de mensaje erróneo"; +/* No comment provided by engineer. */ +"Bad message ID" = "ID de mensaje incorrecto"; + /* No comment provided by engineer. */ "bold" = "negrita"; @@ -782,6 +788,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Descentralizado"; +/* No comment provided by engineer. */ +"Decryption error" = "Error de descifrado"; + /* pref value */ "default (%@)" = "por defecto (%@)"; @@ -1517,6 +1526,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Permite tener varias conexiones anónimas sin datos compartidos entre estas dentro del mismo perfil."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Puede ocurrir cuando tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos."; + +/* 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." = "Esto puede suceder cuando:\n1. Los mensajes caducan en el cliente saliente tras 2 días o en el servidor tras 30 días.\n2. El descifrado ha fallado porque tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos.\n3. La conexión ha sido comprometida."; + /* 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 (%@)." = "Parece que ya está conectado mediante este enlace. Si no es así ha habido un error (%@)."; @@ -1914,6 +1929,9 @@ /* No comment provided by engineer. */ "Periodically" = "Periódico"; +/* message decrypt error item */ +"Permanent decryption error" = "Error de descifrado"; + /* No comment provided by engineer. */ "PING count" = "Contador PING"; @@ -1944,6 +1962,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Por favor, recuerda y guarda el código de acceso en un lugar seguro. ¡No hay ninguna manera de recuperar un código de acceso perdido!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Por favor, informa a los desarrolladores."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Reinicia la aplicación y migra la base de datos para activar las notificaciones automáticas."; @@ -2457,6 +2478,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "El grupo está totalmente descentralizado y sólo es visible para los miembros."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "El hash del mensaje anterior es diferente."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "El ID del siguiente mensaje es incorrecto (menor o igual que el anterior).\nPuede ocurrir por algún bug o cuando la conexión está comprometida."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "El mensaje se eliminará para todos los miembros."; @@ -2499,6 +2526,9 @@ /* notification title */ "this contact" = "este contacto"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "El error es permanente para esta conexión, por favor vuelve a conectarte."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "¡Experimental! Sólo funcionará si el otro cliente tiene instalada la versión 4.2. Deberías ver el mensaje en la conversación una vez completado el cambio de dirección. Comprueba que puedes seguir recibiendo mensajes de este contacto (o miembro del grupo)."; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index ece0d725e7..b830afa97c 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -284,6 +284,9 @@ /* No comment provided by engineer. */ "Allow" = "Autoriser"; +/* 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 disappearing messages only if your contact allows it to you." = "Autorise les messages éphémères seulement si votre contact vous l’autorise."; @@ -308,6 +311,9 @@ /* No comment provided by engineer. */ "Allow voice messages?" = "Autoriser les messages vocaux ?"; +/* No comment provided by engineer. */ +"Allow your contacts to call you." = "Autorise vos contacts à vous appeler."; + /* No comment provided by engineer. */ "Allow your contacts to irreversibly delete sent messages." = "Autorise vos contacts à supprimer de manière irréversible les messages envoyés."; @@ -356,6 +362,12 @@ /* No comment provided by engineer. */ "audio call (not e2e encrypted)" = "appel audio (sans chiffrement)"; +/* chat feature */ +"Audio/video calls" = "Appels audio/vidéo"; + +/* No comment provided by engineer. */ +"Audio/video calls are prohibited." = "Interdire les appels audio/vidéo."; + /* PIN entry */ "Authentication cancelled" = "Authentification interrompue"; @@ -383,15 +395,24 @@ /* integrity error chat item */ "bad message hash" = "hash de message incorrect"; +/* No comment provided by engineer. */ +"Bad message hash" = "Mauvais hash de message"; + /* integrity error chat item */ "bad message ID" = "ID de message incorrecte"; +/* No comment provided by engineer. */ +"Bad message ID" = "Mauvais ID de message"; + /* No comment provided by engineer. */ "bold" = "gras"; /* No comment provided by engineer. */ "Both you and your contact can irreversibly delete sent messages." = "Vous et votre contact êtes tous deux en mesure de supprimer de manière irréversible les messages envoyés."; +/* No comment provided by engineer. */ +"Both you and your contact can make calls." = "Vous et votre contact pouvez tous deux passer des appels."; + /* No comment provided by engineer. */ "Both you and your contact can send disappearing messages." = "Vous et votre contact êtes tous deux en mesure d'envoyer des messages éphémères."; @@ -782,6 +803,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Décentralisé"; +/* No comment provided by engineer. */ +"Decryption error" = "Erreur de déchiffrement"; + /* pref value */ "default (%@)" = "défaut (%@)"; @@ -1217,6 +1241,9 @@ /* No comment provided by engineer. */ "Failed to remove passphrase" = "Échec de la suppression de la phrase secrète"; +/* No comment provided by engineer. */ +"File will be deleted from servers." = "Le fichier sera supprimé des serveurs."; + /* No comment provided by engineer. */ "File will be received when your contact completes uploading it." = "Le fichier sera reçu lorsque votre contact aura terminé de le mettre en ligne."; @@ -1517,6 +1544,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Cela permet d'avoir plusieurs connections anonymes sans aucune données partagées entre elles sur un même profil."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Cela peut se produire lorsque vous ou votre contact avez utilisé une ancienne sauvegarde de base de données."; + +/* 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 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 (%@)."; @@ -1836,6 +1869,9 @@ /* No comment provided by engineer. */ "Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Vous êtes le seul à pouvoir supprimer des messages de manière irréversible (votre contact peut les marquer comme supprimé)."; +/* No comment provided by engineer. */ +"Only you can make calls." = "Vous seul pouvez passer des appels."; + /* No comment provided by engineer. */ "Only you can send disappearing messages." = "Seulement vous pouvez envoyer des messages éphémères."; @@ -1845,6 +1881,9 @@ /* No comment provided by engineer. */ "Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Seul votre contact peut supprimer de manière irréversible des messages (vous pouvez les marquer comme supprimé)."; +/* No comment provided by engineer. */ +"Only your contact can make calls." = "Seul votre contact peut passer des appels."; + /* No comment provided by engineer. */ "Only your contact can send disappearing messages." = "Seulement votre contact peut envoyer des messages éphémères."; @@ -1914,6 +1953,9 @@ /* No comment provided by engineer. */ "Periodically" = "Périodique"; +/* message decrypt error item */ +"Permanent decryption error" = "Erreur de déchiffrement"; + /* No comment provided by engineer. */ "PING count" = "Nombre de PING"; @@ -1944,6 +1986,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "N'oubliez pas de le mémoriser ou de le conserver en toute sécurité - il n'y a aucun moyen de récupérer un code d'accès perdu !"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Veuillez le signaler aux développeurs."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Veuillez redémarrer l'app et migrer la base de données pour activer les notifications push."; @@ -1983,6 +2028,9 @@ /* No comment provided by engineer. */ "Profile password" = "Mot de passe de profil"; +/* No comment provided by engineer. */ +"Prohibit audio/video calls." = "Interdire les appels audio/vidéo."; + /* No comment provided by engineer. */ "Prohibit irreversible message deletion." = "Interdire la suppression irréversible des messages."; @@ -2028,6 +2076,9 @@ /* notification */ "Received file event" = "Événement de fichier reçu"; +/* No comment provided by engineer. */ +"Receiving file will be stopped." = "La réception du fichier sera interrompue."; + /* No comment provided by engineer. */ "Receiving via" = "Réception via"; @@ -2115,6 +2166,15 @@ /* No comment provided by engineer. */ "Revert" = "Revenir en arrière"; +/* No comment provided by engineer. */ +"Revoke" = "Révoquer"; + +/* cancel file action */ +"Revoke file" = "Révoquer le fichier"; + +/* No comment provided by engineer. */ +"Revoke file?" = "Révoquer le fichier ?"; + /* No comment provided by engineer. */ "Role" = "Rôle"; @@ -2232,6 +2292,9 @@ /* No comment provided by engineer. */ "Sender may have deleted the connection request." = "L'expéditeur a peut-être supprimé la demande de connexion."; +/* No comment provided by engineer. */ +"Sending file will be stopped." = "L'envoi du fichier sera interrompu."; + /* No comment provided by engineer. */ "Sending via" = "Envoi via"; @@ -2367,6 +2430,15 @@ /* No comment provided by engineer. */ "Stop chat?" = "Arrêter le chat ?"; +/* cancel file action */ +"Stop file" = "Arrêter le fichier"; + +/* No comment provided by engineer. */ +"Stop receiving file?" = "Arrêter de recevoir le fichier ?"; + +/* No comment provided by engineer. */ +"Stop sending file?" = "Arrêter l'envoi du fichier ?"; + /* authentication reason */ "Stop SimpleX" = "Arrêter SimpleX"; @@ -2457,6 +2529,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "Le groupe est entièrement décentralisé – il n'est visible que par ses membres."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "Le hash du message précédent est différent."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "L'ID du message suivant est incorrect (inférieur ou égal au précédent).\nCela peut se produire en raison d'un bug ou lorsque la connexion est compromise."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Le message sera supprimé pour tous les membres."; @@ -2499,6 +2577,9 @@ /* notification title */ "this contact" = "ce contact"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "Cette erreur est persistante pour cette connexion, veuillez vous reconnecter."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Cette fonctionnalité est expérimentale ! Elle ne fonctionnera que si l'autre client a la version 4.2 installée. Vous devriez voir le message dans la conversation une fois le changement d'adresse effectué. Vérifiez que vous pouvez toujours recevoir des messages de ce contact (ou membre du groupe)."; diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 65afe20271..a6b291eb46 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -284,6 +284,9 @@ /* No comment provided by engineer. */ "Allow" = "Consenti"; +/* No comment provided by engineer. */ +"Allow calls only if your contact allows them." = "Consenti le chiamate solo se il contatto le consente."; + /* 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."; @@ -308,6 +311,9 @@ /* No comment provided by engineer. */ "Allow voice messages?" = "Consentire i messaggi vocali?"; +/* No comment provided by engineer. */ +"Allow your contacts to call you." = "Consenti ai tuoi contatti di chiamarti."; + /* No comment provided by engineer. */ "Allow your contacts to irreversibly delete sent messages." = "Permetti ai tuoi contatti di eliminare irreversibilmente i messaggi inviati."; @@ -356,6 +362,12 @@ /* No comment provided by engineer. */ "audio call (not e2e encrypted)" = "chiamata audio (non crittografata e2e)"; +/* chat feature */ +"Audio/video calls" = "Chiamate audio/video"; + +/* No comment provided by engineer. */ +"Audio/video calls are prohibited." = "Le chiamate audio/video sono vietate."; + /* PIN entry */ "Authentication cancelled" = "Autenticazione annullata"; @@ -383,15 +395,24 @@ /* integrity error chat item */ "bad message hash" = "hash del messaggio errato"; +/* No comment provided by engineer. */ +"Bad message hash" = "Hash del messaggio errato"; + /* integrity error chat item */ "bad message ID" = "ID messaggio errato"; +/* No comment provided by engineer. */ +"Bad message ID" = "ID del messaggio errato"; + /* No comment provided by engineer. */ "bold" = "grassetto"; /* No comment provided by engineer. */ "Both you and your contact can irreversibly delete sent messages." = "Sia tu che il tuo contatto potete eliminare irreversibilmente i messaggi inviati."; +/* No comment provided by engineer. */ +"Both you and your contact can make calls." = "Sia tu che il tuo contatto potete effettuare chiamate."; + /* No comment provided by engineer. */ "Both you and your contact can send disappearing messages." = "Sia tu che il tuo contatto potete inviare messaggi a tempo."; @@ -782,6 +803,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Decentralizzato"; +/* No comment provided by engineer. */ +"Decryption error" = "Errore di decifrazione"; + /* pref value */ "default (%@)" = "predefinito (%@)"; @@ -1217,6 +1241,9 @@ /* No comment provided by engineer. */ "Failed to remove passphrase" = "Rimozione della password fallita"; +/* No comment provided by engineer. */ +"File will be deleted from servers." = "Il file verrà eliminato dai server."; + /* No comment provided by engineer. */ "File will be received when your contact completes uploading it." = "Il file verrà ricevuto quando il tuo contatto completerà l'invio."; @@ -1517,6 +1544,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Permette di avere molte connessioni anonime senza dati condivisi tra di loro in un unico profilo di chat."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Può accadere quando tu o il tuo contatto avete usato il backup del database vecchio."; + +/* 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 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 (%@)."; @@ -1836,6 +1869,9 @@ /* No comment provided by engineer. */ "Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Solo tu puoi eliminare irreversibilmente i messaggi (il tuo contatto può contrassegnarli per l'eliminazione)."; +/* No comment provided by engineer. */ +"Only you can make calls." = "Solo tu puoi effettuare chiamate."; + /* No comment provided by engineer. */ "Only you can send disappearing messages." = "Solo tu puoi inviare messaggi a tempo."; @@ -1845,6 +1881,9 @@ /* No comment provided by engineer. */ "Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Solo il tuo contatto può eliminare irreversibilmente i messaggi (tu puoi contrassegnarli per l'eliminazione)."; +/* No comment provided by engineer. */ +"Only your contact can make calls." = "Solo il tuo contatto può effettuare chiamate."; + /* No comment provided by engineer. */ "Only your contact can send disappearing messages." = "Solo il tuo contatto può inviare messaggi a tempo."; @@ -1914,6 +1953,9 @@ /* No comment provided by engineer. */ "Periodically" = "Periodicamente"; +/* message decrypt error item */ +"Permanent decryption error" = "Errore di decifrazione"; + /* No comment provided by engineer. */ "PING count" = "Conteggio PING"; @@ -1944,6 +1986,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Ricordalo o conservalo in modo sicuro: non c'è modo di recuperare un codice di accesso perso!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Si prega di segnalarlo agli sviluppatori."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Riavvia l'app ed esegui la migrazione del database per attivare le notifiche push."; @@ -1983,6 +2028,9 @@ /* No comment provided by engineer. */ "Profile password" = "Password del profilo"; +/* No comment provided by engineer. */ +"Prohibit audio/video calls." = "Proibisci le chiamate audio/video."; + /* No comment provided by engineer. */ "Prohibit irreversible message deletion." = "Proibisci l'eliminazione irreversibile dei messaggi."; @@ -2028,6 +2076,9 @@ /* notification */ "Received file event" = "Evento file ricevuto"; +/* No comment provided by engineer. */ +"Receiving file will be stopped." = "La ricezione del file verrà interrotta."; + /* No comment provided by engineer. */ "Receiving via" = "Ricezione via"; @@ -2115,6 +2166,15 @@ /* No comment provided by engineer. */ "Revert" = "Annulla"; +/* No comment provided by engineer. */ +"Revoke" = "Revoca"; + +/* cancel file action */ +"Revoke file" = "Revoca file"; + +/* No comment provided by engineer. */ +"Revoke file?" = "Revocare il file?"; + /* No comment provided by engineer. */ "Role" = "Ruolo"; @@ -2232,6 +2292,9 @@ /* No comment provided by engineer. */ "Sender may have deleted the connection request." = "Il mittente potrebbe aver eliminato la richiesta di connessione."; +/* No comment provided by engineer. */ +"Sending file will be stopped." = "L'invio del file verrà interrotto."; + /* No comment provided by engineer. */ "Sending via" = "Invio tramite"; @@ -2367,6 +2430,15 @@ /* No comment provided by engineer. */ "Stop chat?" = "Fermare la chat?"; +/* cancel file action */ +"Stop file" = "Ferma file"; + +/* No comment provided by engineer. */ +"Stop receiving file?" = "Fermare la ricezione del file?"; + +/* No comment provided by engineer. */ +"Stop sending file?" = "Fermare l'invio del file?"; + /* authentication reason */ "Stop SimpleX" = "Ferma SimpleX"; @@ -2457,6 +2529,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "Il gruppo è completamente decentralizzato: è visibile solo ai membri."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "L'hash del messaggio precedente è diverso."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "L'ID del messaggio successivo non è corretto (inferiore o uguale al precedente).\nPuò accadere a causa di qualche bug o quando la connessione è compromessa."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Il messaggio verrà eliminato per tutti i membri."; @@ -2499,6 +2577,9 @@ /* notification title */ "this contact" = "questo contatto"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "L'errore è permanente per questa connessione, riconnettiti."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Questa funzionalità è sperimentale! Funzionerà solo se l'altro client ha la versione 4.2 installata. Dovresti vedere il messaggio nella conversazione una volta completato il cambio di indirizzo. Controlla di potere ancora ricevere messaggi da questo contatto (o membro del gruppo)."; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index 598fcde233..507d7198b0 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "\n" = "\n"; +/* No comment provided by engineer. */ +"\nAvailable in v5.1" = "\nBeschikbaar in v5.1"; + /* No comment provided by engineer. */ " " = " "; @@ -172,6 +175,12 @@ /* No comment provided by engineer. */ "%lldw" = "%lldw"; +/* No comment provided by engineer. */ +"%u messages failed to decrypt." = "%u-berichten kunnen niet worden gedecodeerd."; + +/* No comment provided by engineer. */ +"%u messages skipped." = "%u berichten zijn overgeslagen."; + /* No comment provided by engineer. */ "`a + b`" = "\\`a + b`"; @@ -284,6 +293,9 @@ /* No comment provided by engineer. */ "Allow" = "Toestaan"; +/* No comment provided by engineer. */ +"Allow calls only if your contact allows them." = "Sta oproepen alleen toe als uw contact persoon dit toestaat."; + /* No comment provided by engineer. */ "Allow disappearing messages only if your contact allows it to you." = "Sta verdwijnende berichten alleen toe als uw contactpersoon dit toestaat."; @@ -308,6 +320,9 @@ /* No comment provided by engineer. */ "Allow voice messages?" = "Spraak berichten toestaan?"; +/* No comment provided by engineer. */ +"Allow your contacts to call you." = "Sta toe dat uw contacten u bellen."; + /* No comment provided by engineer. */ "Allow your contacts to irreversibly delete sent messages." = "Laat uw contacten verzonden berichten onomkeerbaar verwijderen."; @@ -335,6 +350,9 @@ /* No comment provided by engineer. */ "App icon" = "App icon"; +/* No comment provided by engineer. */ +"App passcode" = "App toegangscode"; + /* No comment provided by engineer. */ "App version" = "App versie"; @@ -356,6 +374,12 @@ /* No comment provided by engineer. */ "audio call (not e2e encrypted)" = "audio oproep (niet e2e versleuteld)"; +/* chat feature */ +"Audio/video calls" = "Audio/video oproepen"; + +/* No comment provided by engineer. */ +"Audio/video calls are prohibited." = "Audio/video gesprekken zijn verboden."; + /* PIN entry */ "Authentication cancelled" = "Verificatie geannuleerd"; @@ -383,15 +407,24 @@ /* integrity error chat item */ "bad message hash" = "Onjuiste bericht hash"; +/* No comment provided by engineer. */ +"Bad message hash" = "Onjuiste bericht hash"; + /* integrity error chat item */ "bad message ID" = "Onjuiste bericht ID"; +/* No comment provided by engineer. */ +"Bad message ID" = "Onjuiste bericht ID"; + /* No comment provided by engineer. */ "bold" = "vetgedrukt"; /* No comment provided by engineer. */ "Both you and your contact can irreversibly delete sent messages." = "Zowel jij als je contactpersoon kunnen verzonden berichten onherroepelijk verwijderen."; +/* No comment provided by engineer. */ +"Both you and your contact can make calls." = "Zowel u als uw contact persoon kunnen bellen."; + /* No comment provided by engineer. */ "Both you and your contact can send disappearing messages." = "Zowel jij als je contactpersoon kunnen verdwijnende berichten sturen."; @@ -782,6 +815,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Gedecentraliseerd"; +/* No comment provided by engineer. */ +"Decryption error" = "Decryptie fout"; + /* pref value */ "default (%@)" = "standaard (%@)"; @@ -1217,6 +1253,12 @@ /* No comment provided by engineer. */ "Failed to remove passphrase" = "Kan wachtwoord niet verwijderen"; +/* No comment provided by engineer. */ +"Fast and no wait until the sender is online!" = "Snel en niet wachten tot de afzender online is!"; + +/* No comment provided by engineer. */ +"File will be deleted from servers." = "Het bestand wordt van de servers verwijderd."; + /* No comment provided by engineer. */ "File will be received when your contact completes uploading it." = "Het bestand wordt ontvangen wanneer uw contactpersoon het uploaden heeft voltooid."; @@ -1517,6 +1559,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Het maakt het mogelijk om veel anonieme verbindingen te hebben zonder enige gedeelde gegevens tussen hen in een enkel chat profiel."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Het kan gebeuren wanneer u of uw verbinding de oude databaseback-up gebruikte."; + +/* 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 contactpersoon een oude databaseback-up heeft gebruikt.\n3. De verbinding is verbroken."; + /* 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 (%@)."; @@ -1836,6 +1884,9 @@ /* No comment provided by engineer. */ "Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Alleen jij kunt berichten onomkeerbaar verwijderen (je contactpersoon kan ze markeren voor verwijdering)."; +/* No comment provided by engineer. */ +"Only you can make calls." = "Alleen jij kunt bellen."; + /* No comment provided by engineer. */ "Only you can send disappearing messages." = "Alleen jij kunt verdwijnende berichten verzenden."; @@ -1845,6 +1896,9 @@ /* No comment provided by engineer. */ "Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Alleen uw contactpersoon kan berichten onherroepelijk verwijderen (u kunt ze markeren voor verwijdering)."; +/* No comment provided by engineer. */ +"Only your contact can make calls." = "Alleen je contact kan bellen."; + /* No comment provided by engineer. */ "Only your contact can send disappearing messages." = "Alleen uw contactpersoon kan verdwijnende berichten verzenden."; @@ -1914,6 +1968,9 @@ /* No comment provided by engineer. */ "Periodically" = "Periodiek"; +/* message decrypt error item */ +"Permanent decryption error" = "Decryptie fout"; + /* No comment provided by engineer. */ "PING count" = "PING count"; @@ -1944,6 +2001,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Onthoud of bewaar het veilig - er is geen manier om een verloren toegangscode te herstellen!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Meld het alsjeblieft aan de ontwikkelaars."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Start de app opnieuw en migreer de database om push meldingen in te schakelen."; @@ -1953,6 +2013,9 @@ /* No comment provided by engineer. */ "Please store passphrase securely, you will NOT be able to change it if you lose it." = "Bewaar het wachtwoord veilig, u kunt deze NIET wijzigen als u het kwijtraakt."; +/* No comment provided by engineer. */ +"Polish interface" = "Poolse interface"; + /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Mogelijk is de certificaat vingerafdruk in het server adres onjuist"; @@ -1983,6 +2046,9 @@ /* No comment provided by engineer. */ "Profile password" = "Profiel wachtwoord"; +/* No comment provided by engineer. */ +"Prohibit audio/video calls." = "Audio/video gesprekken verbieden."; + /* No comment provided by engineer. */ "Prohibit irreversible message deletion." = "Verbied het onomkeerbaar verwijderen van berichten."; @@ -2028,6 +2094,9 @@ /* notification */ "Received file event" = "Ontvangen bestandsgebeurtenis"; +/* No comment provided by engineer. */ +"Receiving file will be stopped." = "Het ontvangen van het bestand wordt gestopt."; + /* No comment provided by engineer. */ "Receiving via" = "Ontvang via"; @@ -2115,6 +2184,15 @@ /* No comment provided by engineer. */ "Revert" = "Terugdraaien"; +/* No comment provided by engineer. */ +"Revoke" = "Intrekken"; + +/* cancel file action */ +"Revoke file" = "Bestand intrekken"; + +/* No comment provided by engineer. */ +"Revoke file?" = "Bestand intrekken?"; + /* No comment provided by engineer. */ "Role" = "Rol"; @@ -2232,6 +2310,9 @@ /* No comment provided by engineer. */ "Sender may have deleted the connection request." = "De afzender heeft mogelijk het verbindingsverzoek verwijderd."; +/* No comment provided by engineer. */ +"Sending file will be stopped." = "Het verzenden van het bestand wordt gestopt."; + /* No comment provided by engineer. */ "Sending via" = "Verzenden via"; @@ -2262,6 +2343,9 @@ /* No comment provided by engineer. */ "Set group preferences" = "Groep voorkeuren instellen"; +/* No comment provided by engineer. */ +"Set it instead of system authentication." = "Stel het in in plaats van systeemverificatie."; + /* No comment provided by engineer. */ "Set passphrase to export" = "Wachtwoord instellen om te exporteren"; @@ -2367,6 +2451,15 @@ /* No comment provided by engineer. */ "Stop chat?" = "Stop chat?"; +/* cancel file action */ +"Stop file" = "Bestand stoppen"; + +/* No comment provided by engineer. */ +"Stop receiving file?" = "Stopt met het ontvangen van een bestand?"; + +/* No comment provided by engineer. */ +"Stop sending file?" = "Bestand verzenden stoppen?"; + /* authentication reason */ "Stop SimpleX" = "Stop SimpleX"; @@ -2457,6 +2550,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "De groep is volledig gedecentraliseerd – het is alleen zichtbaar voor de leden."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "De hash van het vorige bericht is anders."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "De ID van het volgende bericht is onjuist (minder of gelijk aan het vorige).\nHet kan gebeuren vanwege een bug of wanneer de verbinding is aangetast."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Het bericht wordt verwijderd voor alle leden."; @@ -2499,6 +2598,9 @@ /* notification title */ "this contact" = "dit contact"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "Deze fout is permanent voor deze verbinding, maak opnieuw verbinding."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Deze functie is experimenteel! Het werkt alleen als op de andere client versie 4.2 is geïnstalleerd. U zou het bericht in het gesprek moeten zien zodra de adreswijziging is voltooid. Controleer of u nog steeds berichten van dit contact (of groepslid) kunt ontvangen."; @@ -2697,6 +2799,9 @@ /* No comment provided by engineer. */ "Video will be received when your contact is online, please wait or check later!" = "De video wordt ontvangen wanneer uw contact online is, even geduld a.u.b. of kijk later!"; +/* No comment provided by engineer. */ +"Videos and files up to 1gb" = "Video's en bestanden tot 1 GB"; + /* No comment provided by engineer. */ "View security code" = "Beveiligingscode bekijken"; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 33757759cb..a58db2593b 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "\n" = "\n"; +/* No comment provided by engineer. */ +"\nAvailable in v5.1" = "\nDostępny w v5.1"; + /* No comment provided by engineer. */ " " = " "; @@ -172,6 +175,12 @@ /* No comment provided by engineer. */ "%lldw" = "%lldt"; +/* No comment provided by engineer. */ +"%u messages failed to decrypt." = "Nie udało się odszyfrować %u wiadomości."; + +/* No comment provided by engineer. */ +"%u messages skipped." = "%u pominiętych wiadomości."; + /* No comment provided by engineer. */ "`a + b`" = "\\`a + b`"; @@ -284,6 +293,9 @@ /* No comment provided by engineer. */ "Allow" = "Pozwól"; +/* No comment provided by engineer. */ +"Allow calls only if your contact allows them." = "Zezwalaj na połączenia tylko wtedy, gdy Twój kontakt na to pozwala."; + /* No comment provided by engineer. */ "Allow disappearing messages only if your contact allows it to you." = "Zezwól na znikające wiadomości tylko wtedy, gdy Twój kontakt Ci na to pozwoli."; @@ -308,6 +320,9 @@ /* No comment provided by engineer. */ "Allow voice messages?" = "Zezwolić na wiadomości głosowe?"; +/* No comment provided by engineer. */ +"Allow your contacts to call you." = "Zezwól swoim kontaktom na połączenia do Ciebie."; + /* No comment provided by engineer. */ "Allow your contacts to irreversibly delete sent messages." = "Zezwól swoim kontaktom na nieodwracalne usuwanie wysłanych wiadomości."; @@ -335,6 +350,9 @@ /* No comment provided by engineer. */ "App icon" = "Ikona aplikacji"; +/* No comment provided by engineer. */ +"App passcode" = "Pin aplikacji"; + /* No comment provided by engineer. */ "App version" = "Wersja aplikacji"; @@ -356,6 +374,12 @@ /* No comment provided by engineer. */ "audio call (not e2e encrypted)" = "połączenie audio (nie szyfrowane e2e)"; +/* chat feature */ +"Audio/video calls" = "Połączenia audio/wideo"; + +/* No comment provided by engineer. */ +"Audio/video calls are prohibited." = "Połączenia audio/wideo są zabronione."; + /* PIN entry */ "Authentication cancelled" = "Uwierzytelnianie anulowane"; @@ -383,15 +407,24 @@ /* integrity error chat item */ "bad message hash" = "zły hash wiadomości"; +/* No comment provided by engineer. */ +"Bad message hash" = "Zły hash wiadomości"; + /* integrity error chat item */ "bad message ID" = "zły identyfikator wiadomości"; +/* No comment provided by engineer. */ +"Bad message ID" = "Zły identyfikator wiadomości"; + /* No comment provided by engineer. */ "bold" = "pogrubiona"; /* No comment provided by engineer. */ "Both you and your contact can irreversibly delete sent messages." = "Zarówno Ty, jak i Twój kontakt możecie nieodwracalnie usunąć wysłane wiadomości."; +/* No comment provided by engineer. */ +"Both you and your contact can make calls." = "Zarówno Ty, jak i Twój kontakt możecie nawiązywać połączenia."; + /* No comment provided by engineer. */ "Both you and your contact can send disappearing messages." = "Zarówno Ty, jak i Twój kontakt możecie wysyłać znikające wiadomości."; @@ -782,6 +815,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Zdecentralizowane"; +/* No comment provided by engineer. */ +"Decryption error" = "Błąd odszyfrowania"; + /* pref value */ "default (%@)" = "domyślne (%@)"; @@ -1217,6 +1253,12 @@ /* No comment provided by engineer. */ "Failed to remove passphrase" = "Nie udało się usunąć hasła"; +/* No comment provided by engineer. */ +"Fast and no wait until the sender is online!" = "Szybko i bez czekania aż nadawca będzie online!"; + +/* No comment provided by engineer. */ +"File will be deleted from servers." = "Plik zostanie usunięty z serwerów."; + /* No comment provided by engineer. */ "File will be received when your contact completes uploading it." = "Plik zostanie odebrany, gdy Twój kontakt zakończy przesyłanie."; @@ -1517,6 +1559,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "To pozwala na posiadanie wielu anonimowych połączeń bez żadnych wspólnych danych między nimi w pojedynczym profilu czatu."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Może się to zdarzyć, gdy Ty lub Twoje połączenie użyło starej kopii zapasowej bazy danych."; + +/* 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." = "Może to nastąpić, gdy:\n1. Wiadomości wygasły w wysyłającym kliencie po 2 dniach lub na serwerze po 30 dniach.\n2. Odszyfrowanie wiadomości nie powiodło się, ponieważ Ty lub Twój kontakt użyliście starej kopii zapasowej bazy danych.\n3. Połączenie zostało skompromitowane."; + /* 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 (%@)." = "Wygląda na to, że jesteś już połączony przez ten link. Jeśli tak nie jest, wystąpił błąd (%@)."; @@ -1836,6 +1884,9 @@ /* No comment provided by engineer. */ "Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Tylko Ty możesz nieodwracalnie usunąć wiadomości (Twój kontakt może oznaczyć je do usunięcia)."; +/* No comment provided by engineer. */ +"Only you can make calls." = "Tylko Ty możesz wykonywać połączenia."; + /* No comment provided by engineer. */ "Only you can send disappearing messages." = "Tylko Ty możesz wysyłać znikające wiadomości."; @@ -1845,6 +1896,9 @@ /* No comment provided by engineer. */ "Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Tylko Twój kontakt może nieodwracalnie usunąć wiadomości (możesz oznaczyć je do usunięcia)."; +/* No comment provided by engineer. */ +"Only your contact can make calls." = "Tylko Twój kontakt może wykonywać połączenia."; + /* No comment provided by engineer. */ "Only your contact can send disappearing messages." = "Tylko Twój kontakt może wysyłać znikające wiadomości."; @@ -1914,6 +1968,9 @@ /* No comment provided by engineer. */ "Periodically" = "Okresowo"; +/* message decrypt error item */ +"Permanent decryption error" = "Błąd odszyfrowania"; + /* No comment provided by engineer. */ "PING count" = "Liczba PINGÓW"; @@ -1944,6 +2001,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Prosimy o jego zapamiętanie lub bezpieczne przechowywanie - nie ma możliwości odzyskania utraconego pinu!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "Prosimy o zgłaszanie tego do deweloperów."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Uruchom ponownie aplikację i przeprowadź migrację bazy danych, aby włączyć powiadomienia push."; @@ -1953,6 +2013,9 @@ /* No comment provided by engineer. */ "Please store passphrase securely, you will NOT be able to change it if you lose it." = "Prosimy o bezpieczne przechowywanie hasła, w przypadku jego utraty NIE będzie można go zmienić."; +/* No comment provided by engineer. */ +"Polish interface" = "Polski interfejs"; + /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy"; @@ -1983,6 +2046,9 @@ /* No comment provided by engineer. */ "Profile password" = "Hasło profilu"; +/* No comment provided by engineer. */ +"Prohibit audio/video calls." = "Zabroń połączeń audio/wideo."; + /* No comment provided by engineer. */ "Prohibit irreversible message deletion." = "Zabroń nieodwracalnego usuwania wiadomości."; @@ -2028,6 +2094,9 @@ /* notification */ "Received file event" = "Otrzymano zdarzenie pliku"; +/* No comment provided by engineer. */ +"Receiving file will be stopped." = "Odbieranie pliku zostanie przerwane."; + /* No comment provided by engineer. */ "Receiving via" = "Odbieranie przez"; @@ -2115,6 +2184,15 @@ /* No comment provided by engineer. */ "Revert" = "Przywrócić"; +/* No comment provided by engineer. */ +"Revoke" = "Odwołaj"; + +/* cancel file action */ +"Revoke file" = "Odwołaj plik"; + +/* No comment provided by engineer. */ +"Revoke file?" = "Odwołać plik?"; + /* No comment provided by engineer. */ "Role" = "Rola"; @@ -2232,6 +2310,9 @@ /* No comment provided by engineer. */ "Sender may have deleted the connection request." = "Nadawca mógł usunąć prośbę o połączenie."; +/* No comment provided by engineer. */ +"Sending file will be stopped." = "Wysyłanie pliku zostanie przerwane."; + /* No comment provided by engineer. */ "Sending via" = "Wysyłanie przez"; @@ -2262,6 +2343,9 @@ /* No comment provided by engineer. */ "Set group preferences" = "Ustaw preferencje grupy"; +/* No comment provided by engineer. */ +"Set it instead of system authentication." = "Ustaw go zamiast uwierzytelniania systemowego."; + /* No comment provided by engineer. */ "Set passphrase to export" = "Ustaw hasło do eksportu"; @@ -2367,6 +2451,15 @@ /* No comment provided by engineer. */ "Stop chat?" = "Zatrzymać czat?"; +/* cancel file action */ +"Stop file" = "Zatrzymaj plik"; + +/* No comment provided by engineer. */ +"Stop receiving file?" = "Przestać odbierać plik?"; + +/* No comment provided by engineer. */ +"Stop sending file?" = "Przestać wysyłać plik?"; + /* authentication reason */ "Stop SimpleX" = "Zatrzymaj SimpleX"; @@ -2457,6 +2550,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "Grupa jest w pełni zdecentralizowana – jest widoczna tylko dla członków."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "Hash poprzedniej wiadomości jest inny."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "Identyfikator następnej wiadomości jest nieprawidłowy (mniejszy lub równy poprzedniej).\nMoże się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skompromitowane."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Wiadomość zostanie usunięta dla wszystkich członków."; @@ -2499,6 +2598,9 @@ /* notification title */ "this contact" = "ten kontakt"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "Ten błąd jest trwały dla tego połączenia, proszę o ponowne połączenie."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Ta funkcja jest eksperymentalna! Będzie działać tylko wtedy, gdy drugi klient ma zainstalowaną wersję 4.2. Po zakończeniu zmiany adresu powinieneś zobaczyć wiadomość w konwersacji - sprawdź, czy nadal możesz otrzymywać wiadomości od tego kontaktu (lub członka grupy)."; @@ -2697,6 +2799,9 @@ /* No comment provided by engineer. */ "Video will be received when your contact is online, please wait or check later!" = "Film zostanie odebrany, gdy kontakt będzie online, poczekaj lub sprawdź później!"; +/* No comment provided by engineer. */ +"Videos and files up to 1gb" = "Filmy i pliki do 1gb"; + /* No comment provided by engineer. */ "View security code" = "Pokaż kod bezpieczeństwa"; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index ca0f1f1f7b..74409510c6 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "\n" = "\n"; +/* No comment provided by engineer. */ +"\nAvailable in v5.1" = "\nДоступно в v5.1"; + /* No comment provided by engineer. */ " " = " "; @@ -142,9 +145,15 @@ /* No comment provided by engineer. */ "%lld members" = "Членов группы: %lld"; +/* No comment provided by engineer. */ +"%lld minutes" = "%lld минуты"; + /* No comment provided by engineer. */ "%lld second(s)" = "%lld секунд"; +/* No comment provided by engineer. */ +"%lld seconds" = "%lld секунд"; + /* No comment provided by engineer. */ "%lldd" = "%lldд"; @@ -166,6 +175,12 @@ /* No comment provided by engineer. */ "%lldw" = "%lldнед"; +/* No comment provided by engineer. */ +"%u messages failed to decrypt." = "%u сообщений не могут быть расшифрованы."; + +/* No comment provided by engineer. */ +"%u messages skipped." = "%u сообщений пропущено."; + /* No comment provided by engineer. */ "`a + b`" = "\\`a + b`"; @@ -278,6 +293,9 @@ /* No comment provided by engineer. */ "Allow" = "Разрешить"; +/* No comment provided by engineer. */ +"Allow calls only if your contact allows them." = "Разрешить звонки, только если их разрешает Ваш контакт."; + /* No comment provided by engineer. */ "Allow disappearing messages only if your contact allows it to you." = "Разрешить исчезающие сообщения, только если Ваш контакт разрешает их Вам."; @@ -302,6 +320,9 @@ /* No comment provided by engineer. */ "Allow voice messages?" = "Разрешить голосовые сообщения?"; +/* No comment provided by engineer. */ +"Allow your contacts to call you." = "Разрешить Вашим контактам звонить Вам."; + /* No comment provided by engineer. */ "Allow your contacts to irreversibly delete sent messages." = "Разрешить Вашим контактам необратимо удалять отправленные сообщения."; @@ -329,6 +350,9 @@ /* No comment provided by engineer. */ "App icon" = "Иконка"; +/* No comment provided by engineer. */ +"App passcode" = "Код доступа в приложение"; + /* No comment provided by engineer. */ "App version" = "Версия приложения"; @@ -350,6 +374,15 @@ /* No comment provided by engineer. */ "audio call (not e2e encrypted)" = "аудиозвонок (не e2e зашифрованный)"; +/* chat feature */ +"Audio/video calls" = "Аудио/видео звонки"; + +/* No comment provided by engineer. */ +"Audio/video calls are prohibited." = "Аудио/видео звонки запрещены."; + +/* PIN entry */ +"Authentication cancelled" = "Аутентификация отменена"; + /* No comment provided by engineer. */ "Authentication failed" = "Ошибка аутентификации"; @@ -374,15 +407,24 @@ /* integrity error chat item */ "bad message hash" = "ошибка хэш сообщения"; +/* No comment provided by engineer. */ +"Bad message hash" = "Ошибка хэш сообщения"; + /* integrity error chat item */ "bad message ID" = "ошибка ID сообщения"; +/* No comment provided by engineer. */ +"Bad message ID" = "Ошибка ID сообщения"; + /* No comment provided by engineer. */ "bold" = "жирный"; /* No comment provided by engineer. */ "Both you and your contact can irreversibly delete sent messages." = "Вы и Ваш контакт можете необратимо удалять отправленные сообщения."; +/* No comment provided by engineer. */ +"Both you and your contact can make calls." = "Вы и Ваш контакт можете совершать звонки."; + /* No comment provided by engineer. */ "Both you and your contact can send disappearing messages." = "Вы и Ваш контакт можете отправлять исчезающие сообщения."; @@ -434,9 +476,18 @@ /* No comment provided by engineer. */ "Change database passphrase?" = "Поменять пароль базы данных?"; +/* authentication reason */ +"Change lock mode" = "Изменить режим блокировки"; + /* No comment provided by engineer. */ "Change member role?" = "Поменять роль члена группы?"; +/* authentication reason */ +"Change passcode" = "Изменить код доступа"; + +/* No comment provided by engineer. */ +"Change Passcode" = "Изменить код доступа"; + /* No comment provided by engineer. */ "Change receiving address" = "Поменять адрес получения"; @@ -518,6 +569,9 @@ /* No comment provided by engineer. */ "Colors" = "Цвета"; +/* server test step */ +"Compare file" = "Сравнение файла"; + /* No comment provided by engineer. */ "Compare security codes with your contacts." = "Сравните код безопасности с Вашими контактами."; @@ -536,6 +590,9 @@ /* No comment provided by engineer. */ "Confirm new passphrase…" = "Подтвердите новый пароль…"; +/* No comment provided by engineer. */ +"Confirm Passcode" = "Подтвердить Код"; + /* No comment provided by engineer. */ "Confirm password" = "Подтвердить пароль"; @@ -662,6 +719,9 @@ /* No comment provided by engineer. */ "Create address" = "Создать адрес"; +/* server test step */ +"Create file" = "Создание файла"; + /* No comment provided by engineer. */ "Create group link" = "Создать ссылку группы"; @@ -686,6 +746,9 @@ /* No comment provided by engineer. */ "creator" = "создатель"; +/* No comment provided by engineer. */ +"Current Passcode" = "Текущий Код"; + /* No comment provided by engineer. */ "Current passphrase…" = "Текущий пароль…"; @@ -752,6 +815,9 @@ /* No comment provided by engineer. */ "Decentralized" = "Децентрализованный"; +/* No comment provided by engineer. */ +"Decryption error" = "Ошибка расшифровки"; + /* pref value */ "default (%@)" = "по умолчанию (%@)"; @@ -797,6 +863,9 @@ /* No comment provided by engineer. */ "Delete database" = "Удалить данные чата"; +/* server test step */ +"Delete file" = "Удалить файл"; + /* No comment provided by engineer. */ "Delete files and media?" = "Удалить файлы и медиа?"; @@ -929,6 +998,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Откатить версию и открыть чат"; +/* server test step */ +"Download file" = "Загрузка файла"; + /* No comment provided by engineer. */ "Duplicate display name!" = "Имя профиля уже используется!"; @@ -953,6 +1025,9 @@ /* No comment provided by engineer. */ "Enable instant notifications?" = "Включить мгновенные уведомления?"; +/* No comment provided by engineer. */ +"Enable lock" = "Включить блокировку"; + /* No comment provided by engineer. */ "Enable notifications" = "Включить уведомления"; @@ -1010,6 +1085,9 @@ /* No comment provided by engineer. */ "Enter correct passphrase." = "Введите правильный пароль."; +/* No comment provided by engineer. */ +"Enter Passcode" = "Введите Код"; + /* No comment provided by engineer. */ "Enter passphrase…" = "Введите пароль…"; @@ -1094,6 +1172,9 @@ /* No comment provided by engineer. */ "Error joining group" = "Ошибка при вступлении в группу"; +/* No comment provided by engineer. */ +"Error loading %@ servers" = "Ошибка загрузки %@ серверов"; + /* No comment provided by engineer. */ "Error receiving file" = "Ошибка при получении файла"; @@ -1109,6 +1190,9 @@ /* No comment provided by engineer. */ "Error saving ICE servers" = "Ошибка при сохранении ICE серверов"; +/* No comment provided by engineer. */ +"Error saving passcode" = "Ошибка сохранения кода"; + /* No comment provided by engineer. */ "Error saving passphrase to keychain" = "Ошибка сохранения пароля в Keychain"; @@ -1169,6 +1253,12 @@ /* No comment provided by engineer. */ "Failed to remove passphrase" = "Ошибка удаления пароля"; +/* No comment provided by engineer. */ +"Fast and no wait until the sender is online!" = "Быстрые и не нужно ждать, когда отправитель онлайн!"; + +/* No comment provided by engineer. */ +"File will be deleted from servers." = "Файл будет удалён с серверов."; + /* No comment provided by engineer. */ "File will be received when your contact completes uploading it." = "Файл будет принят когда Ваш контакт загрузит его."; @@ -1334,6 +1424,9 @@ /* No comment provided by engineer. */ "Image will be received when your contact is online, please wait or check later!" = "Изображение будет принято, когда Ваш контакт будет в сети, подождите или проверьте позже!"; +/* No comment provided by engineer. */ +"Immediately" = "Сразу"; + /* No comment provided by engineer. */ "Immune to spam and abuse" = "Защищен от спама"; @@ -1385,6 +1478,9 @@ /* No comment provided by engineer. */ "Incompatible database version" = "Несовместимая версия базы данных"; +/* PIN entry */ +"Incorrect passcode" = "Неправильный код"; + /* No comment provided by engineer. */ "Incorrect security code!" = "Неправильный код безопасности!"; @@ -1463,6 +1559,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Это позволяет иметь много анонимных соединений без общих данных между ними в одном профиле пользователя."; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "Это может произойти, когда Вы или Ваш контакт используете старую копию базы данных."; + +/* 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." = "Это может произойти, когда:\n1. Клиент отправителя удалил неотправленные сообщения через 2 дня, или сервер – через 30 дней.\n2. Расшифровка сообщения была невозможна, когда Вы или Ваш контакт использовали старую копию базы данных.\n3. Соединение компроментировано."; + /* 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 (%@)." = "Возможно, Вы уже соединились через эту ссылку. Если это не так, то это ошибка (%@)."; @@ -1490,6 +1592,9 @@ /* No comment provided by engineer. */ "Keychain error" = "Ошибка Keychain"; +/* No comment provided by engineer. */ +"KeyChain error" = "Ошибка KeyChain"; + /* No comment provided by engineer. */ "Large file!" = "Большой файл!"; @@ -1526,6 +1631,12 @@ /* No comment provided by engineer. */ "Local profile data only" = "Только локальные данные профиля"; +/* No comment provided by engineer. */ +"Lock after" = "Заблокировать через"; + +/* No comment provided by engineer. */ +"Lock mode" = "Режим блокировки"; + /* No comment provided by engineer. */ "Make a private connection" = "Добавьте контакт"; @@ -1673,6 +1784,9 @@ /* notification */ "New message" = "Новое сообщение"; +/* No comment provided by engineer. */ +"New Passcode" = "Новый Код"; + /* No comment provided by engineer. */ "New passphrase…" = "Новый пароль…"; @@ -1682,6 +1796,9 @@ /* No comment provided by engineer. */ "No" = "Нет"; +/* Authentication unavailable */ +"No app password" = "Нет кода доступа"; + /* No comment provided by engineer. */ "No contacts selected" = "Контакты не выбраны"; @@ -1719,6 +1836,9 @@ group pref value */ "off" = "нет"; +/* No comment provided by engineer. */ +"Off" = "Выключено"; + /* No comment provided by engineer. */ "Off (Local)" = "Выключить (Локальные)"; @@ -1764,6 +1884,9 @@ /* No comment provided by engineer. */ "Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Только Вы можете необратимо удалять сообщения (Ваш контакт может помечать их на удаление)."; +/* No comment provided by engineer. */ +"Only you can make calls." = "Только Вы можете совершать звонки."; + /* No comment provided by engineer. */ "Only you can send disappearing messages." = "Только Вы можете отправлять исчезающие сообщения."; @@ -1773,6 +1896,9 @@ /* No comment provided by engineer. */ "Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Только Ваш контакт может необратимо удалять сообщения (Вы можете помечать их на удаление)."; +/* No comment provided by engineer. */ +"Only your contact can make calls." = "Только Ваш контакт может совершать звонки."; + /* No comment provided by engineer. */ "Only your contact can send disappearing messages." = "Только Ваш контакт может отправлять исчезающие сообщения."; @@ -1803,6 +1929,21 @@ /* member role */ "owner" = "владелец"; +/* No comment provided by engineer. */ +"Passcode" = "Код доступа"; + +/* No comment provided by engineer. */ +"Passcode changed!" = "Код доступа изменён!"; + +/* No comment provided by engineer. */ +"Passcode entry" = "Ввод кода доступа"; + +/* No comment provided by engineer. */ +"Passcode not changed!" = "Код доступа не изменён!"; + +/* No comment provided by engineer. */ +"Passcode set!" = "Код доступа установлен!"; + /* No comment provided by engineer. */ "Password to show" = "Пароль чтобы раскрыть"; @@ -1827,6 +1968,9 @@ /* No comment provided by engineer. */ "Periodically" = "Периодически"; +/* message decrypt error item */ +"Permanent decryption error" = "Ошибка расшифровки"; + /* No comment provided by engineer. */ "PING count" = "Количество PING"; @@ -1854,6 +1998,12 @@ /* No comment provided by engineer. */ "Please enter the previous password after restoring database backup. This action can not be undone." = "Введите предыдущий пароль после восстановления резервной копии. Это действие нельзя отменить."; +/* No comment provided by engineer. */ +"Please remember or store it securely - there is no way to recover a lost passcode!" = "Пожалуйста, запомните или сохраните его - восстановить потерянный пароль невозможно!"; + +/* No comment provided by engineer. */ +"Please report it to the developers." = "Пожалуйста, сообщите об этой ошибке девелоперам."; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "Пожалуйста, перезапустите приложение и переместите данные чата, чтобы включить доставку уведомлений."; @@ -1863,6 +2013,9 @@ /* No comment provided by engineer. */ "Please store passphrase securely, you will NOT be able to change it if you lose it." = "Пожалуйста, надежно сохраните пароль, Вы НЕ сможете его поменять, если потеряете."; +/* No comment provided by engineer. */ +"Polish interface" = "Польский интерфейс"; + /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Возможно, хэш сертификата в адресе сервера неверный"; @@ -1893,6 +2046,9 @@ /* No comment provided by engineer. */ "Profile password" = "Пароль профиля"; +/* No comment provided by engineer. */ +"Prohibit audio/video calls." = "Запретить аудио/видео звонки."; + /* No comment provided by engineer. */ "Prohibit irreversible message deletion." = "Запретить необратимое удаление сообщений."; @@ -1938,6 +2094,9 @@ /* notification */ "Received file event" = "Загрузка файла"; +/* No comment provided by engineer. */ +"Receiving file will be stopped." = "Приём файла будет прекращён."; + /* No comment provided by engineer. */ "Receiving via" = "Получение через"; @@ -2025,6 +2184,15 @@ /* No comment provided by engineer. */ "Revert" = "Отменить изменения"; +/* No comment provided by engineer. */ +"Revoke" = "Отозвать"; + +/* cancel file action */ +"Revoke file" = "Отозвать файл"; + +/* No comment provided by engineer. */ +"Revoke file?" = "Отозвать файл?"; + /* No comment provided by engineer. */ "Role" = "Роль"; @@ -2142,6 +2310,9 @@ /* No comment provided by engineer. */ "Sender may have deleted the connection request." = "Отправитель мог удалить запрос на соединение."; +/* No comment provided by engineer. */ +"Sending file will be stopped." = "Отправка файла будет остановлена."; + /* No comment provided by engineer. */ "Sending via" = "Отправка через"; @@ -2154,6 +2325,9 @@ /* server test error */ "Server requires authorization to create queues, check password" = "Сервер требует авторизации для создания очередей, проверьте пароль"; +/* server test error */ +"Server requires authorization to upload, check password" = "Сервер требует авторизации для загрузки, проверьте пароль"; + /* No comment provided by engineer. */ "Server test failed!" = "Ошибка теста сервера!"; @@ -2169,6 +2343,9 @@ /* No comment provided by engineer. */ "Set group preferences" = "Предпочтения группы"; +/* No comment provided by engineer. */ +"Set it instead of system authentication." = "Установите код вместо системной аутентификации."; + /* No comment provided by engineer. */ "Set passphrase to export" = "Установите пароль"; @@ -2226,6 +2403,12 @@ /* No comment provided by engineer. */ "SimpleX Lock" = "Блокировка SimpleX"; +/* No comment provided by engineer. */ +"SimpleX Lock mode" = "Режим Блокировки SimpleX"; + +/* No comment provided by engineer. */ +"SimpleX Lock not enabled!" = "Блокировка SimpleX не включена!"; + /* No comment provided by engineer. */ "SimpleX Lock turned on" = "Блокировка SimpleX включена"; @@ -2268,18 +2451,33 @@ /* No comment provided by engineer. */ "Stop chat?" = "Остановить чат?"; +/* cancel file action */ +"Stop file" = "Остановить файл"; + +/* No comment provided by engineer. */ +"Stop receiving file?" = "Остановить приём файла?"; + +/* No comment provided by engineer. */ +"Stop sending file?" = "Остановить отправку файла?"; + /* authentication reason */ "Stop SimpleX" = "Остановить SimpleX"; /* No comment provided by engineer. */ "strike" = "зачеркнуть"; +/* No comment provided by engineer. */ +"Submit" = "Продолжить"; + /* No comment provided by engineer. */ "Support SimpleX Chat" = "Поддержать SimpleX Chat"; /* No comment provided by engineer. */ "System" = "Системная"; +/* No comment provided by engineer. */ +"System authentication" = "Системная аутентификация"; + /* No comment provided by engineer. */ "Take picture" = "Сделать фото"; @@ -2352,6 +2550,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "Группа полностью децентрализована — она видна только членам."; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "Хэш предыдущего сообщения отличается."; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "Неправильный ID предыдущего сообщения (меньше или равен предыдущему).\nЭто может произойти из-за ошибки программы, или когда соединение компроментировано."; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "Сообщение будет удалено для всех членов группы."; @@ -2394,6 +2598,9 @@ /* notification title */ "this contact" = "этот контакт"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "Эта ошибка постоянная для этого соединения, пожалуйста, соединитесь снова."; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "Это экспериментальная функция! Она будет работать, только если на другом клиенте установлена версия 4.2. После завершения смены адреса Вы увидите сообщение — убедитесь, что Вы все еще можете получать сообщения от этого контакта (или члена группы)."; @@ -2490,6 +2697,9 @@ /* No comment provided by engineer. */ "Unlock" = "Разблокировать"; +/* authentication reason */ +"Unlock app" = "Разблокировать"; + /* No comment provided by engineer. */ "Unmute" = "Уведомлять"; @@ -2523,6 +2733,9 @@ /* No comment provided by engineer. */ "Upgrade and open chat" = "Обновить и открыть чат"; +/* server test step */ +"Upload file" = "Загрузка файла"; + /* No comment provided by engineer. */ "Use .onion hosts" = "Использовать .onion хосты"; @@ -2580,6 +2793,15 @@ /* No comment provided by engineer. */ "video call (not e2e encrypted)" = "видеозвонок (не e2e зашифрованный)"; +/* No comment provided by engineer. */ +"Video will be received when your contact completes uploading it." = "Видео будет получено когда Ваш контакт загрузит его."; + +/* No comment provided by engineer. */ +"Video will be received when your contact is online, please wait or check later!" = "Видео будет получено, когда Ваш контакт будет онлайн, пожалуйста, подождите или проверьте позже!"; + +/* No comment provided by engineer. */ +"Videos and files up to 1gb" = "Видео и файлы до 1гб"; + /* No comment provided by engineer. */ "View security code" = "Показать код безопасности"; @@ -2610,6 +2832,9 @@ /* No comment provided by engineer. */ "Waiting for image" = "Ожидается прием изображения"; +/* No comment provided by engineer. */ +"Waiting for video" = "Ожидание видео"; + /* No comment provided by engineer. */ "wants to connect to you!" = "хочет соединиться с Вами!"; @@ -2700,6 +2925,9 @@ /* No comment provided by engineer. */ "You can start chat via app Settings / Database or by restarting the app" = "Вы можете запустить чат через Настройки приложения или перезапустив приложение."; +/* No comment provided by engineer. */ +"You can turn on SimpleX Lock via Settings." = "Вы можете включить Блокировку SimpleX через Настройки."; + /* No comment provided by engineer. */ "You can use markdown to format messages:" = "Вы можете форматировать сообщения:"; diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings index 512a1b7fb1..af21702f8a 100644 --- a/apps/ios/zh-Hans.lproj/Localizable.strings +++ b/apps/ios/zh-Hans.lproj/Localizable.strings @@ -383,9 +383,15 @@ /* integrity error chat item */ "bad message hash" = "错误消息散列"; +/* No comment provided by engineer. */ +"Bad message hash" = "错误消息散列"; + /* integrity error chat item */ "bad message ID" = "错误消息 ID"; +/* No comment provided by engineer. */ +"Bad message ID" = "错误消息 ID"; + /* No comment provided by engineer. */ "bold" = "加粗"; @@ -782,6 +788,9 @@ /* No comment provided by engineer. */ "Decentralized" = "分散式"; +/* No comment provided by engineer. */ +"Decryption error" = "解密错误"; + /* pref value */ "default (%@)" = "默认 (%@)"; @@ -1517,6 +1526,12 @@ /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "它允许在一个聊天资料中有多个匿名连接,而它们之间没有任何共享数据。"; +/* No comment provided by engineer. */ +"It can happen when you or your connection used the old database backup." = "当您或您的连接使用旧数据库备份时,可能会发生这种情况。"; + +/* 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." = "它可能在以下情况发生:\n1. 消息在发送客户端 2 天后或在服务器上 30 天后过期。\n2. 消息解密失败,因为您或您的联系人使用了旧的数据库备份。\n3.连接被破坏。"; + /* 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 (%@)." = "您似乎已经通过此链接连接。如果不是这样,则有一个错误 (%@)。"; @@ -1914,6 +1929,9 @@ /* No comment provided by engineer. */ "Periodically" = "定期"; +/* message decrypt error item */ +"Permanent decryption error" = "解密错误"; + /* No comment provided by engineer. */ "PING count" = "PING 次数"; @@ -1944,6 +1962,9 @@ /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "请牢记或妥善保管——丢失的密码将无法恢复!"; +/* No comment provided by engineer. */ +"Please report it to the developers." = "请向开发者报告。"; + /* No comment provided by engineer. */ "Please restart the app and migrate the database to enable push notifications." = "请重新启动应用程序并迁移数据库以启用推送通知。"; @@ -2457,6 +2478,12 @@ /* No comment provided by engineer. */ "The group is fully decentralized – it is visible only to the members." = "该小组是完全分散式的——它只对成员可见。"; +/* No comment provided by engineer. */ +"The hash of the previous message is different." = "上一条消息的散列不同。"; + +/* No comment provided by engineer. */ +"The ID of the next message is incorrect (less or equal to the previous).\nIt can happen because of some bug or when the connection is compromised." = "下一条消息的 ID 不正确(小于或等于上一条)。\n它可能是由于某些错误或连接被破坏才发生。"; + /* No comment provided by engineer. */ "The message will be deleted for all members." = "将为所有成员删除该消息。"; @@ -2499,6 +2526,9 @@ /* notification title */ "this contact" = "这个联系人"; +/* No comment provided by engineer. */ +"This error is permanent for this connection, please re-connect." = "此错误对于此连接是永久性的,请重新连接。"; + /* No comment provided by engineer. */ "This feature is experimental! It will only work if the other client has version 4.2 installed. You should see the message in the conversation once the address change is completed – please check that you can still receive messages from this contact (or group member)." = "此功能是实验性的! 它仅在其他客户端安装了 4.2 版时才有效。 地址更改完成后,您应该会在对话中看到该消息——请检查您是否仍能收到来自该联系人(或群组成员)的消息。"; diff --git a/scripts/ios/import-localizations.sh b/scripts/ios/import-localizations.sh index ff4f8fe5f8..e37e58e18c 100755 --- a/scripts/ios/import-localizations.sh +++ b/scripts/ios/import-localizations.sh @@ -14,5 +14,5 @@ for lang in "${langs[@]}"; do -localizationPath ./apps/ios/SimpleX\ Localizations/$lang.xcloc \ -disableAutomaticPackageResolution \ -skipPackageUpdates - sleep 2 + sleep 10 done From acf0dfc38c4eca1fc8221fb0615692e085d5f68e Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 19 Apr 2023 02:17:28 +0300 Subject: [PATCH 2/7] android: alerts + dropdown menus (#2199) * android: alerts + dropdown menus * colors * align * paddings * colors * complete alerts --------- Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- .../java/chat/simplex/app/ui/theme/Color.kt | 1 + .../java/chat/simplex/app/ui/theme/Theme.kt | 3 +- .../chat/simplex/app/views/chat/ChatView.kt | 45 +++--- .../simplex/app/views/chat/SendMsgView.kt | 12 +- .../app/views/chat/item/ChatItemView.kt | 36 ++--- .../app/views/chatlist/ChatListNavLinkView.kt | 38 ++--- .../simplex/app/views/chatlist/UserPicker.kt | 33 +++-- .../simplex/app/views/helpers/AlertManager.kt | 133 +++++++++++------- .../app/views/helpers/DefaultDropdownMenu.kt | 58 ++++++++ .../helpers/ExposedDropDownSettingRow.kt | 22 ++- .../usersettings/AdvancedNetworkSettings.kt | 39 +++-- .../views/usersettings/ProtocolServersView.kt | 7 +- .../views/usersettings/UserProfilesView.kt | 26 ++-- 13 files changed, 252 insertions(+), 201 deletions(-) create mode 100644 apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultDropdownMenu.kt diff --git a/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Color.kt b/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Color.kt index 6ca2ad5d7d..29bedfab43 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Color.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Color.kt @@ -27,3 +27,4 @@ val WarningOrange = Color(255, 127, 0, 255) val WarningYellow = Color(255, 192, 0, 255) val FileLight = Color(183, 190, 199, 255) val FileDark = Color(101, 101, 106, 255) +val MenuTextColorDark = Color.White.copy(alpha = 0.8f) diff --git a/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Theme.kt b/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Theme.kt index dfe6f68989..dbd17b94f7 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Theme.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/ui/theme/Theme.kt @@ -28,7 +28,7 @@ val DarkColorPalette = darkColors( // surface = Color.Black, // background = Color(0xFF121212), // surface = Color(0xFF121212), -// error = Color(0xFFCF6679), + error = Color.Red, onBackground = Color(0xFFFFFBFA), onSurface = Color(0xFFFFFBFA), // onError: Color = Color.Black, @@ -37,6 +37,7 @@ val LightColorPalette = lightColors( primary = SimplexBlue, // If this value changes also need to update #0088ff in string resource files primaryVariant = SimplexGreen, secondary = LightGray, + error = Color.Red, // background = Color.White, // surface = Color.White // onPrimary = Color.White, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt index ef60e219f6..841126366a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ChatView.kt @@ -378,7 +378,7 @@ fun ChatInfoToolbar( onSearchValueChanged: (String) -> Unit, ) { val scope = rememberCoroutineScope() - var showMenu by rememberSaveable { mutableStateOf(false) } + val showMenu = rememberSaveable { mutableStateOf(false) } var showSearch by rememberSaveable { mutableStateOf(false) } val onBackClicked = { if (!showSearch) { @@ -393,7 +393,7 @@ fun ChatInfoToolbar( val menuItems = arrayListOf<@Composable () -> Unit>() menuItems.add { ItemAction(stringResource(android.R.string.search_go).capitalize(Locale.current), Icons.Outlined.Search, onClick = { - showMenu = false + showMenu.value = false showSearch = true }) } @@ -401,7 +401,7 @@ fun ChatInfoToolbar( if (chat.chatInfo is ChatInfo.Direct && chat.chatInfo.contact.allowsFeature(ChatFeature.Calls)) { barButtons.add { IconButton({ - showMenu = false + showMenu.value = false startCall(CallMediaType.Audio) }) { Icon(Icons.Outlined.Phone, stringResource(R.string.icon_descr_more_button), tint = MaterialTheme.colors.primary) @@ -409,14 +409,14 @@ fun ChatInfoToolbar( } menuItems.add { ItemAction(stringResource(R.string.icon_descr_video_call).capitalize(Locale.current), Icons.Outlined.Videocam, onClick = { - showMenu = false + showMenu.value = false startCall(CallMediaType.Video) }) } } else if (chat.chatInfo is ChatInfo.Group && chat.chatInfo.groupInfo.canAddMembers && !chat.chatInfo.incognito) { barButtons.add { IconButton({ - showMenu = false + showMenu.value = false addMembers(chat.chatInfo.groupInfo) }) { Icon(Icons.Outlined.PersonAdd, stringResource(R.string.icon_descr_add_members), tint = MaterialTheme.colors.primary) @@ -429,7 +429,7 @@ fun ChatInfoToolbar( if (ntfsEnabled.value) stringResource(R.string.mute_chat) else stringResource(R.string.unmute_chat), if (ntfsEnabled.value) Icons.Outlined.NotificationsOff else Icons.Outlined.Notifications, onClick = { - showMenu = false + showMenu.value = false // Just to make a delay before changing state of ntfsEnabled, otherwise it will redraw menu item with new value before closing the menu scope.launch { delay(200) @@ -440,7 +440,7 @@ fun ChatInfoToolbar( } barButtons.add { - IconButton({ showMenu = true }) { + IconButton({ showMenu.value = true }) { Icon(Icons.Default.MoreVert, stringResource(R.string.icon_descr_more_button), tint = MaterialTheme.colors.primary) } } @@ -457,11 +457,7 @@ fun ChatInfoToolbar( Divider(Modifier.padding(top = AppBarHeight)) Box(Modifier.fillMaxWidth().wrapContentSize(Alignment.TopEnd).offset(y = AppBarHeight)) { - DropdownMenu( - expanded = showMenu, - onDismissRequest = { showMenu = false }, - Modifier.widthIn(min = 220.dp) - ) { + DefaultDropdownMenu(showMenu) { menuItems.forEach { it() } } } @@ -788,36 +784,27 @@ fun BoxWithConstraintsScope.FloatingButtons( } val showButtonWithCounter = topUnreadCount > 0 val height = with(LocalDensity.current) { maxHeight.toPx() } - var showDropDown by remember { mutableStateOf(false) } + val showDropDown = remember { mutableStateOf(false) } TopEndFloatingButton( Modifier.padding(end = 16.dp, top = 24.dp).align(Alignment.TopEnd), topUnreadCount, showButtonWithCounter, onClick = { scope.launch { listState.animateScrollBy(height) } }, - onLongClick = { showDropDown = true } + onLongClick = { showDropDown.value = true } ) - DropdownMenu( - expanded = showDropDown, - onDismissRequest = { showDropDown = false }, - Modifier.width(220.dp), - offset = DpOffset(maxWidth - 16.dp, 24.dp + fabSize) - ) { - DropdownMenuItem( + DefaultDropdownMenu(showDropDown, offset = DpOffset(maxWidth - 16.dp, 24.dp + fabSize)) { + ItemAction( + generalGetString(R.string.mark_read), + Icons.Outlined.Check, onClick = { markRead( CC.ItemRange(minUnreadItemId, chatItems[chatItems.size - listState.layoutInfo.visibleItemsInfo.lastIndex - 1].id - 1), bottomUnreadCount ) - showDropDown = false - } - ) { - Text( - generalGetString(R.string.mark_read), - maxLines = 1, - ) - } + showDropDown.value = false + }) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt index 31c9c34211..24a1f614b2 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/SendMsgView.kt @@ -155,20 +155,18 @@ fun SendMsgView( cs.contextItem is ComposeContextItem.NoContextItem && sendLiveMessage != null && updateLiveMessage != null ) { - var showDropdown by rememberSaveable { mutableStateOf(false) } - SendMsgButton(icon, sendButtonSize, sendButtonAlpha, !disabled, sendMessage) { showDropdown = true } + val showDropdown = rememberSaveable { mutableStateOf(false) } + SendMsgButton(icon, sendButtonSize, sendButtonAlpha, !disabled, sendMessage) { showDropdown.value = true } - DropdownMenu( - expanded = showDropdown, - onDismissRequest = { showDropdown = false }, - Modifier.width(220.dp), + DefaultDropdownMenu( + showDropdown, ) { ItemAction( generalGetString(R.string.send_live_message), Icons.Filled.Bolt, onClick = { startLiveMessage(scope, sendLiveMessage, updateLiveMessage, sendButtonSize, sendButtonAlpha, composeState, liveMessageAlertShown) - showDropdown = false + showDropdown.value = false } ) } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt index d6a969715a..d1b87aae6b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt @@ -22,8 +22,7 @@ import androidx.compose.ui.unit.dp import chat.simplex.app.* import chat.simplex.app.R import chat.simplex.app.model.* -import chat.simplex.app.ui.theme.HighOrLowlight -import chat.simplex.app.ui.theme.SimpleXTheme +import chat.simplex.app.ui.theme.* import chat.simplex.app.views.chat.ComposeContextItem import chat.simplex.app.views.chat.ComposeState import chat.simplex.app.views.helpers.* @@ -105,11 +104,7 @@ fun ChatItemView( @Composable fun MsgContentItemDropdownMenu() { - DropdownMenu( - expanded = showMenu.value, - onDismissRequest = { showMenu.value = false }, - Modifier.width(220.dp) - ) { + DefaultDropdownMenu(showMenu) { if (cItem.meta.itemDeleted == null && !live) { ItemAction(stringResource(R.string.reply_verb), Icons.Outlined.Reply, onClick = { if (composeState.value.editing) { @@ -183,11 +178,7 @@ fun ChatItemView( @Composable fun MarkedDeletedItemDropdownMenu() { - DropdownMenu( - expanded = showMenu.value, - onDismissRequest = { showMenu.value = false }, - Modifier.width(220.dp) - ) { + DefaultDropdownMenu(showMenu) { if (!cItem.isDeletedContent) { ItemAction( stringResource(R.string.reveal_verb), @@ -227,11 +218,7 @@ fun ChatItemView( @Composable fun DeletedItem() { DeletedItemView(cItem, cInfo.timedMessagesTTL, showMember = showMember) - DropdownMenu( - expanded = showMenu.value, - onDismissRequest = { showMenu.value = false }, - Modifier.width(220.dp) - ) { + DefaultDropdownMenu(showMenu) { DeleteItemAction(cItem, showMenu, questionText = deleteMessageQuestionText(), deleteMessage) } } @@ -329,18 +316,21 @@ fun ModerateItemAction( } @Composable -fun ItemAction(text: String, icon: ImageVector, onClick: () -> Unit, color: Color = MaterialTheme.colors.onBackground) { - DropdownMenuItem(onClick) { - Row { +fun ItemAction(text: String, icon: ImageVector, onClick: () -> Unit, color: Color = Color.Unspecified) { + val finalColor = if (color == Color.Unspecified) { + if (isInDarkTheme()) MenuTextColorDark else Color.Black + } else color + DropdownMenuItem(onClick, contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f)) { + Row(verticalAlignment = Alignment.CenterVertically) { Text( text, modifier = Modifier .fillMaxWidth() .weight(1F) .padding(end = 15.dp), - color = color + color = finalColor ) - Icon(icon, text, tint = color) + Icon(icon, text, tint = finalColor) } } } @@ -366,7 +356,7 @@ fun deleteMessageAlertDialog(chatItem: ChatItem, questionText: String, deleteMes Modifier .fillMaxWidth() .padding(horizontal = 8.dp, vertical = 2.dp), - horizontalArrangement = Arrangement.End, + horizontalArrangement = Arrangement.Center, ) { TextButton(onClick = { deleteMessage(chatItem.id, CIDeleteMode.cidmInternal) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt index af412de608..1e8ed4a62f 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/ChatListNavLinkView.kt @@ -194,26 +194,14 @@ fun MarkReadChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState< @Composable fun MarkUnreadChatAction(chat: Chat, chatModel: ChatModel, showMenu: MutableState) { - DropdownMenuItem({ - markChatUnread(chat, chatModel) - showMenu.value = false - }) { - Row { - Text( - stringResource(R.string.mark_unread), - modifier = Modifier - .fillMaxWidth() - .weight(1F) - .padding(end = 15.dp), - color = MaterialTheme.colors.onBackground - ) - Icon( - Icons.Outlined.MarkChatUnread, - stringResource(R.string.mark_unread), - tint = MaterialTheme.colors.onBackground - ) + ItemAction( + stringResource(R.string.mark_unread), + Icons.Outlined.MarkChatUnread, + onClick = { + markChatUnread(chat, chatModel) + showMenu.value = false } - } + ) } @Composable @@ -447,7 +435,7 @@ fun contactConnectionAlertDialog(connection: PendingContactConnection, chatModel Modifier .fillMaxWidth() .padding(horizontal = 8.dp, vertical = 2.dp), - horizontalArrangement = Arrangement.End, + horizontalArrangement = Arrangement.Center, ) { TextButton(onClick = { AlertManager.shared.hideAlert() @@ -589,15 +577,7 @@ fun ChatListNavLinkLayout( chatLinkPreview() } if (dropdownMenuItems != null) { - Box(Modifier.padding(horizontal = 16.dp)) { - DropdownMenu( - expanded = showMenu.value, - onDismissRequest = { showMenu.value = false }, - Modifier.width(220.dp) - ) { - dropdownMenuItems() - } - } + DefaultDropdownMenu(showMenu, dropdownMenuItems = dropdownMenuItems) } } Divider(Modifier.padding(horizontal = 8.dp)) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt index 5d37695616..a2494fb81c 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chatlist/UserPicker.kt @@ -1,19 +1,20 @@ package chat.simplex.app.views.chatlist +import SectionItemView import SectionItemViewSpaceBetween import android.util.Log import androidx.compose.animation.core.* import androidx.compose.foundation.* import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.* import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.ui.* -import androidx.compose.ui.draw.shadow +import androidx.compose.ui.draw.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.platform.LocalConfiguration @@ -105,15 +106,16 @@ fun UserPicker( ) { Column( Modifier - .widthIn(min = 220.dp) + .widthIn(min = 260.dp) .width(IntrinsicSize.Min) .height(IntrinsicSize.Min) - .shadow(8.dp, MaterialTheme.shapes.medium, clip = false) - .background(if (isInDarkTheme()) MaterialTheme.colors.background.darker(-0.7f) else MaterialTheme.colors.background, MaterialTheme.shapes.medium) + .shadow(8.dp, RoundedCornerShape(corner = CornerSize(25.dp)), clip = true) + .background(if (isInDarkTheme()) Color(0xff222222) else MaterialTheme.colors.background, RoundedCornerShape(corner = CornerSize(25.dp))) + .clip(RoundedCornerShape(corner = CornerSize(25.dp))) ) { Column(Modifier.weight(1f).verticalScroll(rememberScrollState())) { users.forEach { u -> - UserProfilePickerItem(u.user, u.unreadCount, openSettings = { + UserProfilePickerItem(u.user, u.unreadCount, PaddingValues(start = DEFAULT_PADDING, end = DEFAULT_PADDING * 2), openSettings = { settingsClicked() userPickerState.value = AnimatedViewState.GONE }) { @@ -151,7 +153,7 @@ fun UserPicker( } @Composable -fun UserProfilePickerItem(u: User, unreadCount: Int = 0, onLongClick: () -> Unit = {}, openSettings: () -> Unit = {}, onClick: () -> Unit) { +fun UserProfilePickerItem(u: User, unreadCount: Int = 0, padding: PaddingValues = PaddingValues(start = 8.dp, end = DEFAULT_PADDING), onLongClick: () -> Unit = {}, openSettings: () -> Unit = {}, onClick: () -> Unit) { Row( Modifier .fillMaxWidth() @@ -162,7 +164,7 @@ fun UserProfilePickerItem(u: User, unreadCount: Int = 0, onLongClick: () -> Unit interactionSource = remember { MutableInteractionSource() }, indication = if (!u.activeUser) LocalIndication.current else null ) - .padding(PaddingValues(start = 8.dp, end = DEFAULT_PADDING)), + .padding(padding), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { @@ -211,6 +213,7 @@ fun UserProfileRow(u: User) { u.displayName, modifier = Modifier .padding(start = 8.dp, end = 8.dp), + color = if (isInDarkTheme()) MenuTextColorDark else Color.Black, fontWeight = if (u.activeUser) FontWeight.Medium else FontWeight.Normal ) } @@ -218,24 +221,26 @@ fun UserProfileRow(u: User) { @Composable private fun SettingsPickerItem(onClick: () -> Unit) { - SectionItemViewSpaceBetween(onClick, minHeight = 68.dp) { + SectionItemView(onClick, padding = PaddingValues(start = DEFAULT_PADDING * 2.2f, end = DEFAULT_PADDING * 2), minHeight = 68.dp) { val text = generalGetString(R.string.settings_section_title_settings).lowercase().capitalize(Locale.current) + Icon(Icons.Outlined.Settings, text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) + Spacer(Modifier.width(DEFAULT_PADDING * 1.5f)) Text( text, - color = MaterialTheme.colors.onBackground, + color = if (isInDarkTheme()) MenuTextColorDark else Color.Black, ) - Icon(Icons.Outlined.Settings, text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) } } @Composable private fun CancelPickerItem(onClick: () -> Unit) { - SectionItemViewSpaceBetween(onClick, minHeight = 68.dp) { + SectionItemViewSpaceBetween(onClick, padding = PaddingValues(start = DEFAULT_PADDING * 2.2f, end = DEFAULT_PADDING * 2), minHeight = 68.dp) { val text = generalGetString(R.string.cancel_verb) + Icon(Icons.Outlined.Close, text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) + Spacer(Modifier.width(DEFAULT_PADDING * 1.5f)) Text( text, - color = MaterialTheme.colors.onBackground, + color = if (isInDarkTheme()) MenuTextColorDark else Color.Black, ) - Icon(Icons.Outlined.Close, text, Modifier.size(20.dp), tint = MaterialTheme.colors.onBackground) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt index 97c4bfa51a..7eb452a5e6 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/AlertManager.kt @@ -3,13 +3,14 @@ package chat.simplex.app.views.helpers import android.util.Log import androidx.compose.foundation.background import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CornerSize +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.* import androidx.compose.ui.window.Dialog @@ -34,13 +35,14 @@ class AlertManager { text: String? = null, buttons: @Composable () -> Unit, ) { - val alertText: (@Composable () -> Unit)? = if (text == null) null else { -> Text(text) } showAlert { AlertDialog( + backgroundColor = if (isInDarkTheme()) Color(0xff222222) else MaterialTheme.colors.background, onDismissRequest = this::hideAlert, - title = { Text(title) }, - text = alertText, - buttons = buttons + title = alertTitle(title), + text = alertText(text), + buttons = buttons, + shape = RoundedCornerShape(corner = CornerSize(25.dp)) ) } } @@ -52,22 +54,21 @@ class AlertManager { ) { showAlert { Dialog(onDismissRequest = this::hideAlert) { - Column(Modifier.background(MaterialTheme.colors.background, MaterialTheme.shapes.medium)) { - Text(title, - Modifier.padding(start = DEFAULT_PADDING, end = DEFAULT_PADDING, top = DEFAULT_PADDING, bottom = if (text == null) DEFAULT_PADDING else DEFAULT_PADDING_HALF), - fontSize = 15.sp, - fontWeight = FontWeight.SemiBold + Column( + Modifier + .background(if (isInDarkTheme()) Color(0xff222222) else MaterialTheme.colors.background, RoundedCornerShape(corner = CornerSize(25.dp))) + .padding(bottom = DEFAULT_PADDING) + ) { + Text( + title, + Modifier.fillMaxWidth().padding(vertical = DEFAULT_PADDING), + textAlign = TextAlign.Center, + fontSize = 20.sp ) - if (text != null) { - CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.high) { - Text( - text, - Modifier.padding(start = DEFAULT_PADDING, end = DEFAULT_PADDING, bottom = DEFAULT_PADDING), - fontSize = 14.sp, - ) - } - } CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.high) { + if (text != null) { + Text(text, Modifier.fillMaxWidth().padding(start = DEFAULT_PADDING, end = DEFAULT_PADDING, bottom = DEFAULT_PADDING * 1.5f), fontSize = 16.sp, textAlign = TextAlign.Center, color = HighOrLowlight) + } buttons() } } @@ -85,24 +86,28 @@ class AlertManager { onDismissRequest: (() -> Unit)? = null, destructive: Boolean = false ) { - val alertText: (@Composable () -> Unit)? = if (text == null) null else { -> Text(text) } showAlert { AlertDialog( onDismissRequest = { onDismissRequest?.invoke(); hideAlert() }, - title = { Text(title) }, - text = alertText, - confirmButton = { - TextButton(onClick = { - onConfirm?.invoke() - hideAlert() - }) { Text(confirmText, color = if (destructive) MaterialTheme.colors.error else Color.Unspecified) } + title = alertTitle(title), + text = alertText(text), + buttons = { + Row ( + Modifier.fillMaxWidth().padding(horizontal = DEFAULT_PADDING).padding(bottom = DEFAULT_PADDING_HALF), + horizontalArrangement = Arrangement.SpaceBetween + ) { + TextButton(onClick = { + onDismiss?.invoke() + hideAlert() + }) { Text(dismissText) } + TextButton(onClick = { + onConfirm?.invoke() + hideAlert() + }) { Text(confirmText, color = if (destructive) MaterialTheme.colors.error else Color.Unspecified) } + } }, - dismissButton = { - TextButton(onClick = { - onDismiss?.invoke() - hideAlert() - }) { Text(dismissText) } - } + backgroundColor = if (isInDarkTheme()) Color(0xff222222) else MaterialTheme.colors.background, + shape = RoundedCornerShape(corner = CornerSize(25.dp)) ) } } @@ -117,16 +122,15 @@ class AlertManager { onDismissRequest: (() -> Unit)? = null, destructive: Boolean = false ) { - val alertText: (@Composable () -> Unit)? = if (text == null) null else { -> Text(text) } showAlert { AlertDialog( onDismissRequest = { onDismissRequest?.invoke(); hideAlert() }, - title = { Text(title) }, - text = alertText, + title = alertTitle(title), + text = alertText(text), buttons = { Column( Modifier.fillMaxWidth().padding(horizontal = 8.dp).padding(top = 16.dp, bottom = 2.dp), - horizontalAlignment = Alignment.End + horizontalAlignment = Alignment.CenterHorizontally ) { TextButton(onClick = { onDismiss?.invoke() @@ -135,9 +139,11 @@ class AlertManager { TextButton(onClick = { onConfirm?.invoke() hideAlert() - }) { Text(confirmText, color = if (destructive) MaterialTheme.colors.error else Color.Unspecified, textAlign = TextAlign.End) } + }) { Text(confirmText, color = if (destructive) Color.Red else Color.Unspecified, textAlign = TextAlign.End) } } }, + backgroundColor = if (isInDarkTheme()) Color(0xff222222) else MaterialTheme.colors.background, + shape = RoundedCornerShape(corner = CornerSize(25.dp)) ) } } @@ -146,18 +152,24 @@ class AlertManager { title: String, text: String? = null, confirmText: String = generalGetString(R.string.ok), onConfirm: (() -> Unit)? = null ) { - val alertText: (@Composable () -> Unit)? = if (text == null) null else { -> Text(text) } showAlert { AlertDialog( onDismissRequest = this::hideAlert, - title = { Text(title) }, - text = alertText, - confirmButton = { - TextButton(onClick = { - onConfirm?.invoke() - hideAlert() - }) { Text(confirmText) } - } + title = alertTitle(title), + text = alertText(text), + buttons = { + Row( + Modifier.fillMaxWidth().padding(horizontal = DEFAULT_PADDING).padding(bottom = DEFAULT_PADDING_HALF), + horizontalArrangement = Arrangement.Center + ) { + TextButton(onClick = { + onConfirm?.invoke() + hideAlert() + }) { Text(confirmText, color = Color.Unspecified) } + } + }, + backgroundColor = if (isInDarkTheme()) Color(0xff222222) else MaterialTheme.colors.background, + shape = RoundedCornerShape(corner = CornerSize(25.dp)) ) } } @@ -178,3 +190,30 @@ class AlertManager { val shared = AlertManager() } } + +private fun alertTitle(title: String): (@Composable () -> Unit)? { + return { + Text( + title, + Modifier.fillMaxWidth(), + textAlign = TextAlign.Center, + fontSize = 20.sp + ) + } +} + +private fun alertText(text: String?): (@Composable () -> Unit)? { + return if (text == null) { + null + } else { + ({ + Text( + text, + Modifier.fillMaxWidth(), + textAlign = TextAlign.Center, + fontSize = 16.sp, + color = HighOrLowlight + ) + }) + } +} \ No newline at end of file diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultDropdownMenu.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultDropdownMenu.kt new file mode 100644 index 0000000000..0cb501e7f4 --- /dev/null +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/DefaultDropdownMenu.kt @@ -0,0 +1,58 @@ +package chat.simplex.app.views.helpers + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CornerSize +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.DpOffset +import androidx.compose.ui.unit.dp +import chat.simplex.app.ui.theme.* + +@Composable +fun DefaultDropdownMenu( + showMenu: MutableState, + offset: DpOffset = DpOffset(0.dp, 0.dp), + dropdownMenuItems: (@Composable () -> Unit)? +) { + MaterialTheme( + colors = MaterialTheme.colors.copy(surface = if (isInDarkTheme()) Color(0xFF080808) else MaterialTheme.colors.background), + shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(corner = CornerSize(25.dp))) + ) { + DropdownMenu( + expanded = showMenu.value, + onDismissRequest = { showMenu.value = false }, + Modifier + .widthIn(min = 250.dp) + .padding(vertical = 4.dp), + offset = offset, + ) { + dropdownMenuItems?.invoke() + } + } +} + +@Composable +fun ExposedDropdownMenuBoxScope.DefaultExposedDropdownMenu( + expanded: MutableState, + modifier: Modifier = Modifier, + dropdownMenuItems: (@Composable () -> Unit)? +) { + MaterialTheme( + colors = MaterialTheme.colors.copy(surface = if (isInDarkTheme()) Color(0xFF080808) else MaterialTheme.colors.background), + shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(corner = CornerSize(25.dp))) + ) { + ExposedDropdownMenu( + modifier = Modifier.widthIn(min = 200.dp).then(modifier), + expanded = expanded.value, + onDismissRequest = { + expanded.value = false + } + ) { + dropdownMenuItems?.invoke() + } + } +} \ No newline at end of file diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt index 138c78e2ad..3ae959d463 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ExposedDropDownSettingRow.kt @@ -15,8 +15,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.app.R -import chat.simplex.app.ui.theme.DEFAULT_PADDING -import chat.simplex.app.ui.theme.HighOrLowlight +import chat.simplex.app.ui.theme.* @Composable fun ExposedDropDownSettingRow( @@ -33,7 +32,7 @@ fun ExposedDropDownSettingRow( Modifier.fillMaxWidth().padding(vertical = 10.dp), verticalAlignment = Alignment.CenterVertically, ) { - var expanded by remember { mutableStateOf(false) } + val expanded = remember { mutableStateOf(false) } if (icon != null) { Icon( @@ -46,9 +45,9 @@ fun ExposedDropDownSettingRow( Text(title, Modifier.weight(1f), color = if (enabled.value) Color.Unspecified else HighOrLowlight) ExposedDropdownMenuBox( - expanded = expanded, + expanded = expanded.value, onExpandedChange = { - expanded = !expanded && enabled.value + expanded.value = !expanded.value && enabled.value } ) { Row( @@ -66,29 +65,28 @@ fun ExposedDropDownSettingRow( ) Spacer(Modifier.size(12.dp)) Icon( - if (!expanded) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, + if (!expanded.value) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, generalGetString(R.string.icon_descr_more_button), tint = HighOrLowlight ) } - ExposedDropdownMenu( + DefaultExposedDropdownMenu( modifier = Modifier.widthIn(min = 200.dp), expanded = expanded, - onDismissRequest = { - expanded = false - } ) { values.forEach { selectionOption -> DropdownMenuItem( onClick = { onSelected(selectionOption.first) - expanded = false - } + expanded.value = false + }, + contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f) ) { Text( selectionOption.second + (if (label != null) " $label" else ""), maxLines = 1, overflow = TextOverflow.Ellipsis, + color = if (isInDarkTheme()) MenuTextColorDark else Color.Black, ) } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt index f5c633c245..e133f04a58 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/AdvancedNetworkSettings.kt @@ -12,6 +12,7 @@ import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -253,14 +254,14 @@ fun IntSettingRow(title: String, selection: MutableState, values: List verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween ) { - var expanded by remember { mutableStateOf(false) } + val expanded = rememberSaveable { mutableStateOf(false) } Text(title) ExposedDropdownMenuBox( - expanded = expanded, + expanded = expanded.value, onExpandedChange = { - expanded = !expanded + expanded.value = !expanded.value } ) { Row( @@ -276,24 +277,22 @@ fun IntSettingRow(title: String, selection: MutableState, values: List ) Spacer(Modifier.size(4.dp)) Icon( - if (!expanded) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, + if (!expanded.value) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, generalGetString(R.string.invite_to_group_button), modifier = Modifier.padding(start = 8.dp), tint = HighOrLowlight ) } - ExposedDropdownMenu( + DefaultExposedDropdownMenu( expanded = expanded, - onDismissRequest = { - expanded = false - } ) { values.forEach { selectionOption -> DropdownMenuItem( onClick = { selection.value = selectionOption - expanded = false - } + expanded.value = false + }, + contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f) ) { Text( "$selectionOption $label", @@ -314,14 +313,14 @@ fun TimeoutSettingRow(title: String, selection: MutableState, values: List verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween ) { - var expanded by remember { mutableStateOf(false) } + val expanded = remember { mutableStateOf(false) } Text(title) ExposedDropdownMenuBox( - expanded = expanded, + expanded = expanded.value, onExpandedChange = { - expanded = !expanded + expanded.value = !expanded.value } ) { val df = DecimalFormat("#.#") @@ -339,24 +338,22 @@ fun TimeoutSettingRow(title: String, selection: MutableState, values: List ) Spacer(Modifier.size(4.dp)) Icon( - if (!expanded) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, + if (!expanded.value) Icons.Outlined.ExpandMore else Icons.Outlined.ExpandLess, generalGetString(R.string.invite_to_group_button), modifier = Modifier.padding(start = 8.dp), tint = HighOrLowlight ) } - ExposedDropdownMenu( - expanded = expanded, - onDismissRequest = { - expanded = false - } + DefaultExposedDropdownMenu( + expanded = expanded ) { values.forEach { selectionOption -> DropdownMenuItem( onClick = { selection.value = selectionOption - expanded = false - } + expanded.value = false + }, + contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f) ) { Text( "${df.format(selectionOption / 1_000_000.toDouble())} $label", diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt index 210db9f61d..2b7224f8e9 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ProtocolServersView.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import chat.simplex.app.R import chat.simplex.app.model.* @@ -112,7 +113,7 @@ fun ProtocolServersView(m: ChatModel, serverProtocol: ServerProtocol, close: () // No saving until something will be changed on the next screen to prevent blank servers on the list showServer(servers.last()) }) { - Text(stringResource(R.string.smp_servers_enter_manually)) + Text(stringResource(R.string.smp_servers_enter_manually), Modifier.fillMaxWidth(), textAlign = TextAlign.Center, color = MaterialTheme.colors.primary) } SectionItemView({ AlertManager.shared.hideAlert() @@ -125,7 +126,7 @@ fun ProtocolServersView(m: ChatModel, serverProtocol: ServerProtocol, close: () } } ) { - Text(stringResource(R.string.smp_servers_scan_qr)) + Text(stringResource(R.string.smp_servers_scan_qr), Modifier.fillMaxWidth(), textAlign = TextAlign.Center, color = MaterialTheme.colors.primary) } val hasAllPresets = hasAllPresets(presetServers, servers, m) if (!hasAllPresets) { @@ -133,7 +134,7 @@ fun ProtocolServersView(m: ChatModel, serverProtocol: ServerProtocol, close: () AlertManager.shared.hideAlert() servers = (servers + addAllPresets(presetServers, servers, m)).sortedByDescending { it.preset } }) { - Text(stringResource(R.string.smp_servers_preset_add), color = MaterialTheme.colors.onBackground) + Text(stringResource(R.string.smp_servers_preset_add), Modifier.fillMaxWidth(), textAlign = TextAlign.Center, color = MaterialTheme.colors.onBackground) } } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt index 8a4675b5ce..c28515e3a0 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/UserProfilesView.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import chat.simplex.app.R import chat.simplex.app.chatPasswordHash @@ -31,7 +32,6 @@ import chat.simplex.app.views.database.PassphraseField import chat.simplex.app.views.helpers.* import chat.simplex.app.views.onboarding.CreateProfile import kotlinx.coroutines.delay -import kotlinx.coroutines.launch @Composable fun UserProfilesView(m: ChatModel, search: MutableState, profileHidden: MutableState) { @@ -73,14 +73,14 @@ fun UserProfilesView(m: ChatModel, search: MutableState, profileHidden: AlertManager.shared.hideAlert() removeUser(m, user, users, true, searchTextOrPassword.value.trim()) }) { - Text(stringResource(R.string.users_delete_with_connections), color = Color.Red) + Text(stringResource(R.string.users_delete_with_connections), Modifier.fillMaxWidth(), textAlign = TextAlign.Center, color = Color.Red) } SectionItemView({ AlertManager.shared.hideAlert() removeUser(m, user, users, false, searchTextOrPassword.value.trim()) } ) { - Text(stringResource(R.string.users_delete_data_only), color = Color.Red) + Text(stringResource(R.string.users_delete_data_only), Modifier.fillMaxWidth(), textAlign = TextAlign.Center, color = Color.Red) } } } @@ -210,43 +210,39 @@ private fun UserView( unmuteUser: (User) -> Unit, showHiddenProfile: (User) -> Unit, ) { - var showDropdownMenu by remember { mutableStateOf(false) } - UserProfilePickerItem(user, onLongClick = { if (users.size > 1) showDropdownMenu = true }) { + val showMenu = remember { mutableStateOf(false) } + UserProfilePickerItem(user, onLongClick = { if (users.size > 1) showMenu.value = true }) { activateUser(user) } Box(Modifier.padding(horizontal = 16.dp)) { - DropdownMenu( - expanded = showDropdownMenu, - onDismissRequest = { showDropdownMenu = false }, - Modifier.width(220.dp) - ) { + DefaultDropdownMenu(showMenu) { if (user.hidden) { ItemAction(stringResource(R.string.user_unhide), Icons.Outlined.LockOpen, onClick = { - showDropdownMenu = false + showMenu.value = false unhideUser(user) }) } else { if (visibleUsersCount > 1) { ItemAction(stringResource(R.string.user_hide), Icons.Outlined.Lock, onClick = { - showDropdownMenu = false + showMenu.value = false showHiddenProfile(user) }) } if (user.showNtfs) { ItemAction(stringResource(R.string.user_mute), Icons.Outlined.NotificationsOff, onClick = { - showDropdownMenu = false + showMenu.value = false muteUser(user) }) } else { ItemAction(stringResource(R.string.user_unmute), Icons.Outlined.Notifications, onClick = { - showDropdownMenu = false + showMenu.value = false unmuteUser(user) }) } } ItemAction(stringResource(R.string.delete_verb), Icons.Outlined.Delete, color = Color.Red, onClick = { removeUser(user) - showDropdownMenu = false + showMenu.value = false }) } } From a6c1f2f776945fb9b165f7da7996aa3efc75a9ba Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Wed, 19 Apr 2023 00:47:34 +0100 Subject: [PATCH 3/7] 5.0.0-beta.1: Android 115, iOS 142 --- apps/android/app/build.gradle | 4 +- apps/ios/SimpleX.xcodeproj/project.pbxproj | 48 +++++++++++----------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/apps/android/app/build.gradle b/apps/android/app/build.gradle index 54e227b51e..7ccb799632 100644 --- a/apps/android/app/build.gradle +++ b/apps/android/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "chat.simplex.app" minSdk 26 targetSdk 32 - versionCode 114 - versionName "5.0-beta.0" + versionCode 115 + versionName "5.0-beta.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index e866dfef3b..f348027f12 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -117,6 +117,11 @@ 5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; }; 5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; }; 5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; }; + 5CC868FB29EF5DCA0017BBFD /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC868F629EF5DCA0017BBFD /* libgmpxx.a */; }; + 5CC868FC29EF5DCA0017BBFD /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC868F729EF5DCA0017BBFD /* libgmp.a */; }; + 5CC868FD29EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC868F829EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk-ghc8.10.7.a */; }; + 5CC868FE29EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC868F929EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk.a */; }; + 5CC868FF29EF5DCA0017BBFD /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC868FA29EF5DCA0017BBFD /* libffi.a */; }; 5CCA7DF32905735700C8FEBA /* AcceptRequestsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCA7DF22905735700C8FEBA /* AcceptRequestsView.swift */; }; 5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; }; 5CCD403427A5F6DF00368C90 /* AddContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD403327A5F6DF00368C90 /* AddContactView.swift */; }; @@ -155,11 +160,6 @@ 6442E0BA287F169300CEC0F9 /* AddGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6442E0B9287F169300CEC0F9 /* AddGroupView.swift */; }; 6442E0BE2880182D00CEC0F9 /* GroupChatInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */; }; 6448BBB628FA9D56000D2AB9 /* GroupLinkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */; }; - 644E729C29E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h-ghc8.10.7.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644E729729E9B496003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h-ghc8.10.7.a */; }; - 644E729D29E9B497003534BE /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644E729829E9B497003534BE /* libffi.a */; }; - 644E729E29E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644E729929E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h.a */; }; - 644E729F29E9B497003534BE /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644E729A29E9B497003534BE /* libgmpxx.a */; }; - 644E72A029E9B497003534BE /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 644E729B29E9B497003534BE /* libgmp.a */; }; 644EFFDE292BCD9D00525D5B /* ComposeVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */; }; 644EFFE0292CFD7F00525D5B /* CIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */; }; 644EFFE2292D089800525D5B /* FramedCIVoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */; }; @@ -386,6 +386,11 @@ 5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = ""; }; + 5CC868F629EF5DCA0017BBFD /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5CC868F729EF5DCA0017BBFD /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5CC868F829EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk-ghc8.10.7.a"; sourceTree = ""; }; + 5CC868F929EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk.a"; sourceTree = ""; }; + 5CC868FA29EF5DCA0017BBFD /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5CCA7DF22905735700C8FEBA /* AcceptRequestsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AcceptRequestsView.swift; sourceTree = ""; }; 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = ""; }; 5CCD403327A5F6DF00368C90 /* AddContactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddContactView.swift; sourceTree = ""; }; @@ -422,11 +427,6 @@ 6442E0B9287F169300CEC0F9 /* AddGroupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddGroupView.swift; sourceTree = ""; }; 6442E0BD2880182D00CEC0F9 /* GroupChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupChatInfoView.swift; sourceTree = ""; }; 6448BBB528FA9D56000D2AB9 /* GroupLinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupLinkView.swift; sourceTree = ""; }; - 644E729729E9B496003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h-ghc8.10.7.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h-ghc8.10.7.a"; sourceTree = ""; }; - 644E729829E9B497003534BE /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 644E729929E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h.a"; sourceTree = ""; }; - 644E729A29E9B497003534BE /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 644E729B29E9B497003534BE /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; 644EFFDD292BCD9D00525D5B /* ComposeVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeVoiceView.swift; sourceTree = ""; }; 644EFFDF292CFD7F00525D5B /* CIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIVoiceView.swift; sourceTree = ""; }; 644EFFE1292D089800525D5B /* FramedCIVoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FramedCIVoiceView.swift; sourceTree = ""; }; @@ -485,13 +485,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 644E729F29E9B497003534BE /* libgmpxx.a in Frameworks */, - 644E72A029E9B497003534BE /* libgmp.a in Frameworks */, - 644E729E29E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h.a in Frameworks */, + 5CC868FB29EF5DCA0017BBFD /* libgmpxx.a in Frameworks */, + 5CC868FD29EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk-ghc8.10.7.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 644E729C29E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h-ghc8.10.7.a in Frameworks */, + 5CC868FE29EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk.a in Frameworks */, + 5CC868FF29EF5DCA0017BBFD /* libffi.a in Frameworks */, + 5CC868FC29EF5DCA0017BBFD /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 644E729D29E9B497003534BE /* libffi.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -551,11 +551,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 644E729829E9B497003534BE /* libffi.a */, - 644E729B29E9B497003534BE /* libgmp.a */, - 644E729A29E9B497003534BE /* libgmpxx.a */, - 644E729729E9B496003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h-ghc8.10.7.a */, - 644E729929E9B497003534BE /* libHSsimplex-chat-5.0.0.0-HDKKvfAWZqx9YjijiAKu4h.a */, + 5CC868FA29EF5DCA0017BBFD /* libffi.a */, + 5CC868F729EF5DCA0017BBFD /* libgmp.a */, + 5CC868F629EF5DCA0017BBFD /* libgmpxx.a */, + 5CC868F829EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk-ghc8.10.7.a */, + 5CC868F929EF5DCA0017BBFD /* libHSsimplex-chat-5.0.0.1-LqPiC7i8QLW2SE97F6Xmrk.a */, ); path = Libraries; sourceTree = ""; @@ -1445,7 +1445,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 141; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1487,7 +1487,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 141; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1567,7 +1567,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 141; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1599,7 +1599,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 141; + CURRENT_PROJECT_VERSION = 142; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; From 37f835be8c482ed366b490d1cc6381b7969071ef Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Wed, 19 Apr 2023 10:41:01 +0200 Subject: [PATCH 4/7] mobile: remove XFTP toggle (#2208) * mobile: remove XFTP toggle * ios: remove unused string * android: remove unused strings --- .../java/chat/simplex/app/model/SimpleXAPI.kt | 3 -- .../simplex/app/views/chat/ComposeView.kt | 5 +-- .../app/views/usersettings/DeveloperView.kt | 11 ------ .../usersettings/ExperimentalFeaturesView.kt | 37 ------------------- .../views/usersettings/NetworkAndServers.kt | 9 +---- .../app/views/usersettings/SettingsView.kt | 2 - .../app/src/main/res/values-cs/strings.xml | 2 - .../app/src/main/res/values-de/strings.xml | 2 - .../app/src/main/res/values-es/strings.xml | 2 - .../app/src/main/res/values-fr/strings.xml | 2 - .../app/src/main/res/values-it/strings.xml | 2 - .../app/src/main/res/values-ko/strings.xml | 1 - .../app/src/main/res/values-nl/strings.xml | 2 - .../app/src/main/res/values-pl/strings.xml | 2 - .../src/main/res/values-pt-rBR/strings.xml | 2 - .../app/src/main/res/values-ru/strings.xml | 2 - .../src/main/res/values-zh-rCN/strings.xml | 2 - .../src/main/res/values-zh-rTW/strings.xml | 2 - .../app/src/main/res/values/strings.xml | 2 - .../Chat/ComposeMessage/ComposeView.swift | 5 +-- .../Shared/Views/Helpers/ImagePicker.swift | 8 +--- .../Views/UserSettings/DeveloperView.swift | 1 - .../ExperimentalFeaturesView.swift | 37 ------------------- .../UserSettings/NetworkAndServers.swift | 13 +++---- .../Views/UserSettings/SettingsView.swift | 14 ------- .../cs.xcloc/Localized Contents/cs.xliff | 5 --- .../de.xcloc/Localized Contents/de.xliff | 5 --- .../en.xcloc/Localized Contents/en.xliff | 5 --- .../es.xcloc/Localized Contents/es.xliff | 5 --- .../fr.xcloc/Localized Contents/fr.xliff | 5 --- .../it.xcloc/Localized Contents/it.xliff | 5 --- .../nl.xcloc/Localized Contents/nl.xliff | 5 --- .../pl.xcloc/Localized Contents/pl.xliff | 5 --- .../ru.xcloc/Localized Contents/ru.xliff | 5 --- .../Localized Contents/zh-Hans.xliff | 5 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 4 -- apps/ios/SimpleXChat/AppGroup.swift | 4 -- apps/ios/cs.lproj/Localizable.strings | 3 -- apps/ios/de.lproj/Localizable.strings | 3 -- apps/ios/es.lproj/Localizable.strings | 3 -- apps/ios/fr.lproj/Localizable.strings | 3 -- apps/ios/it.lproj/Localizable.strings | 3 -- apps/ios/nl.lproj/Localizable.strings | 3 -- apps/ios/pl.lproj/Localizable.strings | 3 -- apps/ios/ru.lproj/Localizable.strings | 3 -- apps/ios/zh-Hans.lproj/Localizable.strings | 3 -- 46 files changed, 11 insertions(+), 244 deletions(-) delete mode 100644 apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ExperimentalFeaturesView.kt delete mode 100644 apps/ios/Shared/Views/UserSettings/ExperimentalFeaturesView.swift diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index c8eaccb572..6937cc7f1e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -153,8 +153,6 @@ class AppPreferences(val context: Context) { val whatsNewVersion = mkStrPreference(SHARED_PREFS_WHATS_NEW_VERSION, null) - val xftpSendEnabled = mkBoolPreference(SHARED_PREFS_XFTP_SEND_ENABLED, false) - private fun mkIntPreference(prefName: String, default: Int) = SharedPreference( get = fun() = sharedPreferences.getInt(prefName, default), @@ -264,7 +262,6 @@ class AppPreferences(val context: Context) { private const val SHARED_PREFS_CURRENT_THEME = "CurrentTheme" private const val SHARED_PREFS_PRIMARY_COLOR = "PrimaryColor" private const val SHARED_PREFS_WHATS_NEW_VERSION = "WhatsNewVersion" - private const val SHARED_PREFS_XFTP_SEND_ENABLED = "XFTPSendEnabled" } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt index 9d3d674724..560e9525c4 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt @@ -179,8 +179,7 @@ fun ComposeView( val pendingLinkUrl = rememberSaveable { mutableStateOf(null) } val cancelledLinks = rememberSaveable { mutableSetOf() } val useLinkPreviews = chatModel.controller.appPrefs.privacyLinkPreviews.get() - val xftpSendEnabled = chatModel.controller.appPrefs.xftpSendEnabled.get() - val maxFileSize = getMaxFileSize(fileProtocol = if (xftpSendEnabled) FileProtocol.XFTP else FileProtocol.SMP) + val maxFileSize = getMaxFileSize(FileProtocol.XFTP) val smallFont = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.onBackground) val textStyle = remember { mutableStateOf(smallFont) } val cameraLauncher = rememberCameraLauncher { uri: Uri? -> @@ -279,7 +278,7 @@ fun ComposeView( attachmentOption.value = null } AttachmentOption.PickMedia -> { - mediaLauncherWithFiles.launch(if (xftpSendEnabled) "image/*;video/*" else "image/*") + mediaLauncherWithFiles.launch("image/*;video/*") attachmentOption.value = null } AttachmentOption.PickFile -> { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt index bad5145763..1310288ec9 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/DeveloperView.kt @@ -43,16 +43,5 @@ fun DeveloperView( generalGetString(R.string.developer_options) ) SectionSpacer() - -// val xftpSendEnabled = m.controller.appPrefs.xftpSendEnabled -// val xftpEnabled = remember { mutableStateOf(xftpSendEnabled.get()) } -// SectionView(generalGetString(R.string.settings_section_title_experimenta)) { -// SettingsPreferenceItem(Icons.Outlined.UploadFile, stringResource(R.string.settings_send_files_via_xftp), xftpSendEnabled, xftpEnabled) { -// withApi { m.controller.apiSetXFTPConfig(m.controller.getXFTPCfg()) } -// } -// } -// if (xftpEnabled.value) { -// SectionTextFooter(generalGetString(R.string.xftp_requires_v461)) -// } } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ExperimentalFeaturesView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ExperimentalFeaturesView.kt deleted file mode 100644 index 637bda9ebf..0000000000 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/ExperimentalFeaturesView.kt +++ /dev/null @@ -1,37 +0,0 @@ -package chat.simplex.app.views.usersettings - -import SectionView -import androidx.compose.foundation.layout.* -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.UploadFile -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import chat.simplex.app.R -import chat.simplex.app.model.ChatModel -import chat.simplex.app.views.helpers.withApi - -@Composable -fun ExperimentalFeaturesView(chatModel: ChatModel) { - Column( - Modifier.fillMaxWidth(), - horizontalAlignment = Alignment.Start - ) { - Text( - stringResource(R.string.settings_experimental_features), - style = MaterialTheme.typography.h1, - modifier = Modifier.padding(start = 16.dp, bottom = 24.dp) - ) - SectionView("") { - SettingsPreferenceItem(Icons.Outlined.UploadFile, stringResource(R.string.settings_send_files_via_xftp), chatModel.controller.appPrefs.xftpSendEnabled) { - withApi { - chatModel.controller.apiSetXFTPConfig(chatModel.controller.getXFTPCfg()) - } - } - } - } -} diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt index b59ed8f2de..6af1b107e9 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt @@ -48,7 +48,6 @@ fun NetworkAndServersView( NetworkAndServersLayout( developerTools = developerTools, - xftpSendEnabled = remember { chatModel.controller.appPrefs.xftpSendEnabled.state }, networkUseSocksProxy = networkUseSocksProxy, onionHosts = onionHosts, sessionMode = sessionMode, @@ -145,7 +144,6 @@ fun NetworkAndServersView( @Composable fun NetworkAndServersLayout( developerTools: Boolean, - xftpSendEnabled: State, networkUseSocksProxy: MutableState, onionHosts: MutableState, sessionMode: MutableState, @@ -167,10 +165,8 @@ fun NetworkAndServersView( SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.smp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.SMP, close) }) SectionDivider() - if (xftpSendEnabled.value) { - SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.xftp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.XFTP, close) }) - SectionDivider() - } + SettingsActionItem(Icons.Outlined.Dns, stringResource(R.string.xftp_servers), showCustomModal { m, close -> ProtocolServersView(m, ServerProtocol.XFTP, close) }) + SectionDivider() SectionItemView { UseSocksProxySwitch(networkUseSocksProxy, proxyPort, toggleSocksProxy, showSettingsModal) @@ -434,7 +430,6 @@ fun PreviewNetworkAndServersLayout() { SimpleXTheme { NetworkAndServersLayout( developerTools = true, - xftpSendEnabled = remember { mutableStateOf(true) }, networkUseSocksProxy = remember { mutableStateOf(true) }, proxyPort = remember { mutableStateOf(9050) }, showModal = { {} }, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt index ca03fbf388..5d84a78f75 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/SettingsView.kt @@ -207,8 +207,6 @@ fun SettingsLayout( SectionView(stringResource(R.string.settings_section_title_develop)) { SettingsActionItem(Icons.Outlined.Code, stringResource(R.string.settings_developer_tools), showSettingsModal { DeveloperView(it, showCustomModal, withAuth) }) SectionDivider() -// SettingsActionItem(Icons.Outlined.Science, stringResource(R.string.settings_experimental_features), showSettingsModal { ExperimentalFeaturesView(it) }) -// SectionDivider() AppVersionItem(showVersion) } } diff --git a/apps/android/app/src/main/res/values-cs/strings.xml b/apps/android/app/src/main/res/values-cs/strings.xml index c69672b30c..d24300a0ed 100644 --- a/apps/android/app/src/main/res/values-cs/strings.xml +++ b/apps/android/app/src/main/res/values-cs/strings.xml @@ -1019,7 +1019,6 @@ Stále budete přijímat volání a upozornění od umlčených profilů pokud budou aktivní. Můžete skrýt nebo ztlumit uživatelský profil - Podržte pro menu. Odkrýt - Poslat videa a soubory přes XFTP Aktualizace databáze Upozornění: můžete ztratit nějaká data! Potvrdit aktualizaci databáze @@ -1034,7 +1033,6 @@ Skrýt: Zobrazit možnosti vývojáře POKUSNÝ - Pro příjem přes XFTP je vyžadována verze 4.6.1+. Obrázek bude přijat, až kontakt dokončí jeho nahrání. Zobrazit: ID databáze a možnost Izolace přenosu. diff --git a/apps/android/app/src/main/res/values-de/strings.xml b/apps/android/app/src/main/res/values-de/strings.xml index e3d51b4acd..ae6404f0cd 100644 --- a/apps/android/app/src/main/res/values-de/strings.xml +++ b/apps/android/app/src/main/res/values-de/strings.xml @@ -1098,7 +1098,6 @@ Begrüßungsmeldung Sie können ein Benutzerprofil verbergen oder stummschalten - für das Menü gedrückt halten. Geben Sie ein vollständiges Passwort in das Suchfeld auf der Seite \"Meine Chat-Profile\" ein, um Ihr verborgenes Profil zu sehen. - Videos und Dateien per XFTP versenden Migrations-Bestätigung ungültig Aktualisieren und den Chat öffnen Datenbank-Aktualisierungen bestätigen @@ -1115,7 +1114,6 @@ Die Datenbank-Version ist neuer als die App, keine Abwärts-Migration für: %s Verberge: Migrationen: %s - Für den Empfang per XFTP wird v4.6.1 oder neuer benötigt. Das Bild wird empfangen, sobald das Hochladen durch ihren Kontakt abgeschlossen ist. Die Datei wird empfangen, sobald das Hochladen durch ihren Kontakt abgeschlossen ist. Dateitransfer abbrechen\? diff --git a/apps/android/app/src/main/res/values-es/strings.xml b/apps/android/app/src/main/res/values-es/strings.xml index c4d32a683a..00183ab27a 100644 --- a/apps/android/app/src/main/res/values-es/strings.xml +++ b/apps/android/app/src/main/res/values-es/strings.xml @@ -1020,7 +1020,6 @@ \n- borrar mensajes de los miembros. \n- desactivar el rol a miembros (a rol \"observador\") Para hacer visible tu perfil oculto, introduce la contraseña completa en el campo de búsqueda de la página Tus perfiles Chat. - Enviar vídeos y archivos mediante XFTP Actualización de la base de datos Volviendo a versión anterior de la base de datos Confirmación de migración no válida @@ -1036,7 +1035,6 @@ ID de base de datos y opción de aislamiento de transporte. El archivo se recibirá cuando tu contacto termine de subirlo. La imagen se recibirá cuando tu contacto termine de subirla. - Se requiere v4.6.1+ para recibir vía XFTP. Mostrar opciones de desarrollador Ocultar: Mostrar: diff --git a/apps/android/app/src/main/res/values-fr/strings.xml b/apps/android/app/src/main/res/values-fr/strings.xml index cebe80ebe9..ab3fa09c33 100644 --- a/apps/android/app/src/main/res/values-fr/strings.xml +++ b/apps/android/app/src/main/res/values-fr/strings.xml @@ -1019,7 +1019,6 @@ Message d\'accueil Vous pouvez masquer ou mettre en sourdine un profil d\'utilisateur - maintenez-le enfoncé pour accéder au menu. Vous continuerez à recevoir des appels et des notifications des profils mis en sourdine lorsqu\'ils sont actifs. - Envoi de vidéos et de fichiers via XFTP Rétrogradation de la base de données Mise à niveau de la base de données Version de la base de données incompatible @@ -1035,7 +1034,6 @@ Afficher : Afficher les options pour les développeurs Le fichier sera reçu lorsque votre contact aura terminé de le mettre en ligne. - v4.6.1+ nécessaire pour la réception via XFTP. IDs de base de données et option d\'isolation du transport. EXPÉRIMENTALE Cacher : diff --git a/apps/android/app/src/main/res/values-it/strings.xml b/apps/android/app/src/main/res/values-it/strings.xml index afff1a27fb..fba2709deb 100644 --- a/apps/android/app/src/main/res/values-it/strings.xml +++ b/apps/android/app/src/main/res/values-it/strings.xml @@ -1019,7 +1019,6 @@ Nascondi Imposta il messaggio mostrato ai nuovi membri! Riattiva audio - Invia video e file via XFTP Downgrade del database Aggiornamento del database Versione del database incompatibile @@ -1028,7 +1027,6 @@ Nascondi: Mostra: Mostra opzioni sviluppatore - v4.6.1+ necessaria per ricevere via XFTP. Esegui downgrade e apri chat Migrazioni: %s Attenzione: potresti perdere alcuni dati! diff --git a/apps/android/app/src/main/res/values-ko/strings.xml b/apps/android/app/src/main/res/values-ko/strings.xml index 5a0117a39a..603bb40575 100644 --- a/apps/android/app/src/main/res/values-ko/strings.xml +++ b/apps/android/app/src/main/res/values-ko/strings.xml @@ -841,7 +841,6 @@ 연락처 선택 멤버 초대 건너뛰기 다음을 통해 보내기 - XFTP로 동영상 및 파일 보내기 멈추기 %s의 역할을 %s로 변경했어요. 콘솔용 diff --git a/apps/android/app/src/main/res/values-nl/strings.xml b/apps/android/app/src/main/res/values-nl/strings.xml index 4a76436341..3679f8f89d 100644 --- a/apps/android/app/src/main/res/values-nl/strings.xml +++ b/apps/android/app/src/main/res/values-nl/strings.xml @@ -1018,7 +1018,6 @@ Om uw verborgen profiel te onthullen, voert u een volledig wachtwoord in een zoekveld in op de pagina Uw chat profielen. Welkomst bericht U ontvangt nog steeds oproepen en meldingen van gedempte profielen wanneer deze actief zijn. - Verzend video\'s en bestanden via XFTP Database downgraden Ongeldige migratie bevestiging Upgrade en open chat @@ -1037,7 +1036,6 @@ Verbergen: Ontwikkelaars opties tonen EXPERIMENTEEL - v4.6.1+ is vereist om te ontvangen via XFTP. Bestand overdracht annuleren\? Bestand overdracht wordt geannuleerd. Als het bezig is, wordt het gestopt. Verwijder profiel diff --git a/apps/android/app/src/main/res/values-pl/strings.xml b/apps/android/app/src/main/res/values-pl/strings.xml index 000627cda6..282bd5b01d 100644 --- a/apps/android/app/src/main/res/values-pl/strings.xml +++ b/apps/android/app/src/main/res/values-pl/strings.xml @@ -539,13 +539,11 @@ Chroń ekran aplikacji URUCHOM CZAT Wyślij podgląd linku - Wysyłaj filmy i pliki przez XFTP USTAWIENIA PROXY SOCKS Zatrzymać czat\? WSPIERAJ SIMPLEX CHAT MOTYWY - v4.6.1+ jest wymagany do odbierania przez XFTP. TY Twoja baza danych czatu Ustaw hasło do eksportu diff --git a/apps/android/app/src/main/res/values-pt-rBR/strings.xml b/apps/android/app/src/main/res/values-pt-rBR/strings.xml index 463d9c831f..caa0fd137a 100644 --- a/apps/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/apps/android/app/src/main/res/values-pt-rBR/strings.xml @@ -699,7 +699,6 @@ convidado Selecionar contatos %d contato(s) selecionado(s) - Envie vídeos e arquivos via XFTP Esta ação não pode ser desfeita - seu perfil, contatos, mensagens e arquivos serão irreversivelmente perdidos. Remover Senha do banco de dados incorreta @@ -1010,7 +1009,6 @@ aguardando confirmação… Não armazenamos nenhum dos seus contatos ou mensagens (uma vez entregues) nos servidores. Mensagens ignoradas - v4.6.1+ é necessário receber via XFTP. Toque para ativar o perfil. Mostrar perfil de chat Mostrar perfil diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index 6798ead6ca..afa9b408bb 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -1102,7 +1102,6 @@ Благодаря пользователям – добавьте переводы через Weblate! Вы все равно получите звонки и уведомления в профилях без звука, когда они активные. Вы можете скрыть профиль или выключить уведомления - подержите, чтобы увидеть меню. - Отправлять видео и файлы через XFTP Изображение будет принято когда Ваш контакт его загрузит. Файл будет принят когда Ваш контакт загрузит его. Обновление базы данных @@ -1124,7 +1123,6 @@ Удалить профиль чата Удалить профиль Пароль профиля - v4.6.1+ необходима для приема файлов через XFTP. Слишком много видео! Запросил прием видео Видео diff --git a/apps/android/app/src/main/res/values-zh-rCN/strings.xml b/apps/android/app/src/main/res/values-zh-rCN/strings.xml index 22358c0841..a73b7af973 100644 --- a/apps/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/apps/android/app/src/main/res/values-zh-rCN/strings.xml @@ -1019,7 +1019,6 @@ 当静音配置文件处于活动状态时,您仍会收到来自静音配置文件的电话和通知。 您可以隐藏或静音用户配置文件——长按以显示菜单。 欢迎信息 - 通过 XFTP 发送视频和文件 确认数据库升级 实验性 数据库升级 @@ -1034,7 +1033,6 @@ 迁移:%s 图片将在您的联系人完成上传后收到。 显示开发者选项 - 通过 XFTP 接收需要 v4.6.1 以上版本。 升级并打开聊天 警告:您可能会丢失部分数据! 迁移确认无效 diff --git a/apps/android/app/src/main/res/values-zh-rTW/strings.xml b/apps/android/app/src/main/res/values-zh-rTW/strings.xml index c2a37deb32..fcea69d460 100644 --- a/apps/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/apps/android/app/src/main/res/values-zh-rTW/strings.xml @@ -1025,7 +1025,6 @@ 取消靜音 當靜音配置檔案處於活動狀態時,你仍會收到來自靜音配置檔案的通話和通知。 取消隱藏 - 通過 XFTP 傳送影片和檔案 影片將會在你的聯絡人在線時接收,請你等等或者稍後再檢查! 確認數據庫更新 數據庫版本不相容 @@ -1039,7 +1038,6 @@ 圖片將會在你的聯絡人完成上傳後接收。 檔案將會在你的聯絡人完成上傳後接收。 實驗性 - 通過 XFTP 去接收需要 v4.6.1 以上的版本。 升級和開始對話 取消傳輸檔案? 檔案傳遞將會取消。若是在傳遞檔案中,亦會暫停。 diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml index e0fd08b380..3717e8224a 100644 --- a/apps/android/app/src/main/res/values/strings.xml +++ b/apps/android/app/src/main/res/values/strings.xml @@ -802,8 +802,6 @@ CALLS Incognito mode EXPERIMENTAL - Send videos and files via XFTP - v4.6.1+ is required to receive via XFTP. Your chat database diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift index 43a82b91b0..3f4ce79905 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift @@ -241,8 +241,6 @@ struct ComposeView: View { @State var pendingLinkUrl: URL? = nil @State var cancelledLinks: Set = [] - @AppStorage(GROUP_DEFAULT_XFTP_SEND_ENABLED, store: groupDefaults) private var xftpSendEnabled = false - @State private var showChooseSource = false @State private var showMediaPicker = false @State private var showTakePhoto = false @@ -462,8 +460,7 @@ struct ComposeView: View { } private var maxFileSize: Int64 { - let fileProtocol: FileProtocol = xftpSendEnabled ? .xftp : .smp - return getMaxFileSize(fileProtocol) + getMaxFileSize(.xftp) } private func sendLiveMessage() async { diff --git a/apps/ios/Shared/Views/Helpers/ImagePicker.swift b/apps/ios/Shared/Views/Helpers/ImagePicker.swift index 5cbe96f82f..21b968fde9 100644 --- a/apps/ios/Shared/Views/Helpers/ImagePicker.swift +++ b/apps/ios/Shared/Views/Helpers/ImagePicker.swift @@ -28,7 +28,6 @@ struct LibraryImagePicker: View { struct LibraryMediaListPicker: UIViewControllerRepresentable { typealias UIViewControllerType = PHPickerViewController - @AppStorage(GROUP_DEFAULT_XFTP_SEND_ENABLED, store: groupDefaults) var xftpSendEnabled = false @Binding var media: [UploadContent] var selectionLimit: Int var didFinishPicking: (_ didSelectItems: Bool) -> Void @@ -131,12 +130,7 @@ struct LibraryMediaListPicker: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> PHPickerViewController { var config = PHPickerConfiguration() - let allowVideoAttachment = xftpSendEnabled - if allowVideoAttachment { - config.filter = .any(of: [.images, .videos]) - } else { - config.filter = .images - } + config.filter = .any(of: [.images, .videos]) config.selectionLimit = selectionLimit config.selection = .ordered //config.preferredAssetRepresentationMode = .current diff --git a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift index a6bd3bda74..e99c6e3301 100644 --- a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift +++ b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift @@ -12,7 +12,6 @@ import SimpleXChat struct DeveloperView: View { @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false @AppStorage(GROUP_DEFAULT_CONFIRM_DB_UPGRADES, store: groupDefaults) private var confirmDatabaseUpgrades = false - @AppStorage(GROUP_DEFAULT_XFTP_SEND_ENABLED, store: groupDefaults) private var xftpSendEnabled = false @Environment(\.colorScheme) var colorScheme var body: some View { diff --git a/apps/ios/Shared/Views/UserSettings/ExperimentalFeaturesView.swift b/apps/ios/Shared/Views/UserSettings/ExperimentalFeaturesView.swift deleted file mode 100644 index 8f51e42166..0000000000 --- a/apps/ios/Shared/Views/UserSettings/ExperimentalFeaturesView.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// ExperimentalFeaturesView.swift -// SimpleX (iOS) -// -// Created by Evgeny on 30/05/2022. -// Copyright © 2022 SimpleX Chat. All rights reserved. -// - -import SwiftUI -import SimpleXChat - -struct ExperimentalFeaturesView: View { - @AppStorage(GROUP_DEFAULT_XFTP_SEND_ENABLED, store: groupDefaults) private var xftpSendEnabled = false - - var body: some View { - List { - Section("") { - settingsRow("arrow.up.doc") { - Toggle("Send videos and files via XFTP", isOn: $xftpSendEnabled) - .onChange(of: xftpSendEnabled) { _ in - do { - try setXFTPConfig(getXFTPCfg()) - } catch { - logger.error("setXFTPConfig: cannot set XFTP config \(responseError(error))") - } - } - } - } - } - } -} - -struct ExperimentalFeaturesView_Previews: PreviewProvider { - static var previews: some View { - ExperimentalFeaturesView() - } -} diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift index 77f043711b..d721cfad50 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift @@ -25,7 +25,6 @@ private enum NetworkAlert: Identifiable { struct NetworkAndServers: View { @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false - @AppStorage(GROUP_DEFAULT_XFTP_SEND_ENABLED, store: groupDefaults) private var xftpSendEnabled = false @State private var cfgLoaded = false @State private var currentNetCfg = NetCfg.defaults @State private var netCfg = NetCfg.defaults @@ -44,13 +43,11 @@ struct NetworkAndServers: View { Text("SMP servers") } - if xftpSendEnabled { - NavigationLink { - ProtocolServersView(serverProtocol: .xftp) - .navigationTitle("Your XFTP servers") - } label: { - Text("XFTP servers") - } + NavigationLink { + ProtocolServersView(serverProtocol: .xftp) + .navigationTitle("Your XFTP servers") + } label: { + Text("XFTP servers") } Picker("Use .onion hosts", selection: $onionHosts) { diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index a062691835..d25ea45f49 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -232,14 +232,6 @@ struct SettingsView: View { } label: { settingsRow("info") { Text("About SimpleX Chat") } } -// NavigationLink { -// MarkdownHelp() -// .padding() -// .navigationTitle("How to use markdown") -// .frame(maxHeight: .infinity, alignment: .top) -// } label: { -// settingsRow("textformat") { Text("Markdown in messages") } -// } settingsRow("number") { Button("Send questions and ideas") { showSettings = false @@ -278,12 +270,6 @@ struct SettingsView: View { } label: { settingsRow("chevron.left.forwardslash.chevron.right") { Text("Developer tools") } } -// NavigationLink { -// ExperimentalFeaturesView() -// .navigationTitle("Experimental features") -// } label: { -// settingsRow("gauge") { Text("Experimental features") } -// } NavigationLink { VersionView() .navigationBarTitle("App version") diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff index 392e01dfda..4ba2101119 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -3357,11 +3357,6 @@ Available in v5.1 Odeslat je z galerie nebo vlastní klávesnice. No comment provided by engineer. - - Send videos and files via XFTP - Odeslat soubory přes XFTP - No comment provided by engineer. - Sender cancelled file transfer. Odesílatel zrušil přenos souboru. diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff index bdc48d3636..5dac1061c2 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -3357,11 +3357,6 @@ Available in v5.1 Senden Sie diese aus dem Fotoalbum oder von individuellen Tastaturen. No comment provided by engineer. - - Send videos and files via XFTP - Dateien per XFTP versenden - No comment provided by engineer. - Sender cancelled file transfer. Der Absender hat die Dateiübertragung abgebrochen. diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff index 1d7e58f25d..c0a0c7cfc1 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -3377,11 +3377,6 @@ Available in v5.1 Send them from gallery or custom keyboards. No comment provided by engineer. - - Send videos and files via XFTP - Send videos and files via XFTP - No comment provided by engineer. - Sender cancelled file transfer. Sender cancelled file transfer. diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff index 792f672d2a..813b8eb09b 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -3357,11 +3357,6 @@ Available in v5.1 Envíalos desde la galería o desde teclados personalizados. No comment provided by engineer. - - Send videos and files via XFTP - Enviar archivos vía XFTP - No comment provided by engineer. - Sender cancelled file transfer. El remitente ha cancelado la transferencia de archivos. diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff index 8f9f063606..68268a4f3e 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -3370,11 +3370,6 @@ Available in v5.1 Envoyez-les depuis la phototèque ou des claviers personnalisés. No comment provided by engineer. - - Send videos and files via XFTP - Envoi de fichiers via XFTP - No comment provided by engineer. - Sender cancelled file transfer. L'expéditeur a annulé le transfert de fichiers. diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff index 0f6c0817eb..75ee188bbd 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -3370,11 +3370,6 @@ Available in v5.1 Inviali dalla galleria o dalle tastiere personalizzate. No comment provided by engineer. - - Send videos and files via XFTP - Invia file tramite XFTP - No comment provided by engineer. - Sender cancelled file transfer. Il mittente ha annullato il trasferimento del file. diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff index b815d2becf..a144792be3 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -3377,11 +3377,6 @@ Beschikbaar in v5.1 Stuur ze vanuit de galerij of aangepaste toetsenborden. No comment provided by engineer. - - Send videos and files via XFTP - Bestanden verzenden via XFTP - No comment provided by engineer. - Sender cancelled file transfer. Afzender heeft bestandsoverdracht geannuleerd. diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff index 13644ea600..78156e1239 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -3377,11 +3377,6 @@ Dostępny w v5.1 Wyślij je z galerii lub niestandardowych klawiatur. No comment provided by engineer. - - Send videos and files via XFTP - Wysyłaj filmy i pliki przez XFTP - No comment provided by engineer. - Sender cancelled file transfer. Nadawca anulował transfer pliku. diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index 6184b69528..6bb8229a32 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -3377,11 +3377,6 @@ Available in v5.1 Отправьте из галереи или из дополнительных клавиатур. No comment provided by engineer. - - Send videos and files via XFTP - Отправлять видео и файлы через XFTP - No comment provided by engineer. - Sender cancelled file transfer. Отправитель отменил передачу файла. diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index baf6df031a..c400f08445 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -3357,11 +3357,6 @@ Available in v5.1 发送它们来自图库或自定义键盘。 No comment provided by engineer. - - Send videos and files via XFTP - 通过 XFTP 发送文件 - No comment provided by engineer. - Sender cancelled file transfer. 发送人已取消文件传输。 diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index f348027f12..c6e0ca9c2a 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -42,7 +42,6 @@ 5C3A88D127DF57800060F1C2 /* FramedItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3A88D027DF57800060F1C2 /* FramedItemView.swift */; }; 5C3F1D562842B68D00EC8A82 /* IntegrityErrorItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3F1D552842B68D00EC8A82 /* IntegrityErrorItemView.swift */; }; 5C3F1D58284363C400EC8A82 /* PrivacySettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3F1D57284363C400EC8A82 /* PrivacySettings.swift */; }; - 5C3F1D5A2844B4DE00EC8A82 /* ExperimentalFeaturesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C3F1D592844B4DE00EC8A82 /* ExperimentalFeaturesView.swift */; }; 5C4B3B0A285FB130003915F2 /* DatabaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B3B09285FB130003915F2 /* DatabaseView.swift */; }; 5C5346A827B59A6A004DF848 /* ChatHelp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5346A727B59A6A004DF848 /* ChatHelp.swift */; }; 5C55A91F283AD0E400C4E99E /* CallManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C55A91E283AD0E400C4E99E /* CallManager.swift */; }; @@ -276,7 +275,6 @@ 5C3A88D027DF57800060F1C2 /* FramedItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FramedItemView.swift; sourceTree = ""; }; 5C3F1D552842B68D00EC8A82 /* IntegrityErrorItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrityErrorItemView.swift; sourceTree = ""; }; 5C3F1D57284363C400EC8A82 /* PrivacySettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacySettings.swift; sourceTree = ""; }; - 5C3F1D592844B4DE00EC8A82 /* ExperimentalFeaturesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExperimentalFeaturesView.swift; sourceTree = ""; }; 5C422A7C27A9A6FA0097A1E1 /* SimpleX (iOS).entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "SimpleX (iOS).entitlements"; sourceTree = ""; }; 5C4B3B09285FB130003915F2 /* DatabaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseView.swift; sourceTree = ""; }; 5C5346A727B59A6A004DF848 /* ChatHelp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatHelp.swift; sourceTree = ""; }; @@ -720,7 +718,6 @@ 5C93293029239BED0090FFF9 /* ProtocolServerView.swift */, 5C9329402929248A0090FFF9 /* ScanProtocolServer.swift */, 5CB2084E28DA4B4800D024EC /* RTCServers.swift */, - 5C3F1D592844B4DE00EC8A82 /* ExperimentalFeaturesView.swift */, 64F1CC3A28B39D8600CD1FB1 /* IncognitoHelp.swift */, 18415845648CA4F5A8BCA272 /* UserProfilesView.swift */, 5C65F341297D3F3600B67AF3 /* VersionView.swift */, @@ -1165,7 +1162,6 @@ 5C93293F2928E0FD0090FFF9 /* AudioRecPlay.swift in Sources */, 5C029EA82837DBB3004A9677 /* CICallItemView.swift in Sources */, 5CE4407227ADB1D0007B033A /* Emoji.swift in Sources */, - 5C3F1D5A2844B4DE00EC8A82 /* ExperimentalFeaturesView.swift in Sources */, 5CB2085328DB7CAF00D024EC /* ConnectViaLinkView.swift in Sources */, 5C9CC7A928C532AB00BEF955 /* DatabaseErrorView.swift in Sources */, 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */, diff --git a/apps/ios/SimpleXChat/AppGroup.swift b/apps/ios/SimpleXChat/AppGroup.swift index b69411a75d..0b73e674ce 100644 --- a/apps/ios/SimpleXChat/AppGroup.swift +++ b/apps/ios/SimpleXChat/AppGroup.swift @@ -31,7 +31,6 @@ let GROUP_DEFAULT_STORE_DB_PASSPHRASE = "storeDBPassphrase" let GROUP_DEFAULT_INITIAL_RANDOM_DB_PASSPHRASE = "initialRandomDBPassphrase" public let GROUP_DEFAULT_CONFIRM_DB_UPGRADES = "confirmDBUpgrades" public let GROUP_DEFAULT_CALL_KIT_ENABLED = "callKitEnabled" -public let GROUP_DEFAULT_XFTP_SEND_ENABLED = "xftpSendEnabled" public let APP_GROUP_NAME = "group.chat.simplex.app" @@ -56,7 +55,6 @@ public func registerGroupDefaults() { GROUP_DEFAULT_PRIVACY_TRANSFER_IMAGES_INLINE: false, GROUP_DEFAULT_CONFIRM_DB_UPGRADES: false, GROUP_DEFAULT_CALL_KIT_ENABLED: true, - GROUP_DEFAULT_XFTP_SEND_ENABLED: false, ]) } @@ -129,8 +127,6 @@ public let confirmDBUpgradesGroupDefault = BoolDefault(defaults: groupDefaults, public let callKitEnabledGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_CALL_KIT_ENABLED) -public let xftpSendEnabledGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_XFTP_SEND_ENABLED) - public class DateDefault { var defaults: UserDefaults var key: String diff --git a/apps/ios/cs.lproj/Localizable.strings b/apps/ios/cs.lproj/Localizable.strings index f60911e517..7b9118cd1c 100644 --- a/apps/ios/cs.lproj/Localizable.strings +++ b/apps/ios/cs.lproj/Localizable.strings @@ -2244,9 +2244,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Odeslat je z galerie nebo vlastní klávesnice."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Odeslat soubory přes XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Odesílatel zrušil přenos souboru."; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 883be89ac2..db9102dd8c 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -2244,9 +2244,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Senden Sie diese aus dem Fotoalbum oder von individuellen Tastaturen."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Dateien per XFTP versenden"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Der Absender hat die Dateiübertragung abgebrochen."; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 5da00f7661..d3808d829c 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -2244,9 +2244,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Envíalos desde la galería o desde teclados personalizados."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Enviar archivos vía XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "El remitente ha cancelado la transferencia de archivos."; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index b830afa97c..aff567f344 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -2283,9 +2283,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Envoyez-les depuis la phototèque ou des claviers personnalisés."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Envoi de fichiers via XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "L'expéditeur a annulé le transfert de fichiers."; diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index a6b291eb46..b0efb9128e 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -2283,9 +2283,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Inviali dalla galleria o dalle tastiere personalizzate."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Invia file tramite XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Il mittente ha annullato il trasferimento del file."; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index 507d7198b0..e001c25e97 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -2301,9 +2301,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Stuur ze vanuit de galerij of aangepaste toetsenborden."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Bestanden verzenden via XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Afzender heeft bestandsoverdracht geannuleerd."; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index a58db2593b..1aab827e0d 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -2301,9 +2301,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Wyślij je z galerii lub niestandardowych klawiatur."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Wysyłaj filmy i pliki przez XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Nadawca anulował transfer pliku."; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 74409510c6..ca6a91282d 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -2301,9 +2301,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "Отправьте из галереи или из дополнительных клавиатур."; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "Отправлять видео и файлы через XFTP"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "Отправитель отменил передачу файла."; diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings index af21702f8a..78e1519cb2 100644 --- a/apps/ios/zh-Hans.lproj/Localizable.strings +++ b/apps/ios/zh-Hans.lproj/Localizable.strings @@ -2244,9 +2244,6 @@ /* No comment provided by engineer. */ "Send them from gallery or custom keyboards." = "发送它们来自图库或自定义键盘。"; -/* No comment provided by engineer. */ -"Send videos and files via XFTP" = "通过 XFTP 发送文件"; - /* No comment provided by engineer. */ "Sender cancelled file transfer." = "发送人已取消文件传输。"; From 2caff25fa2eecf6ab18a30c276b84e53f2d012c8 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Wed, 19 Apr 2023 12:07:14 +0200 Subject: [PATCH 5/7] android: revert to using gallery for images and videos (#2209) * core: revert to using gallery for images and videos * remove comment --- .../simplex/app/views/chat/ComposeView.kt | 27 +++++++++++++++---- .../app/views/helpers/ChooseAttachmentView.kt | 19 ++++++++----- .../simplex/app/views/helpers/GetImageView.kt | 5 ++-- .../app/src/main/res/values-cs/strings.xml | 6 +++-- .../app/src/main/res/values-de/strings.xml | 6 +++-- .../app/src/main/res/values-es/strings.xml | 6 +++-- .../app/src/main/res/values-fr/strings.xml | 6 +++-- .../app/src/main/res/values-it/strings.xml | 6 +++-- .../app/src/main/res/values-nl/strings.xml | 2 ++ .../app/src/main/res/values-pl/strings.xml | 6 +++-- .../src/main/res/values-pt-rBR/strings.xml | 5 ++-- .../app/src/main/res/values-ru/strings.xml | 4 ++- .../src/main/res/values-zh-rCN/strings.xml | 6 +++-- .../src/main/res/values-zh-rTW/strings.xml | 2 +- .../app/src/main/res/values/strings.xml | 6 +++-- 15 files changed, 77 insertions(+), 35 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt index 560e9525c4..4aabd428ae 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt @@ -14,6 +14,7 @@ import android.os.Build import android.provider.MediaStore import android.webkit.MimeTypeMap import android.widget.Toast +import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContract import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape @@ -260,13 +261,17 @@ fun ComposeView( } } } - val mediaLauncherWithFiles = rememberGetMultipleContentsLauncher { processPickedMedia(it, null) } + val galleryImageLauncher = rememberLauncherForActivityResult(contract = PickMultipleImagesFromGallery()) { processPickedMedia(it, null) } + val galleryImageLauncherFallback = rememberGetMultipleContentsLauncher { processPickedMedia(it, null) } + val galleryVideoLauncher = rememberLauncherForActivityResult(contract = PickMultipleVideosFromGallery()) { processPickedMedia(it, null) } + val galleryVideoLauncherFallback = rememberGetMultipleContentsLauncher { processPickedMedia(it, null) } + val filesLauncher = rememberGetContentLauncher { processPickedFile(it, null) } val recState: MutableState = remember { mutableStateOf(RecordingState.NotStarted) } LaunchedEffect(attachmentOption.value) { when (attachmentOption.value) { - AttachmentOption.TakePhoto -> { + AttachmentOption.CameraPhoto -> { when (PackageManager.PERMISSION_GRANTED) { ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) -> { cameraLauncher.launchWithFallback() @@ -277,11 +282,23 @@ fun ComposeView( } attachmentOption.value = null } - AttachmentOption.PickMedia -> { - mediaLauncherWithFiles.launch("image/*;video/*") + AttachmentOption.GalleryImage -> { + try { + galleryImageLauncher.launch(0) + } catch (e: ActivityNotFoundException) { + galleryImageLauncherFallback.launch("image/*") + } attachmentOption.value = null } - AttachmentOption.PickFile -> { + AttachmentOption.GalleryVideo -> { + try { + galleryVideoLauncher.launch(0) + } catch (e: ActivityNotFoundException) { + galleryVideoLauncherFallback.launch("video/*") + } + attachmentOption.value = null + } + AttachmentOption.File -> { filesLauncher.launch("*/*") attachmentOption.value = null } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt index 9d8121f3ab..41237633bb 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/ChooseAttachmentView.kt @@ -13,9 +13,10 @@ import chat.simplex.app.R import chat.simplex.app.views.newchat.ActionButton sealed class AttachmentOption { - object TakePhoto: AttachmentOption() - object PickMedia: AttachmentOption() - object PickFile: AttachmentOption() + object CameraPhoto: AttachmentOption() + object GalleryImage: AttachmentOption() + object GalleryVideo: AttachmentOption() + object File: AttachmentOption() } @Composable @@ -38,15 +39,19 @@ fun ChooseAttachmentView( horizontalArrangement = Arrangement.SpaceEvenly ) { ActionButton(null, stringResource(R.string.use_camera_button), icon = Icons.Outlined.PhotoCamera) { - attachmentOption.value = AttachmentOption.TakePhoto + attachmentOption.value = AttachmentOption.CameraPhoto hide() } - ActionButton(null, stringResource(R.string.from_gallery_button), icon = Icons.Outlined.Collections) { - attachmentOption.value = AttachmentOption.PickMedia + ActionButton(null, stringResource(R.string.gallery_image_button), icon = Icons.Outlined.Image) { + attachmentOption.value = AttachmentOption.GalleryImage + hide() + } + ActionButton(null, stringResource(R.string.gallery_video_button), icon = Icons.Outlined.SmartDisplay) { + attachmentOption.value = AttachmentOption.GalleryVideo hide() } ActionButton(null, stringResource(R.string.choose_file), icon = Icons.Outlined.InsertDriveFile) { - attachmentOption.value = AttachmentOption.PickFile + attachmentOption.value = AttachmentOption.File hide() } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt index d05b863903..c50d434178 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt @@ -18,8 +18,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.CallSuper import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Collections -import androidx.compose.material.icons.outlined.PhotoCamera +import androidx.compose.material.icons.outlined.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable @@ -259,7 +258,7 @@ fun GetImageBottomSheet( } } } - ActionButton(null, stringResource(R.string.from_gallery_button), icon = Icons.Outlined.Collections) { + ActionButton(null, stringResource(R.string.from_gallery_button), icon = Icons.Outlined.Image) { try { galleryLauncher.launch(0) } catch (e: ActivityNotFoundException) { diff --git a/apps/android/app/src/main/res/values-cs/strings.xml b/apps/android/app/src/main/res/values-cs/strings.xml index d24300a0ed..d915440f34 100644 --- a/apps/android/app/src/main/res/values-cs/strings.xml +++ b/apps/android/app/src/main/res/values-cs/strings.xml @@ -186,9 +186,11 @@ (sdílet s kontaktem) (uloženo pouze členy skupiny) Oprávnění zamítnuto! - Použít fotoaparát + Fotoaparát Z Galerie - Vybrat soubor + Soubor + Obrázek + Video Pro zahájení nové konverzace Klepněte na tlačítko potom: diff --git a/apps/android/app/src/main/res/values-de/strings.xml b/apps/android/app/src/main/res/values-de/strings.xml index ae6404f0cd..01f5e3c94b 100644 --- a/apps/android/app/src/main/res/values-de/strings.xml +++ b/apps/android/app/src/main/res/values-de/strings.xml @@ -254,9 +254,11 @@ (Wird nur von Gruppenmitgliedern gespeichert) Berechtigung verweigert! - Kamera\nverwenden + Kamera Aus dem\nFotoalbum - Datei\nauswählen + Datei + Bild + Video Danke, dass Sie SimpleX Chat installiert haben! Sie können sich mit SimpleX Chat Entwicklern verbinden, um Fragen zu stellen und Updates zu erhalten. diff --git a/apps/android/app/src/main/res/values-es/strings.xml b/apps/android/app/src/main/res/values-es/strings.xml index 00183ab27a..e4313d3aa3 100644 --- a/apps/android/app/src/main/res/values-es/strings.xml +++ b/apps/android/app/src/main/res/values-es/strings.xml @@ -263,7 +263,7 @@ Limpiar ¿Cambiar rol de grupo\? Compara los códigos de seguridad con tus contactos - Elije archivo + Archivo Limpiar Limpiar chat Configurar servidores ICE @@ -359,6 +359,8 @@ Error al guardar archivo Error De la Galería + Imagen + Video Si has recibido el enlace de invitación a SimpleX Chat, puedes abrirlo en tu navegador: Si eliges rechazar, el remitente NO será notificado. ¡Enlace no válido! @@ -748,7 +750,7 @@ no leído Escribe un nombre para el contacto… ¿Cambiar dirección de recepción\? - Usar cámara + Cámara ¡El contacto con el que has compartido este enlace NO podrá conectarse! Mostrar código QR ¡El enlace no es un enlace de conexión válido! diff --git a/apps/android/app/src/main/res/values-fr/strings.xml b/apps/android/app/src/main/res/values-fr/strings.xml index ab3fa09c33..2489d62d61 100644 --- a/apps/android/app/src/main/res/values-fr/strings.xml +++ b/apps/android/app/src/main/res/values-fr/strings.xml @@ -201,7 +201,9 @@ (à partager avec votre contact) Créer un groupe secret Depuis la Phototèque - Choisir le fichier + Fichier + Image + Vidéo Pour démarrer une nouvelle discussion Appuyez sur le bouton Scanner un code QR : pour vous connecter à votre contact qui vous montre un code QR. @@ -294,7 +296,7 @@ En attente du fichier Message vocal Autorisation refusée ! - Utiliser l\'Appareil photo + Appareil\nphoto Merci d\'avoir installé SimpleX Chat ! Vous pouvez vous connecter aux développeurs de SimpleX Chat pour leur poser des questions et recevoir des réponses :. ci-dessus, puis : diff --git a/apps/android/app/src/main/res/values-it/strings.xml b/apps/android/app/src/main/res/values-it/strings.xml index fba2709deb..b53d017728 100644 --- a/apps/android/app/src/main/res/values-it/strings.xml +++ b/apps/android/app/src/main/res/values-it/strings.xml @@ -298,7 +298,7 @@ Nome da mostrare Aggiungi un contatto: per creare il tuo codice QR una tantum per il tuo contatto. Scansiona codice QR: per connetterti al contatto che ti mostra il codice QR. - Scegli file + File Svuota chat Svuotare la chat\? Svuota @@ -308,6 +308,8 @@ Crea gruppo segreto 💻 desktop: scansiona dall\'app il codice QR mostrato, tramite Scansiona codice QR. Dalla Galleria + Immagine + Video Se scegli di rifiutare, il mittente NON verrà avvisato. Svuota Pulsante di chiusura @@ -545,7 +547,7 @@ Per connettersi via link (da condividere con il tuo contatto) Per iniziare una nuova chat - Usa la fotocamera + Fotocamera Puoi connetterti con gli sviluppatori di SimpleX Chat per porre domande e ricevere aggiornamenti. Link non valido! Codice QR non valido diff --git a/apps/android/app/src/main/res/values-nl/strings.xml b/apps/android/app/src/main/res/values-nl/strings.xml index 3679f8f89d..7829957b50 100644 --- a/apps/android/app/src/main/res/values-nl/strings.xml +++ b/apps/android/app/src/main/res/values-nl/strings.xml @@ -385,6 +385,8 @@ Bestand niet gevonden Bestand opgeslagen Galerij + Foto + Video Fout bij opslaan van ICE servers geëindigd Groepsleden kunnen verdwijnende berichten sturen. diff --git a/apps/android/app/src/main/res/values-pl/strings.xml b/apps/android/app/src/main/res/values-pl/strings.xml index 282bd5b01d..1e0b0aef5e 100644 --- a/apps/android/app/src/main/res/values-pl/strings.xml +++ b/apps/android/app/src/main/res/values-pl/strings.xml @@ -224,9 +224,9 @@ Zeskanuj kod QR Rozpocznij nowy czat (aby udostępnić Twojemu kontaktowi) - Wybierz plik + Plik Odmowa Uprawnienia! - Użyj Aparatu + Aparatu Akceptuj Akceptuj incognito Wszystkie wiadomości zostaną usunięte - nie można tego cofnąć! Wiadomości zostaną usunięte TYLKO dla Ciebie. @@ -968,6 +968,8 @@ \n- usuwać wiadomości członków. \n- wyłączyć członków (rola \"obserwatora\") Z Galerii + Obraz + Wideo zaproponował %s: %2s Tylko właściciele grup mogą włączyć wiadomości głosowe. Hosty onion nie będą używane. diff --git a/apps/android/app/src/main/res/values-pt-rBR/strings.xml b/apps/android/app/src/main/res/values-pt-rBR/strings.xml index caa0fd137a..6d50174f77 100644 --- a/apps/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/apps/android/app/src/main/res/values-pt-rBR/strings.xml @@ -24,7 +24,7 @@ Pediu para receber a imagem Cancelar mensagem ao vivo Voltar - Selecione o arquivo + Arquivo Adicionar novo contato: para criar seu QR code de uso único para seu contato. Escanear código QR: para se conectar ao seu contato que mostra o código QR para você. Aceitar @@ -352,6 +352,7 @@ anônimo via link único Ocultar Da Galeria + Vídeo Os membros do grupo podem enviar mensagens que desaparecem. Arquivo Nome completo: @@ -499,7 +500,7 @@ Salvar cor interface italiana Notificações periódicas - Usar câmera + Câmera Seus servidores ICE Seus servidores ICE Sua privacidade diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index afa9b408bb..5b893d8ba8 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -258,7 +258,9 @@ Разрешение не получено! Камера Галерея - Файлы + Изображение + Видео + Файл Спасибо, что установили SimpleX Chat! Вы можете соединиться с разработчиками, чтобы задать любые вопросы или получать уведомления о новых версиях. diff --git a/apps/android/app/src/main/res/values-zh-rCN/strings.xml b/apps/android/app/src/main/res/values-zh-rCN/strings.xml index a73b7af973..f332936ae5 100644 --- a/apps/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/apps/android/app/src/main/res/values-zh-rCN/strings.xml @@ -238,7 +238,7 @@ 已连接 连接 连接 - 选择文件 + 文件 聊天资料 按聊天资料(默认)或按连接(BETA)。 检查服务器地址并再试一次。 @@ -435,6 +435,8 @@ 目前支持的最大文件尺寸是 %1$s 文件将在您的联系人在线时收到,请稍等或稍后再查看! 从图库 + 照片 + 视频 退出而不保存 翻转相机 启用自动删除消息? @@ -855,7 +857,7 @@ 权限被拒绝! 点击按钮 感谢您安装 SimpleX Chat - 使用相机 + 相机 预设服务器地址 扫描服务器二维码 服务器测试失败! diff --git a/apps/android/app/src/main/res/values-zh-rTW/strings.xml b/apps/android/app/src/main/res/values-zh-rTW/strings.xml index fcea69d460..f35979aed7 100644 --- a/apps/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/apps/android/app/src/main/res/values-zh-rTW/strings.xml @@ -52,7 +52,7 @@ 新增新的聯絡人:新增新的聯絡人可以使用二維碼建立你的一次性二維碼。 掃描二維碼:連接到向你出示二維碼的聯絡人。 選擇檔案 - 使用相機 + 相機 從圖片庫選擇圖片 接受匿名聊天模式 所有訊息記錄會刪除 - 這不能還原!這些訊息只會在你裝置中刪除。 diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml index 3717e8224a..1be28ae23c 100644 --- a/apps/android/app/src/main/res/values/strings.xml +++ b/apps/android/app/src/main/res/values/strings.xml @@ -360,9 +360,11 @@ Permission Denied! - Use Camera + Camera From Gallery - Choose file + File + Image + Video Thank you for installing SimpleX Chat! From 23ca3dd66579596c261cad8279995a683d5155a0 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Wed, 19 Apr 2023 11:59:39 +0100 Subject: [PATCH 6/7] 5.0.0-beta.2 --- apps/android/app/build.gradle | 4 ++-- apps/android/app/src/main/res/values-es/strings.xml | 2 +- apps/ios/SimpleX.xcodeproj/project.pbxproj | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/android/app/build.gradle b/apps/android/app/build.gradle index 7ccb799632..d64aec1d3b 100644 --- a/apps/android/app/build.gradle +++ b/apps/android/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "chat.simplex.app" minSdk 26 targetSdk 32 - versionCode 115 - versionName "5.0-beta.1" + versionCode 116 + versionName "5.0-beta.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/apps/android/app/src/main/res/values-es/strings.xml b/apps/android/app/src/main/res/values-es/strings.xml index e4313d3aa3..e86eaab857 100644 --- a/apps/android/app/src/main/res/values-es/strings.xml +++ b/apps/android/app/src/main/res/values-es/strings.xml @@ -360,7 +360,7 @@ Error De la Galería Imagen - Video + Vídeo Si has recibido el enlace de invitación a SimpleX Chat, puedes abrirlo en tu navegador: Si eliges rechazar, el remitente NO será notificado. ¡Enlace no válido! diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index c6e0ca9c2a..339d1747a1 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -1441,7 +1441,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 142; + CURRENT_PROJECT_VERSION = 143; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1483,7 +1483,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 142; + CURRENT_PROJECT_VERSION = 143; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; @@ -1563,7 +1563,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 142; + CURRENT_PROJECT_VERSION = 143; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1595,7 +1595,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 142; + CURRENT_PROJECT_VERSION = 143; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; From 5bf16da09dc96c47286c8b5e520d24983c4a23e9 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 19 Apr 2023 15:21:28 +0400 Subject: [PATCH 7/7] core, mobile: prohibit to change chat item expiration when chat is stopped (#2210) --- .../main/java/chat/simplex/app/views/database/DatabaseView.kt | 2 +- apps/ios/Shared/Views/Database/DatabaseView.swift | 2 +- src/Simplex/Chat.hs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt index 869a52cd23..0be861245c 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt @@ -160,7 +160,7 @@ fun DatabaseLayout( AppBarTitle(stringResource(R.string.your_chat_database)) SectionView(stringResource(R.string.messages_section_title).uppercase()) { - SectionItemView { TtlOptions(chatItemTTL, enabled = rememberUpdatedState(!progressIndicator && !chatDbChanged), onChatItemTTLSelected) } + SectionItemView { TtlOptions(chatItemTTL, enabled = rememberUpdatedState(!stopped && !progressIndicator), onChatItemTTLSelected) } } SectionTextFooter( remember(currentUser?.displayName) { diff --git a/apps/ios/Shared/Views/Database/DatabaseView.swift b/apps/ios/Shared/Views/Database/DatabaseView.swift index d950c48dfc..cf926e61a7 100644 --- a/apps/ios/Shared/Views/Database/DatabaseView.swift +++ b/apps/ios/Shared/Views/Database/DatabaseView.swift @@ -77,7 +77,7 @@ struct DatabaseView: View { } } .frame(height: 36) - .disabled(m.chatDbChanged || progressIndicator) + .disabled(stopped || progressIndicator) } header: { Text("Messages") } footer: { diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 0efe7924c0..cc1a289397 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -939,7 +939,7 @@ processChatCommand = \case CRServerTestResult user srv <$> withAgent (\a -> testProtocolServer a (aUserId user) server) TestProtoServer srv -> withUser $ \User {userId} -> processChatCommand $ APITestProtoServer userId srv - APISetChatItemTTL userId newTTL_ -> withUser' $ \user -> do + APISetChatItemTTL userId newTTL_ -> withUser $ \user -> do checkSameUser userId user checkStoreNotChanged $ withChatLock "setChatItemTTL" $ do