From 464cba299a03ef81b9569df6875b57e09b2ed058 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Mon, 4 May 2026 20:41:32 +0200
Subject: [PATCH 01/37] remove legacy options
---
.../securesms/ApplicationContext.java | 6 --
.../securesms/connect/DcHelper.java | 3 -
.../AdvancedPreferenceFragment.java | 60 -------------------
.../preferences/ChatsPreferenceFragment.java | 53 ++--------------
src/main/res/values/arrays.xml | 20 -------
src/main/res/xml/preferences_advanced.xml | 22 -------
src/main/res/xml/preferences_chats.xml | 6 --
7 files changed, 6 insertions(+), 164 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
index 32966801f..0857cc429 100644
--- a/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
+++ b/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
@@ -228,12 +228,6 @@ public class ApplicationContext extends MultiDexApplication {
// 2025-12-16: The setting was removed.
// Revert it to the default if it was changed in the past.
ac.setConfigInt("webxdc_realtime_enabled", 1);
-
- // 2025-11-12: this is needed until core starts ignoring "delete_server_after" for
- // chatmail
- if (ac.isChatmail()) {
- ac.setConfig("delete_server_after", null); // reset
- }
}
if (allAccounts.length == 0) {
try {
diff --git a/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java
index 2b15138a6..cc6352644 100644
--- a/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java
+++ b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java
@@ -48,10 +48,7 @@ public class DcHelper {
public static final String CONFIG_DISPLAY_NAME = "displayname";
public static final String CONFIG_SELF_STATUS = "selfstatus";
public static final String CONFIG_SELF_AVATAR = "selfavatar";
- public static final String CONFIG_MVBOX_MOVE = "mvbox_move";
- public static final String CONFIG_ONLY_FETCH_MVBOX = "only_fetch_mvbox";
public static final String CONFIG_BCC_SELF = "bcc_self";
- public static final String CONFIG_SHOW_EMAILS = "show_emails";
public static final String CONFIG_MEDIA_QUALITY = "media_quality";
public static final String CONFIG_PROXY_ENABLED = "proxy_enabled";
public static final String CONFIG_PROXY_URL = "proxy_url";
diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
index 4caf4ffd7..72a4caa63 100644
--- a/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
@@ -3,9 +3,6 @@ package org.thoughtcrime.securesms.preferences;
import static android.app.Activity.RESULT_OK;
import static android.text.InputType.TYPE_TEXT_VARIATION_URI;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_BCC_SELF;
-import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MVBOX_MOVE;
-import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ONLY_FETCH_MVBOX;
-import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SHOW_EMAILS;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_STATS_SENDING;
import android.content.Context;
@@ -47,11 +44,8 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "AdvancedPreferenceFragment";
- private ListPreference showEmails;
CheckBoxPreference selfReportingCheckbox;
CheckBoxPreference multiDeviceCheckbox;
- CheckBoxPreference mvboxMoveCheckbox;
- CheckBoxPreference onlyFetchMvboxCheckbox;
private ActivityResultLauncher screenLockLauncher;
@Override
@@ -67,16 +61,6 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
}
});
- showEmails = (ListPreference) this.findPreference("pref_show_emails");
- if (showEmails != null) {
- showEmails.setOnPreferenceChangeListener(
- (preference, newValue) -> {
- updateListSummary(preference, newValue);
- dcContext.setConfigInt(CONFIG_SHOW_EMAILS, Util.objectToInt(newValue));
- return true;
- });
- }
-
multiDeviceCheckbox = (CheckBoxPreference) this.findPreference("pref_bcc_self");
if (multiDeviceCheckbox != null) {
multiDeviceCheckbox.setOnPreferenceChangeListener(
@@ -101,40 +85,6 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
});
}
- mvboxMoveCheckbox = (CheckBoxPreference) this.findPreference("pref_mvbox_move");
- if (mvboxMoveCheckbox != null) {
- mvboxMoveCheckbox.setOnPreferenceChangeListener(
- (preference, newValue) -> {
- boolean enabled = (Boolean) newValue;
- dcContext.setConfigInt(CONFIG_MVBOX_MOVE, enabled ? 1 : 0);
- return true;
- });
- }
-
- onlyFetchMvboxCheckbox = this.findPreference("pref_only_fetch_mvbox");
- if (onlyFetchMvboxCheckbox != null) {
- onlyFetchMvboxCheckbox.setOnPreferenceChangeListener(
- ((preference, newValue) -> {
- final boolean enabled = (Boolean) newValue;
- if (enabled) {
- new AlertDialog.Builder(requireContext())
- .setMessage(R.string.pref_imap_folder_warn_disable_defaults)
- .setPositiveButton(
- R.string.ok,
- (dialogInterface, i) -> {
- dcContext.setConfigInt(CONFIG_ONLY_FETCH_MVBOX, 1);
- ((CheckBoxPreference) preference).setChecked(true);
- })
- .setNegativeButton(R.string.cancel, null)
- .show();
- return false;
- } else {
- dcContext.setConfigInt(CONFIG_ONLY_FETCH_MVBOX, 0);
- return true;
- }
- }));
- }
-
Preference screenSecurity = this.findPreference(Prefs.SCREEN_SECURITY_PREF);
if (screenSecurity != null) {
screenSecurity.setOnPreferenceChangeListener(new ScreenShotSecurityListener());
@@ -213,10 +163,6 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
return true;
}));
}
-
- if (dcContext.isChatmail()) {
- findPreference("pref_category_legacy").setVisible(false);
- }
}
@Override
@@ -231,14 +177,8 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
((ApplicationPreferencesActivity) requireActivity()).getSupportActionBar())
.setTitle(R.string.menu_advanced);
- String value = Integer.toString(dcContext.getConfigInt("show_emails"));
- showEmails.setValue(value);
- updateListSummary(showEmails, value);
-
selfReportingCheckbox.setChecked(0 != dcContext.getConfigInt(CONFIG_STATS_SENDING));
multiDeviceCheckbox.setChecked(0 != dcContext.getConfigInt(CONFIG_BCC_SELF));
- mvboxMoveCheckbox.setChecked(0 != dcContext.getConfigInt(CONFIG_MVBOX_MOVE));
- onlyFetchMvboxCheckbox.setChecked(0 != dcContext.getConfigInt(CONFIG_ONLY_FETCH_MVBOX));
}
protected File copyToCacheDir(Uri uri) throws IOException {
diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
index 20d4d1e64..d17ca1868 100644
--- a/src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
@@ -34,7 +34,6 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
private CheckBoxPreference readReceiptsCheckbox;
private ListPreference autoDelDevice;
- private ListPreference autoDelServer;
@Override
public void onCreate(Bundle paramBundle) {
@@ -85,15 +84,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
autoDelDevice = findPreference("autodel_device");
if (autoDelDevice != null) {
- autoDelDevice.setOnPreferenceChangeListener(new AutodelChangeListener("delete_device_after"));
- }
-
- autoDelServer = findPreference("autodel_server");
- if (autoDelServer != null) {
- autoDelServer.setOnPreferenceChangeListener(new AutodelChangeListener("delete_server_after"));
- }
- if (dcContext.isChatmail()) {
- autoDelServer.setVisible(false);
+ autoDelDevice.setOnPreferenceChangeListener(new AutodelChangeListener());
}
}
@@ -124,16 +115,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
}
private void initAutodelFromCore() {
- String value = Integer.toString(dcContext.getConfigInt("delete_server_after"));
- autoDelServer.setValue(value);
- updateListSummary(
- autoDelServer,
- value,
- (value.equals("0") || dcContext.isChatmail())
- ? null
- : getString(R.string.autodel_server_enabled_hint));
-
- value = Integer.toString(dcContext.getConfigInt("delete_device_after"));
+ String value = Integer.toString(dcContext.getConfigInt("delete_device_after"));
autoDelDevice.setValue(value);
updateListSummary(autoDelDevice, value);
}
@@ -201,19 +183,14 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
}
private class AutodelChangeListener implements Preference.OnPreferenceChangeListener {
- private final String coreKey;
-
- AutodelChangeListener(String coreKey) {
- this.coreKey = coreKey;
- }
+ private final String coreKey = "delete_device_after";
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
int timeout = Util.objectToInt(newValue);
Context context = preference.getContext();
- boolean fromServer = coreKey.equals("delete_server_after");
- if (timeout > 0 && !(fromServer && dcContext.isChatmail())) {
- int delCount = DcHelper.getContext(context).estimateDeletionCount(fromServer, timeout);
+ if (timeout > 0) {
+ int delCount = DcHelper.getContext(context).estimateDeletionCount(false, timeout);
View gl = View.inflate(getActivity(), R.layout.dialog_with_checkbox, null);
CheckBox confirmCheckbox = gl.findViewById(R.id.dialog_checkbox);
@@ -224,8 +201,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
// "OK" and "Cancel" buttons would not be show. So, put the message into our custom view:
msg.setText(
String.format(
- context.getString(
- fromServer ? R.string.autodel_server_ask : R.string.autodel_device_ask),
+ context.getString(R.string.autodel_device_ask),
delCount,
getSelectedSummary(preference, newValue)));
confirmCheckbox.setText(R.string.autodel_confirm);
@@ -250,23 +226,6 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
// :)
.setOnCancelListener(dialog -> initAutodelFromCore())
.show();
- } else if (fromServer
- && timeout
- == 1 /*at once, using a constant that cannot be used in .xml would weaken grep ability*/) {
- new AlertDialog.Builder(context)
- .setTitle(R.string.autodel_server_warn_multi_device_title)
- .setMessage(R.string.autodel_server_warn_multi_device)
- .setPositiveButton(
- android.R.string.ok,
- (dialog, whichButton) -> {
- dcContext.setConfigInt(coreKey, timeout);
- initAutodelFromCore();
- })
- .setNegativeButton(
- android.R.string.cancel, (dialog, whichButton) -> initAutodelFromCore())
- .setCancelable(true)
- .setOnCancelListener(dialog -> initAutodelFromCore())
- .show();
} else {
updateListSummary(preference, newValue);
dcContext.setConfigInt(coreKey, timeout);
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index ca2b46910..ccb3e9954 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -100,26 +100,6 @@
31536000
-
- @string/never
- @string/autodel_at_once
- @string/autodel_after_1_hour
- @string/autodel_after_1_day
- @string/autodel_after_1_week
- @string/after_5_weeks
- @string/autodel_after_1_year
-
-
-
- 0
- 1
- 3600
- 86400
- 604800
- 3024000
- 31536000
-
-
@string/share_location_for_30_minutes@string/share_location_for_one_hour
diff --git a/src/main/res/xml/preferences_advanced.xml b/src/main/res/xml/preferences_advanced.xml
index 8eb7f18be..6f82a5228 100644
--- a/src/main/res/xml/preferences_advanced.xml
+++ b/src/main/res/xml/preferences_advanced.xml
@@ -62,26 +62,4 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/res/xml/preferences_chats.xml b/src/main/res/xml/preferences_chats.xml
index c52f12cc5..105160d2c 100644
--- a/src/main/res/xml/preferences_chats.xml
+++ b/src/main/res/xml/preferences_chats.xml
@@ -38,12 +38,6 @@
android:title="@string/autodel_device_title"
android:entries="@array/autodel_device_durations"
android:entryValues="@array/autodel_device_values" />
-
-
From 0ccf0a9309a4ad6105257d8d550bb3850d289837 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Mon, 4 May 2026 22:05:42 +0200
Subject: [PATCH 02/37] apply spotless
---
.../securesms/preferences/AdvancedPreferenceFragment.java | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
index 72a4caa63..d5af79996 100644
--- a/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
@@ -20,7 +20,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.CheckBoxPreference;
-import androidx.preference.ListPreference;
import androidx.preference.Preference;
import java.io.File;
import java.io.FileOutputStream;
@@ -38,7 +37,6 @@ import org.thoughtcrime.securesms.relay.RelayListActivity;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.ScreenLockUtil;
import org.thoughtcrime.securesms.util.StreamUtil;
-import org.thoughtcrime.securesms.util.Util;
public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
implements DcEventCenter.DcEventDelegate {
From 9a382a4948b3d957f3b9c231af06c6f4013e1e18 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Wed, 6 May 2026 10:07:22 +0200
Subject: [PATCH 03/37] actually explain what the 'calls notification' option
does
---
src/main/res/values/strings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 892d6e154..9ee8babbe 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -767,7 +767,7 @@
Calls
- Show call screen on incoming calls
+ Show call screen for accepted contactsShowPriorityEnable system notifications for new messages
From 653c8688b7124dff7e71dadec756e40b5b643a52 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Wed, 6 May 2026 14:05:56 +0200
Subject: [PATCH 04/37] mark deprecated strings as such
---
src/main/res/values/strings.xml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 9ee8babbe..53ca03c0c 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -61,7 +61,9 @@
MediaApps & MediaProfile
+
All Profiles
+
Current ProfileMain MenuStart Chat
@@ -772,6 +774,7 @@
PriorityEnable system notifications for new messagesShow message content in notification
+
Shows sender and first words of the message in notificationsLED ColorSound
From d180704d525dd0856302bdbb7222554c70d28a7e Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Wed, 6 May 2026 14:59:39 +0200
Subject: [PATCH 05/37] allow to disable call notifications
---
.../preferences/NotificationsPreferenceFragment.java | 12 ++++++++++++
src/main/res/xml/preferences_notifications.xml | 6 ++++++
2 files changed, 18 insertions(+)
diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
index 68d0f599f..f63b69b8d 100644
--- a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
@@ -39,6 +39,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme
private CheckBoxPreference ignoreBattery;
private CheckBoxPreference notificationsEnabled;
private CheckBoxPreference mentionNotifEnabled;
+ private CheckBoxPreference notifyCalls;
private CheckBoxPreference reliableService;
private ActivityResultLauncher ringtonePickerLauncher;
@@ -137,6 +138,16 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme
return true;
});
}
+
+ notifyCalls = this.findPreference("pref_notify_calls");
+ if (notifyCalls != null) {
+ notifyCalls.setOnPreferenceChangeListener(
+ (preference, newValue) -> {
+ boolean enabled = (Boolean) newValue;
+ dcContext.setConfig("who_can_call_me", enabled? "1" : "2");
+ return true;
+ });
+ }
}
@Override
@@ -156,6 +167,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme
notificationsEnabled.setChecked(!dcContext.isMuted());
notificationsEnabled.setSummary(getSummary(getContext(), false));
mentionNotifEnabled.setChecked(dcContext.isMentionsEnabled());
+ notifyCalls.setChecked(dcContext.getConfig("who_can_call_me") != "2");
// set without altering "unset" state of the preference
reliableService.setOnPreferenceChangeListener(null);
diff --git a/src/main/res/xml/preferences_notifications.xml b/src/main/res/xml/preferences_notifications.xml
index 603b5ed28..23964b49a 100644
--- a/src/main/res/xml/preferences_notifications.xml
+++ b/src/main/res/xml/preferences_notifications.xml
@@ -56,6 +56,12 @@
android:title="@string/pref_in_chat_sounds"
android:defaultValue="true" />
+
+
Date: Wed, 6 May 2026 15:01:51 +0200
Subject: [PATCH 06/37] apply spotless
---
.../securesms/preferences/NotificationsPreferenceFragment.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
index f63b69b8d..17dfd06c2 100644
--- a/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
@@ -144,7 +144,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme
notifyCalls.setOnPreferenceChangeListener(
(preference, newValue) -> {
boolean enabled = (Boolean) newValue;
- dcContext.setConfig("who_can_call_me", enabled? "1" : "2");
+ dcContext.setConfig("who_can_call_me", enabled ? "1" : "2");
return true;
});
}
From 94e2c8dbedd7b1af0703b44998f77579a9fd9b9f Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Wed, 6 May 2026 10:36:47 +0200
Subject: [PATCH 07/37] feat: simplify location streaming wording
---
.../securesms/geolocation/LocationStreamingService.java | 6 +++---
src/main/res/values/strings.xml | 4 +---
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java b/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java
index e805e7ce2..961b24958 100644
--- a/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java
+++ b/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java
@@ -188,9 +188,9 @@ public class LocationStreamingService extends Service {
NotificationChannel channel =
new NotificationChannel(
CHANNEL_ID,
- getString(R.string.location_streaming_notification_title),
+ getString(R.string.pref_on_demand_location_streaming),
NotificationManager.IMPORTANCE_LOW);
- channel.setDescription(getString(R.string.location_streaming_channel_desc));
+ channel.setDescription("Channel for Location Streaming");
channel.setShowBadge(false);
NotificationManager nm = getSystemService(NotificationManager.class);
if (nm != null) nm.createNotificationChannel(channel);
@@ -209,7 +209,7 @@ public class LocationStreamingService extends Service {
PendingIntent.getService(this, 1, stopIntent, PendingIntent.FLAG_IMMUTABLE);
return new NotificationCompat.Builder(this, CHANNEL_ID)
- .setContentTitle(getString(R.string.location_streaming_notification_title))
+ .setContentTitle(getString(R.string.pref_on_demand_location_streaming))
.setContentText(getString(R.string.location_streaming_notification_text))
.setSmallIcon(R.drawable.ic_location_on_white_24dp)
.setOngoing(true)
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 53ca03c0c..08a9b9746 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -837,7 +837,7 @@
AllExperimental FeaturesThese features may be unstable and may be changed or removed
- On-demand Location Streaming
+ Location StreamingDefault imageDefault colorCustom image
@@ -1079,8 +1079,6 @@
%1$d messages in %2$d chats
- Channel for On-demand Location Streaming
- Location StreamingYou are sharing your locationTo share your live location with chat members, allow Delta Chat to use your location data.\n\nTo make live location work gaplessly, location data is used even when the app is closed or not in use.
From 39aec04feab6aedf17d2e752b527faa74514e96e Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Wed, 6 May 2026 15:00:34 +0200
Subject: [PATCH 08/37] remove unhelpful channel description
---
.../securesms/geolocation/LocationStreamingService.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java b/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java
index 961b24958..72ada35df 100644
--- a/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java
+++ b/src/main/java/org/thoughtcrime/securesms/geolocation/LocationStreamingService.java
@@ -190,7 +190,6 @@ public class LocationStreamingService extends Service {
CHANNEL_ID,
getString(R.string.pref_on_demand_location_streaming),
NotificationManager.IMPORTANCE_LOW);
- channel.setDescription("Channel for Location Streaming");
channel.setShowBadge(false);
NotificationManager nm = getSystemService(NotificationManager.class);
if (nm != null) nm.createNotificationChannel(channel);
From 43a3e21495d9317054ac3886c903ecd85b350cf1 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Wed, 6 May 2026 14:54:05 +0200
Subject: [PATCH 09/37] add some context for translators, do not introduce
another prefix
---
.../java/org/thoughtcrime/securesms/ConversationItem.java | 2 +-
src/main/res/values/strings.xml | 5 ++---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
index 4ead84239..38cc4d13c 100644
--- a/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
@@ -457,7 +457,7 @@ public class ConversationItem extends BaseConversationItem {
int end = spanned.getSpanEnd(span);
if (start >= 0 && end > start && end <= spanned.length()) {
String linkText = spanned.subSequence(start, end).toString();
- String label = context.getString(R.string.accessibility_link_action, linkText);
+ String label = context.getString(R.string.open_link, linkText);
linkActionIds.add(
ViewCompat.addAccessibilityAction(
this,
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 08a9b9746..4466161f8 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1174,6 +1174,8 @@
Message actionsWallpaper previewDisappearing messages activated
+
+ Open %1$sStop sharing location
@@ -1228,9 +1230,6 @@
Tap here to receive messages while Delta Chat is in the background.You already allowed Delta Chat to receive messages in the background.\n\nIf messages still do not arrive in background, please also check your system settings.
-
- Open %1$s
-
What\'s new?\n\n💯 End-to-end encryption is reliable and forever now. Padlocks 🔒 are gone!\n\n✉️ Classic email without end-to-end encryption is marked with a letter symbol\n\n😻 New enhanced profile screen for all your contacts\n\n🔲 New button for quick access to apps used in a chat\n\n❤️ Please donate to help us remain independent and continue to bring improvements: %1$s
From 613940577cdec1d7202355c891b062965bae66e5 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Wed, 6 May 2026 15:04:30 +0200
Subject: [PATCH 10/37] update changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 52bb99220..dc7cdb3f6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@
* Show more recent added stickers at the top of the sticker picker
* Allow to open links in messages via actions in TalkBack menu
* Allow to open map if user clicks "Location streaming enabled" system message
+* Allow to disable incoming calls notifications
* Fix: do not accidentally set draft in chats that don't allow sending messages
## v2.49.0
From 89d77e76382fbbb78024e351d9e8ee51b1c1f8f7 Mon Sep 17 00:00:00 2001
From: wchen342
Date: Thu, 7 May 2026 07:55:46 -0400
Subject: [PATCH 11/37] Call: camera/audio permission related fixes (#4412)
* Call: camera/permission related fixes
Defer camera initialization until actually needed.
Fix missing camera permission which blocks call from initializing correctly.
Add dialog when audio permission is not granted.
Add redirection dialog when permissions are permanently denied.
---
.../securesms/calls/CallActivity.java | 111 ++++++++++++++++--
.../securesms/calls/CallCoordinator.java | 54 ++++++---
.../securesms/calls/CallService.java | 49 ++++----
.../securesms/calls/CallViewModel.java | 41 +++----
.../securesms/calls/MediaStreamManager.java | 99 ++++++++++++----
src/main/res/values/strings.xml | 1 +
6 files changed, 266 insertions(+), 89 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/CallActivity.java b/src/main/java/org/thoughtcrime/securesms/calls/CallActivity.java
index 4ab417ecf..0162cccf5 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/CallActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/CallActivity.java
@@ -6,11 +6,13 @@ import android.app.PictureInPictureParams;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.PowerManager;
+import android.provider.Settings;
import android.util.Log;
import android.util.Rational;
import android.view.View;
@@ -22,7 +24,9 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.constraintlayout.widget.ConstraintLayout;
@@ -54,6 +58,7 @@ public class CallActivity extends AppCompatActivity {
private static final String TAG = "CallActivity";
private static final int MIC_PERMISSION_REQUEST_CODE = 1001;
private static final int CAMERA_PERMISSION_REQUEST_CODE = 1002;
+ private static final int CAMERA_MID_CALL_PERMISSION_REQUEST_CODE = 1003;
public static final String ACTION_ANSWER_CALL = BuildConfig.APPLICATION_ID + ".ANSWER_CALL";
public static final String ACTION_DECLINE_CALL = BuildConfig.APPLICATION_ID + ".DECLINE_CALL";
@@ -99,6 +104,7 @@ public class CallActivity extends AppCompatActivity {
private boolean awaitingPermissionResult = false;
private boolean pausedWhileAwaitingPermission = false;
private boolean intentHandled = false;
+ private boolean doNotAutoFinish = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -227,6 +233,7 @@ public class CallActivity extends AppCompatActivity {
Log.d(TAG, "Resuming existing call");
} else if (!coordinator.isIncomingCall()) {
Log.d(TAG, "Starting outgoing call");
+ coordinator.ensureServiceStarted();
viewModel.startOutgoingCallWhenReady();
}
}
@@ -374,6 +381,18 @@ public class CallActivity extends AppCompatActivity {
videoButton.setOnClickListener(
v -> {
if (viewModel != null) {
+ Boolean currentEnabled = viewModel.getVideoEnabled().getValue();
+ boolean needToEnable = currentEnabled == null || !currentEnabled;
+
+ if (needToEnable && !hasCameraPermission()) {
+ awaitingPermissionResult = true;
+ ActivityCompat.requestPermissions(
+ this,
+ new String[] {Manifest.permission.CAMERA},
+ CAMERA_MID_CALL_PERMISSION_REQUEST_CODE);
+ return;
+ }
+
viewModel.toggleVideo();
}
});
@@ -634,7 +653,7 @@ public class CallActivity extends AppCompatActivity {
new Handler(Looper.getMainLooper())
.postDelayed(
() -> {
- if (!isFinishing()) {
+ if (!isFinishing() && !doNotAutoFinish) {
finish();
}
},
@@ -643,7 +662,9 @@ public class CallActivity extends AppCompatActivity {
case ENDED:
statusText.setText(R.string.call_ended);
- finish();
+ if (!doNotAutoFinish) {
+ finish();
+ }
break;
case ERROR:
@@ -656,7 +677,7 @@ public class CallActivity extends AppCompatActivity {
new Handler(Looper.getMainLooper())
.postDelayed(
() -> {
- if (!isFinishing()) {
+ if (!isFinishing() && !doNotAutoFinish) {
finish();
}
},
@@ -842,16 +863,28 @@ public class CallActivity extends AppCompatActivity {
}
private void handleMicPermissionDenied() {
- Toast.makeText(this, R.string.call_requires_mic_permission, Toast.LENGTH_LONG).show();
-
CallCoordinator coordinator = CallCoordinator.getInstance(getApplication());
- if (coordinator.hasActiveCall()
- && coordinator.isIncomingCall()
- && !coordinator.hasOngoingCall()) {
- coordinator.declineCall();
+
+ if (coordinator.hasActiveCall() && !coordinator.hasOngoingCall()) {
+ if (coordinator.isIncomingCall()) {
+ coordinator.declineCall();
+ } else {
+ coordinator.hangUp();
+ }
}
- finish();
+ if (!shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)) {
+ doNotAutoFinish = true;
+ showPermissionSettingsDialog(
+ getString(R.string.call_requires_mic_permission),
+ () -> {
+ doNotAutoFinish = false;
+ if (!isFinishing()) finish();
+ });
+ } else {
+ Toast.makeText(this, R.string.call_requires_mic_permission, Toast.LENGTH_LONG).show();
+ finish();
+ }
}
private void proceedAfterPermissions() {
@@ -878,6 +911,22 @@ public class CallActivity extends AppCompatActivity {
CallCoordinator coordinator = CallCoordinator.getInstance(getApplication());
+ if (requestCode == CAMERA_MID_CALL_PERMISSION_REQUEST_CODE) {
+ boolean cameraGranted =
+ grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
+
+ if (cameraGranted && viewModel != null) {
+ viewModel.toggleVideo();
+ } else {
+ if (!shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
+ showPermissionSettingsDialog(getString(R.string.call_requires_camera_permission), null);
+ } else {
+ Toast.makeText(this, R.string.call_requires_camera_permission, Toast.LENGTH_SHORT).show();
+ }
+ }
+ return;
+ }
+
if (requestCode == MIC_PERMISSION_REQUEST_CODE) {
boolean micGranted =
grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
@@ -893,9 +942,17 @@ public class CallActivity extends AppCompatActivity {
if (!cameraGranted) {
Log.w(TAG, "Camera permission denied, switching to audio-only");
- Toast.makeText(
- this, "Starting audio-only call (camera permission denied)", Toast.LENGTH_SHORT)
- .show();
+ if (!shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
+ Toast.makeText(
+ this,
+ "Camera permission permanently denied. Enable in app settings for video calls.",
+ Toast.LENGTH_LONG)
+ .show();
+ } else {
+ Toast.makeText(
+ this, "Starting audio-only call (camera permission denied)", Toast.LENGTH_SHORT)
+ .show();
+ }
coordinator.setStartsWithVideo(false);
}
}
@@ -903,6 +960,34 @@ public class CallActivity extends AppCompatActivity {
proceedAfterPermissions();
}
+ private void showPermissionSettingsDialog(String message, @Nullable Runnable onDismissAction) {
+ if (isFinishing() || isDestroyed()) {
+ if (onDismissAction != null) onDismissAction.run();
+ return;
+ }
+
+ new AlertDialog.Builder(this)
+ .setTitle("Permission Required")
+ .setMessage(message)
+ .setPositiveButton(
+ "Open Settings",
+ (dialog, which) -> {
+ Intent intent =
+ new Intent(
+ Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
+ Uri.fromParts("package", getPackageName(), null));
+ startActivity(intent);
+ })
+ .setNegativeButton(android.R.string.cancel, null)
+ .setOnDismissListener(
+ dialog -> {
+ if (onDismissAction != null) {
+ onDismissAction.run();
+ }
+ })
+ .show();
+ }
+
// Picture-in-Picture
@Override
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java b/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
index 283572f52..45004eda0 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
@@ -97,6 +97,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
private final MutableLiveData outgoingCallPlaced = new MutableLiveData<>(false);
private final MutableLiveData answeredElsewhere = new MutableLiveData<>(false);
private final MutableLiveData isFrontCamera = new MutableLiveData<>(true);
+ private final MutableLiveData mediaCaptureReady = new MutableLiveData<>(false);
// Audio Routing Support
private final MediatorLiveData currentAudioEndpoint =
@@ -119,6 +120,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
private String pendingOfferSdp;
private boolean hasNotifiedBackend = false;
private boolean hasAutoSelectedEarpiece = false;
+ private boolean pendingMediaCapture = false;
private CallControlScope activeCallControlScope;
private CallViewModel activeCallViewModel;
@@ -228,6 +230,11 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
mainHandler.removeCallbacks(outgoingRingtoneRunnable);
mainHandler.postDelayed(outgoingRingtoneRunnable, 1500);
}
+
+ if (pendingMediaCapture) {
+ pendingMediaCapture = false;
+ callService.startMediaCapture();
+ }
}
}
@@ -336,6 +343,10 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
return isFrontCamera;
}
+ public LiveData getMediaCaptureReady() {
+ return mediaCaptureReady;
+ }
+
// State Update Methods (CallService)
public void updateConnectionState(PeerConnection.PeerConnectionState state) {
@@ -375,6 +386,11 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
isFrontCamera.postValue(front);
}
+ public void updateMediaCaptureReady(boolean ready) {
+ Log.d(TAG, "updateMediaCaptureReady: " + ready);
+ mediaCaptureReady.postValue(ready);
+ }
+
public void reportError(String error) {
Log.e(TAG, "reportError: " + error);
errorMessage.postValue(error);
@@ -387,7 +403,8 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
if (callService != null) {
callService.startMediaCapture();
} else {
- Log.w(TAG, "Cannot start media capture, service not ready");
+ Log.d(TAG, "Service not ready, deferring media capture");
+ pendingMediaCapture = true;
}
}
@@ -651,11 +668,17 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
public synchronized void setVideoEnabled(boolean enabled) {
Log.d(TAG, "setVideoEnabled: " + enabled);
+ if (callService != null) {
+ boolean success = callService.setVideoEnabled(enabled);
+ if (!success && enabled) {
+ enabled = false;
+ reportError("Camera unavailable");
+ }
+ }
+
localVideoEnabled.postValue(enabled);
if (callService != null) {
- callService.setVideoEnabled(enabled);
-
callService.sendMutedState(Boolean.TRUE.equals(localAudioEnabled.getValue()), enabled);
}
}
@@ -1129,6 +1152,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
this.pendingOfferSdp = null;
this.hasNotifiedBackend = false;
this.hasAutoSelectedEarpiece = false;
+ this.pendingMediaCapture = false;
mainHandler.removeCallbacks(outgoingRingtoneRunnable);
@@ -1194,6 +1218,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
private void resetLiveDataForNewCall() {
connectionState.postValue(PeerConnection.PeerConnectionState.NEW);
answeredElsewhere.postValue(false); // clearLiveData() must not reset answeredElsewhere
+ mediaCaptureReady.postValue(false);
clearLiveData();
}
@@ -1209,6 +1234,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
outgoingCallPlaced.postValue(false);
currentAudioEndpoint.postValue(null);
availableAudioEndpoints.postValue(null);
+ mediaCaptureReady.postValue(false);
}
public synchronized void initiateOutgoingCall(int accId, int chatId, boolean startsWithVideo) {
@@ -1219,16 +1245,6 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
return;
}
- // Check microphone permission
- if (!hasMicrophonePermission()) {
- Log.e(TAG, "Microphone permission not granted");
-
- Intent intent = new Intent(appContext, CallActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
- appContext.startActivity(intent);
- return;
- }
-
resetLiveDataForNewCall();
this.activeCallId = -1; // Placeholder call ID for Intent
@@ -1254,7 +1270,9 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
this.preferredStartingEndpoint = getPreferredStartingEndpoint(startsWithVideo);
- startAndBindService();
+ if (hasMicrophonePermission()) {
+ startAndBindService();
+ }
launchCallActivity();
}
@@ -1286,6 +1304,14 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
addCallToTelecom(callAttributes, calleeName, calleeIcon);
}
+ public synchronized void ensureServiceStarted() {
+ if (isServiceBound || !hasActiveCall()) {
+ return;
+ }
+ Log.d(TAG, "Starting service after permission grant");
+ startAndBindService();
+ }
+
private void addCallToTelecom(
CallAttributesCompat callAttributes, String displayName, Icon icon) {
try {
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/CallService.java b/src/main/java/org/thoughtcrime/securesms/calls/CallService.java
index 5972d470d..b386a8cf0 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/CallService.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/CallService.java
@@ -126,13 +126,13 @@ public class CallService extends Service implements WebRTCClient.Callbacks {
}
/**
- * Start camera/microphone capture
+ * Start media capture
*
*
Must be called when app is in foreground. Called by coordinator when ViewModel/Activity is
* ready.
*/
public void startMediaCapture() {
- Log.d(TAG, "startMediaCapture (Camera/Microphone)");
+ Log.d(TAG, "startMediaCapture");
if (webRTCClient != null && webRTCClient.hasLocalMediaStream()) {
Log.w(TAG, "Media already initialized, skipping");
@@ -153,7 +153,7 @@ public class CallService extends Service implements WebRTCClient.Callbacks {
boolean startsWithVideo = callCoordinator.isStartsWithVideo();
- Log.d(TAG, "Creating media stream with video: " + startsWithVideo);
+ Log.d(TAG, "Creating media stream");
mediaStreamManager.createMediaStream(
new MediaStreamManager.Callback() {
@@ -163,31 +163,22 @@ public class CallService extends Service implements WebRTCClient.Callbacks {
webRTCClient.setLocalMediaStream(stream);
- callCoordinator.updateFrontCamera(mediaStreamManager.isFrontCamera());
-
- callCoordinator.setVideoEnabled(startsWithVideo);
-
if (!stream.videoTracks.isEmpty()) {
VideoTrack localTrack = stream.videoTracks.get(0);
callCoordinator.updateLocalVideoTrack(localTrack);
- } else {
- Log.w(TAG, "No video track in stream, call will be audio-only");
- if (startsWithVideo) {
- callCoordinator.reportError("Camera unavailable, using audio only");
- }
- callCoordinator.setVideoEnabled(false);
}
+ callCoordinator.setVideoEnabled(startsWithVideo);
+
+ callCoordinator.updateMediaCaptureReady(true);
+
Log.d(TAG, "Media capture complete, ready for call");
}
@Override
public void onError(String error) {
Log.e(TAG, "Failed to setup media: " + error);
- if (startsWithVideo) {
- callCoordinator.reportError("Camera/microphone error: " + error);
- }
- callCoordinator.setVideoEnabled(false);
+ callCoordinator.reportError("Camera/microphone error: " + error);
}
});
}
@@ -395,12 +386,30 @@ public class CallService extends Service implements WebRTCClient.Callbacks {
}
}
- public void setVideoEnabled(boolean enabled) {
+ public boolean setVideoEnabled(boolean enabled) {
Log.d(TAG, "setVideoEnabled: " + enabled);
- if (webRTCClient != null) {
- webRTCClient.setVideoEnabled(enabled);
+ if (enabled) {
+ if (mediaStreamManager != null) {
+ boolean captureReady = mediaStreamManager.startVideoCapture();
+ if (!captureReady) {
+ Log.w(TAG, "Failed to start video capture");
+ return false;
+ }
+ callCoordinator.updateFrontCamera(mediaStreamManager.isFrontCamera());
+ }
+ if (webRTCClient != null) {
+ webRTCClient.setVideoEnabled(true);
+ }
+ } else {
+ if (webRTCClient != null) {
+ webRTCClient.setVideoEnabled(false);
+ }
+ if (mediaStreamManager != null) {
+ mediaStreamManager.stopVideoCapture();
+ }
}
+ return true;
}
public void sendMutedState(boolean audioEnabled, boolean videoEnabled) {
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/CallViewModel.java b/src/main/java/org/thoughtcrime/securesms/calls/CallViewModel.java
index f1750b0e5..07d025263 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/CallViewModel.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/CallViewModel.java
@@ -46,8 +46,8 @@ public class CallViewModel extends AndroidViewModel {
private final MediatorLiveData callState;
// Observer References for one-time observe
- private Observer answerCallObserver;
- private Observer startOutgoingCallObserver;
+ private Observer answerCallObserver;
+ private Observer startOutgoingCallObserver;
private final AtomicBoolean hasCallEnded = new AtomicBoolean(false);
@@ -211,25 +211,24 @@ public class CallViewModel extends AndroidViewModel {
callCoordinator.startMediaCapture();
// Create one-time observer
- LiveData localTrack = callCoordinator.getLocalVideoTrack();
+ LiveData mediaReady = callCoordinator.getMediaCaptureReady();
answerCallObserver =
- new Observer() {
+ new Observer() {
@Override
- public void onChanged(VideoTrack videoTrack) {
- if (videoTrack != null) {
- // Media is ready, remove observer
- localTrack.removeObserver(this);
+ public void onChanged(Boolean ready) {
+ if (Boolean.TRUE.equals(ready)) {
+ mediaReady.removeObserver(this);
answerCallObserver = null;
- Log.d(TAG, "Local video ready, answering call (WebRTC)");
+ Log.d(TAG, "Media capture ready, answering call (WebRTC)");
callCoordinator.answerWebRTC();
}
}
};
- localTrack.observeForever(answerCallObserver);
+ mediaReady.observeForever(answerCallObserver);
}
/** Start outgoing call with media capture Called by Activity for outgoing calls */
@@ -244,30 +243,28 @@ public class CallViewModel extends AndroidViewModel {
callCoordinator.startMediaCapture();
// Create one-time observer
- LiveData localTrack = callCoordinator.getLocalVideoTrack();
- VideoTrack currentValue = localTrack.getValue();
+ LiveData mediaReady = callCoordinator.getMediaCaptureReady();
- if (currentValue != null) {
+ if (Boolean.TRUE.equals(mediaReady.getValue())) {
Log.d(TAG, "Media already ready, starting call immediately");
callCoordinator.startOutgoingCall();
} else {
startOutgoingCallObserver =
- new Observer() {
+ new Observer() {
@Override
- public void onChanged(VideoTrack videoTrack) {
- if (videoTrack != null) {
- // Media is ready, remove observer
- localTrack.removeObserver(this);
+ public void onChanged(Boolean ready) {
+ if (Boolean.TRUE.equals(ready)) {
+ mediaReady.removeObserver(this);
startOutgoingCallObserver = null;
- Log.d(TAG, "Local video ready, starting outgoing call");
+ Log.d(TAG, "Media capture ready, starting outgoing call");
callCoordinator.startOutgoingCall();
}
}
};
- localTrack.observeForever(startOutgoingCallObserver);
+ mediaReady.observeForever(startOutgoingCallObserver);
}
}
@@ -460,12 +457,12 @@ public class CallViewModel extends AndroidViewModel {
Log.d(TAG, "CallViewModel cleared");
if (answerCallObserver != null) {
- callCoordinator.getLocalVideoTrack().removeObserver(answerCallObserver);
+ callCoordinator.getMediaCaptureReady().removeObserver(answerCallObserver);
answerCallObserver = null;
}
if (startOutgoingCallObserver != null) {
- callCoordinator.getLocalVideoTrack().removeObserver(startOutgoingCallObserver);
+ callCoordinator.getMediaCaptureReady().removeObserver(startOutgoingCallObserver);
startOutgoingCallObserver = null;
}
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/MediaStreamManager.java b/src/main/java/org/thoughtcrime/securesms/calls/MediaStreamManager.java
index 7dd64ba92..7cb136499 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/MediaStreamManager.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/MediaStreamManager.java
@@ -29,6 +29,10 @@ public class MediaStreamManager {
private static final String AUDIO_TRACK_ID = "audio_track";
private static final String VIDEO_TRACK_ID = "video_track";
+ private static final int VIDEO_WIDTH = 1280;
+ private static final int VIDEO_HEIGHT = 720;
+ private static final int VIDEO_FPS = 30;
+
private final Context context;
private final PeerConnectionFactory peerConnectionFactory;
@@ -37,6 +41,7 @@ public class MediaStreamManager {
private AudioSource audioSource;
private SurfaceTextureHelper surfaceTextureHelper;
private volatile boolean isFrontCamera = true;
+ private volatile boolean isCapturing = false;
public interface Callback {
void onMediaStreamReady(MediaStream stream);
@@ -56,9 +61,8 @@ public class MediaStreamManager {
this.peerConnectionFactory = peerConnectionFactory;
}
- /** Create media stream with audio and optionally video */
- @RequiresApi(api = Build.VERSION_CODES.M)
- public void createMediaStream(Callback callback) {
+ /** Create a media stream with an audio track and a video track. */
+ public synchronized void createMediaStream(Callback callback) {
try {
MediaStream mediaStream = peerConnectionFactory.createLocalMediaStream(STREAM_ID);
@@ -68,24 +72,11 @@ public class MediaStreamManager {
AudioTrack audioTrack = peerConnectionFactory.createAudioTrack(AUDIO_TRACK_ID, audioSource);
mediaStream.addTrack(audioTrack);
- // Create video track
- videoCapturer = createVideoCapturer();
- if (videoCapturer == null) {
- callback.onError("No camera available");
- callback.onMediaStreamReady(mediaStream);
- return;
- }
-
- videoSource = peerConnectionFactory.createVideoSource(videoCapturer.isScreencast());
+ // Create video source and track
+ videoSource = peerConnectionFactory.createVideoSource(false);
VideoTrack videoTrack = peerConnectionFactory.createVideoTrack(VIDEO_TRACK_ID, videoSource);
mediaStream.addTrack(videoTrack);
- // Start capturing
- surfaceTextureHelper =
- SurfaceTextureHelper.create("CaptureThread", EglUtils.getEglBase().getEglBaseContext());
- videoCapturer.initialize(surfaceTextureHelper, context, videoSource.getCapturerObserver());
- videoCapturer.startCapture(1280, 720, 30);
-
callback.onMediaStreamReady(mediaStream);
} catch (Exception e) {
@@ -94,6 +85,62 @@ public class MediaStreamManager {
}
}
+ /**
+ * Open the camera and start sending frames to VideoSource.
+ *
+ * @return true if the camera is capturing, false if it could not be started
+ */
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ public synchronized boolean startVideoCapture() {
+ if (isCapturing) {
+ return true;
+ }
+
+ if (videoSource == null) {
+ Log.e(TAG, "VideoSource not initialized");
+ return false;
+ }
+
+ if (videoCapturer == null) {
+ videoCapturer = createVideoCapturer();
+ if (videoCapturer == null) {
+ Log.w(TAG, "Cannot start video capture: no camera available");
+ return false;
+ }
+
+ if (surfaceTextureHelper == null) {
+ surfaceTextureHelper =
+ SurfaceTextureHelper.create("CaptureThread", EglUtils.getEglBase().getEglBaseContext());
+ }
+
+ videoCapturer.initialize(surfaceTextureHelper, context, videoSource.getCapturerObserver());
+ }
+
+ videoCapturer.startCapture(VIDEO_WIDTH, VIDEO_HEIGHT, VIDEO_FPS);
+ isCapturing = true;
+ Log.d(TAG, "Video capture started");
+ return true;
+ }
+
+ /** Stop the camera. The capturer is kept alive. */
+ public synchronized void stopVideoCapture() {
+ if (!isCapturing) {
+ return;
+ }
+
+ if (videoCapturer != null) {
+ try {
+ videoCapturer.stopCapture();
+ Log.d(TAG, "Video capture stopped");
+ } catch (InterruptedException e) {
+ Log.e(TAG, "Interrupted while stopping capture", e);
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ isCapturing = false;
+ }
+
@Nullable
private VideoCapturer createVideoCapturer() {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
@@ -129,6 +176,14 @@ public class MediaStreamManager {
}
public void switchCamera(@Nullable CameraSwitchCallback callback) {
+ if (!isCapturing) {
+ Log.w(TAG, "Cannot switch camera while not capturing");
+ if (callback != null) {
+ callback.onError("Camera not active");
+ }
+ return;
+ }
+
if (!(videoCapturer instanceof CameraVideoCapturer)) {
Log.e(TAG, "switchCamera called but videoCapturer is not a CameraVideoCapturer");
return;
@@ -186,10 +241,12 @@ public class MediaStreamManager {
}
/** Cleanup resources */
- public void dispose() {
+ public synchronized void dispose() {
if (videoCapturer != null) {
try {
- videoCapturer.stopCapture();
+ if (isCapturing) {
+ videoCapturer.stopCapture();
+ }
} catch (InterruptedException e) {
Log.e(TAG, "Error stopping capture", e);
}
@@ -197,6 +254,8 @@ public class MediaStreamManager {
videoCapturer = null;
}
+ isCapturing = false;
+
if (surfaceTextureHelper != null) {
surfaceTextureHelper.dispose();
surfaceTextureHelper = null;
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 4466161f8..574cb802f 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -431,6 +431,7 @@
Missed callAlready in a callCall answered on another device
+ Camera permission is required for video callsMicrophone permission is required for callsCall with %1$s
From 72bd7376ca9d4f1fca6afce36cda50cc97f5fe28 Mon Sep 17 00:00:00 2001
From: wchen342
Date: Thu, 7 May 2026 12:29:27 -0400
Subject: [PATCH 12/37] Make it possible to answer incoming calls from messages
(#4415)
---
CHANGELOG.md | 1 +
.../securesms/ConversationItem.java | 13 ++-
.../securesms/calls/CallCoordinator.java | 87 ++++++++++++++-----
3 files changed, 79 insertions(+), 22 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dc7cdb3f6..0a74c0d19 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
* Better incoming call system integration
* Calls are not experimental anymore and don't need to be manually enabled
+* Calls can be answered by tapping messages
* Channels are no longer experimental and are available by default
* Display a permanent notification when doing location streaming and get rid of dangerous "Access Location in Background" permission
* Autoplay all voice messages in a chat
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
index 38cc4d13c..da451cd20 100644
--- a/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
@@ -1091,7 +1091,18 @@ public class ConversationItem extends BaseConversationItem {
if (!messageRecord.isOutgoing() && callInfo.state instanceof CallState.Alerting) {
int callId = messageRecord.getId();
CallCoordinator coordinator = CallCoordinator.getInstance(context);
- coordinator.showIncomingCallScreen(callId);
+
+ if (coordinator.hasActiveCall()) {
+ coordinator.showIncomingCallScreen(callId);
+ } else {
+ if (callInfo.sdpOffer == null) {
+ Toast.makeText(context, R.string.error, Toast.LENGTH_SHORT).show();
+ return;
+ }
+ int accId = dcContext.getAccountId();
+ coordinator.handleIncomingCallFromConversation(
+ accId, callId, callInfo.sdpOffer, callInfo.hasVideo);
+ }
} else {
if (callInfo.hasVideo) {
CallUtil.startVideoCall(getContext(), chatId);
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java b/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
index 45004eda0..9b4414ff5 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
@@ -23,6 +23,7 @@ import android.os.Looper;
import android.telecom.DisconnectCause;
import android.util.Log;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
@@ -32,6 +33,7 @@ import androidx.core.telecom.CallControlScope;
import androidx.core.telecom.CallEndpointCompat;
import androidx.core.telecom.CallException;
import androidx.core.telecom.CallsManager;
+import androidx.core.util.Pair;
import androidx.lifecycle.FlowLiveDataConversions;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MediatorLiveData;
@@ -898,32 +900,15 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
int accId, int callId, String offerSdp, boolean startsWithVideo) {
Log.d(TAG, "onIncomingCall: accId=" + accId + ", callId=" + callId);
- if (hasActiveCall()) {
- Log.w(TAG, "Already have an active call, ignoring incoming call");
- return;
- }
+ Pair result = setupIncomingCallState(accId, callId, offerSdp, startsWithVideo);
+ if (result == null) return;
- resetLiveDataForNewCall();
-
- this.activeAccId = accId;
- this.activeCallId = callId;
- this.isIncomingCall = true;
- this.startsWithVideo = startsWithVideo;
- this.pendingOfferSdp = offerSdp;
-
- // Get caller info
- DcContext dcContext = ApplicationContext.getDcAccounts().getAccount(accId);
- int chatId = dcContext.getMsg(callId).getChatId();
- this.activeChatId = chatId;
- DcChat dcChat = dcContext.getChat(chatId);
- String callerName = getNameFromChat(dcChat);
+ DcChat dcChat = result.first;
+ String callerName = result.second;
Icon callerIcon = getIconFromChat(this.appContext, dcChat);
- displayName.postValue(callerName);
displayIcon.postValue(callerIcon);
- this.preferredStartingEndpoint = getPreferredStartingEndpoint(startsWithVideo);
-
// Add to CallsManager
CallAttributesCompat callAttributes = createCallAttributes(callerName, callId, true);
addCallToTelecom(callAttributes, callerName, callerIcon);
@@ -934,6 +919,37 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
startAndBindService();
}
+ public synchronized void handleIncomingCallFromConversation(
+ int accId, int callId, String offerSdp, boolean hasVideo) {
+ Log.d(TAG, "handleIncomingCallFromConversation: accId=" + accId + ", callId=" + callId);
+
+ if (offerSdp == null || offerSdp.isEmpty()) {
+ Log.e(TAG, "Cannot start incoming call: no SDP offer");
+ return;
+ }
+
+ Pair result = setupIncomingCallState(accId, callId, offerSdp, hasVideo);
+ if (result == null) return;
+
+ DcChat dcChat = result.first;
+ String callerName = result.second;
+
+ new Thread(
+ () -> {
+ Icon callerIcon = getIconFromChat(this.appContext, dcChat);
+ displayIcon.postValue(callerIcon);
+ })
+ .start();
+
+ // Add to CallsManager
+ CallAttributesCompat callAttributes = createCallAttributes(callerName, callId, true);
+ addCallToTelecom(callAttributes, callerName, null);
+
+ startAndBindService();
+
+ launchCallActivity();
+ }
+
private synchronized void onIncomingCallAccepted(int callId, boolean fromThisDevice) {
Log.d(TAG, "onIncomingCallAccepted: callId=" + callId + ", fromThisDevice=" + fromThisDevice);
@@ -1304,6 +1320,35 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
addCallToTelecom(callAttributes, calleeName, calleeIcon);
}
+ @Nullable
+ private Pair setupIncomingCallState(
+ int accId, int callId, String offerSdp, boolean startsWithVideo) {
+ if (hasActiveCall()) {
+ Log.w(TAG, "Already have an active call, ignoring incoming call");
+ return null;
+ }
+
+ resetLiveDataForNewCall();
+
+ this.activeAccId = accId;
+ this.activeCallId = callId;
+ this.isIncomingCall = true;
+ this.startsWithVideo = startsWithVideo;
+ this.pendingOfferSdp = offerSdp;
+
+ DcContext dcContext = ApplicationContext.getDcAccounts().getAccount(accId);
+ int chatId = dcContext.getMsg(callId).getChatId();
+ this.activeChatId = chatId;
+ DcChat dcChat = dcContext.getChat(chatId);
+ String callerName = getNameFromChat(dcChat);
+
+ displayName.postValue(callerName);
+
+ this.preferredStartingEndpoint = getPreferredStartingEndpoint(startsWithVideo);
+
+ return new Pair<>(dcChat, callerName);
+ }
+
public synchronized void ensureServiceStarted() {
if (isServiceBound || !hasActiveCall()) {
return;
From e0459978f7586b3443fbcc02ac0ab80e396ac29a Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Thu, 7 May 2026 12:07:47 +0200
Subject: [PATCH 13/37] feat: use consistent colors and contrast
---
src/main/res/layout/activity_call.xml | 18 +++++++++---------
src/main/res/values/colors.xml | 11 ++++-------
2 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/src/main/res/layout/activity_call.xml b/src/main/res/layout/activity_call.xml
index c337e4edc..0e9f50390 100644
--- a/src/main/res/layout/activity_call.xml
+++ b/src/main/res/layout/activity_call.xml
@@ -242,8 +242,8 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_mic_on"
android:contentDescription="Toggle microphone"
- app:tint="@color/calls_dark_on_surface"
- app:backgroundTint="@color/calls_dark_surface_3"
+ app:tint="@color/calls_button_foreground"
+ app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Full"
app:borderWidth="0dp" />
@@ -264,8 +264,8 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_videocam_on"
android:contentDescription="Toggle camera"
- app:tint="@color/calls_dark_on_surface"
- app:backgroundTint="@color/calls_dark_surface_3"
+ app:tint="@color/calls_button_foreground"
+ app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Full"
app:borderWidth="0dp" />
@@ -286,7 +286,7 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_call_end"
android:contentDescription="End call"
- app:tint="@android:color/white"
+ app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_red"
app:fabSize="normal"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Full"
@@ -308,8 +308,8 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_volume_up"
android:contentDescription="Audio output"
- app:tint="@color/calls_dark_on_surface"
- app:backgroundTint="@color/calls_dark_surface_3"
+ app:tint="@color/calls_button_foreground"
+ app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Full"
app:borderWidth="0dp" />
@@ -330,8 +330,8 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_switch_camera"
android:contentDescription="Switch camera"
- app:tint="@color/calls_dark_on_surface"
- app:backgroundTint="@color/calls_dark_surface_3"
+ app:tint="@color/calls_button_foreground"
+ app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Full"
app:borderWidth="0dp" />
diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml
index 93cf651ae..e10174150 100644
--- a/src/main/res/values/colors.xml
+++ b/src/main/res/values/colors.xml
@@ -74,14 +74,11 @@
#eeeeee
- #1B1C1F#1B1C1F
- #23242A
- #272A31
- #2C2F37#E2E1E5#BEBFC5
- #B6C5FA
- #BA1B1B
- #4CAF50
+ #FFFFFF
+ #6B6B6B
+ #FF0017
+ #00AD00
From fccf8f402e87a94d50413989fc35628d18d725f9 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Thu, 7 May 2026 12:33:06 +0200
Subject: [PATCH 14/37] use same theme colors as in camera, editor
---
src/main/res/layout/activity_call.xml | 6 +++---
src/main/res/values/colors.xml | 3 ---
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/main/res/layout/activity_call.xml b/src/main/res/layout/activity_call.xml
index 0e9f50390..0a16163c6 100644
--- a/src/main/res/layout/activity_call.xml
+++ b/src/main/res/layout/activity_call.xml
@@ -44,7 +44,7 @@
android:paddingEnd="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
- android:background="@color/calls_dark_surface"
+ android:background="@android:color/black"
app:layout_constraintTop_toTopOf="parent">
@@ -70,7 +70,7 @@
android:id="@+id/status_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textColor="@color/calls_dark_on_surface_variant"
+ android:textColor="@android:color/white"
android:textSize="14sp"
tools:text="Connecting..." />
diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml
index e10174150..89434b558 100644
--- a/src/main/res/values/colors.xml
+++ b/src/main/res/values/colors.xml
@@ -74,9 +74,6 @@
#eeeeee
- #1B1C1F
- #E2E1E5
- #BEBFC5#FFFFFF#6B6B6B#FF0017
From 960581e5f24679a61b9c0d35e8b968c24a6235e9 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Thu, 7 May 2026 18:55:41 +0200
Subject: [PATCH 15/37] make call buttons translatable
---
src/main/res/layout/activity_call.xml | 18 +++++++++---------
src/main/res/values/strings.xml | 7 +++++++
2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/src/main/res/layout/activity_call.xml b/src/main/res/layout/activity_call.xml
index 0a16163c6..f8e797403 100644
--- a/src/main/res/layout/activity_call.xml
+++ b/src/main/res/layout/activity_call.xml
@@ -141,7 +141,7 @@
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Audio"
+ android:text="@string/audio"
android:textSize="14sp"
android:minWidth="100dp"
app:icon="@drawable/ic_call"
@@ -153,7 +153,7 @@
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Video"
+ android:text="@string/video"
android:textSize="14sp"
android:minWidth="100dp"
app:icon="@drawable/ic_videocam_on"
@@ -185,7 +185,7 @@
android:layout_height="56dp"
android:layout_weight="1"
android:layout_marginEnd="8dp"
- android:text="Decline"
+ android:text="@string/end_call"
android:textSize="15sp"
app:icon="@drawable/ic_call_end"
app:iconGravity="textStart"
@@ -199,7 +199,7 @@
android:layout_height="56dp"
android:layout_weight="1"
android:layout_marginStart="8dp"
- android:text="Answer"
+ android:text="@string/answer_call"
android:textSize="15sp"
app:icon="@drawable/ic_call"
app:iconGravity="textStart"
@@ -241,7 +241,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_mic_on"
- android:contentDescription="Toggle microphone"
+ android:contentDescription="@string/mute"
app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
@@ -263,7 +263,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_videocam_on"
- android:contentDescription="Toggle camera"
+ android:contentDescription="@string/toggle_camera"
app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
@@ -285,7 +285,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_call_end"
- android:contentDescription="End call"
+ android:contentDescription="@string/end_call2"
app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_red"
app:fabSize="normal"
@@ -307,7 +307,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_volume_up"
- android:contentDescription="Audio output"
+ android:contentDescription="@string/switch_speaker"
app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
@@ -329,7 +329,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_switch_camera"
- android:contentDescription="Switch camera"
+ android:contentDescription="@string/switch_camera"
app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 574cb802f..dfef4aa4a 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -206,7 +206,12 @@
CameraCapture
+
+ Switch Speaker
+
Switch Camera
+
+ Toggle CameraToggle Full Screen ModeLocationLocations
@@ -408,6 +413,8 @@
AnswerDecline
+
+ End CallAudio call
From d373537d6deeac1218493ce9615a7724e9e7e4c3 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Thu, 7 May 2026 19:10:02 +0200
Subject: [PATCH 16/37] avatars can be ignored by talkback, the name is in the
title
---
src/main/res/layout/activity_call.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/res/layout/activity_call.xml b/src/main/res/layout/activity_call.xml
index f8e797403..8b10e8cc4 100644
--- a/src/main/res/layout/activity_call.xml
+++ b/src/main/res/layout/activity_call.xml
@@ -24,7 +24,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
- android:contentDescription="Contact photo"
+ android:importantForAccessibility="no"
app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Full"
app:layout_constraintWidth_percent="0.4"
app:layout_constraintDimensionRatio="1:1"
@@ -115,7 +115,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
- android:contentDescription="Caller photo"
+ android:importantForAccessibility="no"
tools:src="@drawable/ic_person" />
From e6350aaec205f7a32e0b4d17f35f142371656b3a Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Fri, 8 May 2026 16:18:36 +0200
Subject: [PATCH 17/37] move requestPinShortcut to background
---
.../securesms/BaseConversationListFragment.java | 4 +++-
.../thoughtcrime/securesms/WebxdcActivity.java | 17 ++++++++++++-----
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
index 05b18c1c2..0ec891f2f 100644
--- a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
@@ -423,9 +423,11 @@ public abstract class BaseConversationListFragment extends Fragment implements A
.setIcon(IconCompat.createWithAdaptiveBitmap(avatar))
.setIntent(intent)
.build();
+ boolean success =
+ ShortcutManagerCompat.requestPinShortcut(activity, shortcutInfoCompat, null);
Util.runOnMain(
() -> {
- if (!ShortcutManagerCompat.requestPinShortcut(activity, shortcutInfoCompat, null)) {
+ if (!success) {
Toast.makeText(
activity,
"ErrAddToHomescreen: requestPinShortcut() failed",
diff --git a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
index d6f842bed..652799457 100644
--- a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
@@ -545,11 +545,18 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
.build();
Toast.makeText(context, R.string.one_moment, Toast.LENGTH_SHORT).show();
- if (!ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null)) {
- Toast.makeText(
- context, "ErrAddToHomescreen: requestPinShortcut() failed", Toast.LENGTH_LONG)
- .show();
- }
+ Util.runOnAnyBackgroundThread(
+ () -> {
+ if (!ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null)) {
+ Util.runOnMain(
+ () ->
+ Toast.makeText(
+ context,
+ "ErrAddToHomescreen: requestPinShortcut() failed",
+ Toast.LENGTH_LONG)
+ .show());
+ }
+ });
} catch (Exception e) {
Toast.makeText(context, "ErrAddToHomescreen: " + e, Toast.LENGTH_LONG).show();
}
From 975ad2e14920ea5f142b49c51024bf7115f89f24 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Fri, 8 May 2026 17:01:47 +0200
Subject: [PATCH 18/37] wrap with try-catch
---
.../securesms/BaseConversationListFragment.java | 10 ++++++++--
.../org/thoughtcrime/securesms/WebxdcActivity.java | 9 ++++++++-
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
index 0ec891f2f..30d58152f 100644
--- a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
@@ -423,8 +423,14 @@ public abstract class BaseConversationListFragment extends Fragment implements A
.setIcon(IconCompat.createWithAdaptiveBitmap(avatar))
.setIntent(intent)
.build();
- boolean success =
- ShortcutManagerCompat.requestPinShortcut(activity, shortcutInfoCompat, null);
+
+ boolean success;
+ try {
+ success = ShortcutManagerCompat.requestPinShortcut(activity, shortcutInfoCompat, null);
+ } catch (Exception e) {
+ Log.e(TAG, "ErrAddToHomescreen: requestPinShortcut() failed", e);
+ success = false;
+ }
Util.runOnMain(
() -> {
if (!success) {
diff --git a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
index 652799457..0a9391d73 100644
--- a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
@@ -547,7 +547,14 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
Toast.makeText(context, R.string.one_moment, Toast.LENGTH_SHORT).show();
Util.runOnAnyBackgroundThread(
() -> {
- if (!ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null)) {
+ boolean success;
+ try {
+ sucess = ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null);
+ } catch (Exception e) {
+ Log.e(TAG, "ErrAddToHomescreen: requestPinShortcut() failed", e);
+ success = false;
+ }
+ if (!success) {
Util.runOnMain(
() ->
Toast.makeText(
From 9ebd8e4a37ee5c7802347e2884fd1208baa6f7a0 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Fri, 8 May 2026 17:09:01 +0200
Subject: [PATCH 19/37] fix typos and other bugs
---
.../thoughtcrime/securesms/BaseConversationListFragment.java | 3 ++-
src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
index 30d58152f..887343520 100644
--- a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
@@ -431,9 +431,10 @@ public abstract class BaseConversationListFragment extends Fragment implements A
Log.e(TAG, "ErrAddToHomescreen: requestPinShortcut() failed", e);
success = false;
}
+ boolean finalSuccess = success;
Util.runOnMain(
() -> {
- if (!success) {
+ if (!finalSuccess) {
Toast.makeText(
activity,
"ErrAddToHomescreen: requestPinShortcut() failed",
diff --git a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
index 0a9391d73..959e2550a 100644
--- a/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
@@ -549,7 +549,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
() -> {
boolean success;
try {
- sucess = ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null);
+ success = ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null);
} catch (Exception e) {
Log.e(TAG, "ErrAddToHomescreen: requestPinShortcut() failed", e);
success = false;
From 54a74a8586960be1ca2e49dc574ca499fdc0862b Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Mon, 11 May 2026 17:48:19 +0200
Subject: [PATCH 20/37] migrate to ViewPager2 in MediaPreviewActivity
---
.../securesms/MediaPreviewActivity.java | 113 +++++++++---------
.../components/ControllableViewPager.java | 31 -----
.../ExtendedOnPageChangedListener.java | 22 ----
.../components/viewpager/HackyViewPager.java | 41 -------
.../res/layout/media_preview_activity.xml | 2 +-
5 files changed, 60 insertions(+), 149 deletions(-)
delete mode 100644 src/main/java/org/thoughtcrime/securesms/components/ControllableViewPager.java
delete mode 100644 src/main/java/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java
delete mode 100644 src/main/java/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java
diff --git a/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
index d9663f3c9..cec946b1d 100644
--- a/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
@@ -33,14 +33,13 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
-import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
-import androidx.viewpager.widget.PagerAdapter;
-import androidx.viewpager.widget.ViewPager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.viewpager2.widget.ViewPager2;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMediaGalleryElement;
@@ -48,7 +47,6 @@ import com.b44t.messenger.DcMsg;
import java.io.IOException;
import java.util.WeakHashMap;
import org.thoughtcrime.securesms.components.MediaView;
-import org.thoughtcrime.securesms.components.viewpager.ExtendedOnPageChangedListener;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.database.loaders.PagingMediaLoader;
@@ -88,7 +86,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
@Nullable private DcMsg messageRecord;
private DcContext dcContext;
private MediaItem initialMedia;
- private ViewPager mediaPager;
+ private ViewPager2 mediaPager;
private Recipient conversationRecipient;
private boolean leftIsRecent;
@@ -190,7 +188,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
private void initializeViews() {
mediaPager = findViewById(R.id.media_pager);
mediaPager.setOffscreenPageLimit(1);
- mediaPager.addOnPageChangeListener(new ViewPagerListener());
+ mediaPager.registerOnPageChangeCallback(new ViewPagerListener());
}
private void initializeResources() {
@@ -260,10 +258,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
private int cleanupMedia() {
int restartItem = mediaPager.getCurrentItem();
-
- mediaPager.removeAllViews();
mediaPager.setAdapter(null);
-
return restartItem;
}
@@ -483,22 +478,25 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
@SuppressWarnings("ConstantConditions")
DcMediaPagerAdapter adapter =
new DcMediaPagerAdapter(this, GlideApp.with(this), getWindow(), data, leftIsRecent);
- mediaPager.setAdapter(adapter);
adapter.setActive(true);
+ mediaPager.setAdapter(adapter);
- if (restartItem < 0) mediaPager.setCurrentItem(data.getPosition());
- else mediaPager.setCurrentItem(restartItem);
+ if (restartItem < 0) mediaPager.setCurrentItem(data.getPosition(), false);
+ else mediaPager.setCurrentItem(restartItem, false);
}
}
@Override
public void onLoaderReset(Loader loader) {}
- private class ViewPagerListener extends ExtendedOnPageChangedListener {
+ private class ViewPagerListener extends ViewPager2.OnPageChangeCallback {
+
+ private Integer currentPage = null;
@Override
public void onPageSelected(int position) {
- super.onPageSelected(position);
+ if (currentPage != null && currentPage != position) onPageUnselected(currentPage);
+ currentPage = position;
MediaItemAdapter adapter = (MediaItemAdapter) mediaPager.getAdapter();
@@ -510,8 +508,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
}
- @Override
- public void onPageUnselected(int position) {
+ private void onPageUnselected(int position) {
MediaItemAdapter adapter = (MediaItemAdapter) mediaPager.getAdapter();
if (adapter != null) {
@@ -526,7 +523,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
}
- private static class SingleItemPagerAdapter extends PagerAdapter implements MediaItemAdapter {
+ private static class SingleItemPagerAdapter extends RecyclerView.Adapter implements MediaItemAdapter {
private final GlideRequests glideRequests;
private final Window window;
@@ -555,37 +552,29 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
@Override
- public int getCount() {
+ public int getItemCount() {
return 1;
}
+ @NonNull
@Override
- public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
- return view == object;
+ public MediaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new MediaViewHolder(inflater.inflate(R.layout.media_view_page, parent, false));
}
@Override
- public @NonNull Object instantiateItem(@NonNull ViewGroup container, int position) {
- View itemView = inflater.inflate(R.layout.media_view_page, container, false);
- MediaView mediaView = itemView.findViewById(R.id.media_view);
-
+ public void onBindViewHolder(@NonNull MediaViewHolder holder, int position) {
try {
- mediaView.set(glideRequests, window, uri, name, mediaType, size, true);
+ holder.mediaView.set(glideRequests, window, uri, name, mediaType, size, true);
} catch (IOException e) {
Log.w(TAG, e);
}
-
- container.addView(itemView);
-
- return itemView;
}
@Override
- public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
- MediaView mediaView = ((FrameLayout) object).findViewById(R.id.media_view);
- mediaView.cleanup();
-
- container.removeView((FrameLayout) object);
+ public void onViewRecycled(@NonNull MediaViewHolder holder) {
+ super.onViewRecycled(holder);
+ holder.mediaView.cleanup();
}
@Override
@@ -595,9 +584,18 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
@Override
public void pause(int position) {}
+
+ static class MediaViewHolder extends RecyclerView.ViewHolder {
+ final MediaView mediaView;
+
+ MediaViewHolder(@NonNull View itemView) {
+ super(itemView);
+ mediaView = itemView.findViewById(R.id.media_view);
+ }
+ }
}
- private static class DcMediaPagerAdapter extends PagerAdapter implements MediaItemAdapter {
+ private static class DcMediaPagerAdapter extends RecyclerView.Adapter implements MediaItemAdapter {
private final WeakHashMap mediaViews = new WeakHashMap<>();
@@ -630,21 +628,21 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
@Override
- public int getCount() {
+ public int getItemCount() {
if (!active) return 0;
else return gallery.getCount();
}
+ @NonNull
@Override
- public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
- return view == object;
+ public MediaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView =
+ LayoutInflater.from(context).inflate(R.layout.media_view_page, parent, false);
+ return new MediaViewHolder(itemView);
}
@Override
- public @NonNull Object instantiateItem(@NonNull ViewGroup container, int position) {
- View itemView =
- LayoutInflater.from(context).inflate(R.layout.media_view_page, container, false);
- MediaView mediaView = itemView.findViewById(R.id.media_view);
+ public void onBindViewHolder(@NonNull MediaViewHolder holder, int position) {
boolean autoplay = position == autoPlayPosition;
int cursorPosition = getCursorPosition(position);
@@ -656,7 +654,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
try {
//noinspection ConstantConditions
- mediaView.set(
+ holder.mediaView.set(
glideRequests,
window,
Uri.fromFile(msg.getFileAsFile()),
@@ -668,19 +666,17 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
Log.w(TAG, e);
}
- mediaViews.put(position, mediaView);
- container.addView(itemView);
-
- return itemView;
+ mediaViews.put(position, holder.mediaView);
}
@Override
- public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
- MediaView mediaView = ((FrameLayout) object).findViewById(R.id.media_view);
- mediaView.cleanup();
-
- mediaViews.remove(position);
- container.removeView((FrameLayout) object);
+ public void onViewRecycled(@NonNull MediaViewHolder holder) {
+ super.onViewRecycled(holder);
+ int pos = holder.getBindingAdapterPosition();
+ if (pos != RecyclerView.NO_POSITION) {
+ mediaViews.remove(pos);
+ }
+ holder.mediaView.cleanup();
}
public MediaItem getMediaItemFor(int position) {
@@ -710,6 +706,15 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
if (leftIsRecent) return position;
else return gallery.getCount() - 1 - position;
}
+
+ static class MediaViewHolder extends RecyclerView.ViewHolder {
+ final MediaView mediaView;
+
+ MediaViewHolder(@NonNull View itemView) {
+ super(itemView);
+ mediaView = itemView.findViewById(R.id.media_view);
+ }
+ }
}
private static class MediaItem {
@@ -742,7 +747,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
}
- interface MediaItemAdapter {
+ private interface MediaItemAdapter {
MediaItem getMediaItemFor(int position);
void pause(int position);
diff --git a/src/main/java/org/thoughtcrime/securesms/components/ControllableViewPager.java b/src/main/java/org/thoughtcrime/securesms/components/ControllableViewPager.java
deleted file mode 100644
index be7cb48ac..000000000
--- a/src/main/java/org/thoughtcrime/securesms/components/ControllableViewPager.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.thoughtcrime.securesms.components;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.viewpager.widget.ViewPager;
-import org.thoughtcrime.securesms.components.viewpager.HackyViewPager;
-
-/** An implementation of {@link ViewPager} that disables swiping when the view is disabled. */
-public class ControllableViewPager extends HackyViewPager {
-
- public ControllableViewPager(@NonNull Context context) {
- super(context);
- }
-
- public ControllableViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- return isEnabled() && super.onTouchEvent(ev);
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- return isEnabled() && super.onInterceptTouchEvent(ev);
- }
-}
diff --git a/src/main/java/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java b/src/main/java/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java
deleted file mode 100644
index 8c7222047..000000000
--- a/src/main/java/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.thoughtcrime.securesms.components.viewpager;
-
-import androidx.viewpager.widget.ViewPager;
-
-public abstract class ExtendedOnPageChangedListener implements ViewPager.OnPageChangeListener {
-
- private Integer currentPage = null;
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
-
- @Override
- public void onPageSelected(int position) {
- if (currentPage != null && currentPage != position) onPageUnselected(currentPage);
- currentPage = position;
- }
-
- public abstract void onPageUnselected(int position);
-
- @Override
- public void onPageScrollStateChanged(int state) {}
-}
diff --git a/src/main/java/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java b/src/main/java/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java
deleted file mode 100644
index 4d0504728..000000000
--- a/src/main/java/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.thoughtcrime.securesms.components.viewpager;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.MotionEvent;
-import androidx.viewpager.widget.ViewPager;
-
-/**
- * Hacky fix for http://code.google.com/p/android/issues/detail?id=18990
- *
- *
ScaleGestureDetector seems to mess up the touch events, which means that ViewGroups which make
- * use of onInterceptTouchEvent throw a lot of IllegalArgumentException: pointerIndex out of range.
- *
- *
There's not much I can do in my code for now, but we can mask the result by just catching the
- * problem and ignoring it.
- *
- * @author Chris Banes
- */
-public class HackyViewPager extends ViewPager {
-
- private static final String TAG = "HackyViewPager";
-
- public HackyViewPager(Context context) {
- super(context);
- }
-
- public HackyViewPager(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- try {
- return super.onInterceptTouchEvent(ev);
- } catch (IllegalArgumentException e) {
- Log.w(TAG, e);
- return false;
- }
- }
-}
diff --git a/src/main/res/layout/media_preview_activity.xml b/src/main/res/layout/media_preview_activity.xml
index e3c79688b..b0f50199f 100644
--- a/src/main/res/layout/media_preview_activity.xml
+++ b/src/main/res/layout/media_preview_activity.xml
@@ -7,7 +7,7 @@
android:fitsSystemWindows="true"
android:background="@color/gray95">
-
From b58a9d0bab502a42f7bc3a60664e81978a7def10 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Mon, 11 May 2026 17:58:47 +0200
Subject: [PATCH 21/37] apply spotless
---
.../thoughtcrime/securesms/MediaPreviewActivity.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
index cec946b1d..67aba164d 100644
--- a/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
@@ -523,7 +523,9 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
}
- private static class SingleItemPagerAdapter extends RecyclerView.Adapter implements MediaItemAdapter {
+ private static class SingleItemPagerAdapter
+ extends RecyclerView.Adapter
+ implements MediaItemAdapter {
private final GlideRequests glideRequests;
private final Window window;
@@ -595,7 +597,9 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
}
}
- private static class DcMediaPagerAdapter extends RecyclerView.Adapter implements MediaItemAdapter {
+ private static class DcMediaPagerAdapter
+ extends RecyclerView.Adapter
+ implements MediaItemAdapter {
private final WeakHashMap mediaViews = new WeakHashMap<>();
@@ -636,8 +640,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
@NonNull
@Override
public MediaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View itemView =
- LayoutInflater.from(context).inflate(R.layout.media_view_page, parent, false);
+ View itemView = LayoutInflater.from(context).inflate(R.layout.media_view_page, parent, false);
return new MediaViewHolder(itemView);
}
From 0aad1b3d76d1c0c97de3dd7178d50f83bf8e5a7c Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Mon, 11 May 2026 22:34:07 +0200
Subject: [PATCH 22/37] migrate QrActivity to ViewPager2
---
.../thoughtcrime/securesms/qr/QrActivity.java | 71 ++++++-------------
src/main/res/layout/activity_qr.xml | 2 +-
2 files changed, 23 insertions(+), 50 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
index cf01d5aed..503ecc8eb 100644
--- a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
@@ -15,10 +15,11 @@ import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentStatePagerAdapter;
-import androidx.viewpager.widget.ViewPager;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
@@ -48,7 +49,7 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
private static final int TAB_SCAN = 1;
private TabLayout tabLayout;
- private ViewPager viewPager;
+ private ViewPager2 viewPager;
private QrShowFragment qrShowFragment;
private boolean scanRelay;
@@ -68,7 +69,7 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
qrShowFragment = new QrShowFragment(this);
tabLayout = ViewUtil.findById(this, R.id.tab_layout);
viewPager = ViewUtil.findById(this, R.id.pager);
- ProfilePagerAdapter adapter = new ProfilePagerAdapter(this, getSupportFragmentManager());
+ ProfilePagerAdapter adapter = new ProfilePagerAdapter(this);
viewPager.setAdapter(adapter);
setSupportActionBar(ViewUtil.findById(this, R.id.toolbar));
@@ -76,29 +77,24 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
getSupportActionBar().setTitle(scanRelay ? R.string.add_transport : R.string.menu_new_contact);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- viewPager.setCurrentItem(scanRelay ? TAB_SCAN : TAB_SHOW);
+ viewPager.setCurrentItem(scanRelay ? TAB_SCAN : TAB_SHOW, false);
if (scanRelay) tabLayout.setVisibility(View.GONE);
- viewPager.addOnPageChangeListener(
- new ViewPager.OnPageChangeListener() {
- @Override
- public void onPageScrolled(
- int position, float positionOffset, int positionOffsetPixels) {}
-
+ viewPager.registerOnPageChangeCallback(
+ new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
QrActivity.this.invalidateOptionsMenu();
checkPermissions(position, adapter, viewPager);
}
-
- @Override
- public void onPageScrollStateChanged(int state) {}
});
- tabLayout.setupWithViewPager(viewPager);
+ new TabLayoutMediator(
+ tabLayout, viewPager, (tab, position) -> tab.setText(adapter.getPageTitle(position)))
+ .attach();
}
- private void checkPermissions(int position, ProfilePagerAdapter adapter, ViewPager viewPager) {
+ private void checkPermissions(int position, ProfilePagerAdapter adapter, ViewPager2 viewPager) {
if (position == TAB_SCAN) {
Permissions.with(QrActivity.this)
.request(Manifest.permission.CAMERA)
@@ -106,7 +102,7 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
.withPermanentDenialDialog(getString(R.string.perm_explain_access_to_camera_denied))
.onAllGranted(
() ->
- ((QrScanFragment) adapter.getItem(TAB_SCAN))
+ ((QrScanFragment) adapter.createFragment(TAB_SCAN))
.handleQrScanWithPermissions(QrActivity.this))
.onAnyDenied(
() -> {
@@ -228,47 +224,24 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
viewPager.setCurrentItem(TAB_SCAN);
}
- private class ProfilePagerAdapter extends FragmentStatePagerAdapter {
-
- private final QrActivity activity;
-
- ProfilePagerAdapter(QrActivity activity, FragmentManager fragmentManager) {
- super(fragmentManager, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
- this.activity = activity;
+ private class ProfilePagerAdapter extends FragmentStateAdapter {
+ ProfilePagerAdapter(FragmentActivity activity) {
+ super(activity);
}
@NonNull
@Override
- public Fragment getItem(int position) {
- Fragment fragment;
-
- switch (position) {
- case TAB_SHOW:
- fragment = activity.qrShowFragment;
- break;
-
- default:
- fragment = new QrScanFragment();
- break;
- }
-
- return fragment;
+ public Fragment createFragment(int position) {
+ return position == TAB_SHOW ? qrShowFragment : new QrScanFragment();
}
@Override
- public int getCount() {
+ public int getItemCount() {
return 2;
}
- @Override
- public CharSequence getPageTitle(int position) {
- switch (position) {
- case TAB_SHOW:
- return getString(R.string.qrshow_title);
-
- default:
- return getString(R.string.qrscan_title);
- }
+ private CharSequence getPageTitle(int position) {
+ return getString(position == TAB_SHOW ? R.string.qrshow_title : R.string.qrscan_title);
}
}
}
diff --git a/src/main/res/layout/activity_qr.xml b/src/main/res/layout/activity_qr.xml
index e62a9e388..d8f0f21a8 100644
--- a/src/main/res/layout/activity_qr.xml
+++ b/src/main/res/layout/activity_qr.xml
@@ -37,7 +37,7 @@
-
Date: Mon, 11 May 2026 23:43:17 +0200
Subject: [PATCH 23/37] migrate AllMediaActivity to ViewPager2
---
.../securesms/AllMediaActivity.java | 71 ++++++++++---------
src/main/res/layout/all_media_activity.xml | 2 +-
2 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/AllMediaActivity.java b/src/main/java/org/thoughtcrime/securesms/AllMediaActivity.java
index d7a824f27..b7f8df237 100644
--- a/src/main/java/org/thoughtcrime/securesms/AllMediaActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/AllMediaActivity.java
@@ -4,7 +4,6 @@ import android.content.ComponentName;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
-import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
@@ -12,18 +11,19 @@ import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.session.MediaController;
import androidx.media3.session.SessionCommand;
import androidx.media3.session.SessionToken;
-import androidx.viewpager.widget.ViewPager;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.ArrayList;
import org.thoughtcrime.securesms.components.audioplay.AudioPlaybackViewModel;
@@ -55,7 +55,6 @@ public class AllMediaActivity extends PassphraseRequiredActionBarActivity
this.type3 = type3;
}
}
- ;
private DcContext dcContext;
private int chatId;
@@ -64,7 +63,7 @@ public class AllMediaActivity extends PassphraseRequiredActionBarActivity
private final ArrayList tabs = new ArrayList<>();
private Toolbar toolbar;
private TabLayout tabLayout;
- private ViewPager viewPager;
+ private ViewPager2 viewPager;
private @Nullable MediaController mediaController;
private ListenableFuture mediaControllerFuture;
@@ -98,8 +97,20 @@ public class AllMediaActivity extends PassphraseRequiredActionBarActivity
isGlobalGallery() ? R.string.menu_all_media : R.string.apps_and_media);
}
- this.tabLayout.setupWithViewPager(viewPager);
- this.viewPager.setAdapter(new AllMediaPagerAdapter(getSupportFragmentManager()));
+ AllMediaPagerAdapter adapter = new AllMediaPagerAdapter(this);
+ this.viewPager.setAdapter(adapter);
+ this.viewPager.registerOnPageChangeCallback(
+ new ViewPager2.OnPageChangeCallback() {
+ @Override
+ public void onPageSelected(int position) {
+ adapter.onPageChanged(position);
+ }
+ });
+ new TabLayoutMediator(
+ this.tabLayout,
+ this.viewPager,
+ (tab, position) -> tab.setText(getString(tabs.get(position).title)))
+ .attach();
if (getIntent().getBooleanExtra(FORCE_GALLERY, false)) {
this.viewPager.setCurrentItem(1, false);
}
@@ -186,31 +197,16 @@ public class AllMediaActivity extends PassphraseRequiredActionBarActivity
return contactId == 0 && chatId == 0;
}
- private class AllMediaPagerAdapter extends FragmentStatePagerAdapter {
- private Object currentFragment = null;
+ private class AllMediaPagerAdapter extends FragmentStateAdapter {
+ private int currentPosition = -1;
- AllMediaPagerAdapter(FragmentManager fragmentManager) {
- super(fragmentManager);
- }
-
- @Override
- public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
- super.setPrimaryItem(container, position, object);
- if (currentFragment != null && currentFragment != object) {
- ActionMode action = null;
- if (currentFragment instanceof MessageSelectorFragment) {
- action = ((MessageSelectorFragment) currentFragment).getActionMode();
- }
- if (action != null) {
- action.finish();
- }
- }
- currentFragment = object;
+ AllMediaPagerAdapter(FragmentActivity activity) {
+ super(activity);
}
@NonNull
@Override
- public Fragment getItem(int position) {
+ public Fragment createFragment(int position) {
TabData data = tabs.get(position);
Fragment fragment;
Bundle args = new Bundle();
@@ -233,13 +229,24 @@ public class AllMediaActivity extends PassphraseRequiredActionBarActivity
}
@Override
- public int getCount() {
+ public int getItemCount() {
return tabs.size();
}
- @Override
- public CharSequence getPageTitle(int position) {
- return getString(tabs.get(position).title);
+ private void onPageChanged(int newPosition) {
+ if (currentPosition != -1 && currentPosition != newPosition) {
+ for (Fragment fragment : getSupportFragmentManager().getFragments()) {
+ if (!(fragment instanceof MessageSelectorFragment)) {
+ continue;
+ }
+
+ ActionMode action = ((MessageSelectorFragment) fragment).getActionMode();
+ if (action != null) {
+ action.finish();
+ }
+ }
+ }
+ currentPosition = newPosition;
}
}
diff --git a/src/main/res/layout/all_media_activity.xml b/src/main/res/layout/all_media_activity.xml
index 3cda7eb89..ac4d31424 100644
--- a/src/main/res/layout/all_media_activity.xml
+++ b/src/main/res/layout/all_media_activity.xml
@@ -37,7 +37,7 @@
-
Date: Mon, 11 May 2026 23:52:12 +0200
Subject: [PATCH 24/37] update changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0a74c0d19..78aad04c8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@
* Allow to open map if user clicks "Location streaming enabled" system message
* Allow to disable incoming calls notifications
* Fix: do not accidentally set draft in chats that don't allow sending messages
+* Fix swipe navigation between tabs in RTL languages
## v2.49.0
2026-04
From 43654fdadb5d7ecb0c5f1f53fd6137e594da9ce5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?bi=C3=B6rn?=
Date: Tue, 12 May 2026 15:00:42 +0200
Subject: [PATCH 25/37] feat: tweak forward confirmation (#4427)
* cleanup: remove dead code
the special handling of single-chats was to show the email address in the past,
it was introduced at https://github.com/deltachat/deltachat-android/pull/1049 .
as we do no longer show the email address, this superfluous code now.
* feat: show impact of forwarding in confirmation dialog
* feat: show 'Forward' verb on button
* apply spotless
---
.../securesms/ConversationActivity.java | 18 +++++++-----------
.../thoughtcrime/securesms/util/ShareUtil.java | 6 +-----
src/main/res/values/strings.xml | 6 ++++++
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
index e3b902dc3..384add495 100644
--- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
@@ -198,7 +198,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private final boolean isSecureText = true;
private boolean isDefaultSms = true;
private boolean isSecurityInitialized = false;
- private boolean successfulForwardingAttempt = false;
private boolean isEditing = false;
private boolean switchedProfile = false;
@@ -844,20 +843,17 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (dcChat.isSelfTalk()) {
SendRelayedMessageUtil.immediatelyRelay(this, chatId);
} else {
- String name = dcChat.getName();
- if (!dcChat.isMultiUser()) {
- int[] contactIds = dcContext.getChatContacts(chatId);
- if (contactIds.length == 1 || contactIds.length == 2) {
- name = dcContext.getContact(contactIds[0]).getDisplayName();
- }
- }
+ int messageIds[] = ShareUtil.getForwardedMessageIDs(this);
+ int messageCount = messageIds == null ? 0 : messageIds.length;
new AlertDialog.Builder(this)
- .setMessage(getString(R.string.ask_forward, name))
+ .setMessage(
+ getResources()
+ .getQuantityString(
+ R.plurals.ask_forward_messages, messageCount, messageCount, dcChat.getName()))
.setPositiveButton(
- R.string.ok,
+ R.string.forward,
(dialogInterface, i) -> {
SendRelayedMessageUtil.immediatelyRelay(this, chatId);
- successfulForwardingAttempt = true;
})
.setNegativeButton(R.string.cancel, (dialogInterface, i) -> finish())
.setOnCancelListener(dialog -> finish())
diff --git a/src/main/java/org/thoughtcrime/securesms/util/ShareUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ShareUtil.java
index 68b01881f..b2af4fd42 100644
--- a/src/main/java/org/thoughtcrime/securesms/util/ShareUtil.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/ShareUtil.java
@@ -66,7 +66,7 @@ public class ShareUtil {
}
}
- static int[] getForwardedMessageIDs(Activity activity) {
+ public static int[] getForwardedMessageIDs(Activity activity) {
try {
return activity.getIntent().getIntArrayExtra(FORWARDED_MESSAGE_IDS);
} catch (NullPointerException npe) {
@@ -174,8 +174,4 @@ public class ShareUtil {
public static void setSharedTitle(Intent composeIntent, String text) {
composeIntent.putExtra(SHARED_TITLE, text);
}
-
- public static void setDirectSharing(Intent composeIntent, int chatId) {
- composeIntent.putExtra(DIRECT_SHARING_CHAT_ID, chatId);
- }
}
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index dfef4aa4a..c91207711 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -458,6 +458,12 @@
Delete %d message?Delete %d messages?
+
+
+ Forward message to %2$s?
+ Forward %1$d messages to %2$s?
+
+
Forward messages to %1$s?Forward messages to %1$d chats?Exporting attachments will allow other apps on your device to access them.\n\nContinue?
From be07043b474c8a73679a696f149658b5b904f217 Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Tue, 12 May 2026 15:09:10 +0200
Subject: [PATCH 26/37] prefer 'audio' over 'switch speaker', which is more
correct, others are using that as well, and the translations are there
already
---
src/main/res/layout/activity_call.xml | 2 +-
src/main/res/values/strings.xml | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/main/res/layout/activity_call.xml b/src/main/res/layout/activity_call.xml
index 8b10e8cc4..e55c1dfee 100644
--- a/src/main/res/layout/activity_call.xml
+++ b/src/main/res/layout/activity_call.xml
@@ -307,7 +307,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_volume_up"
- android:contentDescription="@string/switch_speaker"
+ android:contentDescription="@string/audio"
app:tint="@color/calls_button_foreground"
app:backgroundTint="@color/calls_button_background"
app:fabSize="normal"
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index c91207711..e349fb327 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -206,8 +206,6 @@
CameraCapture
-
- Switch SpeakerSwitch Camera
From d55ad1f32adf556059d19439675da9591fda4e28 Mon Sep 17 00:00:00 2001
From: wchen342
Date: Wed, 13 May 2026 10:04:03 -0400
Subject: [PATCH 27/37] Call: Add notice when offline (#4425)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Call: Add notice when offline
Co-authored-by: biörn
---
CHANGELOG.md | 1 +
.../securesms/ConversationActivity.java | 4 +-
.../securesms/calls/CallUtil.java | 43 ++++++++++++++++++-
src/main/res/values/strings.xml | 1 +
4 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0a74c0d19..73ea5973a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
* Better incoming call system integration
* Calls are not experimental anymore and don't need to be manually enabled
* Calls can be answered by tapping messages
+* Notify the user when they try to make a call while the device is offline
* Channels are no longer experimental and are available by default
* Display a permanent notification when doing location streaming and get rid of dangerous "Access Location in Background" permission
* Autoplay all voice messages in a chat
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
index 384add495..5746bcb06 100644
--- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
@@ -633,12 +633,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
return true;
} else if (itemId == R.id.menu_start_audio_call) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- CallUtil.startAudioCall(context, chatId);
+ CallUtil.startAudioCall(this, chatId);
}
return true;
} else if (itemId == R.id.menu_start_video_call) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- CallUtil.startVideoCall(context, chatId);
+ CallUtil.startVideoCall(this, chatId);
}
return true;
} else if (itemId == R.id.menu_all_media) {
diff --git a/src/main/java/org/thoughtcrime/securesms/calls/CallUtil.java b/src/main/java/org/thoughtcrime/securesms/calls/CallUtil.java
index 91d3018e5..fe5a57c72 100644
--- a/src/main/java/org/thoughtcrime/securesms/calls/CallUtil.java
+++ b/src/main/java/org/thoughtcrime/securesms/calls/CallUtil.java
@@ -5,13 +5,18 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
import android.os.Build;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.AlertDialog;
import androidx.core.telecom.CallEndpointCompat;
import com.b44t.messenger.DcChat;
+import com.b44t.messenger.DcContext;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
@@ -52,8 +57,22 @@ public class CallUtil {
return;
}
- int accId = DcHelper.getContext(context).getAccountId();
- coordinator.initiateOutgoingCall(accId, chatId, startsWithVideo);
+ Runnable proceedWithCall =
+ () -> {
+ int accId = DcHelper.getContext(context).getAccountId();
+ coordinator.initiateOutgoingCall(accId, chatId, startsWithVideo);
+ };
+
+ if (!isNetworkAvailable(context)) {
+ new AlertDialog.Builder(context)
+ .setMessage(context.getString(R.string.call_requires_connection))
+ .setPositiveButton(R.string.perm_continue, (dialog, which) -> proceedWithCall.run())
+ .setNegativeButton(android.R.string.cancel, null)
+ .show();
+ return;
+ }
+
+ proceedWithCall.run();
}
@Nullable
@@ -138,4 +157,24 @@ public class CallUtil {
}
return iconRes;
}
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ private static boolean isNetworkAvailable(Context context) {
+ ConnectivityManager manager =
+ (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (manager == null) return true;
+
+ boolean networkAvailable = false;
+ Network network = manager.getActiveNetwork();
+ if (network != null) {
+ NetworkCapabilities caps = manager.getNetworkCapabilities(network);
+ networkAvailable =
+ caps != null && caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ }
+
+ boolean serverConnected =
+ DcHelper.getContext(context).getConnectivity() >= DcContext.DC_CONNECTIVITY_WORKING;
+
+ return networkAvailable || serverConnected;
+ }
}
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index e349fb327..e0fc8978d 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -438,6 +438,7 @@
Call answered on another deviceCamera permission is required for video callsMicrophone permission is required for calls
+ Cannot start call. Make sure your device has an internet connection and try again.Call with %1$s
From 267caf9b0333a4d04ef896d74b6bc19ddf4d4b70 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Wed, 13 May 2026 18:59:34 +0200
Subject: [PATCH 28/37] create a new QrShowFragment every time
---
src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
index 503ecc8eb..8eadea34f 100644
--- a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
@@ -232,7 +232,11 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
@NonNull
@Override
public Fragment createFragment(int position) {
- return position == TAB_SHOW ? qrShowFragment : new QrScanFragment();
+ if (position == TAB_SHOW) {
+ qrShowFragment = new QrShowFragment(this);
+ return qrShowFragment;
+ }
+ return new QrScanFragment();
}
@Override
From fcffe3922a79f743e52ad382d8966636ef4d9398 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Wed, 13 May 2026 19:17:00 +0200
Subject: [PATCH 29/37] fix createFragment
---
src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
index 8eadea34f..350c3bfe8 100644
--- a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
@@ -233,7 +233,7 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis
@Override
public Fragment createFragment(int position) {
if (position == TAB_SHOW) {
- qrShowFragment = new QrShowFragment(this);
+ qrShowFragment = new QrShowFragment(QrActivity.this);
return qrShowFragment;
}
return new QrScanFragment();
From 2f5619141e1984841d8f1b523e2e9f195dfc5dec Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Wed, 13 May 2026 22:40:47 +0200
Subject: [PATCH 30/37] update changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71976fca2..05381ea94 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@
* Allow to disable incoming calls notifications
* Fix: do not accidentally set draft in chats that don't allow sending messages
* Fix swipe navigation between tabs in RTL languages
+* Remove legacy option
## v2.49.0
2026-04
From 3880da8a0866024435600bd367889c36d595d56e Mon Sep 17 00:00:00 2001
From: "B. Petersen"
Date: Fri, 15 May 2026 12:35:47 +0200
Subject: [PATCH 31/37] chore: "not supported by provider" is deprecated
the string will be removed at https://github.com/chatmail/core/pull/8247
---
src/main/res/values/strings.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index e0fc8978d..44070ea7e 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -636,6 +636,7 @@
ConnectedSending…Last message sent successfully.
+
Not supported by your provider.Messages
From 4d9f8dd2446598146fb5322ac6dd412ac74bec27 Mon Sep 17 00:00:00 2001
From: wchen342
Date: Fri, 15 May 2026 11:42:18 -0400
Subject: [PATCH 32/37] Update pinned commits; Remove separate PR comment
workflow (#4434)
---
.github/workflows/artifacts.yml | 26 --------------------------
.github/workflows/cache-core.yml | 4 ++--
.github/workflows/code-format.yml | 16 +++++++++++++---
.github/workflows/preview-apk.yml | 29 ++++++++++++++++++++++++-----
.github/workflows/zizmor-scan.yml | 2 +-
5 files changed, 40 insertions(+), 37 deletions(-)
delete mode 100644 .github/workflows/artifacts.yml
diff --git a/.github/workflows/artifacts.yml b/.github/workflows/artifacts.yml
deleted file mode 100644
index f0b819ed8..000000000
--- a/.github/workflows/artifacts.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: add artifact links to pull request
-on:
- workflow_run:
- workflows: ["Upload Preview APK"]
- types: [completed]
-
-permissions: {}
-
-jobs:
- artifacts-url-comments:
- name: add artifact links to pull request
- permissions:
- pull-requests: write
- actions: read
- contents: read
- runs-on: ubuntu-latest
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
- steps:
- - name: add artifact links to pull request
- uses: tonyhallett/artifacts-url-comments@0965ff1a7ae03c5c1644d3c30f956effea4e05ef # v1.1.0
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- prefix: "**To test the changes in this pull request, install this apk:**"
- format: "[📦 {name}]({url})"
- addTo: pull
diff --git a/.github/workflows/cache-core.yml b/.github/workflows/cache-core.yml
index 8db29fcf9..7c7b20df7 100644
--- a/.github/workflows/cache-core.yml
+++ b/.github/workflows/cache-core.yml
@@ -16,7 +16,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive
persist-credentials: false
@@ -37,7 +37,7 @@ jobs:
- name: Cache compiled core
id: cache-core
- uses: actions/cache@v4
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
jni/arm64-v8a
diff --git a/.github/workflows/code-format.yml b/.github/workflows/code-format.yml
index 2eb46e769..c5ef11cd1 100644
--- a/.github/workflows/code-format.yml
+++ b/.github/workflows/code-format.yml
@@ -18,14 +18,16 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- - uses: actions/setup-java@v5
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 17
distribution: temurin
- - uses: actions/cache@v4
+ - name: Restore Gradle cache
+ id: gradle-cache
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
~/.gradle/caches
@@ -37,3 +39,11 @@ jobs:
uses: gradle/actions/wrapper-validation@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Check formatting
run: ./gradlew spotlessCheck
+ - name: Save Gradle cache
+ if: github.event_name == 'push' && steps.gradle-cache.outputs.cache-hit != 'true'
+ uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
diff --git a/.github/workflows/preview-apk.yml b/.github/workflows/preview-apk.yml
index 7dd8fe178..7ff63fc93 100644
--- a/.github/workflows/preview-apk.yml
+++ b/.github/workflows/preview-apk.yml
@@ -11,19 +11,23 @@ permissions: {}
jobs:
build:
name: Upload Preview APK
+ if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive
persist-credentials: false
- - uses: actions/setup-java@v5
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 17
distribution: 'temurin'
- - uses: actions/cache@v4
+ - uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
~/.gradle/caches
@@ -51,7 +55,7 @@ jobs:
- name: Restore compiled core
id: core-cache
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
jni/arm64-v8a
@@ -70,7 +74,22 @@ jobs:
run: ./gradlew --no-daemon -PABI_FILTER=arm64-v8a assembleGplayDebug
- name: Upload APK
- uses: actions/upload-artifact@v4
+ id: upload
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: app-preview.apk
path: 'build/outputs/apk/gplay/debug/*.apk'
+
+ - name: Add artifact links to PR
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
+ env:
+ ARTIFACT_URL: ${{ steps.upload.outputs.artifact-url }}
+ with:
+ script: |
+ const url = process.env.ARTIFACT_URL;
+ await github.rest.issues.createComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: context.issue.number,
+ body: `**To test the changes in this pull request, install this apk:**\n\n[📦 app-preview.apk](${url})`,
+ });
diff --git a/.github/workflows/zizmor-scan.yml b/.github/workflows/zizmor-scan.yml
index af97e663b..8811efe96 100644
--- a/.github/workflows/zizmor-scan.yml
+++ b/.github/workflows/zizmor-scan.yml
@@ -18,7 +18,7 @@ jobs:
actions: read
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
From 55649b0c4b69cff265d75d30a1377b140d3bb7cb Mon Sep 17 00:00:00 2001
From: wchen342
Date: Fri, 15 May 2026 12:10:32 -0400
Subject: [PATCH 33/37] Parse invitation link from search (#4432)
---
CHANGELOG.md | 1 +
.../securesms/ConversationListActivity.java | 7 ++
.../securesms/ConversationListItem.java | 36 +++++++
.../securesms/search/QrInviteData.java | 91 +++++++++++++++++
.../securesms/search/SearchFragment.java | 8 ++
.../securesms/search/SearchListAdapter.java | 97 +++++++++++++------
.../securesms/search/SearchViewModel.java | 22 +++--
.../securesms/search/model/SearchResult.java | 23 ++++-
8 files changed, 249 insertions(+), 36 deletions(-)
create mode 100644 src/main/java/org/thoughtcrime/securesms/search/QrInviteData.java
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05381ea94..3ed69596c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@
* Autoplay all voice messages in a chat
* Allow to share location for 24 hours
* Allow mini-apps to play audio without user interaction
+* Allow to paste and open invitation links from search
* Mark chats as unread (long tap a chat and select the corresponding option from the three-dot-menu)
* Add "Mark all as read" option to profile menu in the profile switcher
* Fix process of upgrading from a very old version of the app
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java
index e63ad57de..eb41caa8c 100644
--- a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java
@@ -601,6 +601,13 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
}
}
+ public void handleQrFromSearch(String rawQrString) {
+ qrData = rawQrString;
+ new QrCodeHandler(this)
+ .handleQrData(
+ rawQrString, SecurejoinSource.Scan, SecurejoinUiPath.QrIcon, relayLockLauncher);
+ }
+
private void handleResetRelaying() {
resetRelayingMessageContent(this);
refreshTitle();
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java
index 801162ab4..a8b97448c 100644
--- a/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java
@@ -44,9 +44,11 @@ import org.thoughtcrime.securesms.components.AvatarView;
import org.thoughtcrime.securesms.components.DeliveryStatusView;
import org.thoughtcrime.securesms.components.FromTextView;
import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto;
import org.thoughtcrime.securesms.database.model.ThreadRecord;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
+import org.thoughtcrime.securesms.search.QrInviteData;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.ThemeUtil;
import org.thoughtcrime.securesms.util.Util;
@@ -216,6 +218,40 @@ public class ConversationListItem extends RelativeLayout
avatar.setSeenRecently(false);
}
+ public void bind(@NonNull QrInviteData inviteData, @NonNull GlideRequests glideRequests) {
+ this.selectedThreads = Collections.emptySet();
+
+ fromView.setText(inviteData.getDisplayTitle());
+ fromView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
+ subjectView.setVisibility(VISIBLE);
+ subjectView.setText(inviteData.getDisplaySubtitle());
+ subjectView.setTypeface(LIGHT_TYPEFACE);
+ subjectView.setTextColor(
+ ThemeUtil.getThemedColor(getContext(), R.attr.conversation_list_item_subject_color));
+
+ dateView.setText("");
+ dateView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
+ archivedBadgeView.setVisibility(GONE);
+ requestBadgeView.setVisibility(GONE);
+ unreadIndicator.setVisibility(GONE);
+ deliveryStatusIndicator.setNone();
+
+ setBatchState(false);
+
+ if (inviteData.getContactId() > 0) {
+ DcContext dcContext = DcHelper.getContext(getContext());
+ DcContact contact = dcContext.getContact(inviteData.getContactId());
+ Recipient recipient = new Recipient(getContext(), contact);
+ avatar.setAvatar(glideRequests, recipient, false);
+ avatar.setSeenRecently(contact.wasSeenRecently());
+ } else {
+ avatar.setImageDrawable(
+ new GeneratedContactPhoto("+")
+ .asDrawable(getContext(), ThemeUtil.getDummyContactColor(getContext())));
+ avatar.setSeenRecently(false);
+ }
+ }
+
@Override
public void unbind() {}
diff --git a/src/main/java/org/thoughtcrime/securesms/search/QrInviteData.java b/src/main/java/org/thoughtcrime/securesms/search/QrInviteData.java
new file mode 100644
index 000000000..2c3a56fa5
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/search/QrInviteData.java
@@ -0,0 +1,91 @@
+package org.thoughtcrime.securesms.search;
+
+import android.content.Context;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import com.b44t.messenger.DcContact;
+import com.b44t.messenger.DcContext;
+import com.b44t.messenger.DcLot;
+import org.thoughtcrime.securesms.R;
+
+public class QrInviteData {
+
+ private final String displayTitle;
+ private final String displaySubtitle;
+ private final String rawQrString;
+ private final int contactId;
+
+ private QrInviteData(
+ @NonNull String displayTitle,
+ @NonNull String displaySubtitle,
+ @NonNull String rawQrString,
+ int contactId) {
+ this.displayTitle = displayTitle;
+ this.displaySubtitle = displaySubtitle;
+ this.rawQrString = rawQrString;
+ this.contactId = contactId;
+ }
+
+ @Nullable
+ public static QrInviteData from(
+ @NonNull Context context,
+ @NonNull DcContext dcContext,
+ @NonNull DcLot qrParsed,
+ @NonNull String rawQrString) {
+ int state = qrParsed.getState();
+ String title;
+ String subtitle;
+ int contactId = 0;
+
+ switch (state) {
+ case DcContext.DC_QR_ASK_VERIFYCONTACT:
+ case DcContext.DC_QR_FPR_OK:
+ case DcContext.DC_QR_ADDR:
+ contactId = qrParsed.getId();
+ DcContact contact = dcContext.getContact(contactId);
+ title = contact.getDisplayName();
+ subtitle = context.getString(R.string.start_chat);
+ break;
+ case DcContext.DC_QR_ASK_VERIFYGROUP:
+ title = qrParsed.getText1();
+ subtitle = context.getString(R.string.join_group);
+ break;
+ case DcContext.DC_QR_ASK_JOIN_BROADCAST:
+ title = qrParsed.getText1();
+ subtitle = context.getString(R.string.join_channel);
+ break;
+ case DcContext.DC_QR_ACCOUNT:
+ case DcContext.DC_QR_LOGIN:
+ title = qrParsed.getText1();
+ subtitle = context.getString(R.string.add_transport);
+ break;
+ case DcContext.DC_QR_PROXY:
+ title = qrParsed.getText1();
+ subtitle = context.getString(R.string.proxy_use_proxy);
+ break;
+ default:
+ return null;
+ }
+
+ return new QrInviteData(title, subtitle, rawQrString, contactId);
+ }
+
+ @NonNull
+ public String getDisplayTitle() {
+ return displayTitle;
+ }
+
+ @NonNull
+ public String getDisplaySubtitle() {
+ return displaySubtitle;
+ }
+
+ @NonNull
+ public String getRawQrString() {
+ return rawQrString;
+ }
+
+ public int getContactId() {
+ return contactId;
+ }
+}
diff --git a/src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java b/src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java
index 0854e3110..55cf6e83b 100644
--- a/src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java
@@ -200,6 +200,14 @@ public class SearchFragment extends BaseConversationListFragment
}
}
+ @Override
+ public void onInvitationClicked(@NonNull String rawQrString) {
+ ConversationListActivity conversationList = (ConversationListActivity) getActivity();
+ if (conversationList != null) {
+ conversationList.handleQrFromSearch(rawQrString);
+ }
+ }
+
public void updateSearchQuery(@NonNull String query) {
if (viewModel != null) {
viewModel.updateQuery(query);
diff --git a/src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java b/src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java
index 24dbd0faf..cb87c4b93 100644
--- a/src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java
@@ -25,6 +25,7 @@ import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
class SearchListAdapter
extends BaseConversationListAdapter
implements StickyHeaderDecoration.StickyHeaderAdapter {
+ private static final int TYPE_QR_INVITE = 0;
private static final int TYPE_CHATS = 1;
private static final int TYPE_CONTACTS = 2;
private static final int TYPE_MESSAGES = 3;
@@ -57,6 +58,14 @@ class SearchListAdapter
@Override
public void onBindViewHolder(@NonNull SearchResultViewHolder holder, int position) {
+ if (isQrInvitePosition(position)) {
+ QrInviteData inviteData = searchResult.getQrInviteData();
+ if (inviteData != null) {
+ holder.bind(inviteData, glideRequests, eventListener);
+ }
+ return;
+ }
+
DcChatlist.Item conversationResult = getConversationResult(position);
if (conversationResult != null) {
@@ -97,7 +106,9 @@ class SearchListAdapter
@Override
public long getHeaderId(int position) {
- if (getConversationResult(position) != null) {
+ if (isQrInvitePosition(position)) {
+ return TYPE_QR_INVITE;
+ } else if (getConversationResult(position) != null) {
return TYPE_CHATS;
} else if (getContactResult(position) != null) {
return TYPE_CONTACTS;
@@ -116,33 +127,39 @@ class SearchListAdapter
@Override
public void onBindHeaderViewHolder(HeaderViewHolder viewHolder, int position) {
int headerType = (int) getHeaderId(position);
- int textId = R.plurals.n_messages;
- int count = 1;
- boolean maybeLimitedTo1000 = false;
+ String title;
- switch (headerType) {
- case TYPE_CHATS:
- textId = R.plurals.n_chats;
- count = searchResult.getChats().getCnt();
- break;
- case TYPE_CONTACTS:
- textId = R.plurals.n_contacts;
- count = searchResult.getContacts().length;
- break;
- case TYPE_MESSAGES:
- textId = R.plurals.n_messages;
- count = searchResult.getMessages().length;
- maybeLimitedTo1000 =
- count == 1000; // a count of 1000 results may be limited, see documentation of
- // dc_search_msgs()
- break;
- }
+ if (headerType == TYPE_QR_INVITE) {
+ title = context.getString(R.string.link);
+ } else {
+ int textId = R.plurals.n_messages;
+ int count = 1;
+ boolean maybeLimitedTo1000 = false;
- String title = context.getResources().getQuantityString(textId, count, count);
- if (maybeLimitedTo1000) {
- title =
- title.replace(
- "000", "000+"); // skipping the first digit allows formattings as "1.000" or "1,000"
+ switch (headerType) {
+ case TYPE_CHATS:
+ textId = R.plurals.n_chats;
+ count = searchResult.getChats().getCnt();
+ break;
+ case TYPE_CONTACTS:
+ textId = R.plurals.n_contacts;
+ count = searchResult.getContacts().length;
+ break;
+ case TYPE_MESSAGES:
+ textId = R.plurals.n_messages;
+ count = searchResult.getMessages().length;
+ maybeLimitedTo1000 =
+ count == 1000; // a count of 1000 results may be limited, see documentation of
+ // dc_search_msgs()
+ break;
+ }
+
+ title = context.getResources().getQuantityString(textId, count, count);
+ if (maybeLimitedTo1000) {
+ title =
+ title.replace(
+ "000", "000+"); // skipping the first digit allows formattings as "1.000" or "1,000"
+ }
}
viewHolder.bind(title);
}
@@ -160,10 +177,19 @@ class SearchListAdapter
notifyDataSetChanged();
}
+ private int getQrInviteCount() {
+ return searchResult.getQrInviteData() != null ? 1 : 0;
+ }
+
+ private boolean isQrInvitePosition(int position) {
+ return position == 0 && searchResult.getQrInviteData() != null;
+ }
+
@Nullable
private DcChatlist.Item getConversationResult(int position) {
- if (position < searchResult.getChats().getCnt()) {
- return searchResult.getChats().getItem(position);
+ int offset = position - getQrInviteCount();
+ if (offset >= 0 && offset < searchResult.getChats().getCnt()) {
+ return searchResult.getChats().getItem(offset);
}
return null;
}
@@ -185,7 +211,7 @@ class SearchListAdapter
}
private int getFirstContactIndex() {
- return searchResult.getChats().getCnt();
+ return getQrInviteCount() + searchResult.getChats().getCnt();
}
private int getFirstMessageIndex() {
@@ -200,6 +226,8 @@ class SearchListAdapter
void onContactClicked(@NonNull DcContact contact);
void onMessageClicked(@NonNull DcMsg message);
+
+ void onInvitationClicked(@NonNull String rawQrString);
}
static class SearchResultViewHolder extends RecyclerView.ViewHolder {
@@ -257,9 +285,20 @@ class SearchListAdapter
root.setOnClickListener(view -> eventListener.onMessageClicked(messageResult));
}
+ void bind(
+ @NonNull QrInviteData inviteData,
+ @NonNull GlideRequests glideRequests,
+ @NonNull EventListener eventListener) {
+ root.bind(inviteData, glideRequests);
+ root.setOnClickListener(
+ view -> eventListener.onInvitationClicked(inviteData.getRawQrString()));
+ root.setOnLongClickListener(null);
+ }
+
void recycle() {
root.unbind();
root.setOnClickListener(null);
+ root.setOnLongClickListener(null);
}
}
diff --git a/src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java b/src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java
index f391e5b3a..ba2570602 100644
--- a/src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java
@@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.b44t.messenger.DcChatlist;
import com.b44t.messenger.DcContext;
+import com.b44t.messenger.DcLot;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.search.model.SearchResult;
import org.thoughtcrime.securesms.util.Util;
@@ -18,13 +19,15 @@ class SearchViewModel extends ViewModel {
private static final String TAG = "SearchViewModel";
private final ObservingLiveData searchResult;
private String lastQuery;
+ private final Context appContext;
private final DcContext dcContext;
private boolean forwarding = false;
private boolean inBgSearch;
private boolean needsAnotherBgSearch;
SearchViewModel(@NonNull Context context) {
- this.dcContext = DcHelper.getContext(context.getApplicationContext());
+ this.appContext = context.getApplicationContext();
+ this.dcContext = DcHelper.getContext(appContext);
this.searchResult = new ObservingLiveData();
}
@@ -73,6 +76,12 @@ class SearchViewModel extends ViewModel {
return;
}
+ QrInviteData qrInviteData = null;
+ if (!forwarding && query.contains(":")) {
+ DcLot qrParsed = dcContext.checkQr(query);
+ qrInviteData = QrInviteData.from(appContext, dcContext, qrParsed, query);
+ }
+
// #1 search for chats
long startMs = System.currentTimeMillis();
DcChatlist conversations =
@@ -83,7 +92,8 @@ class SearchViewModel extends ViewModel {
// #2 search for contacts
if (!query.equals(lastQuery) && overallCnt > 0) {
Log.i(TAG, "... skipping getContacts() and searchMsgs(), more recent search pending");
- callback.onResult(new SearchResult(query, new int[0], conversations, new int[0]));
+ callback.onResult(
+ new SearchResult(query, new int[0], conversations, new int[0], qrInviteData));
return;
}
@@ -95,19 +105,19 @@ class SearchViewModel extends ViewModel {
// #3 search for messages
if (forwarding) {
Log.i(TAG, "... searchMsgs() disabled by caller");
- callback.onResult(new SearchResult(query, contacts, conversations, new int[0]));
+ callback.onResult(new SearchResult(query, contacts, conversations, new int[0], qrInviteData));
return;
}
if (query.length() <= 1) {
Log.i(TAG, "... skipping searchMsgs(), string too short");
- callback.onResult(new SearchResult(query, contacts, conversations, new int[0]));
+ callback.onResult(new SearchResult(query, contacts, conversations, new int[0], qrInviteData));
return;
}
if (!query.equals(lastQuery) && overallCnt > 0) {
Log.i(TAG, "... skipping searchMsgs(), more recent search pending");
- callback.onResult(new SearchResult(query, contacts, conversations, new int[0]));
+ callback.onResult(new SearchResult(query, contacts, conversations, new int[0], qrInviteData));
return;
}
@@ -115,7 +125,7 @@ class SearchViewModel extends ViewModel {
int[] messages = dcContext.searchMsgs(0, query);
Log.i(TAG, "⏰ searchMsgs(" + query + "): " + (System.currentTimeMillis() - startMs) + "ms");
- callback.onResult(new SearchResult(query, contacts, conversations, messages));
+ callback.onResult(new SearchResult(query, contacts, conversations, messages, qrInviteData));
}
@NonNull
diff --git a/src/main/java/org/thoughtcrime/securesms/search/model/SearchResult.java b/src/main/java/org/thoughtcrime/securesms/search/model/SearchResult.java
index edd21447d..c0570be73 100644
--- a/src/main/java/org/thoughtcrime/securesms/search/model/SearchResult.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/model/SearchResult.java
@@ -1,7 +1,9 @@
package org.thoughtcrime.securesms.search.model;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.b44t.messenger.DcChatlist;
+import org.thoughtcrime.securesms.search.QrInviteData;
/**
* Represents an all-encompassing search result that can contain various result for different
@@ -16,16 +18,27 @@ public class SearchResult {
private final int[] contacts;
private final DcChatlist conversations;
private final int[] messages;
+ private final QrInviteData qrInviteData;
public SearchResult(
@NonNull String query,
@NonNull int[] contacts,
@NonNull DcChatlist conversations,
@NonNull int[] messages) {
+ this(query, contacts, conversations, messages, null);
+ }
+
+ public SearchResult(
+ @NonNull String query,
+ @NonNull int[] contacts,
+ @NonNull DcChatlist conversations,
+ @NonNull int[] messages,
+ @Nullable QrInviteData qrInviteData) {
this.query = query;
this.contacts = contacts;
this.conversations = conversations;
this.messages = messages;
+ this.qrInviteData = qrInviteData;
}
public int[] getContacts() {
@@ -44,8 +57,16 @@ public class SearchResult {
return query;
}
+ @Nullable
+ public QrInviteData getQrInviteData() {
+ return qrInviteData;
+ }
+
public int size() {
- return contacts.length + conversations.getCnt() + messages.length;
+ return (qrInviteData != null ? 1 : 0)
+ + contacts.length
+ + conversations.getCnt()
+ + messages.length;
}
public boolean isEmpty() {
From c67c3c8972372e98e528b28b84a97ebf6c667357 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Fri, 22 May 2026 22:30:13 +0200
Subject: [PATCH 34/37] update deltachat-core-rust to 'chore(release): prepare
for 2.50.0' of 'v2.50.0'
---
jni/deltachat-core-rust | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/jni/deltachat-core-rust b/jni/deltachat-core-rust
index dab7ca19f..784a6abb3 160000
--- a/jni/deltachat-core-rust
+++ b/jni/deltachat-core-rust
@@ -1 +1 @@
-Subproject commit dab7ca19fec91fe2462cb70eb52ec407343b4b2d
+Subproject commit 784a6abb3bae6d027062cb9dbc1bf9829905b013
From c33ff20d0a885f9bcda283f070decfdea784db37 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Fri, 22 May 2026 22:55:54 +0200
Subject: [PATCH 35/37] update changelog
---
CHANGELOG.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3ed69596c..7f1533a06 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,6 +22,11 @@
* Fix: do not accidentally set draft in chats that don't allow sending messages
* Fix swipe navigation between tabs in RTL languages
* Remove legacy option
+* Don't show non-delivery-notfications in broadcast channels
+* Resend the last 10 messages to new broadcast member
+* Enable PQC (Post-Quantum Cryptography) decrypting support for incoming messages
+* Fix: avoid invalid empty "~" notifications when some peer is streaming location
+* Update to core 2.50.0
## v2.49.0
2026-04
From 6e184f735d6bb6375ae983be5730145db25efd90 Mon Sep 17 00:00:00 2001
From: adbenitez
Date: Fri, 22 May 2026 23:00:41 +0200
Subject: [PATCH 36/37] update RPC bindings
---
src/main/java/chat/delta/rpc/Rpc.java | 90 ++++++++++++++++---
.../delta/rpc/types/EnteredLoginParam.java | 7 ++
.../java/chat/delta/rpc/types/Reactions.java | 2 +-
.../java/chat/delta/rpc/types/Viewtype.java | 2 +-
.../delta/rpc/types/WebxdcMessageInfo.java | 4 +
5 files changed, 90 insertions(+), 15 deletions(-)
diff --git a/src/main/java/chat/delta/rpc/Rpc.java b/src/main/java/chat/delta/rpc/Rpc.java
index d5b825d5a..2275a0c8c 100644
--- a/src/main/java/chat/delta/rpc/Rpc.java
+++ b/src/main/java/chat/delta/rpc/Rpc.java
@@ -443,10 +443,19 @@ public class Rpc {
}
/**
- * Estimate the number of messages that will be deleted
- * by the set_config()-options `delete_device_after` or `delete_server_after`.
+ * Estimates the number of messages that will be deleted
+ * by the `set_config()`-option `delete_device_after`.
+ *
* This is typically used to show the estimated impact to the user
* before actually enabling deletion of old messages.
+ *
+ * Messages in the "Saved Messages" chat are not counted as they will not be deleted automatically.
+ *
+ * Parameters:
+ * - `from_server`: Deprecated, pass `false` here
+ * - `seconds`: Count messages older than the given number of seconds.
+ *
+ * Returns the number of messages that are older than the given number of seconds.
*/
public Integer estimateAutoDeletionCount(Integer accountId, Boolean fromServer, Integer seconds) throws RpcException {
return transport.callForResult(new TypeReference(){}, "estimate_auto_deletion_count", mapper.valueToTree(accountId), mapper.valueToTree(fromServer), mapper.valueToTree(seconds));
@@ -913,8 +922,22 @@ public class Rpc {
}
/**
- * Returns all messages of a particular chat.
+ * Get all message IDs belonging to a chat.
*
+ * The list is already sorted and starts with the oldest message.
+ * Clients should not try to re-sort the list as this would be an expensive action
+ * and would result in inconsistencies between clients.
+ * Note that the messages are not necessarily sorted by their ID or by their displayed timestamp;
+ * UIs need to handle both the case of descending message IDs
+ * and of decreasing timestamps.
+ *
+ * Optionally, 'daymarkers' added to the ID array may help to
+ * implement virtual lists.
+ *
+ * Parameters:
+ *
+ * * chat_id The chat ID of which the messages IDs should be queried.
+ * * _info_only: Deprecated, pass `false` here.
* * `add_daymarker` - If `true`, add day markers as `DC_MSG_ID_DAYMARKER` to the result,
* e.g. [1234, 1237, 9, 1239]. The day marker timestamp is the midnight one for the
* corresponding (following) day in the local timezone.
@@ -932,6 +955,14 @@ public class Rpc {
return transport.callForResult(new TypeReference>(){}, "get_existing_msg_ids", mapper.valueToTree(accountId), mapper.valueToTree(msgIds));
}
+ /**
+ * Get all messages belonging to a chat.
+ *
+ * Similar to `get_message_ids` / `getMessageIds`,
+ * see that function for details.
+ * The difference is that this function here returns a list of `MessageListItem`,
+ * which is an enum of a message or a daymarker.
+ */
public java.util.List getMessageListItems(Integer accountId, Integer chatId, Boolean infoOnly, Boolean addDaymarker) throws RpcException {
return transport.callForResult(new TypeReference>(){}, "get_message_list_items", mapper.valueToTree(accountId), mapper.valueToTree(chatId), mapper.valueToTree(infoOnly), mapper.valueToTree(addDaymarker));
}
@@ -1181,11 +1212,6 @@ public class Rpc {
return transport.callForResult(new TypeReference(){}, "make_vcard", mapper.valueToTree(accountId), mapper.valueToTree(contacts));
}
- /** Sets vCard containing the given contacts to the message draft. */
- public void setDraftVcard(Integer accountId, Integer msgId, java.util.List contacts) throws RpcException {
- transport.call("set_draft_vcard", mapper.valueToTree(accountId), mapper.valueToTree(msgId), mapper.valueToTree(contacts));
- }
-
/**
* Returns the [`ChatId`] for the 1:1 chat with `contact_id` if it exists.
*
@@ -1328,10 +1354,47 @@ public class Rpc {
return transport.callForResult(new TypeReference(){}, "get_connectivity_html", mapper.valueToTree(accountId));
}
+ /**
+ * Sets current location.
+ *
+ * Returns true if location streaming is currently
+ * enabled and locations should be updated.
+ *
+ * Location is represented as latitude and longitude in degrees
+ * and horizontal accuracy in meters.
+ */
+ public Boolean setLocation(Float latitude, Float longitude, Float accuracy) throws RpcException {
+ return transport.callForResult(new TypeReference(){}, "set_location", mapper.valueToTree(latitude), mapper.valueToTree(longitude), mapper.valueToTree(accuracy));
+ }
+
public java.util.List getLocations(Integer accountId, Integer chatId, Integer contactId, Integer timestampBegin, Integer timestampEnd) throws RpcException {
return transport.callForResult(new TypeReference>(){}, "get_locations", mapper.valueToTree(accountId), mapper.valueToTree(chatId), mapper.valueToTree(contactId), mapper.valueToTree(timestampBegin), mapper.valueToTree(timestampEnd));
}
+ /**
+ * Enables location streaming in chat identified by `chat_id` for `seconds` seconds.
+ *
+ * Pass 0 as the number of seconds to disable location streaming in the chat.
+ */
+ public void sendLocationsToChat(Integer accountId, Integer chatId, Integer seconds) throws RpcException {
+ transport.call("send_locations_to_chat", mapper.valueToTree(accountId), mapper.valueToTree(chatId), mapper.valueToTree(seconds));
+ }
+
+ /** Returns whether any chat is sending locations. */
+ public Boolean isSendingLocations(Integer accountId) throws RpcException {
+ return transport.callForResult(new TypeReference(){}, "is_sending_locations", mapper.valueToTree(accountId));
+ }
+
+ /** Returns whether `chat_id` is sending locations. */
+ public Boolean isSendingLocationsToChat(Integer accountId, Integer chatId) throws RpcException {
+ return transport.callForResult(new TypeReference(){}, "is_sending_locations_to_chat", mapper.valueToTree(accountId), mapper.valueToTree(chatId));
+ }
+
+ /** Stops sending locations to all chats. */
+ public void stopSendingLocations() throws RpcException {
+ transport.call("stop_sending_locations");
+ }
+
public void sendWebxdcStatusUpdate(Integer accountId, Integer instanceMsgId, String updateStr, String descr) throws RpcException {
transport.call("send_webxdc_status_update", mapper.valueToTree(accountId), mapper.valueToTree(instanceMsgId), mapper.valueToTree(updateStr), mapper.valueToTree(descr));
}
@@ -1467,17 +1530,18 @@ public class Rpc {
transport.call("resend_messages", mapper.valueToTree(accountId), mapper.valueToTree(messageIds));
}
+ /** @deprecated as of 2026-04; use `send_msg` with `Viewtype::Sticker` instead. */
public Integer sendSticker(Integer accountId, Integer chatId, String stickerPath) throws RpcException {
return transport.callForResult(new TypeReference(){}, "send_sticker", mapper.valueToTree(accountId), mapper.valueToTree(chatId), mapper.valueToTree(stickerPath));
}
/**
- * Send a reaction to message.
+ * Sends a reaction to message.
*
- * Reaction is a string of emojis separated by spaces. Reaction to a
- * single message can be sent multiple times. The last reaction
- * received overrides all previously received reactions. It is
- * possible to remove all reactions by sending an empty string.
+ * A reaction is a string that represents an emoji.
+ * You can call this function again to change the emoji;
+ * the last sent reaction overrides all previously sent reactions.
+ * It is possible to remove the reaction by sending an empty string.
*/
public Integer sendReaction(Integer accountId, Integer messageId, java.util.List reaction) throws RpcException {
return transport.callForResult(new TypeReference(){}, "send_reaction", mapper.valueToTree(accountId), mapper.valueToTree(messageId), mapper.valueToTree(reaction));
diff --git a/src/main/java/chat/delta/rpc/types/EnteredLoginParam.java b/src/main/java/chat/delta/rpc/types/EnteredLoginParam.java
index 36f516422..36e58abde 100644
--- a/src/main/java/chat/delta/rpc/types/EnteredLoginParam.java
+++ b/src/main/java/chat/delta/rpc/types/EnteredLoginParam.java
@@ -12,6 +12,13 @@ public class EnteredLoginParam {
/** TLS options: whether to allow invalid certificates and/or invalid hostnames. Default: Automatic */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public EnteredCertificateChecks certificateChecks;
+ /**
+ * IMAP server folder.
+ *
+ * Defaults to "INBOX" if not set. Should not be an empty string.
+ */
+ @com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
+ public String imapFolder;
/** Imap server port. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer imapPort;
diff --git a/src/main/java/chat/delta/rpc/types/Reactions.java b/src/main/java/chat/delta/rpc/types/Reactions.java
index 94ac17e72..7ff5f948e 100644
--- a/src/main/java/chat/delta/rpc/types/Reactions.java
+++ b/src/main/java/chat/delta/rpc/types/Reactions.java
@@ -5,6 +5,6 @@ package chat.delta.rpc.types;
public class Reactions {
/** Unique reactions and their count, sorted in descending order. */
public java.util.List reactions;
- /** Map from a contact to it's reaction to message. */
+ /** Map from a contact to it's reaction to message. There is only a single reaction per contact, but this contains a list of reactions for historical reasons. */
public java.util.Map> reactionsByContact;
}
\ No newline at end of file
diff --git a/src/main/java/chat/delta/rpc/types/Viewtype.java b/src/main/java/chat/delta/rpc/types/Viewtype.java
index b4c5adc16..2ae248028 100644
--- a/src/main/java/chat/delta/rpc/types/Viewtype.java
+++ b/src/main/java/chat/delta/rpc/types/Viewtype.java
@@ -14,7 +14,7 @@ public enum Viewtype {
Gif,
/**
- * Message containing a sticker, similar to image. NB: When sending, the message viewtype may be changed to `Image` by some heuristics like checking for transparent pixels. Use `Message::force_sticker()` to disable them.
+ * Message containing a sticker, similar to image.
*
* If possible, the ui should display the image without borders in a transparent way. A click on a sticker will offer to install the sticker set in some future.
*/
diff --git a/src/main/java/chat/delta/rpc/types/WebxdcMessageInfo.java b/src/main/java/chat/delta/rpc/types/WebxdcMessageInfo.java
index 8cfc09468..3efcda8f6 100644
--- a/src/main/java/chat/delta/rpc/types/WebxdcMessageInfo.java
+++ b/src/main/java/chat/delta/rpc/types/WebxdcMessageInfo.java
@@ -15,6 +15,10 @@ public class WebxdcMessageInfo {
public String icon;
/** True if full internet access should be granted to the app. */
public Boolean internetAccess;
+ /** Define if the local user is the one who initially shared the webxdc application in the chat. */
+ public Boolean isAppSender;
+ /** Define if the app runs in a broadcasting context. */
+ public Boolean isBroadcast;
/**
* The name of the app.
*
@@ -628,6 +643,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1425,23 +1631,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -584,6 +599,197 @@ aber mehr als 150 sind nicht empfohlen.
Wenn Gruppen größer werden, können sie sozial instabil werden und benötigen möglicherweise eine Hierarchie - und Delta Chat ist ein privater Messenger für Chats mit gleichen Rechten. Vgl. Dunbar-Zahl.
+
+
+
+ Kanäle
+
+
+
+
+
Kanäle dienen der Verbreitung von Nachrichten an viele Empfänger.
+
+
+
+
+ Einem Kanal beitreten
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Einen Kanal erstellen
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ Wie viele Empfänger kann ein Kanal haben?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Anrufe
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Jemanden anrufen
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Einen Anruf annehmen oder ablehnen
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ Während des Anrufs
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Verpasste Anrufe und Benachrichtigungen
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1329,23 +1535,16 @@ im Falle einer Beschlagnahmung des Geräts nicht ohne Weiteres identifiziert wer
-
Das verwendete Relay muss Ihre IP-Adresse kennen,
-sowie manchmal auch die Geräte Ihrer Kontakte, wenn Sie einen Anruf tätigen
-oder gemeinsam Apps verwenden.
+
Die verwendeten Relays müssen deine IP-Adresse kennen,
+sowie manchmal auch die Geräte deiner Kontakte, wenn du einen Anruf tätigst
+oder ihr gemeinsam Apps verwendet.
IP-Adressen sind für Verbindungen und für Effizienz erforderlich.
-Sie werden weder gespeichert noch offengelegt.
-Beachten Sie, dass die IP-Adresse
-nicht mit einer Adresse, die Sie einem Lieferdienst geben, vergleichbar ist -
-sondern viel gröber ist und oft nur die Region oder das Land angibt.
+Sie werden von Delta Chat weder gespeichert noch offengelegt.
+IP-Adressen sind nicht mit einer Adresse, die du einem Lieferdienst gibst, vergleichbar - sondern viel gröber und oft nur die Stadt oder die Region beschreibend.
-
Da dies die Standardfunktion des Internets und anderer Messenger ist,
-bieten wir hier keine Optionen an und stellen auch keine Fragen im Voraus.
-
-
Wenn Sie Ihre IP-Adresse als Sicherheits- oder Datenschutzrisiko betrachten,
-empfehlen wir Ihnen, ein VPN in Kombination mit dem System-Lockdown-Modus zu verwenden.
-Alle einzelnen Apps auf Ihrem System nach IP-Optionen abzusuchen wird nicht zufriedenstellen sein;
-beispielsweise legt das Antippen eines Links IP-Adressen gegenüber unbekannten Parteien offen und stellt hier das weitaus größere Risiko dar.
+
Wenn du deine IP-Adresse als Risiko betrachtest, empfehlen wir, ein VPN für das gesamte System zu verwenden.
+Einstellungen auf App-Ebene hinterlassen Lücken überall im System. Wenn man beispielsweise auf einen Link tippt, können IP-Adressen an Unbekannte weitergegeben werden, was bei weitem das größere Risiko darstellt
@@ -627,6 +642,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1425,23 +1631,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
Instant creation of private chat profiles
-with secure and interoperable chatmail relays
-that offer instant message delivery, and Push Notifications for iOS and Android devices.
+
Creación instantánea de perfiles de chat privados
+con servidores de chatmail seguros e interoperables
+que ofrecen un envío instantáneo de mensajes y Notificaciones Push en dispositivos Android e iOS.
Free and Open Source software, both app and server side,
-built on Internet Standards.
+
Software gratuito y de código abierto, tanto las aplicaciones como los servidores,
+construido sobre estándares de internet.
- How can I find people to chat with?
+ ¿Cómo puedo encontrar gente para chatear?
-
First, note that Delta Chat is a private messenger.
-There is no public discovery, you decide about your contacts.
+
En primer lugar, ten en cuenta que Delta Chat es un sistema de mensajería privado.
+No hay descubrimiento público, tú decides sobre tus contactos.
-
If you are face to face with your friend or family,
-tap the QR Code icon
-on the main screen.
-Ask your chat partner to scan the QR image
-with their Delta Chat app.
+
Si estas cara a cara con tus amigos o familia,
+pulsa el icono del Código QR
+en la pantalla principal.
+Pídele a la otra persona que escanee el código QR
+con su aplicación de Delta Chat.
-
For a remote contact setup,
-from the same screen,
-click “Copy” or “Share” and send the invite link
-through another private chat.
+
Para configurar un contacto a distancia,
+desde la misma pantalla,
+haga clic en “Copiar” o “Compartir” y envíe el enlace de invitación
+a través de otro chat privado.
-
Now wait while connection gets established.
+
Espera mientras la conexión se establece.
-
If both sides are online, they will soon see a chat
-and can start messaging securely.
+
Si ambas partes están en línea, pronto verán un chat
+y podrán empezar a mensajearse de forma segura.
-
If one side is offline or in bad network,
-the ability to chat is delayed until connectivity is restored.
+
Si una de las partes no está conectada o tiene una mala conexión,
+la capacidad de chatear se retrasará hasta que la conectividad se haya restaurado.
-
Congratulations!
-You now will automatically use end-to-end encryption with this contact.
-If you add each other to groups, end-to-end encryption will be established among all members.
+
¡Enhorabuena!
+Ahora estás utilizando automáticamente el cifrado de extremo a extremo con este contacto.
+Si os añadís mutuamente a grupos, el cifrado de extremo a extremo se establecerá entre todos los miembros.
-
+
- Why is a chat marked as “Request”?
+ ¿Por qué un chat aparece marcado como “Solicitud”?
Your friends may share your contact with other friends,
-this appears as Request
+
Tus amigos pueden compartir tu contacto con otros amigos,
+esto aparecerá como Solicitud
@@ -201,10 +216,10 @@ this appears as
+
- How can I put two of my friends in contact with each other?
+ ¿Cómo puedo poner en contacto a dos de mis amigos entre ellos?
@@ -223,16 +238,16 @@ and can tap it to start chatting with the first contact.
-
A profile is a name, a picture and some additional information for encrypting messages.
-A profile lives on your device(s) only
-and uses the server only to relay messages.
+
Un perfil es un nombre, una foto y alguna información adicional para cifrar los mensajes.
+Un perfil se almacena únicamente en tu dispositivo (o dispositivos)
+y solo utiliza el servidor para enviar los mensajes.
En la primera instalación de Delta Chat se crea un primer perfil.
Después, puedes tocar la imagen de tu perfil en la esquina superior izquierda para Añadir perfiles
o para Cambiar perfiles.
-
You may want to use separate profiles for political, family or work related activities.
+
Puede utilizar perfiles diferentes para actividades políticas, familiares o laborales.
@@ -252,15 +267,15 @@ o los agrega a través de un código QR, ellos lo verán automáticamente como s
- Can I set a Bio/Status with Delta Chat?
+ ¿Puedo establecer una Bio/Estado en Delta Chat?
-
Yes,
-you can do so under Settings → Profile → Bio.
-Once you sent a message to a contact,
-they will see it when they view your contact details.
+
Sí,
+es posible hacerlo en Ajustes → Perfil → Texto de firma.
+Una vez que hayas enviado un mensaje a un contacto,
+este lo verá cuando consulte tus datos de contacto.
@@ -280,7 +295,7 @@ they will see it when they view your contact details.
Chats muteados si no quieres recibir notificaciones de ellos. Chats muteados se mantienen en su lugar e inclusive puedes fijarlos.
-
Archivar chats si no deseas verlos en tu lista de chats. Los chats archivados siguen siendo accesibles arriba de la lista de chats o a través de la búsqueda.
+
Archivar chats si no deseas verlos en tu lista de chats. Los chats archivados siguen siendo accesibles arriba de la lista de chats o a través de la búsqueda y aparecen marcados como Archivado.
Cuando un chat archivado recibe un nuevo mensaje, a menos que esté silenciado, saldrá del archivo y volverá a aparecer en tu lista de chats.
@@ -352,16 +367,16 @@ and others will as well not always see that you are “online”.
-
One tick
-means that the message was sent successfully to the relay.
+
Un tick
+significa que el mensaje se ha enviado correctamente al servidor.
-
Two ticks
-indicate your contact has read the message.
+
Dos ticks
+indican que tu contacto ha leído el mensaje.
-
In groups the second tick means that at least one member has reported back having read the message.
+
En los grupos el segundo tick indica que, al menos, uno de los miembros ha leído el mensaje.
You will only get the second tick if both you and one of the recipients who read the message
has Settings → Chats → Read Receipts enabled.
@@ -396,13 +411,12 @@ who could have already replied, forwarded, saved, screenshotted or otherwise cop
- How is media quality handled?
+ ¿Cómo se gestiona la calidad de los archivos multimedia?
-
Images, videos, files, voice messages etc. can be sent using the Attach-
-or Voice Message buttons.
+
Imágenes, vídeos, archivos, mensajes de voz, etc., pueden enviarse utilizando los botones de Adjuntar o Mensaje de Voz.
@@ -460,8 +474,8 @@ the (anyway encrypted) messages may take longer to get deleted from their server
-
If you want to save storage on your device, you can choose to delete old
-messages automatically.
+
Si quieres ahorrar espacio en tu dispositivo, puedes elegir borrar los mensajes antiguos
+automáticamente.
To turn it on, go to Settings → Chats → Delete Message from Device.
You can set a timeframe between “after an hour” and “after a year”;
@@ -471,7 +485,7 @@ older than that.
- How can I delete my chat profile?
+ ¿Cómo puedo borrar mi perfil?
@@ -490,12 +504,12 @@ or the respective page from your chosen 3rd
- Add and remove members
+ Añadir y eliminar miembros
-
All group members have the same rights.
-For this reason, everyone can delete any member or add new ones.
+
Todos los miembros del grupo tienen los mismos derechos.
+Por esta razón, todos pueden eliminar a cualquier miembro o añadir otros nuevos.
-
To add or delete members, tap the group name in the chat and select the member to add or remove.
+
Para añadir o eliminar miembros, pulsa el nombre del grupo en el chat y selecciona el miembro a añadir o eliminar.
If the member is not yet in your contact list, but face to face with you,
@@ -583,84 +597,275 @@ Si desea unirse al grupo nuevamente más tarde, pídale a otro miembro del grupo
Como alternativa, también puede “silenciar” a un grupo, lo que significa que recibirá todos los mensajes y
aún puede escribir, pero ya no se le notifican nuevos mensajes.
-
+
- Cloning a group
+ Clonar un grupo
-
You can duplicate a group to start a separate discussion
-or to exclude members without them noticing.
+
Puedes duplicar un grupo para empezar una discusión separada
+o para excluir a miembros sin notificárselo.
-
Open the group profile and tap Clone Chat (Android/iOS),
-or right-click the group in the chat list (Desktop).
+
Abre el perfil del grupo y pulsa Clonar Chat (Android/iOS),
+o haz clic derecho en el grupo en la lista de chats (Escritorio).
-
Set a new name, choose an avatar, and adjust the member list if needed.
+
Establece un nuevo nombre, elige un avatar y ajusta la lista de miembros si es necesario.
-
The new group is fully independent from the original,
-which continues to work as before.
+
El nuevo grupo es completamente independiente del original,
+que continúa funcionando como antes.
-
+
- How many members can participate in a single group?
+ ¿Cuántos miembros pueden participar en un solo grupo?
-
There is no strict technical limit,
-but more than 150 is not recommended.
+
No hay una limitación técnica,
+pero no se recomiendan más de 150.
As groups get larger, they can become socially unstable and may need a hierarchy -
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
-
+
- In-chat apps
+ Channels
-
You can send apps to a chat - games, editors, polls and other tools.
-This makes Delta Chat a truly extensible messenger.
+
Channels are a one-to-many tool for broadcasting messages.
-
+
- Where can I get in-chat apps?
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
-
In a chat, using Attachment Button → Apps
+
Tap New Chat and choose New Channel.
-
You can also create your own app and attach it using Attachment Button → File
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
-
+
- How private are in-chat apps?
+ Accept or reject a call
-
In-chat apps can not send data to the Internet, or download anything.
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
+
+
+
+ Aplicaciones en chats
+
+
+
+
+
Puedes enviar aplicaciones a un chat: juegos, editores, encuestas y otras herramientas.
+Esto convierte a Delta Chat en una aplicación de mensajería realmente ampliable.
+
+
+
+
+ ¿Dónde puedo conseguir aplicaciones para el chat?
+
+
+
+
+
+
+
En un chat, utilizando Botón Adjuntar → Aplicaciones.
If you have question, you can ask others with experience
@@ -871,21 +1075,21 @@ Welcome to the power of the interoperable chatmail relay network :)
-
Yes. You can use the same profile on different devices:
+
Sí. Puedes utilizar el mismo perfil en diferentes dispositivos.
Asegurate que ambos dispositivos estén en la misma Wi-Fi o red
-
On the first device, go to Settings → Add Second Device, unlock the screen if needed
-and wait a moment until a QR code is shown
+
En el primer dispositivo, ve a Ajustes → Añadir segundo dispositivo, desbloquea la pantalla si es necesario,
+y espera un momento hasta que aparezca un código QR
On the second device, start Delta Chat, select Add as Second Device, and scan the QR code from the old device
+
En el segundo dispositivo, abre Delta Chat, selecciona **Añadir desde otro dispositivo” y escanea el código QR del primer dispositivo
La transferencia debería comenzar después de unos segundos y durante la transferencia ambos dispositivos mostrarán el progreso.
@@ -946,8 +1150,8 @@ Do not exit Delta Chat.
You can use multiple profiles per device, just add another profile
-
If you still have problems or if you cannot scan a QR code
-try the manual transfer described below
+
Si todavía tienes problemas o si no puedes escanear el código QR
+utiliza la transferencia manual descrita debajo
@@ -1048,7 +1252,7 @@ If you have multiple relays, you will receive messages on all of them.
Contacts learn your current relays automatically when you message them.
-
Tap on a relay to set it as used for sending.
+
Pulsa en un retransmisor para establecerlo como usado para enviar.
If you remove a relay,
@@ -1057,17 +1261,17 @@ To stay reachable in the meantime, choose Hide from Contacts in
instead of removing it right away.
-
To show a hidden relay again, tap on it.
+
Para mostrar de nuevo un retransmisor oculto, pulsa en él.
For more details and future possibilities of relays,
you can follow discussions in the Forum.
-
+
- Can I use a classic email address with Delta Chat?
+ ¿Puedo utilizar una dirección de email clásico con Delta Chat?
@@ -1141,27 +1345,27 @@ that power chatmail clients of which D
which is why Delta Chat for Android asks whether you want
to send anonymous usage statistics.
-
You can turn it on and off at
-Settings → Advanced → Send statistics to Delta Chat’s developers.
+
Puedes activarlo y desactivarlo en
+Ajustes → Avanzado → Enviar estadísticas a los desarrolladores de Delta Chat.
-
When you turn it on,
-weekly statistics will be automatically sent to a bot.
+
Cuando lo activas,
+las estadísticas semanales se envían automáticamente a un bot.
-
We are interested e.g. in statistics like:
+
Estamos interesados en estadísticas como, p. ej.:
How many contacts are introduced by personally scanning a QR code?
-
Which versions of Delta Chat are being used?
+
¿Qué versiones de Delta Chat están siendo utilizadas?
-
What errors occur for users?
+
¿Qué errores se producen para los usuarios?
-
We will not collect any personally identifiable information about you.
+
Nosotros no recopilaremos ninguna información de carácter personal sobre ti.
@@ -1212,12 +1416,12 @@ enables receivers to use end-to-end encryption with the contact.
-
Delta Chat does not query, publish or interact with any OpenPGP key servers.
+
Delta Chat no consulta, publica o interacciona con ningún servidor de claves OpenPGP.
- How can I know if messages are end-to-end encrypted?
+ ¿Cómo puedo saber si los mensajes están cifrados de extremo a extremo?
@@ -1226,10 +1430,10 @@ enables receivers to use end-to-end encryption with the contact.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.
-
+
- Can I still receive or send messages without end-to-end encryption?
+ ¿Puedo enviar o recibir mensajes sin cifrado de extremo a extremo?
@@ -1409,41 +1613,38 @@ with the knowledge that all their data, along with all metadata, will be deleted
Moreover, if a device is seized then chat contacts using short-lived profiles
can not be identified easily.
-
+
- Who sees my IP Address?
+ ¿Quién puede ver mi dirección IP?
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
- Does Delta Chat support “Sealed Sender”?
+ ¿Soporta Delta Chat “Sealed Sender”?
-
No, not yet.
+
No, todavía no.
The Signal messenger introduced “Sealed Sender” in 2018
to keep their server infrastructure ignorant of who is sending a message to a set of recipients.
@@ -1464,7 +1665,7 @@ but an implementation has not been agreed as a priority yet.
Delta Chat today doesn’t support Perfect Forward Secrecy (PFS).
This means that if your private decryption key is leaked,
@@ -1482,12 +1683,12 @@ This approach is specified in the
- Does Delta Chat support Post-Quantum-Cryptography?
+ ¿Soporta Delta Chat criptografía postcuántica?
-
Algunas características requieren ciertos permisos,
+p. ej., tienes que conceder permiso de acceso a la cámara si quieres escanear un código QR de invitación.
Open one of the following app stores and search for “Delta Chat”:
-Google Play Store, F-Droid, Huawei App Gallery, iOS and macOS App Store, Microsoft Store
+
Abre una de las siguientes tiendas de aplicaciones y busca “Delta Chat”:
+ Google Play Store, F-Droid, Huawei App Gallery, iOS y macOS App Store, Microsoft Store
-
Check the package manager of your Linux distributions
+
Comprueba el gestor de paquetes de tu distribución de Linux
@@ -624,6 +639,197 @@ baina ez da komeni 150 baino gehiago izatea.
Delta Chat eskubide berberekin txateatzeko aukera ematen duen mezularitza pribatuko zerbitzu bat da.
Informazio gehiago nahi baduzu, kontsultatu Dunbarren zenbakia.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1431,26 +1637,20 @@ txat-kontaktuak ezin izango dira erraz identifikatu.
-
Erabiltzen duzun erreleak zure IP helbidea jakin behar du,
-eta, batzuetan, baita zure kontaktuen gailuena ere; adibidez,
-kontaktu horiekin deiak egiten badituzu edo
-aplikazioak erabiltzen badituzu.
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
+or use apps together.
-
IP helbideak ezinbestekoak dira konektibitaterako eta eraginkortasunerako.
-Ez dira gordetzen, ez argitara ematen.
-Kontuan izan IP helbidea ez dela mezularitzako zerbitzuei-eta eman ohi zaiena
-bezalako helbide zehatz bat; askoz orokorragoa da, eta askotan eskualdea edo
-herrialdea baizik ez du identifikatzen.
+
IP Addresses are needed for connectivity and efficiency.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
Internetek eta beste mezularitza-aplikazioek horrela funtzionatzen dutenez,
-ez dugu horren gaineko bestelako aukerarik eskaintzen, ez galderarik egiten.
-
-
Uste baduzu zure IP helbidea jakiteak zure segurtasuna edo pribatutasuna
-arriskuan jar ditzakeela, zera gomendatuko genizuke, VPN bat erabiltzea,
-sistema blokeatzeko moduarekin batera. Zure sistemako aplikazio guztietan
-alternatibak bilatzeak segurtasun-zuloak utziko ditu; adibidez, esteka batean klik egindakoan,
-IP helbideak agerian geratzen zaizkie hirugarren ezezagunei, eta
-hori askoz arriskutsuagoa da.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -547,6 +562,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1338,23 +1544,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -627,6 +642,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1425,23 +1631,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -620,6 +635,197 @@ ma non è consigliabile superare i 150.
dove Delta Chat è un servizio di messaggistica privato per chattare con uguali diritti.
Vedi numero di Dunbar per ulteriori approfondimenti.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1412,23 +1618,20 @@ non possono essere identificati facilmente.
-
Il ripetitore utilizzato deve conoscere il tuo indirizzo IP,
-e talvolta anche i dispositivi dei tuoi contatti se avete una chiamata
-o utilizzate apps insieme.
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
+or use apps together.
-
Gli indirizzi IP sono necessari per la connettività e l’efficienza.
-Non sono né persistenti né esposti.
-Si noti che l’indirizzo IP
-non è come un indirizzo dettagliato che si fornisce a un servizio di consegna,
-ma molto più generico, che spesso definisce solo la regione o il paese.
+
IP Addresses are needed for connectivity and efficiency.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
Poiché questo è il modo in cui Internet e altri servizi di messaggistica funzionano di default,
-non offriamo opzioni né poniamo domande in anticipo.
-
-
Se ritieni che il tuo indirizzo IP rappresenti un rischio per la sicurezza o la privacy,
-ti consigliamo di utilizzare una VPN, in combinazione con la modalità di blocco del sistema.
-Esplorare le opzioni in tutte le app del tuo sistema lascerà delle lacune.
-Ad esempio, cliccare su un link espone gli indirizzi IP a sconosciuti e rappresenta il rischio di gran lunga maggiore.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -622,6 +637,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1419,23 +1625,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
Delta Chat to niezawodna, zdecentralizowana i bezpieczna aplikacja do błyskawicznego przesyłania wiadomości, dostępna na platformy mobilne i stacjonarne.
+
Natychmiastowe tworzenie prywatnych profili czatu z bezpiecznymi i interoperacyjnymi przekaźnikami chatmail, które oferują natychmiastowe dostarczanie wiadomości oraz powiadomienia push dla urządzeń z systemem iOS i Android.
+
-
Instant creation of private chat profiles
-with secure and interoperable chatmail relays
-that offer instant message delivery, and Push Notifications for iOS and Android devices.
Free and Open Source software, both app and server side,
-built on Internet Standards.
+
Bezpłatne i otwartoźródłowe oprogramowanie zarówno po stronie aplikacji, jak i serwera, stworzone w oparciu o standardy internetowe.
- How can I find people to chat with?
+ Jak znaleźć osoby do czatu?
-
First, note that Delta Chat is a private messenger.
-There is no public discovery, you decide about your contacts.
+
Najpierw pamiętaj, że Delta Chat to prywatny komunikator. Nie ma możliwości publicznego wyszukiwania, sam decydujesz o swoich kontaktach.
-
If you are face to face with your friend or family,
-tap the QR Code icon
-on the main screen.
-Ask your chat partner to scan the QR image
-with their Delta Chat app.
+
Jeśli jesteś twarzą w twarz ze znajomym lub rodziną, dotknij ikony kodu QR na ekranie głównym.
+Poproś partnera czatu o zeskanowanie obrazu QR za pomocą aplikacji Delta Chat.
-
For a remote contact setup,
-from the same screen,
-click “Copy” or “Share” and send the invite link
-through another private chat.
+
Aby skonfigurować kontakt zdalny, na tym samym ekranie naciśnij „Kopiuj” lub „Udostępnij” i wyślij link zaproszenia za pośrednictwem innego prywatnego czatu.
-
Now wait while connection gets established.
+
Poczekaj, aż połączenie zostanie nawiązane.
-
If both sides are online, they will soon see a chat
-and can start messaging securely.
+
Jeśli obie strony są online, wkrótce zobaczą czat i będą mogły bezpiecznie wysyłać wiadomości.
-
If one side is offline or in bad network,
-the ability to chat is delayed until connectivity is restored.
+
Jeśli jedna ze stron jest offline lub ma słaby zasięg, możliwość czatowania zostanie wstrzymana do czasu przywrócenia połączenia.
-
Congratulations!
-You now will automatically use end-to-end encryption with this contact.
-If you add each other to groups, end-to-end encryption will be established among all members.
+
Gratulacje! Teraz będziesz automatycznie korzystać z szyfrowania typu end-to-end dla tego kontaktu. Jeśli dodacie się nawzajem do grup, szyfrowanie typu end-to-end zostanie nawiązane między wszystkimi członkami.
-
+
- Why is a chat marked as “Request”?
+ Dlaczego czat jest oznaczony jako „Prośba”?
Your friends may share your contact with other friends,
-this appears as Request
+
Twoi znajomi mogą udostępniać twoje dane kontaktowe innym znajomym, co jest oznaczone jako Prośba
@@ -201,19 +196,17 @@ this appears as
+
- How can I put two of my friends in contact with each other?
+ Jak mogę skontaktować ze sobą dwóch znajomych?
-
Attach the first contact to the chat of the second using Attachment Button → Contact.
-You can also add a little introduction message.
+
Dołącz pierwszy kontakt do czatu drugiego, używając przycisku Dołączania → Kontakt. Możesz również dodać krótką wiadomość powitalną.
-
The second contact will receive a card then
-and can tap it to start chatting with the first contact.
+
Drugi kontakt otrzyma wtedy kartkę i może ją nacisnąć, aby rozpocząć czat z pierwszym kontaktem.
@@ -223,15 +216,13 @@ and can tap it to start chatting with the first contact.
-
A profile is a name, a picture and some additional information for encrypting messages.
-A profile lives on your device(s) only
-and uses the server only to relay messages.
+
Profil składa się z nazwy, zdjęcia i dodatkowych informacji służących do szyfrowania wiadomości. Profil jest dostępny tylko na twoim urządzeniu (urządzeniach) i korzysta z serwera wyłącznie do przekazywania wiadomości.
Podczas pierwszej instalacji Delta Chat tworzony jest pierwszy profil.
Później możesz dotknąć swojego zdjęcia profilowego w lewym górnym rogu, aby Dodać profile lub Przełączyć profile.
-
You may want to use separate profiles for political, family or work related activities.
+
Możesz używać osobnych profili dla aktywności politycznych, rodzinnych lub zawodowych.
@@ -243,22 +234,19 @@ and uses the server only to relay messages.
-
Możesz dodać zdjęcie profilowe w swoich ustawieniach. Jeśli napiszesz do swoich kontaktów lub dodasz je za pomocą kodu QR, automatycznie zobaczą je jako Twoje zdjęcie profilowe.
+
Możesz dodać zdjęcie profilowe w swoich ustawieniach. Jeśli napiszesz do swoich kontaktów lub dodasz je za pomocą kodu QR, automatycznie zobaczą je jako twoje zdjęcie profilowe.
-
Ze względów prywatności nikt nie widzi Twojego zdjęcia profilowego, dopóki nie napiszesz do niego wiadomości.
+
Ze względów prywatności nikt nie widzi twojego zdjęcia profilowego, dopóki nie napiszesz do niego wiadomości.
- Can I set a Bio/Status with Delta Chat?
+ Czy w Delta Chat mogę ustawić biografię/status?
-
Yes,
-you can do so under Settings → Profile → Bio.
-Once you sent a message to a contact,
-they will see it when they view your contact details.
+
Tak, możesz to zrobić w Ustawieniach → Profil → Biografia. Po wysłaniu wiadomości do kontaktu zostanie ona wyświetlona, gdy będzie on przeglądał twoje dane kontaktowe.
@@ -278,7 +266,7 @@ they will see it when they view your contact details.
Wycisz czaty, jeśli nie chcesz otrzymywać z nich powiadomień. Wyciszone czaty pozostają na swoim miejscu i możesz też przypiąć wyciszony czat.
-
Archiwizuj czaty, jeśli nie chcesz ich już widzieć na liście czatów. Zarchiwizowane czaty pozostają dostępne nad listą czatów lub poprzez wyszukiwanie.
+
Archiwizuj czaty, jeśli nie chcesz ich już widzieć na liście czatów. Pozostają dostępne nad listą czatów lub poprzez wyszukiwanie i są oznaczone jako Zarchiwizowane
Gdy zarchiwizowany czat otrzyma nową wiadomość, o ile nie zostanie wyciszony, wyskoczy z archiwum i wróci na twoją listę czatów.
@@ -309,7 +297,7 @@ they will see it when they view your contact details.
Później otwórz czat „Zapisane wiadomości” — zobaczysz tam zapisane wiadomości. Naciskając , możesz wrócić do oryginalnej wiadomości w oryginalnym czacie
-
Na koniec możesz również użyć „Zapisz wiadomości”, aby robić osobiste notatki — otwórz czat, wpisz coś, dodaj zdjęcie lub wiadomość głosową itp.
+
Na koniec możesz również użyć „Zapisanych wiadomości”, aby robić osobiste notatki — otwórz czat, wpisz coś, dodaj zdjęcie lub wiadomość głosową itp.
Ponieważ „Zapisane wiadomości” są zsynchronizowane, mogą być bardzo przydatne do przesyłania danych między urządzeniami
@@ -326,13 +314,9 @@ they will see it when they view your contact details.
-
You can sometimes see a green dot
-next to the avatar of a contact.
-It means they were recently seen by you in the last 10 minutes,
-e.g. because they messaged you or sent a read receipt.
+
Czasami można zobaczyć zieloną kropkę obok awatara kontaktu. Oznacza to, że był on niedawno widziany przez ciebie w ciągu ostatnich 10 minut, np. wysłał ci wiadomość lub potwierdzenie odczytu.
-
So this is not a real time online status
-and others will as well not always see that you are “online”.
+
Nie jest to więc status online w czasie rzeczywistym i inni również nie zawsze zobaczą, że jesteś „online”.
@@ -344,19 +328,16 @@ and others will as well not always see that you are “online”.
-
One tick
-means that the message was sent successfully to the relay.
+
Jeden znacznik oznacza, że wiadomość została pomyślnie wysłana do przekaźnika.
-
Two ticks
-indicate your contact has read the message.
+
Dwa znaczniki oznaczają, że twój kontakt przeczytał wiadomość.
-
In groups the second tick means that at least one member has reported back having read the message.
+
W grupach drugi znacznik oznacza, że co najmniej jeden członek potwierdził przeczytanie wiadomości.
-
You will only get the second tick if both you and one of the recipients who read the message
-has Settings → Chats → Read Receipts enabled.
+
Drugi znacznik pojawi się tylko wtedy, gdy ty i jeden z odbiorców, którzy przeczytali wiadomość, macie włączoną opcję Ustawienia → Czaty → Potwierdzenie odczytu.
- How is media quality handled?
+ Jak obsługiwana jest jakość multimediów?
-
Images, videos, files, voice messages etc. can be sent using the Attach-
-or Voice Message buttons.
+
Obrazy, filmy, pliki, wiadomości głosowe itp. można wysyłać za pomocą przycisków: Załącz lub Wiadomość głosowa.
-
By default, compression ensures fast, efficient delivery that respects everyone’s data limits and storage.
-This is ideal for everyday communication.
+
Domyślnie kompresja zapewnia szybką i wydajną dostawę, respektując limity danych i pamięci wszystkich użytkowników. Jest to idealne rozwiązanie do codziennej komunikacji.
-
In regions with worse connectivity,
-you can choose higher compression at Settings → Chats → Outgoing Media Quality.
+
W regionach o słabszej łączności można wybrać wyższą kompresję w Ustawieniach → Czaty → Jakość mediów wychodzących.
-
If you specifically need to send media in its original quality, use Attach → File in the chat.
-Please use this method sparingly, as sending original files will significantly increase data usage for you and all recipients in the chat.
+
Jeśli chcesz wysłać multimedia w oryginalnej jakości, użyj w czacie opcji Załącz → Plik. Używaj tej metody oszczędnie, ponieważ wysyłanie oryginalnych plików znacznie zwiększy zużycie danych przez ciebie i wszystkich odbiorców na czacie.
@@ -415,21 +392,11 @@ Please use this method sparingly, as sending original files will significantly i
Możesz włączyć „znikające wiadomości” w ustawieniach czatu, w prawym górnym rogu okna czatu, wybierając przedział czasu od 5 minut do 1 roku.
-
Until the setting is turned off again,
-each chat member’s Delta Chat app takes care
-of deleting the messages
-after the selected time span.
-The time span begins
-when the receiver first sees the message in Delta Chat.
-The messages are deleted both,
-on the servers,
-and in the apps itself.
+
Dopóki ustawienie nie zostanie ponownie wyłączone, aplikacja Delta Chat u każdego członka czatu zajmie się usuwaniem wiadomości po wybranym okresie. Przedział czasu rozpoczyna się w momencie, gdy odbiorca po raz pierwszy zobaczy wiadomość w Delta Chat. Wiadomości są usuwane zarówno na serwerze, jak i w samej aplikacji.
Pamiętaj, że na znikających wiadomościach możesz polegać tylko wtedy, gdy ufasz swoim partnerom czatu; złośliwi partnerzy czatu mogą robić zdjęcia lub w inny sposób zapisywać, kopiować lub przesyłać dalej wiadomości przed usunięciem.
-
Apart from that,
-if one chat partner uninstalls Delta Chat,
-the (anyway encrypted) messages may take longer to get deleted from their server.
+
Poza tym, jeśli jeden z uczestników czatu odinstaluje aplikację Delta Chat, usunięcie (i tak zaszyfrowanych) wiadomości z jego serwera może potrwać dłużej.
@@ -439,9 +406,9 @@ the (anyway encrypted) messages may take longer to get deleted from their server
-
Jeśli chcesz zaoszczędzić miejsce na urządzeniu, możesz wybrać opcję automatycznego usuwania starych wiadomości.
+
Jeśli chcesz zaoszczędzić miejsce na swoim urządzeniu, możesz wybrać opcję automatycznego usuwania starych wiadomości.
-
Aby ją włączyć, przejdź do „Usuń wiadomości z urządzenia” w ustawieniach w sekcji „Czaty i media”. Możesz ustawić przedział czasowy pomiędzy „po 1 godzinie” a „po 1 roku”; w ten sposób wszystkie wiadomości zostaną usunięte z urządzenia, gdy tylko staną się starsze.
+
Aby ją włączyć, przejdź do Ustawienia → Czaty → Usuń wiadomości z urządzenia . Możesz ustawić przedział czasowy pomiędzy „po 1 godzinie” a „po 1 roku”; w ten sposób wszystkie wiadomości zostaną usunięte z urządzenia, gdy tylko staną się starsze.
Wybierz Nowy czat, a następnie Nowa grupa z menu w prawym górnym rogu lub naciśnij odpowiedni przycisk na Androidzie / iOS.
-
Na następnym ekranie wybierz członków grupy i zdefiniuj nazwę grupy. Możesz też wybrać awatar grupy.
+
Na następnym ekranie wybierz członków grupy i zdefiniuj nazwę grupy. Możesz też wybrać awatar grupy.
-
Zaraz po napisaniu pierwszej wiadomości w grupie wszyscy członkowie zostaną poinformowani o nowej grupie i mogą odpowiedzieć w grupie (jeżeli nie napiszesz wiadomości w grupie, grupa jest niewidoczna dla członków).
+
Gdy tylko napiszesz pierwszą wiadomość w grupie, wszyscy członkowie zostaną poinformowani o nowej grupie i będą mogli odpowiadać w grupie (dopóki nie napiszesz wiadomości w grupie, grupa będzie niewidoczna dla członków).
Ponieważ nie jesteś członkiem grupy, nie możesz dodać siebie ponownie.
- Jednak nie ma problemu, po prostu poproś dowolnego członka grupy na normalnym czacie, aby dodał cię ponownie.
+
Ponieważ nie jesteś członkiem grupy, nie możesz dodać siebie ponownie. Jednak nie ma problemu, po prostu poproś dowolnego członka grupy na normalnym czacie, aby dodał cię ponownie.
@@ -555,8 +521,7 @@ However, since groups are meant for trusted people, avoid
Jeśli później będziesz chciał ponownie dołączyć do grupy, poproś innego członka grupy, aby dodał cię do grupy.
-
Alternatywnie możesz też „Wyłączyć powiadomienia” dla grupy dzięki temu otrzymasz wszystkie wiadomości i
- nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych nowych wiadomościach.
+
Alternatywnie możesz też „Wyłączyć powiadomienia” dla grupy, dzięki temu otrzymasz wszystkie wiadomości i nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych nowych wiadomościach.
@@ -597,6 +562,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -849,8 +1005,7 @@ Welcome to the power of the interoperable chatmail relay network :)
Sprawdź dokładnie, czy oba urządzenia są w tym samym Wi-Fi lub tej samej sieci
-
Na Windowsie, przejdź do “Panel sterowania / Sieć i internet” i upewnij się, że Sieć prywatna jest wybrana jako “Typ profilu sieci”
-(po przeniesieniu możesz wrócić do pierwotnej wartości)
+
Na Windowsie, przejdź do „Panel sterowania / Sieć i internet” i upewnij się, że Sieć prywatna jest wybrana jako „Typ profilu sieci” (po przeniesieniu możesz wrócić do pierwotnej wartości)
W systemie iOS upewnij się, że jest przydzielony dostęp do opcji „Ustawienia » Aplikacje » Delta Chat » Sieć lokalna”
@@ -894,15 +1049,14 @@ Welcome to the power of the interoperable chatmail relay network :)
-
Na starym urządzeniu przejdź do Ustawienia → Czaty i media → Eksport kopii zapasowej. Wprowadź swój PIN odblokowania ekranu, wzór lub hasło. Następnie możesz nacisnąć „Utwórz kopię”. Spowoduje to zapisanie pliku kopii zapasowej na urządzeniu. Teraz musisz jakoś przenieść go na inne urządzenie.
+
Na starym urządzeniu przejdź do Ustawienia → Czaty → Eksport kopii zapasowej. Wprowadź swój PIN odblokowania ekranu, wzór lub hasło. Następnie możesz nacisnąć „Utwórz kopię”. Spowoduje to zapisanie pliku kopii zapasowej na urządzeniu. Teraz musisz jakoś przenieść go na inne urządzenie.
-
Na nowym urządzeniu, na ekranie logowania, zamiast logować się na swoje konto e-mail, wybierz Przywróć z kopii zapasowej. Po zaimportowaniu Twoje rozmowy, klucze szyfrujące i multimedia powinny zostać skopiowane na nowe urządzenie.
-Jeśli korzystasz z iOS i napotykasz trudności, może ten poradnik Ci pomoże.
+
Na nowym urządzeniu wybierz: Mam już profil → Przywróć z kopii zapasowej. Jeśli korzystasz z iOS i napotykasz trudności, może ten poradnik ci pomoże.
-
Jesteś teraz zsynchronizowany i możesz używać obu urządzeń do wysyłania i odbierania wiadomości zaszyfrowanych end-to-end w komunikacji ze swoimi partnerami.
+
Jesteś teraz zsynchronizowany i w komunikacji ze swoimi partnerami możesz używać obu urządzeń do wysyłania i odbierania wiadomości zaszyfrowanych metodą end-to-end.
@@ -1289,23 +1443,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -622,6 +637,197 @@ mas não é recomendável mais de 150.
mas o Delta Chat é um mensageiro privado para conversar com direitos iguais.
Consulte o Número de Dunbar para obter mais informações.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1420,23 +1626,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -622,6 +637,197 @@
в то время как Delta Chat - это приватный мессенджер для общения на равных правах.
Смотрите число Данбара для более глубокого понимания.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1418,25 +1624,20 @@ Delta Chat вместо этого использует реализацию Ope
-
Используемый релей должен знать ваш IP-адрес,
-а также иногда устройства ваших контактов, если вы проводите совместные звонки
-или используете приложения.
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
+or use apps together.
-
IP-адреса необходимы для обеспечения соединения и эффективности.
-Они не сохраняются и не передаются третьим лицам.
-Обратите внимание, что IP-адрес
-
-
это не подробный адрес, который вы указываете службе доставки,
-а скорее приблизительный, обычно определяющий регион или страну.
-
+
IP Addresses are needed for connectivity and efficiency.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
Поскольку именно так по умолчанию работает интернет и другие мессенджеры,
-мы не предлагаем здесь никаких настроек и не задаём предварительных вопросов
-
-
Если вы считаете свой IP-адрес угрозой безопасности или конфиденциальности,
-мы рекомендуем использовать VPN в сочетании с режимом блокировки системы.
-Поиск настроек во всех приложениях на вашем устройстве оставит уязвимости.
-Например, нажатие на ссылку раскрывает IP-адрес неизвестным лицам и представляет собой гораздо больший риск в данном случае.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -627,6 +642,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1425,23 +1631,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -627,6 +642,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1427,23 +1633,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -582,6 +597,197 @@ but more than 150 is not recommended.
where Delta Chat is a private messenger for chatting with equal rights.
See Dunbar’s number for more insights.
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
+
+
+
@@ -1268,23 +1474,20 @@ can not be identified easily.
-
The used relay needs to know your IP Address,
-as well as sometimes your contact’s devices if you have a call
+
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
or use apps together.
IP Addresses are needed for connectivity and efficiency.
-They are neither persisted nor exposed.
-Note that the IP Address
-is not like a detailed address you give to a delivery service,
-but much more coarse, often defining region or country only.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
As this is just how the internet and other messengers work by default,
-we do not offer options here or ask upfront questions.
-
-
If you see your IP Address as a security or privacy risk,
-we recommend to use a VPN, in combination with system lockdown mode.
-Hunting down options in all apps on your system will leave gaps.
-For example, tapping a link exposes IP Addresses to unknown parties and is the by far larger risk here.
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
@@ -621,6 +636,197 @@ Please use this method sparingly, as sending original files will significantly i
其中Delta Chat 是与平等权利 聊天的私人信使。
相关知识,请参阅邓巴数。
+
+
+
+ Channels
+
+
+
+
+
Channels are a one-to-many tool for broadcasting messages.
+
+
+
+
+ Subscribe to a channel
+
+
+
+
+
+
Scan the QR code
+or tap the invite link you got from the channel owner.
+
+
+
That’s all!
+You will receive a few of the messages from the channel history
+and, from that point on, all new messages from the channel.
+
+
Don’t worry, if that does not happen immediately.
+Once the channel owner comes online, your join request will be processed.
+
+
As all of Delta Chat, also Channels are private and decentralized,
+there is no public discovery.
+
+
Other channel subscribers will not see that you subscribed and cannot message you.
+The channel owner, however, can message you.
+They will also see that you read a message unless you have read receipts disabled.
+
+
If you do not want to share your main profile,
+you can also create a dedicated profile for joining a channel.
+
+
+
+
+ Create a channel
+
+
+
+
+
+
+
Tap New Chat and choose New Channel.
+
+
+
Enter a name, optionally set an image and description, and hit the Create button.
+
+
+
You can now send and manage messages as usual.
+
+
+
From the channel’s profile, share the QR code or invite link with others.
+
+
+
+
Subscribers will receive your messages,
+but they cannot send messages in your channel.
+When subscribing, they will receive a few of the latest messages of the channel history.
+
+
You can see the view count beside each message.
+Note that this only counts subscribers who have read receipts enabled,
+so the real view count may be larger.
+
+
+
+
+ How many subscribers can a channel have?
+
+
+
+
+
Channels are designed for much larger audiences than groups.
+
+
The practical limit depends on the used relay,
+so there is no single fixed number that applies everywhere.
+
+
For really large channels with several tens of thousands of subscribers,
+we recommend using a dedicated profile for the channel
+and checking whether the relay is suitable.
+
+
But don’t be too hesitant: Delta Chat is designed to be relay-agnostic,
+so you can change your relay at any point easily -
+your existing subscribers will not even notice.
+You only have to update the invite link you share with new subscribers in that case.
+
+
+
+
+ Calls
+
+
+
+
+
Delta Chat supports one-to-one audio calls and video calls.
+
+
Calls are supported on Desktop, Ubuntu Touch, iOS and Android 8 and newer.
+
+
+
+
+ Place a call
+
+
+
+
+
+
+
In a one-to-one chat, tap the 📞 call icon.
+
+
+
This opens a small menu
+where you can choose whether to place an Audio Call or a Video Call.
+
+
+
+
+
+
+ Accept or reject a call
+
+
+
+
+
+
+
When someone calls you,
+Delta Chat shows an incoming call screen or notification.
+
+
+
Tap Accept to answer
+or Decline to reject the call.
+
+
+
+
+
+
+ During a call
+
+
+
+
+
+
+
You can mute your microphone.
+
+
+
You can enable or disable your camera.
+
+
+
On mobile, you can switch between front and back cameras.
+
+
+
+
Depending on the device, you can also select the audio output or use picture-in-picture.
+On desktop, the call is using a dedicated window
+and you can continue using the main Delta Chat window as usual.
+
+
+
+
+ Missed calls and notifications
+
+
+
+
+
+
+
If you do not answer, do not hear the ringing, or do not have your device at hand,
+the call appears as a missed call.
+
+
+
Only your accepted contacts can make your device ring.
+Contact requests will appear as usual and will not ring.
+
+
+
At Settings → Notifications → Calls,
+you can disable the special call ringing screen completely.
+If you do so, you will not be disturbed by any ringing notification,
+you can still pick up the call by tapping the incoming call message bubble in its chat.
The used relays need to know your IP Address,
+as well as sometimes your contact’s devices if you have a call
+or use apps together.
-
IP 地址是连接和提高效率所必需的。
-它们既不会持久存在,也不会暴露。
-请注意,IP 地址
-不像你给快递服务的详细地址、
-而是更粗略,通常只定义地区或国家。
+
IP Addresses are needed for connectivity and efficiency.
+Delta Chat neither persists nor exposes them.
+Note that IP Addresses
+are not like an address you give to a delivery service,
+but typically less precise, often defining city or region only.
-
这只是互联网和其他信使的默认工作方式、
-我们在此不提供选项,也不预先提问。
-
-
如果你认为你的 IP 地址存在安全或隐私风险、
-我们建议使用 VPN 并结合系统锁定模式。
-在系统的所有应用程序中查找选项会留下漏洞。
-例如,点击链接会将 IP 地址暴露给未知方,这是目前最大的风险。
+
If you see your IP Address as a risk,
+we recommend to use a VPN for the whole system.
+Per-app options leave gaps across your system.
+For example, tapping a link can expose IP Addresses to unknown parties, which is by far the larger risk.
###Delta Chat 是否支持 “密封发件人”?{#sealedsender}
diff --git a/src/main/res/values-ar/strings.xml b/src/main/res/values-ar/strings.xml
index 70a347f2c..d4f0e068b 100644
--- a/src/main/res/values-ar/strings.xml
+++ b/src/main/res/values-ar/strings.xml
@@ -184,6 +184,7 @@
أخرىالخلفية
+
كلهاالبصمة
diff --git a/src/main/res/values-az/strings.xml b/src/main/res/values-az/strings.xml
index 20ae21653..54f9d5dd1 100644
--- a/src/main/res/values-az/strings.xml
+++ b/src/main/res/values-az/strings.xml
@@ -165,12 +165,14 @@
7 günlük söndürHəmişə səssiz
+
5 dəqiqə üçün
+
30 qəqiqə üçün1 saat üçün2 saat üçün 6 saat üçün
-
+
Mesajları yönləndirin %1$sə-?Faylı ixrac etmək? Faylların ixracı cihazınızdakı hər hansı digər tətbiqlərə daxil olmağa imkan verəcəkdir. \n\n Razısan?Bu kontaktı bloklamaq? Bu kontaktdan artıq mesaj qəbul etməyəcəksiniz.
@@ -317,11 +319,17 @@
FonHal hazırdaki şəkili istifadə edinFotoalbomdan götürün
+
Bu seçimi ləğv etsəniz, serverinizin və digər müştərilərinizin müvafiq olaraq konfiqurasiya olunduğundan əmin olun. \n\nAyrıca şeylər işləməyəcəkdir.
+
DeltaChat qovluğuna avtomatik keçid
+
Klassik e-poçtları göstər
+
Xeyir, ancaq çatlar
+
Qəbul edilən kontaktlar üçün
+
HamısıÖzünəməxsus arxa fonÖzünəməxsus rəng
diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml
index d3c74ce4b..7c0fe6983 100644
--- a/src/main/res/values-bg/strings.xml
+++ b/src/main/res/values-bg/strings.xml
@@ -64,6 +64,7 @@
ВинагиВинаги да се зареждат отдалечените изображенияВеднъж
+
Показване на предупреждениеНе сегаНикога
@@ -161,6 +162,7 @@
КамераЗаснемане
+
Превключване на камератаВключване/изключване на пълноекранния режимМестоположение
@@ -288,18 +290,20 @@
Спиране на звука за 7 дниСпиране на звука за постоянно
+
За 5 минути
+
За 30 минутиЗа 1 часЗа 2 часаЗа 6 часа
-
- Да бъде ли изпратен следният файл на%s?
+ Да бъде ли изпратен следният файл на %s?Да бъдат ли изпратени следните %d файлове на %s?Файлът е записан в \"%1$s\"
+
Да бъдат ли препратени съобщенията на %1$s?Да бъдат ли препратени съобщенията към %1$d чата?Експортирането на прикачените файлове ще даде възможност други приложения на Вашето устройство да имат достъп до тях.\n\nИскате ли да продължите?
@@ -560,6 +564,7 @@
ПриоритетДа бъдат разрешени системните уведомления за нови съобщенияДа се показва в уведомлението съдържанието на съобщението
+
Да се показва в уведомлението подателят и първите думи на съобщениетоЦвят на LED светлинатаЗвук
@@ -598,12 +603,19 @@
ФонДа се използва подразбиращото се изображениеИзбор от галерията
+
Ако промение тази опция, се уверете, че Вашият сървър и другите Ви клиенти са конфигурирани по съответен начин.\n\nВ противен случай е възможно нещата въобще да не работят.
+
Автоматично преместване в папката DeltaChat
+
Да се извлича само от папката DeltaChat
+
Да се показват класически e-mail съобщения
+
Не, само чатове
+
За приетите контакти
+
ВсичкиЕкспериментални възможностиПоточно излъчване на местоположението при поискване
@@ -649,12 +661,13 @@
Изтриване на старите съобщенияИзтриване на съобщенията от устройството
+
Изтриване на съобщенията от сървъраИскате ли да изтриете %1$d съобщения сега, както и всички съобщения \"%2$s\", които ще бъдат изтегляни в бъдеще?\n\n• Това включва всички медийни файлове\n\n• Съобщенията ще бъдат изтрити, независимо от това дали са видени или не\n\n• Съобщенията от \"Запазени съобщения\" няма да бъдат изтривани локално
-
+
Искате ли да изтриете %1$d съобщения сега и всички съобщения \"%2$s\", които ще бъдат изтегляни в бъдеще?\n\n⚠️ Това включва електронна поща, медийни файлове и съобщенията от \"Записани съобщения\" във всички папки на сървъра\n\n⚠️ Не ползвайте тази функция, ако искате да запазите данните на сървъра\n\n⚠️ Не ползвайте тази функция, ако работите с други клиенти за електронна поща освен Delta Chat
-
+
Това включва електронна поща, медийни файлове и \"Запазени съобщения\" във всички папки на сървъра. Не ползвайте тази функция, ако искате да запазите данните на сървъра или ако работите с други клиенти за електронна поща освен Delta Chat.Разбирам. Всички тези съобщения да бъдат изтрити
@@ -733,7 +746,7 @@
Научете повечеИзтрихте чата \"Запазени съобщения\".\n\nℹ️ За да използвате възможността \"Запазени съобщения\" отново, създайте нов чат със себе си.
-
+
⚠️ Мястото за съхранение, предоставено от Вашия доставчик, скоро ще бъде изчерпано:%1$s%% вече са използвани.\n\nМоже да нямате възможност да получавате съобщения, ако мястото за съхранение е заето напълно.\n\n👉 Моля, проверете дали не бихте могли да изтриете стари данни през уеб интерфейса на доставчика и обмислете дали да не включите \"Настройки / Изтриване на старите съобщения\". Можете по всяко време да проверите текущо използваното място за съхранение в \"Настройки / Свързаност\".⚠️ Изглежда датата и часът на Вашето устройство са неточни (%1$s).\n\nНастройте часовника ⏰🔧, за да имате сигурност, че Вашите съобщения се получават правилно.
@@ -884,7 +897,6 @@
Действия, свързани със съобщениетоПредварителен преглед на тапетАктивирани са изчезващите съобщения
-
Споделянето на местоположението да бъде спряноСлед като приключите със записа, докоснете двукратно, за да го изпратите. За да го отхвърлите, приплъзнете с два пръста.
diff --git a/src/main/res/values-bqi/strings.xml b/src/main/res/values-bqi/strings.xml
index 1b8d7bfb4..5afaf2807 100644
--- a/src/main/res/values-bqi/strings.xml
+++ b/src/main/res/values-bqi/strings.xml
@@ -59,7 +59,9 @@
وارسگربرنومه یل وو وارسگراپوروفایل
+
پوی پوروفایلا
+
پوروفایل هیم سکویینومگه ٱسلیناڌن پا گوفت وو لوفت
@@ -78,6 +80,7 @@
همیشهشؽواتا دیر ز دسرس هی بوگوئشنهیم ی کرت
+
نشووݩ داڌن هوشدارسکو نهیچ
@@ -179,6 +182,7 @@
شؽواتگرگرؽڌن
+
آلشت شؽواتگرآلشت وزیت پوی بلگهجاگه
@@ -314,12 +318,13 @@
بؽ دونگ کردن سی 7 رۊبؽ دونگ کردن سی همیشه
+
سی 5 دؽقه
+
سی 30 دؽقهسی 1 ساعتسی 2 ساعتسی 6 ساعت
-
فایل من «%1$s» زفت وابی.
@@ -397,6 +402,7 @@
گوفت وو لوفتاگوزارشپسند ز شؽوات مال
+
پویتا سقف %1$s
@@ -411,6 +417,7 @@
پاک کردن پیوما قڌیمیپاک کردن پیوما ز دسگا
+
پاک کردن پیوما ز سروری کرت دیندا دانلود
diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml
index 4907fd9a3..eea5ede31 100644
--- a/src/main/res/values-ca/strings.xml
+++ b/src/main/res/values-ca/strings.xml
@@ -59,7 +59,9 @@
MultimèdiaApps & MultimèdiaPerfil
+
Tots els Perfils
+
Perfil ActualMenú principalInicia un xat
@@ -82,6 +84,7 @@
SempreCarrega sempre les imatges remotesUna vegada
+
Mostra l\'advertimentAra noMai
@@ -198,6 +201,7 @@
CàmeraCaptura
+
Canvia la càmeraAlterna el mode de pantalla completaUbicació
@@ -375,12 +379,13 @@
Silencia 7 diesSempre silenciat
+
Durant 5 minuts
+
Durant 30 minutsDurant 1 horaDurant 2 horesDurant 6 hores
-
Voleu enviar el següent fitxer a %s?Voleu enviar els següents %d fitxers a %s?
@@ -432,6 +437,7 @@
¿Esborra %d missatge de tots els teus dispositius?¿Esborra %d missatges de tots els teus dispositius?
+
Reenvia missatges a %1$s?Voleu reenviar els missatges a %1$d xats?En exportar els adjunts permetreu que altres aplicacions del dispositiu hi puguin accedir.\n\nVoleu continuar?
@@ -752,6 +758,7 @@
PrioritatHabilita les notificacions del sistema per als missatges nousMostra el contingut del missatge a la notificació
+
Mostra el remitent i les primeres paraules del missatge en les notificacionsColor LEDSo
@@ -792,16 +799,23 @@
FonsUsa la imatge per defecteTrieu de la galeria
+
Si desactiveu aquesta opció, assegureu-vos que el vostre servidor i els altres programes estiguin configurats de la mateixa manera.\n\nAltrament podeu tenir problemes de funcionament.Mode multidispositiuSincronitza els vostres missatges amb els vostres altres dispositius. Activat automàticament quan s\'afegeix un segon dispositiu.El mode multidispositiu ha d\'estar habilitat quan feu servir el mateix perfil des de diferents dispositius. Desactiva aquesta opció només si has esborrat aquest perfil de tots els altres dispositius.\n\nDesactivar aquesta opció mentre es fa servir el mateix perfil en múltiples dispositius farà que es perdin missatges i hi hagi altres problemes.
+
Moure automàticament a la carpeta de Delta Chat
+
Agafa només de la carpeta de DeltaChat
+
Mostra els correus clàssics
+
No, només xats
+
Per a contactes acceptats
+
TotFuncionalitats experimentalsAquestes funcionalitats poden ser inestables i poden canviar o ser suprimides
@@ -856,14 +870,17 @@
Esborra els missatges anticsEsborra els missatges del dispositiu
+
Esborra els missatges del servidorVoleu esborrar ara %1$d missatges i tots els missatges \"%2$s\" futurs?\n\n• Això inclou tot el contingut multimèdia\n\n• S\'esborraran els missatges fins i tot si no s\'han llegit\n\n• Els \"Missatges desats\" no s\'esborraran de l\'emmagatzematge local
-
+
Voleu esborrar ara %1$d missatges i tots els missatges nous \"%2$s\" futurs?\n\n⚠️ Això inclou els correus, contingut multimèdia i \"Missatges desats\" a totes les carpetes del servidor\n\n⚠️ No utilitzeu aquesta funció si voleu conservar les dades al servidor\n\n⚠️ No utilitzeu aquesta funció si feu servir un client de correu diferent a Delta Chat
-
+
Això inclou els correus electrònics, contingut multimèdia i «Missatges desats» en totes les carpetes del servidor. No useu aquesta funció si voleu conservar dades al servidor o si useu altres clients de correu més enllà de Delta Chat.
+
Activa l\'esborrament immediat
+
Si habiliteu l\'esborrament immediat no podeu usar múltiples dispositius en aquest perfil.Ho entenc, esborra tots aquests missatges
@@ -957,7 +974,7 @@
Més informacióHeu esborrat el xat «Missatges desats».\n\nℹ️ Per a usar altre cop la funcionalitat de «Missatges desats», creeu un xat nou amb vós mateix.
-
+
⚠️ Esteu a punt de quedar-vos sense espai d\'emmagatzematge al vostre proveïdor: ja esteu utilitzant %1$s%% .\n\nPodríeu deixar de rebre missatges si s\'emplena.\n\n👉 Reviseu a la interfície web del proveïdor si podeu esborrar dades antigues i considereu habilitar \"Preferències / Xats i multimèdia / Esborra els missatges antics\". Podeu veure sempre el nivell d\'ocupació a \"Preferències / Connectivitat\".⚠️ La data o l\'hora del vostre dispositiu no semblen correctes (%1$s).\n\nAdjusteu el rellotge ⏰🔧 per a assegurar que els missatges es reben correctament.
@@ -1120,7 +1137,6 @@
Accions de missatgePrevisualització del fons de pantallaS\'han activat els missatges efímers
-
Deixa de compartir la ubicacióDesprés d\'enregistrar, feu doble toc per a enviar-lo. Per a descartar l\'enregistrament, fregueu amb dos dits.
diff --git a/src/main/res/values-ckb/strings.xml b/src/main/res/values-ckb/strings.xml
index 426c2e075..19b533015 100644
--- a/src/main/res/values-ckb/strings.xml
+++ b/src/main/res/values-ckb/strings.xml
@@ -208,18 +208,20 @@
بێدەنگ کردن بۆ ماوەی 7 ڕۆژبێدەنگ کردن بۆ هەمیشە
+
بۆ ماوەی 5 خولەک
+
بۆ ماوەی 30 خولەکبۆ ماوەی 1 کاتژمێربۆ ماوەی 2 کاتژمێربۆ ماوەی 6 کاتژمێر
-
ئەم پەڕگەیە دەنێریت بۆ %s؟ئەم %d پەڕگەیە دەنێریت بۆ %s؟پەڕگەکە پاشەکەوت کرا لە \"%1$s\".
+
ئەو پەیامانە دەنێریت بۆ %1$s؟ئەو پەیامانە دەنێریت بۆ نێو %1$dوتووێژ؟پێوەلکاوەکە هەناردە دەکەیت؟ هەناردەکردنی پێوەلکاوەکان وادەکات نەرمامێرەکانی دیکەی سەر مۆبایلەکەت بتوانن دەستیان بەو بەڵگە هەناردەکراوە بگات.\n\n بەردەوام دەبیت؟
@@ -354,6 +356,7 @@
پێشترێتیوریاکەرەوەکانی سیستەم بۆ پەیامە نوێکان چالاک بکەدەقی پەیامەکە لەنێو وریاکەرەوەکاندا پیشان بدە
+
ناوی پەیامنێرەکە و وشە سەرەتاییەکانی دەقی پەیامەکە لەناو وریاکەرەوەکەدا پیشان بدەڕەنگی چرای LEDدەنگ
@@ -384,10 +387,15 @@
پشتخانبەکارهێنانی وێنەی بنەڕەتیهەڵبژاردن لە پیشانگا
+
هەناردنی خۆکار بۆ بوخچەی دێڵتاچات
+
پیشاندانی ئیمەیلە کلاسیکەکان
+
نا، بەس چاتەکان
+
بۆ بەردەنگە پەسندکراوەکان
+
هەمووئەو تایبەتمەندییانەی بۆ تاقی کردنەوەنپشتخانی بنەڕەتی
@@ -414,6 +422,7 @@
سڕینەوەی پەیامە کۆنەکانسڕینەوەی پەیامەکان لەسەر مۆبایەلەکت
+
سڕینەوەی پەیامەکان لەسەر سێرڤەرتێگەیشتم، هەموو ئەم پەیامانە بسڕەوە
@@ -506,7 +515,6 @@
دۆخی گەیشتن ناڕەوایەچالاکییەکانی پەیامپەیامە خۆشارەوەکان چالاک کرا
-
دێڵتا چات بۆ گرتن و هەناردنی وێنە و فلیم و سکان کردنی کۆدی QR، کامێراکەت بەکاردەهێنێت.دێڵتا چات بۆ تۆمار کردن و هەناردنی دەنگ و هەروەها ڤیدیۆی دەنگدار، مایکەکەت بەکاردەهێنێت.
diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml
index 61fabd3ba..1456f109d 100644
--- a/src/main/res/values-cs/strings.xml
+++ b/src/main/res/values-cs/strings.xml
@@ -25,6 +25,8 @@
Stahování...Otevřít přílohuPřipojit se
+ Připojit se ke skupině
+ Připojte se ke kanáluZnovu se připojitSmazatSmazat pro mě
@@ -59,7 +61,9 @@
MultimédiaAplikace a multimédiaProfil
+
Všechny profily
+
Aktuální profilHlavní nabídkaZačít chatovat
@@ -70,6 +74,10 @@
Označit jako přečtenéPřečteno
+
+ Označit jako nepřečtené
+
+ NepřečtenéNačítání...Skrýt
@@ -80,6 +88,7 @@
VždyVždy načítat vzdálené obrázkyJednou
+
Zobrazovat varováníTeď neNikdy
@@ -89,6 +98,7 @@
OfflineDalší
+ VarováníChybaChyba: %1$sAplikace pro tento typ dat nenalezena.
@@ -116,6 +126,15 @@
Naposledy viděni %1$sNaposledy viděno: Neznámý
+
+
+ %d minutové trvání
+ %d minut trvání
+ %d minut trvání
+ %d minut trvání
+
+
+ Méně než 1 minuta%d min.
@@ -175,6 +194,7 @@
%d vybránoVybráno:
+ VybránoJáRozepsanéObrázek
@@ -188,6 +208,9 @@
Přejete-li si přidat nálepky, klepněte na „Otevřít složku nálepek“, vytvořte podsložku pro balíček nálepek a přetáhněte do ní soubory obrázků a nálepekOtevřít složku nálepek
+ Přidat tuto nálepku do své sbírky?
+ Smazat tuto nálepku?
+ Klepnutím na nálepku ji sem přidáte.ObrázkyZvukové záznamy
@@ -203,6 +226,7 @@
FotoaparátSpoušť
+
Přepnout kameruPřepnout režim celé obrazovkyPoloha
@@ -374,12 +398,13 @@
Ztlumit na 7 dníZtlumit navždy
+
Na 5 minut
+
Na 30 minutNa 1 hodinuNa 2 hodinyNa 6 hodin
-
Odeslat následující soubor do chatu %s?Odeslat následující %d soubory do chatu %s?
@@ -414,6 +439,7 @@
Smazat %d zpráv ze všech Vašich zařízení?Smazat %d zpráv ze všech vašich zařízení?
+
Přejete si přeposlat zprávy do chatu %1$s?Přejete si přeposlat zprávy do %1$d chatů?Uložením příloh je zpřístupníte ostatním aplikacím na tomto zařízení.\n\nPřejete si pokračovat?
@@ -727,6 +753,7 @@
PrioritaPovolit systémová oznámení nových zprávZobrazit obsah zprávy uvnitř oznámení
+
Zobrazit odesílatele a první slova zprávy uvnitř oznámeníBarva diodyZvuk
@@ -767,16 +794,23 @@
PozadíPoužít výchozí obrázekVybrat z galerie
+
Při změně této volby se ujistěte, že váš server a ostatní klientské aplikace mají odpovídající nastavení.\n\nJinak může vše přestat fungovat.Režim pro více zařízeníSynchronizujte zprávy s ostatními zařízeními. Automaticky povoleno při přidání druhého zařízeníPři použití stejného profilu na více zařízeních musí být povolen \"režim více zařízení\". Toto nastavení zakažte pouze v případě, že jste tento profil odstranili ze všech ostatních zařízení. \n\n Zakázání režimu \"režim více zařízení\" při používání profilu na více zařízeních bude mít za následek zmeškané zprávy a další problémy.
+
Automaticky přesouvat do složky DeltaChat
+
Načítat pouze ze složky DeltaChat
+
Zobrazovat běžné e-maily
+
Ne, pouze chaty
+
Pro přijaté kontakty
+
VšeExperimentální funkce Tyto funkce mohou být nestabilní a mohou být změněny nebo odstraněny.
@@ -825,14 +859,17 @@
Mazat staré zprávyMazat zprávy ze zařízení
+
Mazat zprávy ze serveruSkutečně smazat %1$d zpráv a všechny v budoucnu stažené zprávy \"%2$s\"?\n\n• Toto zahrnuje všechna multimédia\n\n• Zprávy budou smazány bez ohledu na jejich přečtení\n\n• \"Uložené zprávy\" budou ponechány
-
+
Skutečně smazat %1$d zprávy a všechny v budoucnu stažené zprávy \"%2$s\"?\n\n⚠️ Toto zahrnuje e-maily, multimédia a \"Uložené zprávy\" ve všech složkách na serveru\n\n⚠️ Nepoužívejte tuto funkci, pokud si přejete ponechat data na serveru\n\n⚠️ Nepoužívejte tuto funkci, pokud používáte i jiné e-mailové klienty mimo Delta Chat
-
+
Toto zahrnuje e-maily, multimédia a \"Uložené zprávy\" ve všech složkách na serveru. Nepoužívejte tuto funkci, pokud chcete ponechat data na serveru, nebo pokud používáte i jiné e-mailové programy mimo Delta Chat
+
Zapnout okamžité mazání
+
Pokud zapnete okamžité mazání, nemůžete tento profil používat na více zařízeních.Rozumím. Smazat všechny tyto zprávy
@@ -922,7 +959,7 @@
Další informaceSmazali jste chat „Uložené zprávy“.\n\nℹ️ Chcete-li znovu použít funkci „Uložené zprávy“, založte nový chat sami se sebou.
-
+
⚠️ Úložiště u vašeho poskytovatele je téměř vyčerpané: %1$s %% je již využito.\n\nPokud se úložiště zaplní, nebudete moci přijímat zprávy.\n\n👉 Zkuste smazat stará data ve webovém prostředí poskytovatele a zvažte povolení volby \"Nastavení / Chaty a multimédia / Mazat staré zprávy\". Aktuální využití úložiště můžete kdykoliv zkontrolovat v \"Nastavení / Připojení\".⚠️ Datum a čas na vašem zařízení se zdají být nepřesné (%1$s).\n\nUpravte si čas ⏰🔧, abyste mohli přijímat své zprávy.
@@ -1084,7 +1121,6 @@
Akce zprávyNáhled tapetyMizející zprávy jsou zapnuty
-
Přestat sdílet polohuPo ukončení nahrávání stiskněte dvakrát pro odeslání. Pro zahození nahrané zprávy, přejeďte dvěma prsty.
diff --git a/src/main/res/values-da/strings.xml b/src/main/res/values-da/strings.xml
index 978fcd008..c9900e46e 100644
--- a/src/main/res/values-da/strings.xml
+++ b/src/main/res/values-da/strings.xml
@@ -125,6 +125,7 @@
DokumenterKontaktKamera
+
Skift kameraPlaceringGalleri
@@ -226,14 +227,15 @@
Dæmp i 7 dageStille for altid
+
i 5 minutter
+
i 30 minutteri 1 timei 2 timeri 6 timer
-
- Send den følgende fil til 2%s?
+ Send den følgende fil til %s?Send de følgende %d filer til %s?Fil gemt til \"%1$s\".
@@ -242,6 +244,7 @@
Slet %d besked?Slet %d beskeder?
+
Videresend beskeder til %1$s?Videresend beskeder til %1$d samtaler? Eksportér vedhæftninger? Eksport af vedhæftninger vil tillade alle programmer på din enhed adgang til dem.\n\nFortsæt?
@@ -406,6 +409,7 @@
PrioritetAktivér systemnotifikationer for nye beskederVis beskedindhold i notifikationer
+
Viser afsender og første ord af beskeden i notifikationerLED farveLyd
@@ -440,11 +444,17 @@
BaggrundBrug standardbilledeVælg fra galleri
+
Ved deaktivering af denne indstiiling vær sikker på at server og andre klienter er indstillet tilsvarende.\n\nEllers fungerer det måske slet ikke.
+
Flytter automatisk til DeltaChat mappe
+
Vis klassisk e-mail
+
Nej, kun samtaler
+
For godkendte kontakter
+
AlleEksperimentelle featuresOn-demand lokationsstreaming
@@ -472,12 +482,13 @@
Slet gamle beskederSlet beskeder fra enhed
+
Slet beskeder fra serverVil du slette %1$d beskeder nu og alle nyligt hentede beskeder \"%2$s\" i fremtiden?\n\n• Dette inkluderer alle medier\n\n• Beskeder vil blive slettet uanset om de er set eller ej\n\n• \"Gemte beskeder\" vil ikke blive slettet lokalt
-
+
Vil du slette %1$d beskeder nu og alle nyligt hentede beskeder \"%2$s\" fremover?\n\n⚠️ Dette inkluderer e-mails, medier og \"Gemte beskeder\" i alle mapper på serveren\n\n⚠️ Brug ikke denne funktion hvis du vil beholde data på serveren\n\n⚠️ Brug ikke denne funktion hvis du benytter andre e-mail klienter end Delta Chat
-
+
Dette inkluderer email, medier og \"Gemte beskeder\" i alle server mapper. Brug ikke denne funktion hvis du vil beholde data på serveren eller hvis du bruger andre emailklienter end Delta Chat.Jeg forstår, slet alle disse beskeder
@@ -636,7 +647,6 @@
BeskedhandlingerBaggrundsvisningBeskeder med tidsudløb aktiveret
-
Delta Chat bruger dit kamera til at sende billeder, videoer og skanne QR-koderDelta Chat bruger din mikrofon til at optage og sende talebeskeder og videoer med lyd.
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index 72c80b16e..570bf140e 100644
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -61,7 +61,9 @@
MedienApps & MedienProfil
+
Alle Profile
+
Aktuelles ProfilHauptmenüChat starten
@@ -86,6 +88,7 @@
ImmerBilder immer nachladenEinmal
+
Warnung anzeigenNicht jetztNie
@@ -203,7 +206,10 @@
KameraAufnehmen
+
Kamera wechseln
+
+ Kamera wechselnVollbildmodus umschaltenStandortStandorte
@@ -380,11 +386,14 @@
Stumm für 7 TageStumm für immer
+
für 5 Minuten
+
für 30 Minutenfür 1 Stundefür 2 Stundenfür 6 Stunden
+ für 24 StundenDie folgende Datei an %s senden?
@@ -402,6 +411,8 @@
AnnehmenAblehnen
+
+ Anruf beendenSprachanruf
@@ -425,7 +436,12 @@
Verpasster AnrufBereits im AnrufAnruf auf einem anderen Gerät beantwortet
+ Kamerazugriff für Videoanrufe erforderlichMikrofonzugriff für Anrufe erforderlich
+
+ Anruf mit %1$s
+
+ %1$s anrufen…
@@ -440,6 +456,12 @@
%d Nachricht löschen?%d Nachrichten löschen?
+
+
+ Nachricht an %2$s weiterleiten?
+ %1$d Nachrichten an %2$s weiterleiten?
+
+
Nachricht weiterleiten an %1$s?Nachrichten an %1$d Chats weiterleiten?Das Exportieren von Anhängen ermöglicht es allen anderen Anwendungen auf deinem Gerät, auf diese zuzugreifen.\n\nFortfahren?
@@ -745,9 +767,9 @@
Enter-Taste sendetDurch Drücken der Eingabetaste werden Textnachrichten gesendet.Medienqualität beim Senden
- Um Originalqualität zu senden, hänge Medien als „Datei“ an. Dies verbraucht deutlich mehr Datenvolumen für dich und die Empfänger.
+ Um Originalqualität zu senden, hänge Medien als „Datei“ an. Dies verbraucht deutlich mehr Daten für dich und die Empfänger.Ausgewogen
- Schlechte Qualität, kleine Dateien
+ Schlechte Qualität, Daten sparenVibrierenBildschirmsicherheit
@@ -764,6 +786,7 @@
PrioritätSystem-Benachrichtigungen bei neuen Nachrichten aktivierenTextinhalt in Benachrichtigungen anzeigen
+
Absender und Textbeginn in Benachrichtigungen anzeigenLED-FarbeTon
@@ -806,16 +829,23 @@
HintergrundStandard-Bild verwendenAus Galerie auswählen
+
Wenn du diese Option änderst, stelle sicher, dass der Server und die anderen Geräte entsprechend konfiguriert sind\n\nAndernfalls funktionieren Dinge möglicherweise nicht wie erwartet.MehrgerätemodusSynchronisiere deine Nachrichten mit deinen anderen Geräten. Wird beim Hinzufügen eines zweiten Geräts automatisch aktiviert.Der Mehrgerätemodus muss aktiviert sein, wenn dasselbe Profil auf mehreren Geräten verwendet wird. Deaktiviere diese Einstellung nur, wenn du dieses Profil von allen anderen Geräten entfernt hast.\n\nDie Deaktivierung des Mehrgerätemodus bei Verwendung des Profils auf mehreren Geräten führt zu verlorenen Nachrichten und anderen Problemen.
+
Autom. Verschieben in den DeltaChat-Ordner
+
Nur aus DeltaChat-Ordner lesen
+
Normale E-Mails anzeigen
+
Nein, nur Chats
+
Akzeptierte Kontakte
+
AlleExperimentelle FeaturesDie Features können instabil sein und geändert oder entfernt werden
@@ -870,14 +900,17 @@
Alte Nachrichten löschenNachrichten vom Gerät löschen
+
Nachrichten vom Server löschenWirklich %1$d Nachrichten jetzt und zukünftig alle neuen Nachrichten \"%2$s\" löschen?\n\n• Dies schliesst alle Medien mit ein\n\n• Nachrichten werden gelöscht, auch wenn sie nicht angesehen wurden\n\n• \"Gespeicherte Nachrichten\" werden nicht gelöscht
-
+
Wirklich %1$d Nachrichten jetzt und zukünftig alle neuen Nachrichten \"%2$s\" löschen?\n\n⚠️ Dies schließt E-Mails, Medien und \"Gespeicherte Nachrichten\" aus allen Server-Ordnern mit ein\n\n⚠️ Verwende diese Funktion nicht, wenn du Daten auf dem Server behalten möchtest oder auch klassische E-Mail-Clients verwendest
-
+
Dies schließt E-Mails, Medien und \"Gespeicherte Nachrichten\" aus allen Server-Ordnern mit ein. Verwenden diese Funktion nicht, wenn du Daten auf dem Server behalten möchtest oder auch klassische E-Mail-Clients verwendest.
+
Sofortiges Löschen einschalten
+
Wenn sofortiges Löschen aktiviert ist, können nicht mehrere Geräte für dieses Profil verwendet werden.Verstanden, all diese Nachrichten löschen
@@ -974,7 +1007,7 @@
Mehr erfahrenDu hast den Chat \"Gespeicherte Nachrichten\" gelöscht.\n\nℹ️ Um die Funktion \"Gespeicherte Nachrichten\" erneut zu verwenden, erstelle einfach einen Chat mit dir selbst.
-
+
⚠️ Der Speicherplatz deines Anbieters ist bald erschöpft; bereits %1$s%% sind verbraucht.\n\nDu kannst möglicherweise keine Nachrichten mehr empfangen, wenn der Speicherplatz komplett verbraucht ist.\n\n👉 Bitte prüfe, ob du alte Daten im Webinterface des Anbieters löschen kannst, und erwäge, \"Einstellungen / Chats / Alte Nachrichten löschen\" zu aktivieren. Den aktuellen Speicherverbrauch kannst du jederzeit unter \"Einstellungen / Verbindungsstatus\" überprüfen.⚠️ Dein Gerät scheint ein falsches Datum oder eine falsche Uhrzeit (%1$s) zu verwenden.\n\nStelle deine Uhr ⏰🔧 richtig ein, um sicherzustellen, dass deine Nachrichten korrekt empfangen werden.
@@ -1058,8 +1091,6 @@
%1$d Nachrichten in %2$d Chats
- Kanal für Standortübertragung
- StandardübertragungDu teilst deinen StandortDamit du deinen aktuellen Standort teilen kannst, musst du Delta Chat die Nutzung deiner Standortdaten erlauben.\n\nDamit die Standortanzeige nahtlos funktioniert, werden Standortdaten auch dann verwendet, wenn die App geschlossen ist oder nicht genutzt wird.
@@ -1155,6 +1186,8 @@
NachrichtaktionenVorschau für HintergrundbildVerschwindende Nachrichten eingeschaltet
+
+ Öffne %1$sTeilen des Standorts beenden
diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml
index c7d42ca13..76e341a37 100644
--- a/src/main/res/values-el/strings.xml
+++ b/src/main/res/values-el/strings.xml
@@ -145,6 +145,7 @@
ΚάμεραΛήψη
+
Αλλαγή κάμεραςΕναλλαγή Λειτουργίας Πλήρους ΟθόνηςΤοποθεσία
@@ -259,12 +260,13 @@
Σίγαση για 7 ημέρεςΜόνιμη Σίγαση
+
Για 5 λεπτά
+
Για 30 λεπτάΓια 1 ώραΓια 2 ώρεςΓια 6 ώρες
-
Αποστολή του παρακάτω αρχείου στο %s;Αποστολή των παρακάτω %d αρχείων στο %s;
@@ -275,6 +277,7 @@
Διαγραφή %d μηνύματος;Διαγραφή %d μηνυμάτων;
+
Κοινοποίηση μηνύματος στο %1$s;Κοινοποίηση μηνύματος σε %1$d συνομιλίες;Η εξαγωγή συνημμένων θα επιτρέψει σε άλλες εφαρμογές της συσκευής σας να έχουν πρόσβαση σε αυτά.\n\nΣυνέχεια;
@@ -473,6 +476,7 @@
ΠροτεραιότηταΕνεργοποιήστε τις ειδοποιήσεις συστήματος για νέα μηνύματαΕμφάνιση περιεχομένου μηνύματος στην ειδοποίηση
+
Εμφανίζει τον αποστολέα και τις πρώτες λέξεις του μηνύματος στις ειδοποιήσειςΧρώμα LEDΉχος
@@ -507,12 +511,19 @@
Ταπετσαρία συνομιλίαςΧρήση προκαθορισμένουΕπιλογή
+
Εάν αλλάξετε αυτήν την επιλογή, βεβαιωθείτε ότι ο διακομιστής σας και οι άλλοι πελάτες σας έχουν διαμορφωθεί ανάλογα.\n\nΔιαφορετικά, τα πράγματα ενδέχεται να μην λειτουργούν καθόλου.
+
Μετακίνηση αυτόματα στον φάκελο DeltaChat
+
Λήψη μόνο από τον φάκελο DeltaChat
+
Εμφάνιση κλασικών E-Mails
+
Όχι, μόνο συνομιλίες
+
Για αποδεκτές επαφές
+
ΌλαΠειραματικά ΧαρακτηριστικάΡοή τοποθεσίας κατ\' απαίτηση
@@ -548,12 +559,13 @@
Διαγραφή Παλιών ΜηνυμάτωνΔιαγραφή Μηνυμάτων από Συσκευή
+
Διαγραφή Μηνυμάτων από ΔιακομιστήΘέλετε να διαγράψετε %1$d μηνύματα τώρα και όλα τα πρόσφατα ληφθέντα μηνύματα \"%2$s\" στο μέλλον;\n\n• Αυτό περιλαμβάνει όλα τα μέσα\n\n• Τα μηνύματα θα διαγραφούν είτε εμφανίστηκαν είτε όχι\n\n• \"Αποθηκευμένα μηνύματα \" θα παραλειφθεί από την τοπική διαγραφή
-
+
Θέλετε να διαγράψετε %1$d μηνύματα τώρα και όλα τα πρόσφατα ληφθέντα μηνύματα \"%2$s\" στο μέλλον;\n\n⚠️ Αυτό περιλαμβάνει μηνύματα ηλεκτρονικού ταχυδρομείου, πολυμέσα και τα \"Αποθηκευμένα μηνύματα\" σε όλους τους φακέλους διακομιστή\n\n⚠️ Μην χρησιμοποιείτε αυτήν τη λειτουργία εάν θέλετε να διατηρήσετε δεδομένα στο διακομιστή\n\n⚠️ Μην χρησιμοποιείτε αυτήν τη λειτουργία εάν χρησιμοποιείτε άλλους πελάτες ηλεκτρονικού ταχυδρομείου εκτός από το Delta Chat
-
+
Αυτό περιλαμβάνει e-mail, πολυμέσα και \"Αποθηκευμένα μηνύματα\" σε όλους τους φακέλους διακομιστή. Μην χρησιμοποιείτε αυτήν τη λειτουργία εάν θέλετε να διατηρήσετε δεδομένα στο διακομιστή ή εάν χρησιμοποιείτε άλλα προγράμματα-πελάτες ηλεκτρονικού ταχυδρομείου εκτός από το Delta Chat.Καταλαβαίνω, διαγράψτε όλα αυτά τα μηνύματα
@@ -624,7 +636,7 @@
Ο/Η %2$s όρισε το χρόνο εξαφάνισης των μηνυμάτων σε %1$s εβδομάδες.Διαγράψατε τη συνομιλία \"Αποθηκευμένα μηνύματα\".\n\nℹ️ Για να χρησιμοποιήσετε ξανά τη λειτουργία \"Αποθηκευμένα μηνύματα\", δημιουργήστε μια νέα συνομιλία με τον εαυτό σας.
-
+
⚠️ Ο αποθηκευτικός χώρος του παρόχου σας πρόκειται να εξαντληθεί: %1$s %% χρησιμοποιούνται ήδη.\n\nΕνδέχεται να μην μπορείτε να λαμβάνετε μηνύματα εάν ο χώρος αποθήκευσης είναι πλήρης.\n\n👉 Ελέγξτε εάν μπορείτε να διαγράψετε παλιά δεδομένα στη διεπαφή ιστού του παρόχου και εξετάστε το ενδεχόμενο ενεργοποίηση \"Ρυθμίσεις / Διαγραφή παλαιών μηνυμάτων\". Μπορείτε να ελέγξετε την τρέχουσα χρήση αποθηκευτικού χώρου ανά πάσα στιγμή στις \"Ρυθμίσεις / Συνδεσιμότητα\".⚠️ Η ημερομηνία ή η ώρα στη συσκευή σας φαίνεται να είναι μην είναι ακριβής (%1$s).\n\nΠροσαρμόστε το ρολόι σας ⏰🔧 για να βεβαιωθείτε ότι τα μηνύματά σας λαμβάνονται σωστά.
@@ -760,7 +772,6 @@
Ενέργειες μηνυμάτωνΠροεπισκόπηση φόντουΤα εξαφανιζόμενα μηνύματα ενεργοποιήθηκαν
-
Διακοπή κοινής χρήσης τοποθεσίαςΜετά την εγγραφή, πατήστε δύο φορές για αποστολή. Για να απορρίψετε την εγγραφή, τρίψτε με δύο δάχτυλα.
diff --git a/src/main/res/values-eo/strings.xml b/src/main/res/values-eo/strings.xml
index b67aee880..231d493aa 100644
--- a/src/main/res/values-eo/strings.xml
+++ b/src/main/res/values-eo/strings.xml
@@ -54,7 +54,9 @@
AŭdovidaĵojApoj kaj vidaĵojProfilo
+
Ĉiuj profiloj
+
Aktuala profiloĈefa menuoKomenci Babiladon
@@ -75,6 +77,7 @@
ĈiamĈiam ŝargu forajn bildojnUnufoje
+
Afiŝu avertonNe nunNeniam
@@ -173,6 +176,7 @@
FotiloKapti
+
Elektu alian kameraonBaskulu el/al la plena ekranoLoko
@@ -285,14 +289,16 @@
Silentigi por 7 tagojSilentigi por ĉiam
+
por 5 minutoj
+
por 30 minutojpor 1 horopor 2 horojpor 6 horoj
-
Dosiero konservita kiel \"%1$s\".
+
Plusendi mesaĝojn al %1$s?Babili kun %1$s?
@@ -425,6 +431,7 @@
FonoUzi defaŭltan bildonElekti el galerio
+
ĈiujRespondi
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index b9309d769..b50386960 100644
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -25,6 +25,8 @@
Descargando…Abrir adjuntoUnirse
+ Unirse al grupo
+ Unirse al canalVolver a unirseEliminarEliminar solo para mí
@@ -59,7 +61,9 @@
MultimediaApps y multimediaPerfil
+
Todos perfiles
+
Perfil actualMenú principalComenzar chat
@@ -70,6 +74,8 @@
Marcar como leídoLeído
+
+ Marcar como leídoNo leído
@@ -82,6 +88,7 @@
SiempreCargar siempre imágenes remotasUna vez
+
Mostrar advertenciaAhora noNunca
@@ -91,6 +98,7 @@
Fuera de líneaSiguiente
+ AdvertenciaErrorError: %1$sNo se puede encontrar una aplicación compatible con este tipo de contenido
@@ -208,6 +216,7 @@
CámaraCapturar
+
Alternar cámaraAlternar modo pantalla completaUbicación
@@ -386,11 +395,14 @@
Silenciar por 7 díasSilenciar por siempre
+
Por 5 minutos
+
Por 30 minutosPor 1 horaPor 2 horasPor 6 horas
+ Por 24 horas¿Enviar el archivo a %s?
@@ -431,6 +443,13 @@
Llamada canceladaLlamada perdidaYa estás en una llamada
+ Llamada contestada en otro dispositivo
+ Se requiere permiso de micrófono para las llamadas
+
+ Llamada con %1$s
+
+ Llamando a %1$s
+
¿Seguro que quieres abandonar este canal?
@@ -446,6 +465,7 @@
¿Eliminar %d mensajes de todos tus dispositivos?¿Eliminar %d mensajes de todos tus dispositivos?
+
¿Reenviar mensajes a %1$s?¿Reenviar mensajes a %1$d chats?Los adjuntos exportados serán accesibles desde cualquier otra aplicación en su dispositivo. ¿Continuar?
@@ -537,8 +557,11 @@
BuscarBuscar en el chat
+
+ Buscar en %1$sBuscar archivosBuscar chats, contactos, y mensajes
+ Resultado para \"%1$s\"No se encontraron resultados para \"%s\"No leído
@@ -551,6 +574,7 @@
Crear grupoPor favor introduzca un nombre para el grupo.
+ Por favor, introduce un nombre.Añadir miembrosDebes ser un miembro del grupo para realizar esta acción.Cifrado
@@ -769,6 +793,7 @@
PrioridadHabilitar las notificaciones del sistema para nuevos mensajesMostrar el contenido del mensaje en la notificación
+
Mostrar el remitente y las primeras palabras del mensaje en las notificacionesColor de LEDSonido
@@ -787,6 +812,8 @@
Solicitar al teclado deshabilitar el aprendizaje personalizadoNotificaciones de lecturaSi las notificaciones de lectura están desactivadas, no podrás comprobar cuándo se han leído tus mensajes.
+
+ Leído porServidorCifradoAdministrar claves
@@ -809,16 +836,23 @@
FondoUsar imagen por defectoSeleccionar de la galería
+
Si deshabilita esta opción, asegúrese de que su servidor y sus otros clientes estén configurados en consecuencia.\n\nDe lo contrario, las cosas pueden no funcionar en absoluto.Modo multidispositivoSincroniza tus mensajes con tus otros dispositivos. Se activa automáticamente al añadir un segundo dispositivoEl modo multidispositivo debe estar activado cuando usas el mismo perfil en varios dispositivos. Desactiva este ajuste solo si has eliminado este perfil de todos tus demás dispositivos.\n\nSi desactivas el modo multidispositivo mientras usas el perfil en varios dispositivos, se perderán mensajes y se producirán otros problemas.
+
Mover automáticamente a la carpeta DeltaChat
+
Solo obtener de la carpeta DeltaChat
+
Mostrar correos clásicos
+
No, sólo chats
+
Para contactos aceptados
+
TodosCaracterísticas experimentalesEstas funciones pueden ser inestables y pueden ser modificadas o eliminadas
@@ -873,14 +907,17 @@
Borrar mensajes antiguosBorrar mensajes del dispositivo
+
Borrar mensajes del servidor¿Desea borrar %1$d mensajes ahora y todos los mensajes recientemente alcanzados \"%2$s\" en el futuro?\n\n• Esto incluye toda la multimedia\n\n• Los mensajes serán eliminados siendo vistos o no\n\n• \"Mensajes guardados\" serán saltados de este proceso local
-
+
¿Deseas borrar %1$d mensajes ahora y todos los mensajes recibidos en \"%2$s\" al futuro?\n\n⚠️ Esto incluye correos, multimedia y \"Mensajes guardados\" en todas las carpetas del servidor. No uses esta función si quieres mantener tus datos en el servidor o si estas usando otros clientes de correo más allá de Delta Chat\n\n⚠️ No uses esta función si deseas mantener tus datos en el servidor\n\n⚠️ No uses esta función si estás usando otros clientes de correo más allá de Delta Chat
-
+
Esto incluye correos, multimedia y \"Mensajes guardados\" en todas las carpetas del servidor. No uses esta función si quieres mantener tus datos en el servidor o si estas usando otros clientes de correo además de Delta Chat
+
Activar la eliminación inmediata
+
Si habilita la eliminación inmediata, no podrá utilizar varios dispositivos en este perfil.Comprendo, borrar todos estos mensajes
@@ -899,9 +936,12 @@
Cambiaste el nombre del grupo de \"%1$s\" a \"%2$s\".El nombre del grupo fue cambiado de \"%1$s\" a \"%2$s\" por %3$s.
+
+ Nombre del canal cambiado de \"%1$s\" a \"%2$s\".Cambiaste la imagen del grupo.Imagen del grupo cambiada por %1$s.
+ Imagen del canal cambiada.Cambiaste la descripción del chat.Descripción del chat modificada por %1$s.
@@ -974,7 +1014,7 @@
Aprender másEliminaste los chats de los \"Mensajes guardados\". \n\nℹ️ Para volver a usar los\"Mensajes guardados\", debes crear un chat contigo mismo.
-
+
⚠️ El almacenamiento de tu proveedor está por excederse, ya tienes %1$s%% en uso.\n\nQuizás no puedas recibir mensajes cuando el almacenamiento esté al 100%% de uso.\n\n👉 Por favor chequea si puedes eliminar los datos antiguos en la página web del proveedor y considera habilitar \"Ajustes / Eliminar mensajes antiguos\". Puedes chequear tu almacenamiento actual en cualquier momento en \"Ajustes / Conectividad\".⚠️ Fecha y hora de tu dispositivo parecen ser inexactas (%1$s).\n\nAjusta tu reloj ⏰🔧 para asegurarte que los mensajes sean recibidos correctamente.
@@ -1038,6 +1078,9 @@
%1$s ya tiene un mensaje borrador, ¿quieres reemplazarlo?El enlace mailto no se pudo decodificar: %1$s
+ Eliminar cita
+ Eliminar adjunto
+
ResponderNuevo mensaje
@@ -1054,6 +1097,10 @@
Tienes mensajes nuevos%1$d mensajes en %2$d chats
+
+ Estás compartiendo tu ubicación
+ Para compartir tu ubicación en directo con los miembros del chat, permite que Delta Chat utilice tus datos de ubicación.\n\nPara que la ubicación en directo funcione sin interrupciones, los datos de ubicación se utilizan incluso cuando la aplicación está cerrada o no se está utilizando.
+
Permiso requeridoContinuar
@@ -1095,6 +1142,7 @@
Sobre Delta ChatAbrir Delta ChatMinimizar
+ Selecciona un perfil o crea uno nuevoSelecciona un chat o crea uno nuevoEscribe un mensajeInformación de cifrado
@@ -1116,8 +1164,16 @@
No se encontraron sugerencias ortográficas.Mostrar ventana
+ Sus perfiles de otra instalación de Delta Chat no son accesibles - las diferentes instalaciones almacenan sus datos en ubicaciones separadas.\n\nPara mantener los perfiles existentes:\n1. Salga ahora\n2. Abra el otro Delta Chat - si es necesario, reinstálelo desde %1$s\n3. Haga una copia de seguridad de cada perfil en \"Configuración/Chats\"\n4. Vuelva a iniciar esta versión\n5. Restaura las copias de seguridad usando \"Ya tengo un perfil\"\n¿Continúas sin tus perfiles anteriores?
+
Atajos de tecla
+
+ Navegación
+
+ Entrada de mensajes
+
+ Mensaje seleccionadoAlternar entre chatsDesplazarse por los mensajes
@@ -1137,6 +1193,8 @@
Acciones del mensajePrevisualización del fondoDesaparición de mensajes activada
+
+ Abrir %1$sDejar de compartir ubicación
diff --git a/src/main/res/values-et/strings.xml b/src/main/res/values-et/strings.xml
index 098e67b37..c9741b5b4 100644
--- a/src/main/res/values-et/strings.xml
+++ b/src/main/res/values-et/strings.xml
@@ -61,7 +61,9 @@
MeediaRakendused ja meediaProfiil
+
Kõik profiilid
+
Praegune profiilPõhimenüüAlusta vestlust
@@ -86,6 +88,7 @@
AlatiAlati laadi kaugseadmes asuvaid pilteVaid see kord
+
Näita hoiatustMitte praeguMitte kunagi
@@ -203,7 +206,10 @@
KaameraSalvesta pilt või video
+
Vaheta kaamerat
+
+ Lülita kaamera sisse/väljaLülita täisekraanivaate sisse/väljaAsukohtAsukohad
@@ -380,11 +386,14 @@
Summuta seitsmeks päevaksSummuta alatiseks
+
Kestusega 5 minutit
+
Kestusega 30 minutitKestusega 1 tundKestusega 2 tundiKestusega 6 tundi
+ Kestusega 24 tundiKas saadame järgnevad faili kasutajale %s?
@@ -402,6 +411,8 @@
VastaKeeldu
+
+ Lõpeta kõneHäälkõne
@@ -425,7 +436,12 @@
Märkamata kõneKõne juba on pooleliKõne on vastatud muus seadmes
+ Videokõnede tegemiseks peab rakendusel olema õigus kasutada kaameratHelistamiseks peab rakendusel olema õigus kasutada mikrofoni
+
+ Kõne kasutajaga %1$s
+
+ Helistan kasutajale %1$s…
@@ -440,6 +456,12 @@
Kas kustutad %d sõnumi kõikidest oma seadmetest?Kas kustutad %d sõnumit kõikidest oma seadmetest?
+
+
+ Kas edastad sõnumi vestlusesse „%2$s“?
+ Kas edastad %1$d sõnumit vestlusesse „%2$s“?
+
+
Kas edastad sõnumi kasutajale %1$s?Kas edastad sõnumid %1$d vestlusesse?Kui ekspordid manused, siis sinu nutiseadme muud rakendused saavad neile ligi.\n\nKas soovid jätkata?
@@ -764,6 +786,7 @@
PrioriteetKasuta uute sõnumite puhul süsteemi teavitusiNäita teavituses sõnumi sisu
+
Näitab teavituses sõnumi saatjat ja esimesi sõnuLED-värvHeli
@@ -806,16 +829,23 @@
TaustapiltKasuta vaikimisi piltiVali galeriist
+
Kui sa seda eelistust muudad, siis palun kontrolli, et server ja muud kliendid on vastavalt seadistatud.\n\nVastasel juhul võib minna nii, et mitte miski ei toimi.Mitme seadme tugiSünkrooni oma sõnumid oma muude seadmetega. Teise seadme lisamisel lülitatakse automaatselt sisse.Kui kasutad sama profiili mitmes seadmes, siis peab mitme seadme režiimi sisse lülitama. Lülita see seadistus välja vaid siis, kui oled selle profiili eemaldanud kõikidest muudest oma seadmetest.\n\nKui aga lülitad välja siis, kui profiil on kasutusel mitmes seadmes, on tulemuseks kadunud sõnumid ja muud imelikud juhtumised.
+
Tõsta automaatselt DeltaChati kausta
+
Laadi vaid DeltaChati kasutast
+
Näita klassikalisi e-kirju
+
Ei, vaid vestlustele
+
Kinnitatud kontaktidele
+
KõikKatselised funktsionaalsusedNeed funktsionaalsused ei pruugi korralikult toimida ning nad võivad tulevikus muutuda või sootuks olla eemaldatud
@@ -870,14 +900,17 @@
Kustuta vanad sõnumidKustuta sõnumid seadmest
+
Kustuta sõnumid serveristKas soovid kustutada %1$d sõnumit kohe ja kõik uued sõnumid ajavahemikus „%2$s“\n\n• Sealhulgas saavad olema kõik meediafailid\n\n• Sõnumid saavad kustutatud sõltumata sellest, kas oled neid näinud või mitte\n\n• „Salvestatud sõnumid“ ei kuulu kohalikus seadmes kustutamisele
-
+
Kas soovid kustutada %1$d sõnumit kohe ja kõik uued sõnumid ajavahemikus „%2$s“\n\n⚠️ Sealhulgas e-kirjad, meediafailid ja „Salvestatud sõnumid“ kõikides serveri kasutades.\n\n⚠️ Ära kasuta seda võimalust, kui tahad andmeid hoida serveris või pruugid ka klassikalisi e-posti kliente
-
+
Sealhulgas e-kirjad, meediafailid ja „Salvestatud sõnumid“ kõikides serveri kasutades. Ära kasuta seda võimalust, kui tahad andmeid hoida serveris või pruugid ka klassikalisi e-posti kliente
+
Lülita kohene kustutamine sisse
+
Kui lülitad kohese kustutamise sisse, siis sa ei saa selles profiilis kasutada mitut seadet.Ma saan aru, kustuta kõik need sõnumid
@@ -974,7 +1007,7 @@
LisateaveSa kustutasid vestluse nimega „Salvestatud sõnumid“.\n\nℹ️ Kui tahad uuesti kasutada võimalust „Salvestatud sõnumid“, siis lisa vestlus iseendaga.
-
+
⚠️ Sinu poolt teenusepakkuja juures kasutatav andmeruum hakkab täis saama: %1$s%% on juba kasutusel.\n\nKui andmeruum on täis, siis sa ilmselt ei pruugi enam sõnumeid saada.\n\n👉 Palun kontrolli, kas sul on võimalik teenusepakkuja veebiliidesest vanu sõnumeid kustutada või veelgi parem on, kui kasutad automaatse kustutamise võimalust: „Seadistused“ → „Vestlused“ → „Kustuta vanad sõnumid“. Hetkel kasutatavat andmeruumi mahutu saad alati kontrollida siit: „Seadistused“ → „Ühenduvus“.⚠️ Sinu seadme kuupäev või kellaaeg tundub olema ebatäpne (%1$s).\n\nPalun seadista kella ⏰🔧 ja taga, et sõnumivahetus, sh selle krüptimine toimib korrektselt.
@@ -1058,8 +1091,6 @@
%1$d sõnumit %2$d-s vestluses
- Kanal asukoha jagamiseks vastavalt tellimisele.
- Asukoha jagamineSa jada oma asukohta teistegaJagamaks reaalajas oma asukohta teiste vestluse liikmetega, palun luba Delta Chatil kasutada sinu asukohaandmeid.\n\nEt asukoha edastamine toimiks sujuvalt, on asukohaandmed kasutusel ka siis, kui rakendus on suletud või pole kasutusel.
@@ -1155,6 +1186,8 @@
Tegevused sõnumigaTaustapildi eelvaadeIsekustuvad sõnumid on kasutusel
+
+ Ava %1$sLõpeta asukoha jagamine
diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml
index e02377921..849d8b90d 100644
--- a/src/main/res/values-eu/strings.xml
+++ b/src/main/res/values-eu/strings.xml
@@ -42,7 +42,7 @@
GeroagoBerriro bidali
- Editatu egin da
+ Editatu egin da:Mezua editatuArtxibatu
@@ -59,7 +59,9 @@
MultimediaAplikazioak eta multimediaKontua
+
Kontu guztiak
+
Oraingo kontuaMenu nagusiaHasi txata
@@ -82,6 +84,7 @@
BetiKargatu urrutiko irudiak betiBehin
+
Erakutsi abisuaOrain ezInoiz ez
@@ -198,6 +201,7 @@
KameraHarrapatu
+
Aldatu kameraAldatu pantaila osoa moduaKokalekua
@@ -347,7 +351,7 @@
Ikasi ortografiaJoan mezuraOrdeztu zirriborroa
- Partekatu kokalekua taldeko kide guztiak
+ Partekatu kokalekua kide guztiekinGailuaren mezuakLokalki sortutako mezuakTxat honetako mezuak zure Delta Chat aplikazioak sortu ditu lokalki. Egileek aplikazioaren eguneraketei buruz eta erabileran arazoei buruz informatzeko erabiltzen dute.
@@ -375,12 +379,13 @@
Mututu 7 egunMututu betirako
+
5 minutuz
+
30 minutuz
- Ordu 1
+ Ordubetez2 orduz6 orduz
-
Bidali hurrengo fitxategia %s-(e)ra?Bidali hurrengo %d fitxategiak %s(e)ra?
@@ -432,6 +437,7 @@
Ezabatu mezu %d?Ezabatu %d mezu?
+
Birbidali mezuak %1$s erabiltzaileari?Bidali mezuak %1$d txatetara?Esportatu eranskina? Eranskinak esportatzeak zure beste gailuko beste aplikazioek atzitzea ahalbidetuko du.\n\nJarraitu?
@@ -752,6 +758,7 @@
LehentasunaGaitu sistemaren jakinarazpenak mezu berrientzatErakutsi mezuaren edukia jakinarazpenean
+
Erakutsi bidaltzailea eta mezuaren lehen hitza jakinarazpenetanLED koloreaSoinua
@@ -792,16 +799,23 @@
AtzealdeaErabili irudi lehenetsiaHautatu galeriatik
+
Aukera hau desaktibatuz gero, egiaztatu zure zerbitzaria eta beste bezeroen konfigurazioa bat datorrela.\n\nBestela agian gauzak ez dabiltza.Gailu anitzeko moduaSinkronizatu zure mezuak zure beste gailuekin. Automatikoki gaitzen da bigarren gailu bat gehitzean.Gailu anitzeko moduak gaituta egon behar du kontu bera hainbat gailutan erabiltzean. Desaktibatu ezarpen hau soilik kontu hau beste gailu guztietatik kendu baduzu.\n\nGailu anitzeko modua desaktibatzeak kontua hainbat gailutan erabiltzen ari den bitartean, mezuak galtzea eta bestelako arazoak eragingo ditu.
+
Automatikoki mugitzen du DeltaChat karpetara
+
Delta Chat karpetatik soilik berreskuratu
+
Erakutsi ohiko e-mailak
+
Ez, txatak besterik ez
+
Onartutako kontaktuena
+
DenakEzaugarri esperimentalakBaliteke ezaugarri hauek ezegonkorrak izatea eta gerora aldatzea edo kentzea.
@@ -856,14 +870,17 @@
Ezabatu mezu zaharrakEzabatu mezuak gailutik
+
Ezabatu mezuak zerbitzaritik%1$d mezu ezabatu nahi dituzu orain eta \"%2$s\" etorkizunean jasotako mezuak ere?\n\n• Honek multimedia ere barne hartzen du\n\n• Mezuak ikusi ala ez ezabatuko dira\n\n• \"Gordetako mezuak\" ez dira lokalki ezabatuko
-
+
%1$d mezu ezabatu nahi dituzu orain eta \"%2$s\" etorkizunean jasotako mezuak ere?\n\n⚠️ Honek mezu elektronikoak, multimedia eta \"Gordetako mezuak\" barne hartzen ditu zerbitzariko karpeta guztietan\n\n⚠️ Ez erabili funtzio hau datuak zerbitzarian gorde nahi badituzu edo posta bezero klasikoak ere erabiltzen badituzu
-
+
Honek barne hartzen ditu mezu elektronikoak, multimedia eta \"Gordetako mezuak\" zerbitzariko karpeta guztietan. Ez erabili funtzio hau datuak zerbitzarian gorde nahi badituzu edo mezu elektronikoen bezero klasikoak ere erabiltzen badituzu.
+
Berehalako ezabatzea aktibatu
+
Berehalako ezabaketa gaitzen baduzu, ezin izango dituzu gailu anitz erabili profil honetan.Ulertzen dut, ezabatu mezuk guzti hauek
@@ -957,7 +974,7 @@
Ikasi gehiago\"Gordetako mezuak\" txata ezabatu duzu.\n\nℹ️ \"Gordetako mezuak\" funtzioa berriro erabiltzeko, sortu txat berri bat zure buruarekin.
-
+
⚠️ Zure hornitzailearen biltegiratzea agortzear dago: %%-tik %1$s erabili dituzu dagoeneko.\n\nLitekeena da mezuak jaso ezin izatea biltegiratzea beteta badago.\n\n👉 Mesedez, egiaztatu datu zaharrak hornitzailearen web-interfazean ezaba ditzakezun eta kontuan hartu \"Ezarpenak / Txatak / Ezabatu mezu zaharrak\" aukera aktibatzea. Zure uneko biltegiratze-erabilera edozein unetan egiaztatu dezakezu \"Ezarpenak / Konektibitatea\" atalean.⚠️ Zure gailuko data edo ordua okerra dela dirudi (%1$s).\n\nEgokitu zure erlojua ⏰🔧 zure mezuak zuzen jasotzen direla ziurtatzeko.
@@ -1120,7 +1137,6 @@
Mezu-ekintzakAtzealdearen aurrebistaDesagertzen diren mezuak aktibatu dira
-
Utzi kokapena partekatzeariGrabatu ondoren, sakatu bi aldiz bidaltzeko. Grabazioa baztertzeko, pasatu bi hatz gainetik.
diff --git a/src/main/res/values-fa/strings.xml b/src/main/res/values-fa/strings.xml
index 8cb9f8c4f..cf823f4f9 100644
--- a/src/main/res/values-fa/strings.xml
+++ b/src/main/res/values-fa/strings.xml
@@ -59,7 +59,9 @@
رسانهبرنامهها و رسانههانمایه
+
تمام نمایهها
+
نمایهٔ فعلیفهرست اصلیشروع گپ
@@ -80,6 +82,7 @@
همیشهتصاویر با منبع بیرونی همیشه بارگیری شوندهمین یک بار
+
نمایش هشداراکنون نههرگز
@@ -185,6 +188,7 @@
دوربینگرفتن
+
تغییر دوربینتغییر وضعیت تمام صفحهموقعیت مکانی
@@ -356,12 +360,13 @@
ساکت کردن به مدت۷ روزساکت کردن دائمی
+
به مدت ۵ دقیقه
+
به مدت ۳۰ دقیقهبه مدت ۱ ساعتبه مدت ۲ ساعتبه مدت ۶ ساعت
-
ارسال این پرونده به %s؟ارسال این %d پرونده به %s؟
@@ -402,6 +407,7 @@
آیا میخواهید از روی تمام دستگاههایتان %d پیام را حذف کنید؟حذف %dپیام؟
+
پیامها به %1$s هدایت شوند؟انتقال پیامها به %1$d گپ؟ضمیمه صادر شود؟ صادر کردن ضمیمه باعث میشود دیگر نرمافزارهای روی دستگاه شما بتوانند به آن دسترسی داشته باشند. \n\nادامه میدهید؟
@@ -709,6 +715,7 @@
اولویتفعال کردن اعلانهای سیستم برای پیامهای جدیدنمایش محتوای پیام در اعلان
+
نمایش ارسال کننده و اولین کلمات پیام در اعلان LED رنگصدا
@@ -749,16 +756,23 @@
پسزمینهاستفاده از تصویر پیشفرضانتخاب از گالری
+
اگر این گزینه را غیر فعال میکنید از اینکه سرور شما و حسابهایتان هم بر این اساس تنظیم شده باشند.\n\n در غیر این صورت ممکن است هیچ چیز کار نکند. حالت چند دستگاهیهمگامسازی پیامهای شما با دیگر دستگاههایتان. در صورت اضافه کردن دستگاه دوم به صورت خودکار فعال میشود.حالت چند دستگاهی زمانی که از یک نمایه روی چند دستگاه استفاده میکنید باید فعال شود. تنها در صورتی این تنظیم را غیرفعال کنید که این نمایه را از روی همهٔ دیگر دستگاههایتان حذف کردهاید. \n\n غیرفعال کردن حالت چند دستگاهی زمانی که یک نمایه را روی چند دستگاه دارید باعث میشود که بعضی پیامها گم شوند و همچنین مشکلهای دیگری به وجود میآورد.
+
انتقال خودکار به پوشه دلتاچت
+
فقط پوشه دلتاچت را بررسی کن
+
نمایش رایانامههای معمولی
+
نه، فقط گپها
+
برای مخاطبین پذیرفته شده
+
همهویژگیهای آزمایشیاین ویژگیها ممکن است ناپایدار باشند و همچنین ممکن است بعدا تغییر کنند یا حذف شوند
@@ -813,14 +827,17 @@
پاک کردن پیامهای قدیمیپاک کردن پیامها از دستگاه
+
پاک کردن پیامها از سرورآیا میخواهید %1$d پیام جدید و دریافت شده را در زمان%2$s در آینده پاک کنید؟\n\n• این شامل همه رسانهها هم میشود\n\n• پیامها جدای از اینکه دیده شده باشند یا نه پاک میشوند. \"پیام های ذخیره شده\" شامل این پاک کردن محلی نمیشوند.
-
+
آیا میخواهید %1$d پیام را اکنون و تمام پیامهای آیندهٔ «%2$s» را پاک کنید؟/n/n⚠️ این شامل رایانامهها، رسانه و «پیامهای ذخیره شده» در همه پوشههای کارساز(سرور) میشود/n/n⚠️ اگر میخواهید دادهها در کارساز باقی بمانند از این قابلیت استفاده نکنید/n/n⚠️ اگر بهجز دلتاچت از دیگر نرمافزارهای رایانامه هم استفاده میکنید این قابلیت را به کار نگیرید.
-
+
این شامل رایانامهها، رسانهها و «پیامهای ذخیره شده» در تمام پوشههای کارساز(سرور) میشود. اگر میخواهید دادهها را در کارساز نگه دارید از این قابلیت استفاده نکنید. اگر از دیگر نرمافزارهای رایانامه بهجز دلتاچت استفاده میکنید هم از این قابلیت استفاده نکنید.
+
فعالسازی حذف بلافاصله
+
اگر حذف بلافاصله را فعال کنید، نمیتوانید این نمایه را روی چند دستگاه داشته باشید.متوجه هستم، همه پیامها حذف شوند
@@ -910,7 +927,7 @@
بیشتر بدانیدشما گپ «پیامهای ذخیره شده» را پاک کردید.\n\nℹ️ برای استفادهٔ دوباره از «پیامهای ذخیره شده» کافی است یک گپ جدید با خودتان درست کنید.
-
+
⚠️ میزان فضای در دسترس کارساز رایانامه شما در حال تمام شدن است. %1$s از %% استفاده شده است. اگر فضا کاملا پر شده باشد دیگر امکان دریافت پیام را نخواهید داشت. 👈 لطفا پیامهای قدیمی در رایانامه خود را از طریق نسخهٔ وب رایانامه پاک کنید. همچنین میتوانید گزینه پاک کردن پیامهای قدیمی در دلتاچت را فعال نمایید. هروقت خواستید میتوانید فضای در دسترس را از «تنظیمها / اتصالها» بررسی کنید. هشدار⚠️ به نظر میرسد زمان و تاریخ دستگاه شما دقیق نیست(%1$s). ساعت دستگاه خود را تنظیم کنید ⏰🔧 تا پیامها به درستی دریافت شوند.
@@ -1073,7 +1090,6 @@
عملیاتهای پیامپیشنمایش پسزمینهپیامهای ناپدید شونده فعال شدند
-
توقف اشتراک موقعیت مکانیپس از ضبط کردن برای ارسال دوبار ضربه بزنید. برای حذف و رد ضبط کردن با دو انگشت خود بکشید.
diff --git a/src/main/res/values-fi/strings.xml b/src/main/res/values-fi/strings.xml
index 67a67b1d5..231947280 100644
--- a/src/main/res/values-fi/strings.xml
+++ b/src/main/res/values-fi/strings.xml
@@ -64,6 +64,7 @@
AinaLataa aina kuvat verkostaKerran
+
Näytä varoitusEi nytEi koskaan
@@ -161,6 +162,7 @@
KameraKuvaa
+
Vaihda kameraaKoko näytön tilaSijainti
@@ -288,15 +290,16 @@
Mykistä 7 päiväksiMykistä ikuisesti
+
5 minuutiksi
+
30 minuutiksi1 tunniksi2 tunniksi6 tunniksi
-
- Lähetä seuraava tiedosto yhteystiedolle%s?
- Lähetä seuraavat %dtiedostot yhteystiedolle%s?
+ Lähetä seuraava tiedosto yhteystiedolle %s?
+ Lähetä seuraavat %d tiedostot yhteystiedolle %s?Tiedosto tallennettu \"%1$s\".
@@ -304,6 +307,7 @@
Poista %d viesti?Poista %d viestiä?
+
Välitä viestit yhteystiedolle %1$s?Välitä viestit %1$d keskustelulle?Liitteiden vieminen antaa muille laitteen sovelluksille mahdollisuuden lukea niitä.\n\nJatka?
@@ -564,6 +568,7 @@
PrioriteettiOta järjestelmäilmoitukset käyttöön uusista viesteistäNäytä viestien sisältö ilmoituksissa
+
Näytä lähettäjä ja viestin ensimmäiset sanat ilmoituksissaLEDin väriÄäni
@@ -602,12 +607,19 @@
TaustakuvaKäytä oletuskuvaaValitse galleriasta
+
Jos muutat tätä asetusta, varmista että palvelimesi ja muut päätelaitteesi ovat määritetty vastaavasti.\n\nMuutoin ne eivät ehkä toimi lainkaan.
+
Siirrä automaattisesti DeltaChat -kansioon
+
Hae vain DeltaChat -kansiosta
+
Näytä tavanomaiset sähköpostiviestit
+
Ei, vain pikaviestit
+
Hyväksytyille yhteystiedoille
+
KaikkiKokeelliset ominaisuudetTarvittaessa sijainnin jatkuva jakaminen
@@ -653,12 +665,13 @@
Poista vanhat viestitPoista viestit laitteelta
+
Poista viestit palvelimeltaHaluatko poistaa %1$d viestiä heti ja kaikki uudet viestit \"%2$s\" jatkossa?\n\n• Tämä sisältää kaiken median\n\n• Viestit poistetaan riippumatta siitä onko ne nähty vai ei\n\n• \"Tallennetut viestit\" jätetään paikalliselle laitteelle
-
+
Haluatko poistaa %1$d viestiä heti ja kaikki uudet viestit \"%2$s\" jatkossa?\n\n⚠️ Tämä sisältää sähköpostiviestit, median ja kaikki \"Tallennetut viestit\" kaikissa palvelimen kansioissa\n\n⚠️ Älä käytä tätä toimintoa, jos haluat säilyttää tiedot palvelimella\n\n⚠️ Älä käytä tätä toimintoa, jos käytät muita sähköpostisovelluksia Delta Chatin lisäksi
-
+
Tämä sisältää sähköpostit, median ja \"Tallennetut viestit\" kaikissa palvelimen kansioissa. Älä käytä tätä toimintoa, jos haluat pitää tietosi palvelimella tai jos käytät muita sähköpostisovelluksia Delta Chatin lisäksi.Ymmärrän, poista kaikki nämä viestit
@@ -739,7 +752,7 @@
Lue lisääPoistit \"Tallennetut viestit\" -keskustelun.\n\nℹ️ Aloita uusi keskustelu itsesi kanssa, niin voit jälleen käyttää \"Tallennetut viestit\" -ominaisuutta.
-
+
⚠️ Palveluntarjoajasi tallennuskiintiö ylitetään pian, käytössä on jo %1$s / %%.\n\nEt välttämättä enää voi vastaanottaa viestejäsi, kun 100 %% on käytössä.\n\n👉 Kokeile poistaa viestejä palveluntarjoajasi internetkäyttöliittymästä. Kannattaa myös ehkä kytkeä päälle \"Asetukset / Poista vanhat viestit\". Voit tarkistaa tämän hetkisen tallennustilan käytön \"Asetukset / Yhteys\".⚠️ Laitteesi päivämäärä tai aika vaikuttaa olevan väärässä (%1$s).\n\nAseta kellonaika ⏰🔧 varmistaaksesi, että viestin vastaanottaminen onnistuu.
@@ -890,7 +903,6 @@
Viestin toiminnotEsikatselu taustallaViestien katoaminen päällä
-
Lopeta sijainnin jakaminenNauhoittamisen jälkeen napauta kahdesti lähettääksesi. Hylätäksesi nauhoitteen pyyhkäise vasemmalta oikealle kahdella sormella.
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index da3100eed..24bcfada6 100644
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -59,7 +59,9 @@
MédiaApplis & fichiers multimédiasProfil
+
Tous les profils
+
Profil actuelMenu principalCommencer la discussion
@@ -82,6 +84,7 @@
ToujoursToujours charger les images distantesUne fois
+
Montrer l\'avertissementPas maintenantJamais
@@ -208,6 +211,7 @@
CaméraEnregistrer
+
Changer de caméraActiver le plein écranPosition
@@ -386,12 +390,13 @@
Sourdine pendant 7 joursToujours en sourdine
+
pour 5 minutes
+
pour 30 minutespour 1 heurepour 2 heurespour 6 heures
-
Envoyer le fichier suivant à %s ?Envoyer les %d fichiers suivants à %s ?
@@ -446,6 +451,7 @@
Supprimer %d messages ?Supprimer %d messages ?
+
Faire suivre les messages à %1$s ?Faire suivre les messages à %1$d discussions ?Exporter des pièces jointes permettra aux autres applications sur votre appareil d\'y accéder.\n\nContinuer ?
@@ -767,6 +773,7 @@
PrioritéActiver les notifications système pour les nouveaux messagesMontrer le contenu du message dans la notification
+
Montre l\'expéditeur et les premiers mots du message dans les notificationsCouleur de LEDSon
@@ -807,16 +814,23 @@
Arrière-planUtilisez l\'image par défautSélectionner depuis la galerie
+
Si vous désactivez cette option, assurez-vous que votre serveur et vos autres clients sont configurés en conséquence.\n\nSinon des choses pourraient ne pas fonctionner du tout.Mode appareils multiplesSynchronise vos messages avec vos autres appareils. Activé automatiquement lorsque vous ajoutez un deuxième appareilLe mode appareils multiples doit être activé quand vous utilisez le même profil sur plusieurs appareils. Désactivez cette option seulement si vous avez supprimé ce profil de tous vos autres appareils.\n\nDésactiver ce mode alors que vous utilisez un profil sur plusieurs appareils causera un certain nombre de problèmes, dont des messages perdus.
+
Déplacer automatiquement vers le dossier DeltaChat
+
Ne consulter que le dossier DeltaChat
+
Voir les courriels classiques
+
Non, seulement les discussions
+
Pour les contacts acceptés
+
ToutFonctionnalités expérimentalesCes fonctionnalités peuvent présenter des instabilités, être modifiées ou supprimées
@@ -871,14 +885,17 @@
Supprimer les anciens messagesSupprimer les messages de l\'appareil
+
Supprimer les messages du serveurVoulez-vous supprimer %1$d messages maintenant ainsi que tous les nouveaux futurs messages reçus « %2$s » ?\n\n• Cela inclut tous les fichiers multimédia\n\n• Les messages seront effacés qu\'ils aient été vus ou non\n\n• Les « Messages sauvegardés » seront préservés de la suppression locale
-
+
Voulez-vous supprimer %1$d messages maintenant ainsi que tous les futurs messages reçus « %2$s » ?\n\n⚠️ Cela inclut les courriels, les fichier multimédias et les « Messages enregistrés » dans tous les répertoires du serveur\n\n⚠️ N\'utilisez pas cette fonctionnalité si vous voulez conserver vos données sur le serveur ou si vous utilisez des clients de courriel classiques en plus de Delta Chat
-
+
Cela inclut les courriels, les fichiers multimédias et les « Messages enregistrés » dans tous les répertoires du serveur. N\'utilisez pas cette fonctionnalité si vous voulez conserver vos données sur le serveur ou si vous utilisez des clients de courriel classiques en plus de Delta Chat
+
Activer la suppression immédiate
+
Si vous activez la suppression immédiate, vous ne pourrez pas utiliser plusieurs appareils sur ce profil.J\'ai compris, supprimer tous ces messages
@@ -972,7 +989,7 @@
En savoir plusVous avez supprimé la discussion « Messages enregistrés ».\n\nℹ️ Pour utiliser la fonctionnalité « Messages enregistrés » à nouveau, commencez une nouvelle discussion avec vous-même.
-
+
⚠️ Bientôt plus d\'espace de stockage chez votre fournisseur : %1$s%% utilisés.\n\nQuand il sera plein, vous ne pourrez probablement plus recevoir de messages.\n\n👉 Vérifiez si vous pouvez supprimer des éléments anciens directement via l\'interface web de votre fournisseur, et envisagez d\'activer l\'option « Paramètres/ Discussions/ Supprimer les anciens messages ». Vous pouvez vérifier à tout moment le volume utilisé dans votre espace de stockage depuis « Paramètres/ Connectivité ».⚠️ L\'heure ou la date de votre appareil semble erronée (%1$s).\n\nRéglez votre horloge ⏰🔧 pour que vos messages soient bien reçus.
@@ -1135,7 +1152,6 @@
Actions sur le messageAperçu de l\'arrière-planMessages éphémères activés
-
Arrêter de partager la positionAprès l\'enregistrement, poussez deux fois pour envoyer. Pour le supprimer, balayez l\'écran avec deux doigts.
diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml
index d01cfdacf..3385387cb 100644
--- a/src/main/res/values-gl/strings.xml
+++ b/src/main/res/values-gl/strings.xml
@@ -59,7 +59,9 @@
MediosApps & MultimediaPerfil
+
Todos os Perfís
+
Perfil ActualMenú principalInciar chat
@@ -80,6 +82,7 @@
SempreDescargar sempre imaxes remotasUnha vez
+
Mostrar avisoAgora nonNunca
@@ -184,6 +187,7 @@
CámaraCapturar
+
Cambiar de cámaraActivar modo de pantalla completaLocalización
@@ -347,12 +351,13 @@
Acalar durante 7 díasAcalar para sempre
+
durante 5 min.
+
durante 30 min.durante 1 horadurante 2 h.durante 6 h.
-
Enviar o seguinte ficheiro a %s?Enviar os seguintes %d ficheiros a %s?
@@ -372,6 +377,7 @@
Eliminar %d mensaxe en todos os teus dispositivos?Eliminar %d mensaxes en todos os teus dispositivos?
+
Reenviar mensaxes a %1$s?¿Reenviar mensaxes a %1$d conversas?Exportar anexo? Ao exportar anexos outras aplicacións no dispositivo terán acceso a eles.\n\nGardar?
@@ -659,6 +665,7 @@
PrioridadeActiva as notificación para as novas mensaxesMotra o contido da mensaxe na notificación
+
Mostra a remitente e as primeiras palabras da mensaxe na notificaciónCor LEDSon
@@ -697,12 +704,19 @@
FondoUsar imaxe por omisiónEscoller na galería
+
Se desactivas esta opción, asegúrate de que o servidor e os teus outros clientes están configurados de xeito acorde.\n\nSe non, algo podería fallar.
+
Mover automáticamente ao cartafol DeltaChat
+
Obter só desde cartafol DeltaChat
+
Mostrar correos clásicos
+
Non, só conversas
+
Para os contactos aceptados
+
TodosZona de probasDifusión da ubicación por solicitude
@@ -743,12 +757,13 @@
Eliminar mensaxes antigasBorrar mensaxes do dispositivo
+
Borrar mensaxes do servidorQueres borrar %1$d mensaxes agora e todas as novas mensaxes \"%2$s\" no futuro?\n\n• Esto inclúe todo o multimedia\n\n• As mensaxes borraranse fosen lidas ou non\n\n• As \"mensaxes gardadas\" non serán borradas do dispositivo.
-
+
Desexas eliminar %1$d mensaxes e todas as \"%2$s\" novas mensaxes obtidas no futuro?\n\n⚠️ Esto inclúe emails, multimedia e \"Mensaxes gardadas\" en tódolos cartafoles do servidor\n\n⚠️ Non uses esta función se queres manter os datos gardados no servidor\n\n⚠️ Non uses esta función se estás a utilizar outro cliente de email ademáis de Delta Chat
-
+
Esto inclúe emails, multimedia e \"Mensaxes gardadas\" en tódolos cartafoles do servidor. Non uses esta función se queres manter os datos gardados no servidor ou se estás a utilizar outro cliente de email ademáis de Delta Chat.Entendo, dalle e borra as mensaxes todas
@@ -826,7 +841,7 @@
Temporizador de desaparición de mensaxes definido en %1$s semanas por %2$s.Eliminaches o chat \"Mensaxes gardadas\".\n\nℹ️ Para usar \"Mensaxes gardadas\" de novo, crea un novo chat contigo mesmo.
-
+
⚠️ A almacenaxe do teu provedor vaise esgotar, xa utilizaches %1$s %%.\n\nPode que non recibas mensaxes cando a almacenaxe chegue a 100%% utilizado.\n\n👉 Mira se podes eliminar datos antigos na interface web do teu provedor e pensa se debes activar \"Axustes / Eliminar Mensaxes Antigas\". Podes ver a almacenaxe actual utilizada en \"Axustes / Conectividade\".⚠️ A hora ou data no teu dispositivo poderían ser incorrectas (%1$s).\n\nAxusta o reloxio ⏰🔧 para asegurar que as túas mensaxes son recibidas correctamente.
@@ -976,7 +991,6 @@
Accións da mensaxeVista previa do fondoActivada a desaparición de mensaxes
-
Deixar de compartir localizaciónTras gravar, dobre toque para enviar. Para desbotar a gravación, rabuña con dous dedos.
diff --git a/src/main/res/values-hr/strings.xml b/src/main/res/values-hr/strings.xml
index bd3512089..6b0bb1884 100644
--- a/src/main/res/values-hr/strings.xml
+++ b/src/main/res/values-hr/strings.xml
@@ -209,6 +209,7 @@
PozadinaOdaberi iz galerije
+
SveZadana pozadinaZadana boja
diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml
index edc333194..dc67bad36 100644
--- a/src/main/res/values-hu/strings.xml
+++ b/src/main/res/values-hu/strings.xml
@@ -59,7 +59,9 @@
MédiaAlkalmazások & médiaProfil
+
Összes profil
+
Jelenlegi profilFőmenüCsevegés indítása
@@ -80,6 +82,7 @@
MindigMindig töltse be a távoli képeketAzonnal
+
Figyelmeztetés megjelenítéseMost nemSoha
@@ -185,6 +188,7 @@
KameraRögzítés
+
KameraváltásVáltás teljes képernyős módraHely
@@ -356,12 +360,13 @@
Némítás 7 napraNémítás örökre
+
5 percre
+
30 percre1 órára2 órára6 órára
-
A következő fájl elküldése neki: %s?A következő %d fájl elküldése „%s” számára?
@@ -390,6 +395,7 @@
Töröl %d üzenetet az összes eszközén?Töröl %d üzenetet az összes eszközén?
+
Továbbítja az üzenetet „%1$s” számára?Továbbítja az üzenetet a következő csevegésbe: %1$d?A mellékletek exportálása lehetővé teszi, hogy más alkalmazások is hozzáférjenek azokhoz az eszközön.\n\nFolytatja?
@@ -688,6 +694,7 @@
PrioritásRendszerértesítések engedélyezése az új üzenetekrőlÜzenet tartalmának megjelenítése az értesítésben
+
Az értesítésekben megjelenik az üzenet feladója és első szavaiÉrtesítésjelző-fény színeHang
@@ -728,12 +735,19 @@
HáttérképAlapértelemezett kép használataKiválasztás a galériából
+
Ha megváltoztatja ezt a beállítást, győződjön meg arról, hogy a kiszolgálója és a többi kliense is ennek megfelelően van beállítva.\n\nMáskülönben előfordulhat, hogy a dolgok egyáltalán nem fognak működni.
+
Automatikus áthelyezés a DeltaChat nevű mappába
+
Csak a DeltaChat nevű mappából történjen lekérdezés
+
Klasszikus e-mailek megjelenítése
+
Nem, csak csevegések
+
Elfogadott partnerek számára
+
ÖsszesKísérleti funkciókOn-Demand folyamatos helymegosztás
@@ -779,14 +793,17 @@
Régi üzenetek törléseÜzenetek törlése az eszközről a letöltést követően
+
Üzenetek törlése a kiszolgálóról a letöltést követőenSzeretné törölni a %1$d üzenetet most és az összes újonnan érkező üzenetet a jövőben ekkor: „%2$s”?\n\n• Ez magában foglalja az összes médiát is\n\n• Az üzenetek törlésre kerülnek, akár látták őket, akár nem\n\n• A „Mentett üzenetek” nem kerülnek törlésre a helyi törlésből.
-
+
Biztosan törölni szeretne %1$d üzenetet most, és a jövőben minden újonnan lekérdezett „%2$s” üzenetet?\n\n⚠️ Ez magába foglalja az e-maileket, a médiatartalmakat és a „Mentett üzeneteket” az összes kiszolgálómappában.\n\n⚠️ Ne használja ezt a funkciót, ha meg akarja tartani az adatokat a kiszolgálón, vagy ha klasszikus e-mail-klienseket is használ.
-
+
Ez magába foglalja az e-maileket, a médiatartalmakat és a „Mentett üzeneteket” az összes kiszolgálómappában. Ne használja ezt a funkciót, ha meg akarja tartani az adatokat a kiszolgálón, vagy ha klasszikus e-mail-klienseket is használ.
+
A „Törlés a letöltés után azonnal” bekapcsolása
+
Ha a „Törlés a letöltés után azonnal” engedélyezve van, akkor nem használhatja ezt a profilt több eszközről.Értem, törölje ezeket az üzeneteket
@@ -875,7 +892,7 @@
Tudjon meg többetÖn törölte a „Mentett üzenetek” csevegést.\n\nℹ️ A „Mentett üzenetek” funkció újbóli használatához hozzon létre egy új csevegést önmagával.
-
+
⚠️ Az e-mail-szolgáltatójától kapott tárhelye hamarosan megtelik: %1$s%% már felhasználásra került.\n\n\nElképzelhető, hogy nem tud üzeneteket fogadni, ha a tárhelye megtelt.\n\n👉 Ellenőrizze, hogy a szolgáltatója webes felületén tudja-e törölni a DeltaChat-mappából az üzeneteket, és fontolja meg a „Beállítások / Csevegések és média / Üzenetek törlése a kiszolgálóról” engedélyezését. Az aktuális tárhelyhasználatot bármikor ellenőrizheti a „Beállítások / Tárhely” menüpontban.⚠️ Az eszközén lévő dátum vagy idő pontatlannak tűnik (%1$s).\n\nJavítsa meg az órát ⏰🔧 az üzenetek helyes fogadásának biztosítása érdekében.
@@ -1033,7 +1050,6 @@
ÜzenetakciókHáttérkép előnézeteEltűnő üzenetek bekapcsolva
-
Helymegosztás kikapcsolása.A felvétel rögzítése után duplán koppintson a küldéshez. A felvétel elvetéséhez csúsztassa két ujjával.
diff --git a/src/main/res/values-in/strings.xml b/src/main/res/values-in/strings.xml
index aeef54c31..8e61d0d81 100644
--- a/src/main/res/values-in/strings.xml
+++ b/src/main/res/values-in/strings.xml
@@ -59,6 +59,7 @@
Memuat Gambar Jarak JauhSelaluSekali
+
Tampilkan PeringatanTidak sekarangTidak pernah
@@ -143,6 +144,7 @@
KameraTangkap
+
Ganti kameraBeralih ke Mode Layar PenuhLokasi
@@ -256,12 +258,13 @@
Diamkan untuk 7 hariDiamkan seterusnya
+
untuk 5 menit
+
untuk 30 menituntuk 1 jamuntuk 2 jamuntuk 6 jam
-
Kirimkan yang berikut ini %d berkas ke %s?
@@ -270,6 +273,7 @@
Menghapus pesan %d?
+
Teruskan pesan ke %1$s?Ekspor lampiran? Mengekspor lampiran akan membuat aplikasi lain di perangkat anda terakses.\n\nLanjut?Blokir kontak ini? Anda tak akan lagi menerima pesan dari kontak ini.
@@ -404,6 +408,7 @@
NotifikasiMenunjukkanPrioritas
+
Tampilkan pengirim dan kata-kata awal dari pesan di dalam notifikasiWarna LEDSuara
@@ -435,10 +440,15 @@
Latar belakangMenggunakan gambar defaultPilih dari galeri
+
Perpindahan otomatis ke berkas DeltaChat
+
Tampilkan email klasik
+
Tidak, hanya obrolan saja
+
Untuk kontak yang telah diterima
+
SemuaFitur yang masih bersifat eksperimenLatar belakang default
@@ -457,6 +467,7 @@
Hapus pesan-pesan lamaHapus pesarn dari perangkat
+
Hapus pesan dari serverSaya mengerti, hapus semua pesan ini
diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml
index 228aaa0cb..f28195dc1 100644
--- a/src/main/res/values-it/strings.xml
+++ b/src/main/res/values-it/strings.xml
@@ -61,7 +61,9 @@
MediaApps & MediaProfilo
+
Tutti i Profili
+
Profilo CorrenteMenu PrincipaleInizia Chat
@@ -86,6 +88,7 @@
SempreCarica Sempre Immagini RemoteUna Volta
+
Mostra AvvisoNon oraMai
@@ -213,6 +216,7 @@
FotocameraCattura
+
Cambia FotocameraAttiva/Disattiva Modalità Schermo InteroPosizione
@@ -391,11 +395,14 @@
Silenzia per 7 giorniSilenzia per sempre
+
Per 5 minuti
+
Per 30 minutiPer 1 oraPer 2 orePer 6 ore
+ Per 24 oreInvia il seguente file a %s?
@@ -438,6 +445,10 @@
Già in chiamataChiamata risposta su un altro dispositivoPer le chiamate è necessaria l\'autorizzazione per l\'utilizzo del microfono.
+
+ Chiama con %1$s
+
+ Chiamata %1$s…
@@ -454,6 +465,7 @@
Cancella %d messaggi su tutti i tuoi dispositivi?Cancella %d messaggi su tutti i tuoi dispositivi?
+
Inoltrare messaggi a %1$s?Inoltra messaggi a %1$d chat?Esportare allegati permetterà ad ogni altra app sul tuo dispositivo di accedervi.\n\nContinuare?
@@ -781,6 +793,7 @@
PrioritàAbilita le notifiche di sistema per i nuovi messaggiMostra il contenuto del messaggio nella notifica
+
Mostra il mittente e le prime parole del messaggio nelle notificheColore LEDSuono
@@ -823,16 +836,23 @@
SfondoUsa Immagine PredefinitaSeleziona Dalla Galleria
+
Se modifichi questa opzione, assicurati che il tuo server e gli altri client siano configurati di conseguenza.\n\nAltrimenti le cose potrebbero non funzionare affatto.Modalità Multi-DispositivoSincronizza i tuoi messaggi con gli altri dispositivi. Abilitazione automatica all\'aggiunta di un secondo dispositivo.La Modalità Multi-Dispositivo deve essere abilitata quando si utilizza lo stesso profilo su più dispositivi. Disattivare questa impostazione solo se si è rimosso il profilo da tutti gli altri dispositivi.\n\nDisattivare la Modalità Multi-Dispositivo mentre si utilizza il profilo su più dispositivi causerà la perdita di messaggi e altri problemi.
+
Sposta nella Cartella DeltaChat
+
Recupera dalla Cartella DeltaChat
+
Mostra E-mail Classiche
+
No, solo chat
+
Per contatti accettati
+
SìCaratteristiche SperimentaliQueste funzionalità potrebbero essere instabili e potrebbero essere modificate o rimosse
@@ -887,14 +907,17 @@
Elimina Vecchi MessaggiElimina Messaggi dal Dispositivo
+
Elimina Messaggi dal ServerVuoi eliminare %1$d messaggi ora e tutti i nuovi messaggi recuperati \"%2$s\" d\'ora in poi?\n\n• Questo include tutti i media\n\n• I messaggi verranno eliminati anche se non sono stati letti\n\n• I \"Messaggi salvati\" vengono preservati dalla cancellazione locale.
-
+
Vuoi eliminare %1$d messaggi ora e tutti i messaggi non appena recuperati \"%2$s\" d\'ora in poi?\n\n⚠️ Ciò include e-mails, contenuti multimediali e \"Messaggi salvati\" in tutte le cartelle del server\n\n⚠️ Non utilizzare questa funzione se vuoi mantenere i dati sul server o se stai utilizzando anche altri client e-mail
-
+
Questo include e-mail, media e \"Messaggi salvati\" in tutte le cartelle del server. Non utilizzare questa funzione se desideri mantenere i dati sul server o se stai utilizzando anche altri client e-mail
+
Attiva l\'eliminazione immediata
+
Se abiliti l\'eliminazione immediata non potrai utilizzare questo profilo su più dispositivi.Ho capito, elimina tutti questi messaggi
@@ -946,7 +969,7 @@
Immagine gruppo eliminata da %1$s.Hai abilitato la trasmissione della posizione.
- Trasmissione della posizione abilitato da %1$s.
+ Trasmissione della posizione abilitata da %1$s.Hai disabilitato il timer dei messaggi a scomparsa.Timer messaggi a scomparsa disabilitato da %1$s.
@@ -991,7 +1014,7 @@
Per Saperne di PiùHai eliminato la chat \"Messaggi salvati\".\n\nℹ️ Per utilizzare nuovamente la funzione \"Messaggi salvati\", crea una nuova chat con te stesso.
-
+
⚠️ Lo spazio di archiviazione del tuo fornitore sta per esaurirsi:%1$s%% sono già utilizzati.\n\nPotresti non essere in grado di ricevere messaggi se lo spazio di archiviazione è pieno.\n\n👉 Per piacere controlla se puoi eliminare i vecchi dati nell\'interfaccia web del fornitore e considera di abilitare \"Impostazioni / Chat e Media / Elimina Vecchi Messaggi\". Puoi controllare l\'utilizzo attuale dello spazio di archiviazione in qualsiasi momento in \"Impostazioni / Connettività\".⚠️ La data o l\'ora del tuo dispositivo sembrano essere imprecise (%1$s).\n\nRegola l\'orologio ⏰🔧 per assicurarti che i tuoi messaggi vengano ricevuti correttamente.
@@ -1075,8 +1098,6 @@
%1$d messaggi in %2$d chat
- Canale Trasmissione della Posizione su Richiesta
- Trasmissione PosizioneStai condividendo la tua posizionePer condividere la tua posizione in tempo reale con i membri della chat, consenti a Delta Chat di utilizzare i tuoi dati di geolocalizzazione.\n\nPer garantire il funzionamento continuo della geolocalizzazione in tempo reale, i dati di geolocalizzazione vengono utilizzati anche quando l\'app è chiusa o non in uso.
@@ -1172,7 +1193,6 @@
Azioni messaggioAnteprima sfondoMessaggi che scompaiono attivati
-
Smetti di condividere la posizioneDopo la registrazione, doppio tocco per inviare. Per scartare la registrazione, striscia con due dita.
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index 2d27a4c98..6f3e40ef0 100644
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -122,6 +122,7 @@
カメラ撮影
+
カメラを切り替えるフルスクリーン場所
@@ -223,17 +224,19 @@
7日間停止する無効
+
5分間
+
30分間1時間2時間6時間
-
%sさんに%dつのファイルを送る?%1$sに保存しました。
+
%1$sにメッセージを転送しますか?%1$dチャットにメッセージを転送しますか?添付ファイルをエクスポートしますか?添付ファイルをエクスポートすると、他のアプリからもアクセスできるようになります。\n\nよろしいですか?
@@ -392,6 +395,7 @@
優先度新着メッセージ通知を有効にします通知にメッセージの内容を表示します
+
通知には、送信者と最初の単語を表示しますLED色通知音
@@ -426,10 +430,15 @@
背景デフォルトの画像を使うギャラリーから選ぶ
+
DeltaChatフォルダに自動で移動する
+
一般的なメールを表示する
+
いいえ、チャットのみ
+
許可されたユーザーのみ
+
全部実験的な機能オンデマンドの位置情報配信
@@ -459,6 +468,7 @@
古いメッセージの削除端末からメッセージを削除する
+
サーバーからメッセージを削除する分かりました。メッセージを削除していいです。
@@ -603,5 +613,4 @@
送信状態:既読不明な送信状態消えるメッセージを有効にしました。
-
diff --git a/src/main/res/values-kab/strings.xml b/src/main/res/values-kab/strings.xml
index ebb2e49ac..1a9e5a366 100644
--- a/src/main/res/values-kab/strings.xml
+++ b/src/main/res/values-kab/strings.xml
@@ -59,7 +59,9 @@
AmidyaIsnasen & AmidyaAmaɣnu
+
Akk imeɣna
+
Amaɣnu amiranUmuɣ agejdanBdu adiwinni
@@ -82,6 +84,7 @@
DimaSali-d yal tikelt tugniwin n unmeggagTikkelt
+
Sken ulɣuMačči turaWerǧin
@@ -198,6 +201,7 @@
TakamiṛatTuṭṭfa
+
Beddel takamiṛat Ldi/Mdel askar n ugdil ačuranAdig
@@ -373,12 +377,13 @@
Sgugem i 7 wussanSgugem i lebda
+
I 5 n tisdatin
+
I 30 n tisdatinI 1 usragI 2 yisragenI 6 yisragen
-
Azen afylu-agi ɣer %s?Azen %d ifuyla-agi ɣer %s?
@@ -430,6 +435,7 @@
Kkes %d n yizen?Kkes %d n yiznan?
+
Welleh iznan ɣer %1$s?Welleh iznan ɣer %1$d n yidiwenniyen?Asifeḍ n imeddayen ad yeǧǧ isnasen-nniḍen deg yibenk-ik·im ad kecmen ɣur-sen.\n\nad tkemmleḍ?
@@ -748,6 +754,7 @@
TazwartRmed ilɣa n unagraw i yiznan imaynutenSken agbur n yizen deg ulɣu
+
Sken-d amazan akked wawalen imezwura n yizen deg yilɣaIni LEDImesli
@@ -788,16 +795,23 @@
Tugniwin n ugilalSeqdec tugna tamezwertFren seg timidelt
+
Ma tbeddleḍ aɣewwaṛ-a, senqed aqeddac-ik·im d yimsaɣen-ik·im-nniḍen ad ttuswelen akken iwata.\n\nMa ulac, yezmer lḥal ur tteddunt ara akk tɣawsiwin.Askar n tugett n yibenkMtawi iznan-ik·im akked ibenkan-nniḍen. Irmed s wudem awurman deg tmerna n yibenk wis sinAskar aget-ibenk yessefk ad yettwarmed mi ara tesqedceḍ yiwen n umaɣnu deg ddeqs n yibenkan. Sens kan aɣewwaṛ-agi ma yella tekkseḍ amaɣnu-yagi seg yibenkan-ik·im nniḍen.\n\nAsens n usakar n waget-ibenk mi ara tesqedceḍ amaɣnu ɣef ddeqs n yibenkan ad d-yeglu s yiznan yettwazeglen akked wuguren-nniḍen.
+
Ddu s wudem awurman ɣer ukaram n DeltaChat
+
Awi-d kan seg akaram n DeltaChat
+
Sken imaylen iklasanen
+
Ala, idiwenniyen kan
+
I yinermisen yettwaqeblen
+
AkkTimahilin tirmitaninTimahilin-agi zemrent ad ilint ur rkident ara, daɣen zemrent ad ttwabeddlent neɣ ad ttwakksent
@@ -852,14 +866,17 @@
Kkes iznan iqbuṛenKkes iznan seg yibenk
+
Kkes iznan seg uqeddacTebɣiḍ ad tekkseḍ %1$d n iznan tura akk d yiznan imaynuten \"%2$s\" ɣer zdat?\n\n• Deg-s akk imidyaten\n\n• Iznan ad ttwakksen ma yella ttwalan neɣ ala\n\n• \"Iznan yettwaskelsen\" ad ttwazeglen seg tukksa tadigant
-
+
Tebɣiḍ ad tekkseḍ %1$d n iznan tura akk d yiznan imaynuten \"%2$s\" ɣer zdat?\n\n⚠️ Ayagi yegber imaylen, imidyaten akked \" iznan yettwakelsen \" deg ikaramen meṛṛa n uqeddac\n\n⚠️ Ur sseqdac ara tawuri-a ma tebɣiḍ ad teǧǧeḍ isefka ɣef uqeddac neɣ ma tesqedceḍ imsaɣen n yimaylen iklasikiyen daɣen
-
+
Ayagi yegber imaylen, imidyaten akked \" iznan yettwakelsen \" deg ikaramen meṛṛa n uqeddac. Ur sseqdac ara tawuri-a ma tebɣiḍ ad teǧǧeḍ isefka ɣef uqeddac neɣ ma tesqedceḍ imsaɣen n yimaylen iklasikiyen daɣen
+
Rmed tukksa n dindin
+
Ma tremdeḍ tukksa n dindin ur tezmireḍ ara ad tesqedceḍ aṭas n yibenkan deg umaɣnu-a. Fehmeɣ, kkes akk iznan-agi
@@ -953,7 +970,7 @@
Issin ugarTekkseḍ adiwenni n \" iznan yettwakelsen \".\n\nℹ️ Akken ad tesqedceḍ tamahilt \" iznan yettwakelsen \", rnu adiwenni amaynut akked yiman-ik·im.
-
+
⚠️Asaǧǧaw-ik·im n usekles qrib ad yaččar: %1$s%% yettwaseqdec yakan.\n\nAhat ur tezmireḍ ara ad d-remseḍ iznan ma yella asekles yeččur.\n\n 👉 Ttxil-k·m senqed ma yella tzemreḍ ad tekkseḍ isefka iqburen deg ugrudem n web n isaǧǧawen syin rmed \"Iɣewwaṛen / Idiwenniyen / Kkes iznan iqbuṛen\". Tzemreḍ ad tesneqdeḍ aseqdec n usekles-inek·inem amiran deg \"Iɣewwaṛen / tuqqna\".⚠️ Azemz neɣ akud deg yibenk-ik·im yettban-d ur iṣeḥḥa ara (%1$s).\n\nṢeggem tamasragt-ik·im ⏰🔧Akken ad neḍmen d akken iznan-ik·im ad ttwaremsen akken iwata.
@@ -1116,7 +1133,6 @@
Tigawin n yizenTaskant n tugna n ugilalIznan ur nettdum ara yettwarmed
-
Ḥbes beṭṭu n wadigSeld asekles, sit snat n tikkal i tuzna. Akken ad tekkseḍ asekles, sfeḍ s sin yiḍarren.
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index 41b49c98b..7b5042163 100644
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -137,6 +137,7 @@
카메라캡쳐
+
카메라 전환전체 화면 모드 전환위치
@@ -251,12 +252,13 @@
7일 동안 알림 끄기영구히 음소거
+
5분 동안
+
30분 동안1시간 동안2시간 동안6시간 동안
-
%s에게 %d파일을 보낼까요?
@@ -265,6 +267,7 @@
%d개의 메시지를 삭제하시겠습니까?
+
%1$s님에게 메시지를 전달할까요?%1$d 채팅으로 메시지를 전달하시겠습니까?첨부 파일을 내보내면 단말기의 다른 앱에서 해당 첨부 파일에 액세스할 수 있습니다.\n\n계속하시겠습니까?
@@ -453,6 +456,7 @@
우선순위새 메시지에 대한 시스템 알림 활성화알림에 메시지 내용 표시
+
알림에서 메시지를 보낸 사람과 첫 번째 단어를 표시합니다.LED 색상알림음
@@ -487,11 +491,17 @@
채팅방 배경화면기본 이미지 사용갤러리에서 선택됨
+
이 선택사항을 변경할 경우, 서버와 다른 클라이언트가 적절하게 구성되어 있는지 확인하십시오.\n\n그렇지 않으면 상황이 전혀 작동하지 않을 수 있습니다.
+
DeltaChat 폴더로 자동 이동
+
DeltaChat 폴더에서만 가져오기
+
아뇨, 오직 채팅만
+
승인된 연락처의 경우
+
전부주문형 위치 스트리밍기본 배경
@@ -520,10 +530,11 @@
오래된 메시지 삭제기기에서 메시지 삭제
+
서버에서 메시지 삭제%1$d 메시지와 새로 가져온 모든 메시지 \"%2$s\"를 나중에 삭제하시겠습니까?\n\n• 여기에는 모든 미디어가 포함됩니다.\n\n• 메시지가 표시되었는지 여부에 관계없이 삭제됩니다.\n\n• \"저장된 메시지\"는 로컬 삭제에서 건너뜁니다.
-
+
여기에는 모든 서버 폴더에 있는 전자 메일, 미디어 및 \"저장된 메시지\"가 포함됩니다. 서버에 데이터를 보관하거나 Delta Chat 외에 다른 이메일 클라이언트를 사용하는 경우 이 기능을 사용하지 마십시오.알겠습니다. 모든 메시지를 삭제하세요.
@@ -592,7 +603,7 @@
%2$s가 사라지는 메시지 타이머를 %1$s주로 설정함.저장된 메시지 대화를 삭제했습니다.\n\nℹ️\"저장된 메시지\" 기능을 다시 사용하려면 자신과의 대화를 새로 만드십시오.
-
+
⚠️ 공급자의 저장공간이 곧 고갈될 예정입니다. %1$s%%가 이미 사용 중입니다.\n\n저장공간이 가득 찬 경우 메시지를 수신하지 못할 수 있습니다.\n\n👉 공급자의 웹 인터페이스에서 이전 데이터를 삭제할 수 있는지 확인하고 \"설정 / 이전 메시지 삭제\"를 활성화하는 것을 고려하십시오. \"설정/연결\"에서 언제든지 현재 저장공간 사용량을 확인할 수 있습니다.⚠️ 장치의 날짜 또는 시간이 정확하지 않은 것 같습니다(%1$s).\n\n메시지가 올바르게 수신되도록 시계 ⏰🔧를 조정하세요.
@@ -721,7 +732,6 @@
잘못된 전송 상태배경 미리보기사라지는 메시지 활성화됨
-
위치 공유 중지녹화가 끝나면 두 번 눌러 전송합니다. 기록을 삭제하려면 두 손가락으로 문지르십시오.
diff --git a/src/main/res/values-lt/strings.xml b/src/main/res/values-lt/strings.xml
index b6f5ca8df..f9f89f06a 100644
--- a/src/main/res/values-lt/strings.xml
+++ b/src/main/res/values-lt/strings.xml
@@ -53,7 +53,9 @@
MedijaProgramėlės ir medijaProfilis
+
Visi profiliai
+
Dabartinis profilisPagrindinis meniuPradėti pokalbį
@@ -68,6 +70,7 @@
VisadaVisada įkelti nuotolinius paveikslusVieną kartą
+
Rodyti įspėjimąNe dabarNiekada
@@ -183,6 +186,7 @@
DokumentaiAdresatasKamera
+
Perjungti kamerąPerjungti viso ekrano veiksenąVieta
@@ -344,12 +348,13 @@
Išjungti 7 dienomsIšjungti visam laikui
+
5 minutėms
+
30 minučių1 valandai2 valandoms6 valandoms
-
Failas įrašytas į „%1$s“.
@@ -399,6 +404,7 @@
Ištrinti %d žinučių visuose jūsų įrenginiuose?Ištrinti %d žinutę visuose jūsų įrenginiuose?
+
Persiųsti žinutes %1$s?Eksportuoti priedą? Priedų eksportavimas leis bet kurioms kitoms programėlėms jūsų įrenginyje turėti prieigą prie šių priedų.\n\nTęsti?Užblokuoti šį adresatą? Jūs daugiau nebegausite žinučių nuo šio adresato.
@@ -679,6 +685,7 @@
PirmenybėĮjungti sistemos pranešimus apie naujas žinutesRodyti pranešime žinutės turinį
+
Rodyti pranešimuose siuntėjo vardą ir pirmuosius žinutės žodžiusŠviesos diodo spalvaGarsas
@@ -718,14 +725,20 @@
FonasNaudoti numatytąjį paveiksląPasirinkti iš galerijos
+
Jeigu išjungiate šį parametrą, įsitikinkite, kad jūsų serveris ir kiti klientai yra sukonfigūruoti atitinkamai.\n\nPriešingu atveju, tai gali iš viso neveikti.Kelių įrenginių veiksenaSinchronizuoti jūsų žinutes su kitais įrenginiais. Automatiškai įjungta, kai pridėtas antrasis įrenginys
+
Automatiniai perkėlimai į DeltaChat aplanką
+
Rodyti klasikinius el. laiškus
+
Ne, tik pokalbius
+
Iš priimtų adresatų
+
Iš visųEksperimentinės ypatybėsŠios ypatybės gali būti nestabilios ir gali būti pakeistos ar pašalintos
@@ -775,6 +788,7 @@
Ištrinti senas žinutesIštrinti žinutes iš įrenginio
+
Ištrinti žinutes iš serverioAš suprantu, ištrinti visas šias žinutes
@@ -976,7 +990,6 @@
Veiksmai su žinuteFono peržiūraIšnykstančios žinutės aktyvuotos
-
Bakstelėkite du kartus norėdami pamatyti išsamesnę informaciją apie jungiamumą.Nėra interneto ryšio, nepavyko prisijungti.Paskyra nėra sukonfigūruota.
diff --git a/src/main/res/values-nb/strings.xml b/src/main/res/values-nb/strings.xml
index 448fed43f..e5ee3aaf2 100644
--- a/src/main/res/values-nb/strings.xml
+++ b/src/main/res/values-nb/strings.xml
@@ -25,6 +25,8 @@
Laster ned...Åpne vedleggBli med
+ Bli med i gruppe
+ Bli med i kanalBli med igjenSlettSlett for meg
@@ -59,7 +61,9 @@
MediaApper & MediaProfil
+
Alle profiler
+
Gjeldende profilHovedmenyStart chat
@@ -70,6 +74,10 @@
Merk som lestLest
+
+ Merk som ulest
+
+ UlestLaster...Skjul
@@ -80,6 +88,7 @@
AlltidLast alltid eksterne bilderÉn gang
+
Vis advarselIkke nåAldri
@@ -89,6 +98,7 @@
AvloggetNeste
+ AdvarselFeilFeil: %1$sKan ikke finne en app som kan handtere denne typen data.
@@ -116,6 +126,13 @@
Sist sett %1$sSist sett: uvisst
+
+
+ %d minutters varighet
+ %d minutters varighet
+
+
+ Mindre enn 1 minutt%d minutt
@@ -157,6 +174,7 @@
%d valgteValgt:
+ ValgtMegKladdBilde
@@ -170,6 +188,9 @@
For å legge til merker, trykk på "Åpne merkemappe", lag en undermappe for merkepakken, og dra bilder og merkefiler ditÅpne merkemappe
+ Legg dette merket til samlingen din?
+ Slett dette merket?
+ Trykk på et merke for å legge det til her.BilderLyd
@@ -185,6 +206,7 @@
KameraTa opp
+
Bytt kameraVis fullskjermPosisjon
@@ -251,6 +273,11 @@
Ny kanalKanalnavn
+
+
+ %d utsikt
+ %d visninger
+ E-postNy e-post
@@ -266,6 +293,7 @@
Legg ved filerForlat gruppeForlat kanal
+ Forlat & slett for megSlett chatTøm chat
@@ -356,11 +384,14 @@
Demp i 7 dagerAlltid dempet
+
i 5 minutter
+
i 30 minutteri 1 timei 2 timeri 6 timer
+ i 24 timerSende følgende fil til %s?
@@ -370,13 +401,43 @@
Ring
+
+ Lydsamtale
+
+ VideosamtaleSvarAvvis
+
+ Lydsamtale
+
+ Videosamtale
+ Initialiserer...
+ Inkommende samtale
+ Ringer...
+ Gjenoppretter forbindelsen...
+ Samtale avsluttet
+ Samtale feilet
+
+ Utgående lydsamtale
+
+ Utgående videosamtale
+
+ Inkommende lydsamtale
+
+ Inkommende videosamtaleAvvist anropAvbrutt anropUbesvart anrop
+ Allerede i en samtale
+ Samtale besvart på en annen enhet
+ Mikrofontillatelse er nødvendig for samtaler
+
+ Samtale med %1$s
+
+ Ringer %1$s...
+
Er du sikker på at du vil forlate?
@@ -390,6 +451,7 @@
Slett %d melding fra alle dine enheter?Slett %d meldinger fra alle dine enheter?
+
Videresend meldinger til %1$s?Videresend meldinger til %1$d chatter?Eksporter vedlegg? Eksport av vedlegg vil gi andre apper på din enhet tilgang til dem\n\nFortsett?
@@ -468,19 +530,63 @@
Send melding til…
+
+ Mistenkelig lenke oppdaget
+
+ Er du sikker på at du vil besøke %1$s?Søk
+ Søk i chat
+
+ Søk i %1$s
+ Søk i filer
+ Søk etter chatter, kontakter, og meldinger
+ Resultat for \"%1$s\"
+ Ingen resultater funnet for \"%s\"
+
+ Ulest
+
Gruppenavn
+ Gruppebilde
+ Fjern gruppebilde
+ Endre gruppebildeLag gruppe
+
+ Skriv inn et navn på gruppen.
+ Skriv inn et navn.Legg til medlem
+ Du må være medlem av gruppen for å utføre denne handlingen.KrypteringDelte chatter
+
+ Tidligere medlemmerKontaktGruppeGalleriDokumenter
+ Lenker
+ Kart
+ Bilder og videor tilknyttet denne chatten vil vises her.
+ Dokumenter og andre filer tilknyttet denne chatten vil vises her.
+ Bilder tilknyttet denne chatten vil vises her.
+ Videoer tilknyttet denne chatten vil vises her.
+ Lydfiler og talebeskjeder tilknyttet denne chatten vil vises her.
+ Apper tilknyttet denne chatten vil vises her.
+ Media tilknyttet denne chatten vil vises her.
+ Dokumenter og andre filer tilknyttet alle chatter vil vises her.
+ Apper tilknyttet alle chatter vil vises her.Forhåndsvisning av medier
+
+ Rutenett for størrelsesforhold
+
+ Kvadratisk rutenett
+ Send melding
+
+
+
+ Legg til annen enhet
+ Sørg for at begge enhetene er tilkoblet samme Wi-Fi eller nettverkLogg innInnboksIMAP-innloggingsnavn
diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml
index 8aaec34c6..233064657 100644
--- a/src/main/res/values-nl/strings.xml
+++ b/src/main/res/values-nl/strings.xml
@@ -61,7 +61,9 @@
MediaApps en mediaProfiel
+
Alle profielen
+
Huidig profielHoofdmenuGesprek beginnen
@@ -86,6 +88,7 @@
AltijdExterne afbeeldingen altijd ladenEenmalig
+
Waarschuwing tonenNiet nuNooit
@@ -203,7 +206,10 @@
CameraVastleggen
+
Andere camera
+
+ Camera aan/uitSchermvullende weergave aan/uitLocatieLocaties
@@ -380,11 +386,14 @@
7 dagen lang uitschakelenPermanent uitschakelen
+
5 minuten lang
+
30 minuten lang1 uur lang2 uur lang6 uur lang
+ 24 uur langWil je het volgende bestand versturen aan %s?
@@ -402,6 +411,8 @@
AanvaardenWeigeren
+
+ Gesprek beëindigenAudiogesprek
@@ -425,7 +436,12 @@
Gemiste oproepReeds in gesprekEr is opgenomen op een ander apparaat
+ Cameratoegang is vereist om te kunnen videobellenMicrofoontoegang is vereist om te kunnen bellen
+
+ Bellen met %1$s
+
+ Aan het bellen met %1$s…
@@ -440,7 +456,13 @@
Wil je %d bericht verwijderen?Wil je %d berichten verwijderen?
- Wil je de berichten doorsturen aan %1$s?
+
+
+ Wil je dit bericht doorsturen naar %2$s?
+ Wil je %1$d berichten doorsturen naar %2$s?
+
+
+ Wil je de berichten doorsturen naar %1$s?Wil je de berichten doorsturen naar %1$d gesprekken?Als je de bijlage exporteert, geef je andere apps op je apparaat toegang om hem uit te lezen.\n\nWil je doorgaan?Wil je deze contactpersoon blokkeren? Hij/zij kan je geen berichten meer sturen.
@@ -764,6 +786,7 @@
PrioriteitSysteemmeldingen tonen bij nieuwe berichtenBerichtinhoud tonen op meldingen
+
Toont de afzender en eerste regel van berichten op meldingenLedkleurGeluid
@@ -806,16 +829,23 @@
AchtergrondStandaardafbeelding gebruikenKiezen uit galerij
+
Als je deze optie uitschakelt, zorg er dan voor dat je server en overige clients goed ingesteld zijn.\n\nAls dat niet zo is, dan werkt het misschien helemaal niet.Meerdere apparatenSynchroniseer berichten met andere apparaten. Dit wordt automatisch ingeschakeld na het toevoegen van een secundair apparaat.Let op: deze modus moet op alle apparaten worden ingeschakeld op hetzelfde profiel. Schakel deze instelling alleen uit als je je profiel van alle andere apparaten hebt verwijderd.\n\nDoor deze modus uit te schakelen terwijl het profiel nog gebruikt wordt, gaan er berichten verloren en kunnen er andere problemen ontstaan.
+
Automatisch verplaatsen naar DeltaChat-map
+
Alleen DeltaChat-map controleren
+
Klassieke e-mails tonen
+
Nee, alleen gesprekken
+
Van goedgekeurde contactpersonen
+
AllesExperimentele functiesLet op: deze functies zijn experimenteel en kunnen te allen tijde worden aangepast of verwijderd
@@ -870,14 +900,17 @@
Oude berichten verwijderenBerichten verwijderen van apparaat
+
Berichten verwijderen van serverWil je nu %1$d berichten verwijderen en toekomstige berichten ‘%2$s’?\n\n• Dit omvat alle media\n\n• Berichten worden verwijderd, ongeacht of ze bekeken zijn\n\n• Het gesprek ‘Bewaarde berichten’ wordt overgeslagen.
-
+
Wil je nu %1$d berichten verwijderen en toekomstige berichten ‘%2$s’,?\n\n⚠️ Dit omvat alle berichten, media en het gesprek ‘Bewaarde berichten’.\n\n⚠️ Gebruik deze functie niet als je je gegevens wilt bewaren op de server\n\n⚠️ Gebruik deze functie niet als je ook andere e-mailclients gebruikt
-
+
Dit omvat alle berichten, media en het gesprek ‘Bewaarde berichten’. Gebruik deze functie niet als je je gegevens wilt bewaren op de server of als je ook andere e-mailclients gebruikt.
+
Onmiddellijke verwijdering inschakelen
+
Let op: als je deze optie inschakelt, dan kun je geen meerdere apparaten tegelijk meer gebruiken met dit profiel.Ik begrijp het; verwijder alle berichten
@@ -974,7 +1007,7 @@
Meer informatieJe hebt het gesprek ‘Bewaarde berichten’ verwijderd.\n\nℹ️ Als je weer gebruik wilt maken van deze functie, begin dan een nieuw gesprek met jezelf.
-
+
⚠️ De opslagruimte die je provider biedt is bijna overschreden. Momenteel heb je %1$s%% ervan in gebruik.\n\nAls je geen ruimte meer hebt, kun je mogelijk geen berichten meer ontvangen.\n\n👉 Kijk of je oude gegevens kunt verwijderen in de webclient van je provider. Overweeg ook ‘Instellingen → Oude berichten verwijderen’ in te schakelen. Je kunt je huidige gebruik te allen tijde bekijken via ‘Instellingen → Verbindingen’.⚠️ De datum en tijd van je apparaat lijken niet te kloppen (%1$s).\n\nVerzet je klok ⏰🔧 om er zeker van te zijn dat je berichten kunt ontvangen.
@@ -1058,8 +1091,6 @@
%1$d berichten in %2$d gesprekken
- Kanaal voor locatie delen op verzoek
- LocatiedelingJe deelt op dit moment je locatieOm je locatie live te kunnen blijven doorgeven aan andere deelnemers, is locatietoegang vereist.\n\nHiervoor is het ook nodig om je locatie op de achtergrond door te geven.
@@ -1155,6 +1186,8 @@
BerichtactiesAchtergrondvoorbeeldVerdwijnende berichten zijn ingeschakeld
+
+ ‘%1$s’ openenStop locatiedeling
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index a0e25476b..3b7ac9295 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -25,6 +25,8 @@
Pobieranie…Otwórz załącznikDołącz
+ Dołącz do grupy
+ Dołącz do kanałuDołącz ponownieUsuńUsuń u mnie
@@ -59,7 +61,9 @@
MultimediaAplikacje i multimediaProfil
+
Wszystkie profile
+
Aktualny profilMenu główneRozpocznij czat
@@ -70,6 +74,8 @@
Oznacz jako przeczytanePrzeczytane
+
+ Oznacz jako nieprzeczytaneNieprzeczytane
@@ -82,6 +88,7 @@
ZawszeZawsze wczytuj zdalne obrazyJeden raz
+
Pokaż ostrzeżenieNie terazNigdy
@@ -91,6 +98,7 @@
OfflineDalej
+ OstrzeżenieBłądBłąd: %1$sNie można znaleźć aplikacji do obsługi tego typu danych.
@@ -218,6 +226,7 @@
KameraZrób to
+
Przełącz kameręPrzełącz na tryb pełnoekranowyLokalizacja
@@ -397,11 +406,14 @@
Wyłącz na 7 dniWyłącz na zawsze
+
na 5 minut
+
na 30 mninutna 1 godzinęna 2 godzinyna 6 godzin
+ na 24 godzinyWysłać plik do %s?
@@ -443,6 +455,13 @@
Połączenie anulowanePołączenie anulowaneJuż w trakcie rozmowy
+ Połączenie odebrane na innym urządzeniu
+ Do połączeń wymagane jest zezwolenie na korzystanie z mikrofonu
+
+ Rozmowa z %1$s
+
+ Dzwonię do %1$s…
+
Na pewno chcesz opuścić?
@@ -460,6 +479,7 @@
Usunąć %d wiadomości?Usunąć %d wiadomości?
+
Przekazać wiadomości do użytkownika %1$s?Przekazać wiadomości do %1$d czatów?Eksportować załącznik? Eksportowanie załączników umożliwi dostęp do nich innym aplikacjom na urządzeniu.\n\nKontynuować?
@@ -554,8 +574,11 @@
SzukajWyszukaj w czacie
+
+ Wyszukaj w %1$sSzukaj plikówWyszukaj czaty, kontakty i wiadomości
+ Wynik dla „%1$s”Nie znaleziono wyników dla „%sNieprzeczytane
@@ -568,6 +591,7 @@
Utwórz grupęPodaj nazwę dla grupy
+ Wpisz nazwę.Dodaj członkówMusisz być członkiem grupy, aby wykonać tę czynność.Szyfrowanie
@@ -786,6 +810,7 @@
PriorytetWłącz powiadomienia systemowe o nowych wiadomościachPokaż treść wiadomości w powiadomieniu
+
Pokaż nadawcę i pierwsze słowa wiadomości w powiadomieniachKolor LED-aDźwięk
@@ -804,6 +829,8 @@
Poproś klawiaturę o wyłączenie spersonalizowanej naukiPotwierdzenie odczytuJeśli potwierdzenia odczytu zostaną wyłączone, nie będzie można zobaczyć potwierdzeń odczytu od innych osób.
+
+ Przeczytana przezSerwerSzyfrowanieZarządzaj prywatnymi kluczami
@@ -826,20 +853,27 @@
TłoUżyj domyślnego obrazuWybierz z galerii
+
Jeśli zmienisz tę opcję, upewnij się, że twój serwer i inni klienci są odpowiednio skonfigurowani.\n\nW przeciwnym razie wszystko może w ogóle nie działać.Tryb wielu urządzeńSynchronizuj swoje wiadomości z innymi swoimi urządzeniami. Włączane automatycznie po dodaniu drugiego urządzeniaTryb wielu urządzeń musi być włączony podczas korzystania z tego samego profilu na wielu urządzeniach. Wyłącz to ustawienie tylko wtedy, gdy usuniesz ten profil ze wszystkich pozostałych urządzeń.\n\nWyłączenie trybu wielu urządzeń podczas korzystania z profilu na wielu urządzeniach spowoduje pominięcie wiadomości i inne problemy.
+
Automatyczne przenoszenie do folderu DeltaChat
+
Pobieraj tylko z folderu DeltaChat
+
Pokaż klasyczne e-maile
+
Nie, tylko czaty
+
Dla zaakceptowanych kontaktów
+
WszystkieFunkcje eksperymentalneTe funkcje mogą być niestabilne i mogą zostać zmienione lub usunięte
- Przesyłanie strumieniowe lokalizacji na żądanie
+ Strumieniowanie lokalizacjiDomyślne tłoDomyślny kolorWłasny obraz
@@ -890,14 +924,17 @@
Usuwanie starych wiadomościUsuń wiadomości z urządzenia
+
Usuń wiadomości z serweraCzy chcesz teraz usunąć %1$d wiadomości i wszystkie nowo pobrane wiadomości w przyszłości „%2$s”?\n\n• Obejmuje to wszystkie multimedia\n\n• Wiadomości zostaną usunięte niezależnie od tego, czy były widoczne, czy nie\n\n• „Zapisane wiadomości” zostaną pominięte podczas lokalnego usuwania
-
+
Czy chcesz teraz usunąć %1$d wiadomości i wszystkie nowo pobrane wiadomości w przyszłości „%2$s”?\n\n⚠️ Obejmuje to e-maile, multimedia i „Zapisane wiadomości” we wszystkich folderach na serwerze.\n\n⚠️ Nie używaj tej funkcji, jeśli chcesz zachować dane na serwerze\n\n⚠️ Nie używaj tej funkcji, jeśli chcesz zachować dane na serwerze lub korzystasz także z klasycznych klientów poczty e-mail
-
+
Obejmuje to e-maile, multimedia i „Zapisane wiadomości” we wszystkich folderach na serwerze. Nie używaj tej funkcji, jeśli chcesz zachować dane na serwerze lub jeśli używasz klasycznych klientów poczty e-mail
+
Włącz natychmiastowe usuwanie
+
Jeśli włączysz natychmiastowe usuwanie, nie będzie można używać wielu urządzeń w tym profilu.Rozumiem, usuń te wszystkie wiadomości
@@ -916,9 +953,12 @@
Zmieniono nazwę grupy z „%1$s“ na „%2$s“.Nazwa grupy zmieniona z „%1$s“ na „%2$s“ przez %3$s.
+
+ Zmieniono nazwę kanału z „%1$s” na „%2$s”.Zmieniono obraz grupy.Obraz grupy zmieniony przez %1$s.
+ Zmieniono obraz kanału.Zmieniono opis czatu.Opis czatu zmieniony przez %1$s.
@@ -991,7 +1031,7 @@
Czytaj więcejUsunięto czat „Zapisane wiadomości”.\n\nℹ️ Aby ponownie użyć funkcji „Zapisane wiadomości”, utwórz nowy czat ze sobą.
-
+
⚠️ Limit pamięci u twojego dostawcy wkrótce zostanie przekroczony, wykorzystano już %1$s%%.\n\nMożesz nie być w stanie otrzymywać wiadomości, gdy pamięć jest pełna.\n\n👉 Sprawdzić, czy możesz usunąć stare dane w interfejsie internetowym dostawcy i rozważyć włączenie opcji \"Ustawienia » Czaty » Usuwanie starych wiadomości\". W dowolnym momencie możesz sprawdzić swoje bieżące wykorzystanie pamięci w \"Ustawienia » Łączność\".⚠️ Data lub godzina urządzenia wydaje się być niedokładna (%1$s).\n\nDostosuj zegar ⏰🔧, aby upewnić się, że wiadomości są prawidłowo odbierane.
@@ -1055,6 +1095,7 @@
Na czacie %1$s jest już wersja robocza wiadomości, czy chcesz ją zastąpić?link mailto nie mógł zostać odszyfrowany: %1$s
+ Usuń cytatUsuń załącznik
@@ -1073,6 +1114,10 @@
Masz nowe wiadomości%1$d wiadomości w %2$d czatach
+
+ Udostępniasz swoją lokalizację
+ Aby udostępnić swoją lokalizację na żywo członkom czatu, zezwól aplikacji Delta Chat na korzystanie z danych o twojej lokalizacji.\n\nAby funkcja lokalizacji na żywo działała bez przerw, dane o lokalizacji są używane nawet wtedy, gdy aplikacja jest zamknięta lub nieużywana.
+
Wymagane zezwolenieKontynuuj
@@ -1114,6 +1159,7 @@
O Delta ChatOtwórz Delta ChatMinimalizuj
+ Wybierz profil lub utwórz nowy profilWybierz czat lub utwórz nowy czatNapisz wiadomośćInformacje o szyfrowaniu
@@ -1135,8 +1181,16 @@
Nie znaleziono propozycji pisowni.Pokaż okno
+ Twoje profile z innej instalacji Delta Chat nie są dostępne – różne instalacje przechowują swoje dane w oddzielnych lokalizacjach.\n\nAby zachować istniejące profile:\n1. Zamknij teraz.\n2. Otwórz inny Delta Chat – w razie potrzeby zainstaluj go ponownie z %1$s\n3. Utwórz kopię zapasową każdego profilu w „Ustawienia/Czaty”.\n4. Uruchom ponownie tę wersję.\n5. Przywróć kopie zapasowe, naciskając „Mam już profil”.\n\nCzy kontynuować bez poprzednich profili?
+
Przypisanie klawiszy
+
+ Nawigacja
+
+ Wprowadzanie wiadomości
+
+ Zaznaczona wiadomośćPrzełącz się między czatamiPrzewiń wiadomości
@@ -1156,6 +1210,8 @@
Działania na wiadomościPodgląd tłaAktywowano znikające wiadomości
+
+ Otwórz %1$sZatrzymaj udostępnianie lokalizacji
diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml
index d742a51fb..a346240cd 100644
--- a/src/main/res/values-pt-rBR/strings.xml
+++ b/src/main/res/values-pt-rBR/strings.xml
@@ -67,6 +67,7 @@
SempreSempre Carregar Imagens RemotasUma vez
+
Mostrar AvisoMais tardeNunca
@@ -167,6 +168,7 @@
CâmeraCapturar
+
Trocar câmeraAtivar modo tela cheiaLocalização
@@ -285,12 +287,13 @@
Silenciar por 7 diasSilenciar para sempre
+
por 5 minutos
+
por 30 minutospor 1 horapor 2 horaspor 6 horas
-
Enviar o seguinte arquivo para %s?Enviar os seguintes arquivos %d para %s?
@@ -303,6 +306,7 @@
Apagar %d mensagens?Apagar %d mensagens?
+
Encaminhar mensagens para %1$s?Encaminhar mensagens para 1%1$d conversas?Exportar o anexo? Anexos exportados poderão ser acessados por outros aplicativos.\n\nContinuar?
@@ -532,6 +536,7 @@
PrioridadeAtivar notificações do sistema para novas mensagensMostrar o conteúdo da mensagem na notificação
+
Mostra o remetente e as primeiras palavras da mensagem nas notificaçõesCor do LEDSom
@@ -566,12 +571,19 @@
Papel de paredeUsar imagem padrãoSelecionar da galeria
+
Se você mudar esta opção, certifique-se de que seu servidor e demais aplicativos estejam configurados de acordo.\n\nDo contrário, funcionalidades podem não funcionar.
+
Mover automaticamente para a pasta DeltaChat
+
Apenas pegar da pasta DeltaChat
+
Exibir e-mails normais
+
Não, somente conversas
+
Para contatos aceitos
+
TodosRecursos experimentaisStreaming de localização sob demanda
@@ -607,12 +619,13 @@
Apagar mensagens antigasApagar mensagens do dispositivo
+
Apagar mensagens do servidorVocê quer apagar %1$d mensagens agora e todas as mensagens recém-obtidas \"%2$s\" no futuro?\n\n• Isso inclui todas as mídias\n\n• As mensagens serão excluídas independentemente de serem sido vistas ou não\n\n• \"Mensagens salvas\" serão ignoradas da exclusão local
-
+
Você quer apagar %1$d mensagens agora e todas as mensagens recém-obtidas \"%2$s\" no futuro?\n\n⚠️ Isso inclui e-mails, mídia e \"Mensagens salvas\" em todas as pastas do servidor\n\n⚠️ Não use esta função se quiser manter os dados no servidor\n\n⚠️ Não use esta função se estiver usando outros clientes de e-mail além do Delta Chat
-
+
Isso inclui e-mails, mídia e \"Mensagens salvas\" em todas as pastas do servidor. Não use esta função se quiser manter os dados no servidor ou se estiver usando outros clientes de e-mail além do Delta Chat.Eu entendo, apague todas essas mensagens
@@ -685,7 +698,7 @@
Temporizador de desaparecimento de mensagens definido para %1$s semanas por %2$s.Você excluiu o bate-papo \"Mensagens salvas\".\n\nℹ️ Para usar o recurso \"Mensagens salvas\" novamente, crie um novo bate-papo com você mesmo.
-
+
⚠️ O armazenamento em seu provedor está prestes a terminar, %1$s%% já foram utilizados\n\nVocê pode não conseguir receber mensagens quando o armazenamento estiver 100 %% utilizado.\n\n👉 Verifique se você pode excluir dados antigos através da interface da web do provedor e considere habilitar \"Configurações / Excluir Mensagens Antigas\". Você pode verificar o uso de armazenamento atual a qualquer momento em \"Configurações / Conectividade\". ⚠️ A data ou hora do seu dispositivo parecem imprecisas (%1$s).\n\nAjuste o relógio ⏰🔧 para garantir que suas mensagens sejam recebidas corretamente.
@@ -823,7 +836,6 @@
Ações de mensagemPré-visualização do papel de paredeMensagens que desaparecem ativadas
-
Parar de compartilhar localizaçãoApós a gravação, toque duas vezes para enviar. Para descartar a gravação, deslize com dois dedos.
diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml
index 52910a26f..89e2d2cad 100644
--- a/src/main/res/values-pt/strings.xml
+++ b/src/main/res/values-pt/strings.xml
@@ -24,6 +24,8 @@
A descarregar…Abrir AnexoEntrar
+ Juntar-se ao Grupo
+ Juntar-se ao CanalRe-entrarApagarApagar para mim
@@ -32,6 +34,7 @@
ActualizarEmojiAnexo
+ VoltarFecharFechar JanelaReencaminhar
@@ -47,10 +50,13 @@
SilenciarDestruição de mensagens
+ Aplicam-se a todos os membros desta conversa; continuam a poder copiar, guardar, e reencaminhar mensagens.GuardarConversaPerfil
+
Todos os Perfis
+
Perfil ActualMenu PrincipalMostrar mensagem completa...
@@ -60,6 +66,10 @@
Marcar como lidaMarcar lida
+
+ Marcar como Não Lidas
+
+ Marcar não lidaA carregar...Ocultar
@@ -73,6 +83,7 @@
OfflinePróx.
+ AvisoErroErro: %1$sNão é possível encontrar uma aplicação para lidar com esse tipo de dados.
@@ -84,12 +95,16 @@
Endereço de errado de emailPalavra-chaveAgora
+
+ AtençãoHojeOntemEsta semanaEste mêsSemana passadaMês passado
+
+ Visto/a pela última vez às/a %1$s%d min
@@ -108,6 +123,11 @@
%d chats%d chats
+
+ %d contacto
+ %d contactos
+ %d contactos
+ %d mensagens%d mensagens
@@ -133,6 +153,8 @@
DocumentosContactoCâmera
+
+ Des/ligar CâmaraLocalGaleriaFicheiro
@@ -143,6 +165,9 @@
AppsJogosFerramentas
+ Tamanho
+
+ PublicadaDesconhecidoVerde
@@ -154,6 +179,7 @@
MagentaBranco
+ ZoomPequenoNormalGrande
@@ -194,6 +220,7 @@
Detalhe da mensagemCopiar para área de transferênciaConvidar amigos
+ Copiar LigaçãoReencaminhar mensagemResponderSilenciar notificações
@@ -219,34 +246,67 @@
DefiniçõesAvançadoVer perfil
+ Mensagens nesta conversa são geradas no teu dispositivo para informar de actualizações e problemas durante utilização.
+ Entra em contacto!\n\n🙌 Clica em \"Código QR\" no ecrã principal de ambos os dispositivos. Escolhe \"Ler Código QR\" num deles, e aponta-o ao outro\n\n🌍 Se não estiverem juntos em pessoa, lẽ através de vídeochamada ou partilha uma ligação de convite desde \"Ler Código QR\"\n\nFinalmente: Aproveita a experiência descentralizada de enviar mensagens. Ao contrário doutras apps populares, não há controlo central ou rastreamento ou venda a grandes organizações dos teus dados, amigos, colegas ou família.
+ Editar Contacto
+ Responder em Privado
+ ❤️ Parece que estás a gostar do Delta Chat!\n\nConsidera doar para ajudar a garantir que o Delta Chat se mantém grátis para todos.\n\nApesar do Delta Chat ser grátis de usar e ser código aberto, o desenvolvimento custa dinheiro. Ajuda-nos a manter o Delta Chat independente e a fazê-lo ainda mais altamente no futuro.\n\nhttps://delta.chat/donate
+
Calado por 1 horaCalado por 8 horasCalado por 1 diaCalado por 7 diasSilenciar para sempre
+
por 5 min
+
por 30 minpor 1 horapor 2 horaspor 6 horas
+ Durante 24 horasEnviar o ficheiro para %s?Enviar %d ficheiros para %s?Enviar %d ficheiros para %s?
+
+ Ligar
+
+ Atender
+
+ Desligar Chamada
+ A chamar...
+ Já em chamada
+ Chamada atendida noutro dispositivo
+ É necessária a permssão de acesso à câmara para fazer vídeochamadas
+ É necessária a permssão de acesso ao microfone para fazer chamadas
+
+ Chamada com %1$s
+
+ A chamar %1$s…
+
Apagar %d mensagem?Apagar %d mensagens?Apagar %d mensagens?
+
+
+ Reencaminhar mensagem para %2$s?
+ Reencaminhar %1$d mensagens para %2$s?
+ Reencaminhar %1$d mensagens para %2$s?
+
+
Reencaminhar mensages para %1$s?Reencaminhar mensagens para %1$d conversas?Exportar anexo? A exportação de anexos permitirá o seu acesso a qualquer outra aplicação no seu dispositivo.\n\nContinuar?Bloquear este contacto?\n\nMensagens directas e grupos criados por contactos bloqueados serão ocultados.\n\nMensagens de contactos bloqueados não serão ocultadas noutros grupos.Desbloquear esse contacto? Poderá mais uma vez receber mensagens deste contacto.Remover contactos? Assim removerá permanentemente os contactos selecionados.\n\nContactos com chats a decorrer e contactos com endereços do sistema não podem ser removidos permanentemente.
+ Apagar contacto %1$s?\n\nContactos com conversas abertas não podme ser apagados permanentement.Conversar com %1$s?Remover %1$s do grupo?
@@ -283,6 +343,10 @@
Mensagens que enviei para mimGuardar mensagem
+ Mensagens Guardadas
+ • Reencaminha mensagens aqui para acesso fácil\n\n• Tira notas escritas ou de áudio\n\n• Anexa ficheiros para os guardar
+
+ GuardadasArrancar…
@@ -293,7 +357,10 @@
Pesquisar
+
+ Procurar em %1$sPesquisar chats, contactos, emensagens
+ Resultado para \"%1$s\"Nenhum resultado encontrado para \"%s\"Nome do grupo
@@ -301,6 +368,7 @@
Criar grupoPor favor, introduza um nome para o grupo.
+ Por favor introduz um nome.Adicionar membrosTem de ser membro do grupo para realizar a ação.Encriptação
@@ -308,8 +376,11 @@
GrupoGaleriaLigações
+ MapaApps recebidas ou enviadas em qualquer bate-papo aparecerão aqui.Visualização de mídia
+ Enviar Mensagem
+
A preparar perfil…
@@ -317,6 +388,11 @@
A actualizar…A enviar…
+
+ Mensagens
+
+ %1$s de %2$s usados
+
LoginCaixa de entradaIMAP nome de login
@@ -329,6 +405,10 @@
SMTP servidorSMTP portoSMTP segurança
+
+ Mensagens são recebidas em todos os relays.\n\n⚠️ Se alterares alguma coisa aqui, confirma que todos os teus dispositivos estão pelo menos na versão 2.47.0. Caso contrário, dispositivos mais desactualizados podem perder mensagens.
+
+ Remover relay \"%1$s\"?\n\nContactos que conheçam apenas este relay não serão capazes de te contactar até lhes enviares uma nova mensagem.\n\nEm caso de dúvida, oculta-o em vez de o remover.Por favor insira um endereço de e-mail válidoPor favor insira um servidor ou endereço IP válidoPor favor, insira um porto válido (1-65535)
@@ -338,6 +418,9 @@
Nenhum backup encontrado. \n\nCopie o backup para \"%1$s\" e tente novamente.Não é possível fazer o login como \"%1$s\". Por favor, verifique se o endereço de email e a palavra-chave estão corretos.
+ Trocar Perfil
+ Adicionar Perfil
+ Todos os dados do perfil \"%s\" neste dispositivo serão removidos, incluindo a configuração de criptografia de ponta-a-ponta, contactos, conversas, mensagens e multimédia. Não é possível desfazer esta acção.Reencaminhar ...
@@ -350,15 +433,21 @@
O seu nomeInformação do estado
+ DescriçãoTecla ENTER para enviarPressionar a tecla ENTER enviará mensagens de texto
+ Pior qualidade, poupa em dadosVibrarSegurança do ecrãBloquear capturas de ecrã na lista atualizada e no aplicativoPara aplicar a configuração de segurança do ecrã, reinicie o aplicativo.Notificações
+
+ Chamadas
+
+ Mostrar ecrã de chamadas para contactos aceitesMostrarPrioridadeCor do LED
@@ -377,6 +466,10 @@
Desligar aprendizagem automática no tecladoLer recibosSe as confirmações de leitura estiverem desactivadas, não poderá ver os recibos de leitura de outras pessoas.
+
+ Lida por
+ Servidor
+ CriptografiaGerir teclaschatsSons na chat
@@ -389,18 +482,30 @@
Backup escrito com sucesso em %1$sFundo
+
Se desabilitar esta opção, verifique se seu servidor e seus outros clientes estão configurados adequadamente. \n\ncaso contrário, as coisas podem não funcionar.
+
Mover pasta automaticamente para o Delta Chat
+
Exibir e-mails comuns
+
Não, apenas conversas
+
Tudo
+ Desactivar
+ Actividade
+ Objectos
+ SímbolosO nome do grupo mudou de \"%1$s\" para \"%2$s\" por mim.O nome do grupo mudou de \"%1$s\" para \"%2$s\" por %3$s.
+
+ Nome do canal mudou de \"%1$s\" para \"%2$s\".Imagem do grupo modificada por mim.Imagem do grupo modificada por %1$s.
+ Imagem do canal alterada.Membro %1$s adicionado por mim.
@@ -414,6 +519,9 @@
Imagem do grupo apagada por mim.Imagem do grupo apagada por %1$s.
+ Mensagens são cifradas de ponta-a-ponta.
+
+ Código QRFazer scan do código QRColoque sua câmera sobre o código QRQuer se juntar-se ao grupo \"%1$s\"?
@@ -434,6 +542,8 @@
Digitalize para configurar um contato com %1$sA estabelecer ligação cifrada de ponta-a-ponta, por favor aguarde…%1$s verificado.
+ Remover anexo
+
ResponderMensagem nova
@@ -443,6 +553,10 @@
Nome e mensagemApenas nomeSem nome ou mensagem
+
+ Estás a partilhar a tua localização
+ Para partilhar a tua localização em tempo real com os membros da conversa, permite o Delta Chat de usar a tua localização.\n\nPara a localização funcionar em tempo real sem falhas, a localização é usada mesmo quando a app está fechada ou não em uso.
+
Permissão necessáriaContinuar
@@ -451,6 +565,7 @@
O Delta Chat necessita de permissão de acesso ao microfone para enviar mensagens de áudio, mas foi negado. Por favor, continue com as configurações do aplicativo, selecione \"Permissões\" e active \"Microfone\".O Delta Chat necessita da permissão de armazenamento para anexar ou exportar fotos, vídeos ou áudio, mas foi negado. Por favor, continue no menu de configurações do aplicativo, seleccione \"Permissões\" e active \"Armazenamento\".O Delta Chat necessita permissão de acesso à localização para anexar um local, mas ele negado. Por favor, continue no menu de configurações do aplicativo, selecione \"Permissões \"e ative \"Localização\".
+ RecortarRodarEscolha o seu idioma...
@@ -469,6 +584,7 @@
AjudaComunicar um problemaMinimizar
+ Seleciona um perfil ou cria um novoSelecione um CHAT ou crie um novoEscreva uma mensagemInformação sobre encriptação
@@ -484,6 +600,22 @@
recebidoAbrir pasta de LogAbrir o aqrquio do log actual
+ Os teus perfis doutro Delta Chat não estão acessívels - diferentes instalações armazenam os seus dados in diferentes locais.\n\nPara manter os perfis actuais:\n1. Sai agora\n2. Abre o outro Delta Chat - se necessário, reinstala a partir de %1$s\n3. Cria uma cópia de segurança de cada perfil em \"Definições/Conversas\"\n4. Reabre esta versão\n5. Restaura a partir das cópias de segurança com \"Já tenho um perfil\"\n\nContinuar sem os teus perfis anteriores?
+
+
+ Atalhos de teclado
+
+ Abrir %1$s
+
+
+ O Delta Chat usa a câmara para tirar e enviar fotos e vídeos, e para ler códigos QR.
+ O Delta Chat usa o microfone para gravar and enviar mensagens de voz e vídeos com som.
+ Necessita que optimizações de bateria sejam ignoradas, usa se notificações não chegarem atempadamente
+ Para manter a ligação e receber mensagens em segundo plano, ignora optimizações de bateria no próximo passo.\n\nO Delta Chat usa poucos recursos e tem cuidado para não gastar muita bateria.Toque aqui para receber mensagens mesmo que o Delta Chat esteja em segundo plano.
-
+ Já deste permissão para que o Delta Chat receba mensagens em segundo plano.\n\nSe continuas a não receber mensagens em segundo plano, confirma as definições de sistema também.
+
+
+ Que há de novo?\n\n💯 Criptografia de ponta-a-ponta é fiável e para sempre. Os cadeados 🔒 foram-se!\n\n✉️ Email clássico sem criptografia de ponta-a-ponta é marcado com o símbolo duma carta\n\n😻 Novo e melhorado ecrã de perfil para todos os teus contactos\n\n🔲 Novo botão de acesso rápido a apps usadas numa conversa\n\n❤️ Por favor doa para ajudar a mantermo-nos independentes e continuar a trazer-te melhorias: %1$s
+
diff --git a/src/main/res/values-ro/strings.xml b/src/main/res/values-ro/strings.xml
index 134c0911b..0cd44d962 100644
--- a/src/main/res/values-ro/strings.xml
+++ b/src/main/res/values-ro/strings.xml
@@ -61,6 +61,7 @@
ÎntotdeaunaÎncărcați întotdeauna imagini la distanțăOdată ce
+
Afișați avertismentulNu acumNiciodata
@@ -159,6 +160,7 @@
CamerăCaptură
+
Comutați cameraComutarea modului ecran completLocație
@@ -275,12 +277,13 @@
Silențios timp de 7 zileSilențios pentru totdeauna
+
Timp de 5 minute
+
Timp de 30 de minuteTimp de 1 orăTimp de 2 oreTimp de 6 ore
-
Trimiteți următorul fișier la %s?Trimiteți următoarele %d fișiere la %s?
@@ -293,6 +296,7 @@
Ștergeți %d mesaje?Ștergeți %d de mesaje?
+
Transmiteți mesajele către %1$s?Transmiteți mesajele către %1$d chat-uri?Exportul atașamentelor va permite altor aplicații de pe dispozitivul dumneavoastră să le acceseze them.\n\nContinue?
@@ -516,6 +520,7 @@
PrioritateActivați notificările de sistem pentru mesajele noiAfișați conținutul mesajului în notificare
+
Afișează expeditorul și primele cuvinte ale mesajului în notificăriCuloare LEDSunet
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 3bcaeecb8..d870b58d2 100644
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -16,7 +16,7 @@
Выкл.По умолчаниюПо умолчанию (%1$s)
- Персональная настройка
+ Свой вариантНе заданоАвтоматическиСтрогий
@@ -55,13 +55,15 @@
БеззвучныйИсчезающие сообщения
- Применяется ко всем участникам этого чата, но они по-прежнему могут копировать, сохранять и пересылать сообщения.
+ Настройка распространяется на всех участников; однако сообщения всё ещё можно копировать, сохранять и пересылатьСохранитьЧатМедиафайлыПриложения и медиафайлыПрофиль
+
Все профили
+
Текущий профильГлавное менюНачать чат
@@ -86,6 +88,7 @@
ВсегдаВсегда загружать изображения из внешних источниковТолько сейчас
+
Показать предупреждениеНе сейчасНикогда
@@ -222,8 +225,11 @@
БотКамера
- Захват
+ Снять
+
Переключить камеру
+
+ Переключить камеруПолноэкранный режимМестоположениеМестоположения
@@ -378,7 +384,7 @@
Сообщения устройстваСообщения, созданные устройствомСообщения в этом чате генерируются локально на вашем устройстве чтобы информировать об обновлениях и проблемах при использовании приложения.
- Оставайтесь на связи!\n\n🙌 Нажмите \"QR-код\" на главном экране обоих устройств. На одном устройстве выберите \"Сканировать QR-код\" и направьте камеру на другое устройство.\n\n🌍 Если устройства находятся в разных местах, отсканируйте код с помощью видеозвонка или поделитесь ссылкой-приглашением из раздела \"Сканировать QR-код\"\n\nЗатем: Наслаждайтесь децентрализованным мессенджером. В отличие от других популярных приложений, он не имеет центра управления и не отслеживает ваши действия, а также не продаёт данные о вас, ваших друзьях, коллегах или членах семьи крупным организациям.
+ Оставайтесь на связи!\n\n🙌 Нажмите \"QR-код\" на главном экране обоих устройств. На одном устройстве выберите \"Сканировать QR-код\" и направьте камеру на другое устройство.\n\n🌍 Если устройства находятся в разных местах, отсканируйте код с помощью видеозвонка или поделитесь ссылкой-приглашением из раздела \"Сканировать QR-код\"\n\nЗатем: Пользуйтесь преимуществами децентрализованного мессенджера. В отличие от других популярных приложений, он не имеет центрального узла управления, не следит за вами и не продает ваши данные, данные о ваших друзьях, коллегах или членах семьи крупным организациям.Редактировать контактЗакрепить чат
@@ -402,11 +408,14 @@
На 7 днейПостоянно
+
5 минут
+
30 минут1 час2 часа6 часов
+ В течение 24 часовОтправить следующий файл %s?
@@ -426,6 +435,8 @@
ОтветитьОтклонить
+
+ Завершить вызовАудиозвонок
@@ -449,7 +460,12 @@
Пропущенный звонокВызов уже идётЗвонок отвечен на другом устройстве
+ Для видеозвонков требуется разрешение на использование камерыДля совершения звонков требуется разрешение на использование микрофона
+
+ Звонок от %1$s
+
+ Вызов %1$s…
@@ -468,7 +484,15 @@
Удалить %d сообщений?Удалить %d сообщений?
- Переслать сообщения для %1$s?
+
+
+ Переслать сообщение пользователю %2$s?
+ Переслать %1$d сообщения пользователям %2$s?
+ Переслать %1$d сообщения пользователям %2$s?
+ Переслать %1$d сообщения пользователям %2$s?
+
+
+ Переслать сообщения %1$s?Переслать сообщения в %1$d чата(ов)?Экспорт вложений позволит другим приложениям на вашем устройстве получить к ним доступ.\n\nПродолжить?Заблокировать этот контакт?\n\nЗаблокированные контакты не будут показаны в личных сообщениях или группах, созданных ими.\n\nВ других группах сообщения заблокированных контактов, по-прежнему будут видны.
@@ -557,7 +581,7 @@
Вы уверены, что хотите посетить %1$s?
- Эта ссылка может искажать символы, заменяя их похожими символами из других алфавитов. Переход по ссылке отмеченной %1$s приведет к %2$s, что является нормальным для нелатинских символов. Если вы не ожидали увидеть такие символы, эта ссылка может быть опасной.
+ Эта ссылка может использовать визуально похожие символы из разных алфавитов. Переход по ссылке отмеченной %1$s приведет к %2$s, что является нормальным для нелатинских символов. Если вы не ожидали увидеть такие символы, эта ссылка может быть опасной.Поиск
@@ -750,7 +774,7 @@
Все данные профиля \"%s\" на этом устройстве будут безвозвратно удалены, включая настройки сквозного шифрования, контакты, чаты, сообщения и медиафайлы. Это действие не может быть отменено.Не настроенный профильОткройте профиль чтобы настроить его.
- Попробуйте подключиться сейчас
+ Попробовать подключиться сейчасСинхронизировать всеОшибка конфигурации. Ошибка: %1$s
@@ -781,7 +805,7 @@
Качество отправляемых медиафайловЧтобы отправить файлы в исходном качестве, прикрепляйте их как \"Файл\". Это потребует больше трафика для вас и ваших получателей.Сбалансированное
- Низкое качество, малый размер
+ Низкое качество, экономия данныхВибрацияБезопасность экрана
@@ -793,11 +817,12 @@
Звонки
- Показывать экран входящего вызова
+ Показывать экран вызова для принятых контактовПоказыватьПриоритетВключить системные уведомления для новых сообщенийПоказывать содержимое сообщения в уведомлении
+
Показать отправителя и текст сообщения в уведомленияхЦвет светодиода Звук
@@ -840,20 +865,27 @@
Обои для чатовИспользовать изображение по умолчаниюВыбрать из галереи
+
Если вы измените этот параметр, убедитесь, что ваш сервер и другие клиенты настроены соответствующим образом.\n\nВ противном случае, всё может перестать работать.Режим нескольких устройствСинхронизируйте свои сообщения с другими устройствами. Функция включается автоматически при добавлении второго устройстваРежим нескольких устройств должен быть включен, если вы используете один и тот же профиль на нескольких устройствах. Отключайте эту настройку, только если вы удалили этот профиль со всех остальных устройств.\n\nОтключение режима нескольких устройств при использовании профиля на нескольких устройствах приведет к потере сообщений и возникновению других проблем.
+
Автоперемещение в папку DeltaChat
+
Загружать только из папки DeltaChat
+
Показывать обычную почту
+
Нет, только чаты
+
Для принятых контактов
+
ВсеЭкспериментальные функцииЭти функции могут быть нестабильными и могут быть изменены или удалены
- Трансляция местоположения по запросу
+ Трансляция местоположенияИзображение по умолчаниюЦвет по умолчаниюПерсональное изображение
@@ -904,14 +936,17 @@
Удалить старые сообщенияУдалять сообщения с устройства
+
Удалять сообщения с сервераВы хотите удалить %1$d сообщений сейчас и все новые сообщения \"%2$s\" в дальнейшем?\n\n• Это действие затронет все медиафайлы\n\n• Сообщения будут удалены, независимо от того, были ли они прочитаны или нет.\n\n• \"Сохранённые сообщения\" не будут удалены с устройства
-
+
Вы хотите удалить %1$d сообщений сейчас и все новые сообщения \"%2$s\" в дальнейшем?\n\n⚠️ Это относится ко всем электронным письмам, медиафайлам и \"Сохранённым сообщениям\" во всех папках на сервере.\n\n⚠️ Не используйте эту функцию, если хотите сохранить данные на сервере или если вы используете обычные клиенты электронной почты
-
+
Это относится ко всем электронным письмам, медиафайлам и \"Сохранённым сообщениям\" во всех папках на сервере. Не используйте эту функцию, если хотите сохранить данные на сервере или если вы используете обычные клиенты электронной почты
+
Включить удаление без запроса
+
Если включить удаление без запроса, вы не сможете использовать этот профиль на нескольких устройствах.Я понимаю, удалить все эти сообщения
@@ -1008,7 +1043,7 @@
Узнать большеВы удалили чат \"Сохраненные сообщения\".\n\nℹ️ Чтобы снова использовать функцию \"Сохраненные сообщения\", создайте новый чат с собой.
-
+
⚠️ Место на сервере вашего провайдера скоро закончится, уже использовано: %1$s%%.\n\nЕсли место на сервере будет полностью заполнено, вы не сможете получать сообщения.\n\n👉 Проверьте, можно ли удалить старые данные через веб-интерфейс вашего провайдера, и подумайте о включении опции \"Настройки / Чаты / Удалить старые сообщения\". Вы всегда можете проверить текущее использование места на сервере в разделе \"Настройки / Соединение\".⚠️ Вероятно, дата или время на вашем устройстве установлены неверно (%1$s).\n\nНастройте часы ⏰🔧 чтобы ваши сообщения доставлялись правильно.
@@ -1092,8 +1127,6 @@
%1$d сообщений в %2$d чатах
- Канал для потоковой передачи местоположения по запросу
- Потоковая передача местоположенияВы делитесь своим местоположениемЧтобы поделиться своим местоположением в реальном времени с участниками чата, разрешите Delta Chat использовать данные о вашем местоположении.\n\nДля обеспечения бесперебойной работы функции передачи геопозиции данные используются даже тогда, когда приложение закрыто или не активно.
@@ -1189,6 +1222,8 @@
Действия с сообщениемПредпросмотрИсчезающие сообщения включены
+
+ Открыть %1$sПрекратить делиться местоположением
diff --git a/src/main/res/values-sc/strings.xml b/src/main/res/values-sc/strings.xml
index 7782a9601..7944187ee 100644
--- a/src/main/res/values-sc/strings.xml
+++ b/src/main/res/values-sc/strings.xml
@@ -194,14 +194,16 @@
A sa muda pro 7 diesA sa muda pro semper
+
pro 5 minutos
+
pro 30 minutospro 1 orapro 2 oraspro 6 oras
-
Documentu sarvadu in \"%1$s\".
+
Inoltrare su messàgiu a %1$s?Inoltrare messàgios a %1$d tzarradas?Esportare sos allegados? S\'esportatzione de sos allegados at a permìtere a cale si siat àtera aplicatzione in su dispositivu tuo de b\'atzèdere.\n\nSighire?
@@ -377,11 +379,17 @@
IsfunduImprea s\'immàgine predefinidaIscherta dae sa galleria
+
Si disabìlitas custa opztione assegura·ti chi su serbidore tuo e totu sos àteros clientes siant cunfigurados in sa matessi manera\n\nSi nono sas cosas diant pòdere non funtzionare pro nudda.
+
Tramudòngios automàticos a sa cartella DeltaChat
+
Ammustra sas lìteras traditzionales
+
Nono, tzarradas ebbia
+
Pro sos cuntatos atzetados
+
TotusFuntzionalidades isperimentalesTrasmissione de sa positzione suta dimanda
@@ -399,6 +407,7 @@
Iscantzella sos messàgios betzosIscantzella sos messàgios dae su dispositivu
+
Iscantzella sos messàgios dae su servidoreCheres iscantzellare%1$d messàgios como e totu sos messàgios arribados \"%2$s\" in su tempus benidore?\n\n• Custu at a incluire totu sos documentos multimediales\n\n• Sos messàgios ant a èssere iscantzellados fintzas si no ant a èssere istados lèghidos\n\n• Sos \"Messàgios sarvados\" ant a èssere esclùdidos dae s\'iscantzellamentu locale
diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml
index f0d1ae458..e061bea31 100644
--- a/src/main/res/values-sk/strings.xml
+++ b/src/main/res/values-sk/strings.xml
@@ -56,7 +56,9 @@
MédiáAplikácie a médiáÚčet
+
Všetky účty
+
Aktuálny účetHlavné menuZačať konverzáciu
@@ -76,6 +78,7 @@
Na sledovanie vás možno použiť obrázky nadiaľku.\n\nToto nastavenie tiež umožňuje načítať písma a ďalší obsah. Aj keď je vypnutá, stále sa vám môžu zobrazovať vložené alebo uložené obrázky.\n\nNačítať vzdialené obrázky?VždyRaz
+
Zobraziť varovanieTeraz nieNikdy
@@ -199,6 +202,7 @@
FotoaparátZachytiť
+
Prepnúť fotoaparátPrepnúť režim zobrazenia na celú obrazovkuPoloha
@@ -353,12 +357,13 @@
Stíšiť na 7 dníStlmiť navždy
+
po dobu 5 minút
+
po dobu 30 minútpo dobu 1 hodinypo dobu 2 hodínpo dobu 6 hodín
-
Odoslať nasledujúci súbor %s používateľovi?Odoslať nasledujúce %d súbory %s používateľovi?
@@ -381,6 +386,7 @@
Odstrániť %d správ zo všetkých vašich zariadení?Odstrániť %d správ zo všetkých vašich zariadení?
+
Preposielať správy na %1$s?Preposielať správy do %1$d konverzácií?Exportovať prílohu? Exportovanie príloh umožní prístup k nim všetkým ďalším aplikáciám na vašom zariadení.\n\nChcete pokračovať?
@@ -650,6 +656,7 @@
PrioritaPovoliť systémové upozornenia na nové správyZobraziť obsah správy v upozornení
+
V oznámeniach sa zobrazuje odosielateľ a prvé slová správyFarba LEDZvuk
@@ -689,12 +696,19 @@
PozadiePoužiť predvolený obrázokVyberte z galérie
+
Ak túto možnosť zakážete, uistite sa, že váš server a ostatní klienti sú zodpovedajúcim spôsobom nakonfigurovaní.\n\nV opačnom prípade nemusí fungovať vôbec.
+
Automaticky presúvať do priečinka DeltaChat
+
Prijímať iba z priečinka DeltaChat
+
Zobraziť klasické e-maily
+
Nie, iba konverzácie
+
Pre prijaté kontakty
+
VšetkyExperimentálne vlastnostiVysielanie polohy na požiadanie
@@ -740,12 +754,13 @@
Odstraňovať staré správyOdstráňte správy zo zariadenia
+
Odstraňovať správy zo serveraChcete odstrániť %1$d správy a všetky novo načítané správy %2$s v budúcnosti?\n\n• Zahŕňa to všetky médiá\n\n• Správy budú odstránené bez ohľadu na to, či boli alebo neboli videné\n\n• „Uložené správy \"bude preskočené z lokálneho mazania
-
+
Chcete odstrániť %1$d správy a všetky novo načítané správy %2$s v budúcnosti?\n\n⚠️ Zahŕňa to e-maily, médiá a uložené správy vo všetkých priečinkoch servera\n\n⚠️ Túto funkciu nepoužívajte, ak chcete uchovanie údajov na serveri\n\n⚠️ Túto funkciu nepoužívajte, ak okrem Delta Chatu používate aj iných e-mailových klientov
-
+
Patria sem e-maily, médiá a „Uložené správy“ vo všetkých priečinkoch servera. Túto funkciu nepoužívajte, ak chcete uchovať údaje na serveri alebo ak okrem Delta Chatu používate aj iných e-mailových klientov.Rozumiem, vymazať všetky tieto správy
@@ -821,7 +836,7 @@
Zistiť viacOdstránili ste konverzáciu \"Uložené správy\".\n\nℹ️ Aby ste využili funkciu \"Uložené správy\" znova, vytvorte novú konverzáciu so sebou.
-
+
⚠️ Úložisko vašeho poskytovateľa čoskoro prekročí limit, už%1$s%% sú využité.\n\n Je možné, že nebudete môcť prijímať správy, ak bude úložisko 100 %% využité.\n\n👉 Prosím skontrolujte, či môžete vo webovom rozhraní poskytovateľa vymazať staré údaje, a zvážte aktiváciu „Nastavenia / Odstrániť Staré Správy“. Aktuálne využitie úložiska si môžete kedykoľvek skontrolovať v časti „Nastavenia / Pripojenie“. Zdá sa, že dátum alebo čas vášho zariadenia je nepresný (%1$s).\n\nUpravte si hodiny ⏰🔧, aby ste zaistili správne prijímanie správ.
@@ -963,7 +978,6 @@
Akcie správUkážka na pozadíMiznúce správy boli aktivované
-
Vypnúť zdieľanie polohyPo zaznamenaní nahrávky ju dvojitým klepnutím odošlete. Nahrávku zahodíte potiahnutím dvoma prstami vľavo-vpravo.
diff --git a/src/main/res/values-sq/strings.xml b/src/main/res/values-sq/strings.xml
index 20034d128..195943cce 100644
--- a/src/main/res/values-sq/strings.xml
+++ b/src/main/res/values-sq/strings.xml
@@ -60,7 +60,9 @@
MediaAplikacione & MediaProfil
+
Krejt Profilet
+
Profili i TanishëmMenuja KryesoreNisni Fjalosje
@@ -83,6 +85,7 @@
PërherëNgarko Përherë Figura të LargëtaVetëm një herë
+
Shfaq SinjalizimJo taniKurrë
@@ -197,6 +200,7 @@
KontaktRobotKamerë
+
Ndërro KameraKalo në / Dil nga mënyra “Sa krejt ekrani”Vendndodhje
@@ -374,11 +378,14 @@
Heshtoji për 7 ditëHeshtoje përgjithmonë
+
Për 5 minuta
+
Për 30 minutaPër 1 orëPër 2 orëPër 6 orë
+ Për 24 orëTë dërgohet kartela vijuese te %s?
@@ -396,6 +403,8 @@
PërgjigjuniHidhe poshtë
+
+ Përfundoje ThirrjenThirrje audio
@@ -419,7 +428,12 @@
Thirrje e humburTashmë në një thirrjeThirrje që ka marrë përgjigje në pajisje tjetër
+ Për thirrje me video janë të domosdoshme leje mbi kamerënLeja mbi mikrofonin është e domosdoshme për thirrje
+
+ Thirrje me %1$s
+
+ Po thirret %1$s
@@ -434,6 +448,12 @@
Të fshihet %d mesazh në krejt pajisjet tuaja?Të fshihen %d mesazhe në krejt pajisjet tuaja?
+
+
+ Të përcillet mesazhi për %2$s?
+ Të përcillen %1$d mesazhe për %2$s?
+
+
Të përcillen mesazhet te %1$s?Të përcillen mesazhet te %1$d fjalosje?Eksportimi i bashkëngjitjeve do t\’u lejojë aplikacioneve të tjerë në pajisjen tuaj t\’i përdorin ato.\n\nTë vazhdohet?
@@ -758,6 +778,7 @@
PërparësiAktivizoni njoftime sistemi për mesazhe të rejaShfaq lëndë mesazhi në njoftim
+
Shfaq te njoftimet dërguesin dhe fjalët e para të mesazhitNgjyrë LED-iTingull
@@ -800,16 +821,23 @@
SfondPërdor Figurën ParazgjedhjePërzgjidhni Nga Galeri
+
Nëse e ndryshoni këtë mundësi, garantoni që shërbyesi juaj dhe klientët tuaj të tjerët të jenë formësuar për këtë.\n\nPërndryshe gjërat mund të mos punojnë fare.Mënyra Shumë-PajisjeNjëkohësoni mesazhet tuaj në pajisje tuajat të tjera. E aktivizuar automatikisht gjatë shtimit të një pajisjeje të dytëMënyra Shumë-Pajisje duhet aktivizuar, kur përdoret i njëjti profil në disa pajisje. Çaktivizojeni këtë rregullim vetëm në se e keni hequr këtë profil nga krejt pajisjet tuaja të tjera.\n\nÇaktivizimi i Mënyrës Shumë-Pajisje, teksa përdoret profili në disa pajisje, do të sjellë mesazhe të humbura dhe probleme të tjera.
+
Kaloji vetvetiu te Dosja DeltaChat
+
Sill Vetëm nga Dosje DeltaChat
+
Shfaq Email-e Klasikë
+
Jo, vetëm fjalosje
+
Për kontakte të pranuar
+
KrejtVeçori EksperimentaleKëto veçori mund të jenë të paqëndrueshme dhe mund të ndryshohen, ose hiqen
@@ -863,14 +891,17 @@
Fshiji Mesazhet e VjetërFshiji Mesazhet prej Pajisjes
+
Fshiji Mesazhe prej ShërbyesiDoni të fshihen %1$d mesazhe tani dhe krejt mesazhet e prurë rishtazi “%2$s” në të ardhmen?\n\n• Kjo përfshin krejt mediat\n\n• Mesazhi do të fshihet, qoftë kur është parë, qoftë kur s’është parë\n\n• “Mesazhe të ruajtur” do të anashkalohen nga fshirja vendore
-
+
Doni të fshihen tani %1$d mesazhe dhe krejt mesazhet e prurë rishtas “%2$s” më vonë në të ardhmen?\n\n⚠️ Kjo përfshin email-et, media dhe “Mesazhe të ruajtur” në krejt dosjet e shërbyesit\n\n⚠️ Mos e përdorni këtë funksion, nëse doni të mbani të dhënat në shërbyes, apo nëse përdorni klientë klasikë email-i
-
+
Kjo përfshin email-et, media dhe “Mesazhe të ruajtur” në krejt dosjet e shërbyesit. Mos e përdorni këtë funksion, nëse doni të mbani të dhënat te shërbyesi ose nëse përdorni klientë klasikë email-i
+
Aktivizoni fshirje të menjëhershme
+
Nëse aktivizoni fshirje të menjëhershme, s’mund të përdorni pajisje të shumta në këtë profil.E kuptoj, fshiji krejt këto mesazhe
@@ -967,7 +998,7 @@
Mësoni Më TepërFshitë fjalosjen “Mesazhe të ruajtur”.\n\nℹ️ Që të përdorni sërish veçorinë “Mesazhe të ruajtur”, krijoni një fjalosje të re me veten tuaj.
-
+
⚠️ Po mbaron depozita e shërbimit tuaj: përdoren tashmë %1$s%%.\n\nNëse depozita është plot, mund të mos jeni në gjendje të merrni mesazhe.\n\n👉 Ju lutemi, shihni se mos mund të fshini të dhëna të vjetra që nga ndërfaqja web e furnizuesit të shërbimit dhe shihni mundësinë të aktivizoni “Rregullime / Fjalosje dje Media / Fshi Mesazhe të Vjetër”. Se sa depozitë është aktualisht e përdorur mund ta kontrolloni kurdo, që nga \"Rregullime / Lidhje\".⚠️ Data ose koha në pajisjen tuaj duket të jetë e pasaktë (%1$s).\n\nRregulloni sahatin tuaj ⏰🔧 që të garantohet se mesazhet tuaj merren saktë.
@@ -1050,6 +1081,7 @@
Keni mesazhe të rinj%1$d mesazhe në %2$d fjalosje
+
Po tregoni vendndodhjen tuajQë të jepni vendndodhjen aty për aty për anëtarë të fjalosjes, lejojeni Delta Chat-in të përdorë të dhëna të vendndodhjes suaj.\n\nPër ta bërë vendndodhjen e atypëratyshme të funksionojë rrjedhshëm, përdoren të dhëna edhe kur aplikacioni është i mbyllur, ose jo në përdorim.
@@ -1145,6 +1177,8 @@
Veprime mesazheshParaparje sfondiZhdukja e mesazheve është e aktivizuar
+
+ Hap %1$sNdale tregimin e vendndodhjes
diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml
index ec031a8ca..b4a0fdec3 100644
--- a/src/main/res/values-sr/strings.xml
+++ b/src/main/res/values-sr/strings.xml
@@ -52,6 +52,7 @@
ЋаскањеМедијиПрофил
+
Сви профилиГлавни мениЗапочните ћаскање
@@ -72,6 +73,7 @@
УвекУвек учитај слике са сервераСамо једном
+
Прикажи упозорењеНе садаНикад
@@ -175,6 +177,7 @@
КамераСними
+
Промени камеруОбрће режим пуног екранаЛокација
@@ -298,12 +301,13 @@
Утишај на 7 данаУтишај заувек
+
на 5 минута
+
За 30 минутаЗа 1 сатЗа 2 сатаЗа 6 сати
-
Пошаљи датотеку %s?Пошаљи %d датотеке %s?
@@ -325,6 +329,7 @@
Да ли желите да избришите %d поруке?Да ли желите да избришите %d поруке?
+
Да ли желите да проследите поруке %1$s?Да ли желите да проследим поруке за %1$dћаскања?Извоз прилога ће омогућити другим апликацијама на вашем уређају да им приступе.\n\nДа ли желите ли да наставите?
@@ -530,6 +535,7 @@
ПриоритетДозволи обавештења за нове поруке преко оперативног системаПрикажи садржај поруке у обавештењима.
+
Прикажи пошиљаоца и првих пар речи поруке у обавештењимаБоја ЛЕД светлаЗвук
@@ -564,12 +570,19 @@
ПозадинаКористи дату сликуИзабери из галерије
+
Ако промените ову опцију, морате проверити да су ваш сервер и ваши други клијенти конфигурисани у складу са тим.\n\nУ супротном апликација можда уопште неће функционисати.
+
Аутоматски премести у DeltaChat директоријум
+
Примај поруке само из DeltaChat директоријума
+
Прикажи обичне поруке е-поште
+
Не, само ћаскања
+
За прихваћене контакте
+
СвиЕксперименталне могућностиПроток положаја на захтев
@@ -605,12 +618,13 @@
Избриши старе порукеИзбриши поруке са уређаја
+
Избриши поруке са сервераДа ли желите да избришете %1$d поруке сада и све новопреузете поруке „%2$s“ у будућности?\n\n• Ово укључује све медије\n\n• Поруке ће бити избрисане без обзира да ли су виђене или не\n\n• \"Сачуване поруке\" неће бити избрисане на уређају
-
+
Да ли желите да избришете %1$d поруке сада и све новопреузете поруке „%2$s“ у будућности?\n\n⚠️ Ово укључује све поруке е-поште, медије и „Сачуване поруке“ у свим директоријумима на серверу\n\n⚠️ Немојте користити ову функцију ако користите било које друге клијенте е-поште осим Delta Chat-а
-
+
Ово укључује све поруке е-поште, медије и „Сачуване поруке“ у свим директоријумима на серверу. Немојте користити ову функцију ако користите било које друге клијенте е-поште осим Delta Chat-а.Разумем и желим да избришем све ове поруке
@@ -683,7 +697,7 @@
%2$s је подесио хронометар за нестајуће поруке на %1$s недеље.Обрисали сте ћаскање „Сачуване поруке“.\n\nℹ️ Ако желите да користите „Сачуване поруке“ могућност поново, направите ново ћаскање са самим собом.
-
+
⚠️ Складишни простор вашег имејл провајдера ће ускоро да понестане: %1$s%% већ се користи.\n\nМожда нећете моћи да примате поруке ако је складиште пунo.\n\n👉 Проверите да ли можете да избришете старе податке у веб интерфејсу провајдера и размислите да омогућите „Подешавања / Избриши старе поруке“ опцију. Можете да проверите тренутну употребу меморијског простора у било ком тренутку у „Подешавања / Повезивање“.⚠️ Изгледа да датум или време на вашем уређају нису тачни (%1$s).\n\nПодесите сат ⏰🔧 да бисте били сигурни да ће ваше поруке бити правилно примљене.
@@ -821,7 +835,6 @@
Радње над порукамаПровири у позадиниНестајуће поруке су активиране
-
Престаните са дељењем положајаНакон снимања, двапут додирните да бисте послали. Да бисте одбацили снимак, трљајте га са два прста.
diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml
index d4f5ec094..75c8437cc 100644
--- a/src/main/res/values-sv/strings.xml
+++ b/src/main/res/values-sv/strings.xml
@@ -59,7 +59,9 @@
MediaAppar & MediaProfil
+
Alla profiler
+
Aktuell profilHuvudmenyStarta chatt
@@ -80,6 +82,7 @@
AlltidLäs alltid in fjärrbilderen gång
+
Visa varningInte nuAldrig
@@ -195,6 +198,7 @@
KameraFånga
+
Växla kameraVäxla fullskärmPlats
@@ -372,12 +376,13 @@
Tysta 7 dagarTysta för evigt
+
i 5 minuter
+
i 30 minuteri 1 timmai 2 timmari 6 timmar
-
Skicka följande fil till %s?Vill du skicka följande %d filer till %s ?
@@ -422,6 +427,7 @@
Vill du ta bort %d meddelande?Vill du ta bort %d meddelanden?
+
Vill du vidarebefordra meddelanden till %1$s?Vill du vidarebefordra meddelanden till %1$d chattar?Vill du exportera bilagor? Exporterade bilagor tillåter andra appar på din enhet att komma åt dem.\n\nVill du fortsätta?
@@ -735,6 +741,7 @@
PrioritetAktivera systemavisering för nya meddelandenVisa meddelandeinnehåll i avisering
+
Visar avsändare och de första orden i meddelandet, i aviseringen.Färg på ljusindikatorLjud
@@ -775,16 +782,23 @@
BakgrundAnvänd standardbildVälj från galleriet
+
Om du inaktiverar det här alternativet, tillse att servern och dina andra klienter är konfigurerade i enlighet med detta.\n\nAnnars kanske saker och ting inte fungerar alls.FlerenhetslägeSynkronisera dina meddelanden med dina andra enheter. Aktiveras automatiskt när du lägger till en andra enhetFlerenhetsläge måste vara aktiverat när du använder samma profil på flera enheter. Inaktivera endast den här inställningen om du har tagit bort profilen från alla andra enheter.\n\nInaktiverar du flerenhetsläget när du använder profilen på flera enheter kommer du att missa meddelanden och få andra problem.
+
Flyttas automatiskt till DeltaChat-mappen
+
Hämta endast från DeltaChat-mappen
+
Visa vanliga e-postmeddelanden
+
Nej, bara chattar
+
För godkända kontakter
+
AllaExperimentella funktionerDessa funktioner kan vara instabila och kan ändras eller tas bort
@@ -839,14 +853,17 @@
Ta bort gamla meddelandenTa bort meddelanden från enheten
+
Ta bort meddelanden från servernVill du ta bort %1$d meddelanden nu och alla kommande meddelanden \"%2$s\" i framtiden?\n\n• Detta inkluderar all mediafiler.\n\n• Meddelanden kommer att tas bort oavsett om de har lästs eller inte.\n\n• \"Sparade meddelanden\" undantas från lokal borttagning.
-
+
Vill du ta bort %1$d meddelanden nu och alla nyligen hämtade meddelanden \"%2$s\" i framtiden?\n\n⚠️ Detta inkluderar e-post, media och \"Sparade meddelanden\" i alla servermappar\n\n⚠️ Använd inte den här funktionen om du vill behålla data på servern\n\n⚠️ Använd inte den här funktionen om du använder andra e-postklienter än Delta Chat
-
+
Detta inkluderar e-post, media och \"Sparade meddelanden\" i alla servermappar. Använd inte den här funktionen om du vill spara data på servern eller om du använder andra e-postklienter än Delta Chat.
+
Slå på direktborttagning
+
Om du aktiverar direktborttagning kan du inte använda flera enheter på den här profilen.Jag förstår! Ta bort alla dessa meddelanden.
@@ -939,7 +956,7 @@
Lär dig merDu har tagit bort chatten \"Sparade meddelanden\".\n\nℹ️ Om du vill använda funktionen \"Sparade meddelanden\" igen skapar du en ny chatt med dig själv.
-
+
⚠️ Din leverantörs lagringsutrymme är snart slut: %1$s%% är redan använt.\n\nDu kanske inte kan ta emot meddelanden om lagringsutrymmet är fullt.\n\n👉 Kontrollera om du kan radera gammal data i leverantörens webbgränssnitt och överväg att aktivera \"Inställningar / Chattar och media / Ta bort gamla meddelanden\". Du kan kontrollera din aktuella lagringsanvändning när som helst under \"Inställningar / Anslutning\".⚠️ Datum eller tid på din enhet verkar vara felaktigt (%1$s).\n\nJustera din klocka ⏰🔧 för att säkerställa att dina meddelanden tas emot korrekt.
@@ -1102,7 +1119,6 @@
MeddelandeåtgärderFörhandsvisning i bakgrundenFörsvinnande meddelanden aktiverat
-
Sluta dela platsEfter inspelningen dubbelklickar du för att skicka. För att förkasta inspelningen, skrubba med två fingrar.
diff --git a/src/main/res/values-ta/strings.xml b/src/main/res/values-ta/strings.xml
index 44955b3be..fac20de56 100644
--- a/src/main/res/values-ta/strings.xml
+++ b/src/main/res/values-ta/strings.xml
@@ -140,12 +140,14 @@
7 நாட்கள் இதற்காக ஊமையாக்குஎப்போதுமே ஊமையாக்கு
+
5 நிமிடங்கள்
+
30 நிமிடங்கள் 1 மணி2 மணிகள்6 மணிகள்
-
+
தேர்வு செய்யப்பட்ட செய்திகளை இவற்றுக்கு %1$s முன்னோக்கி அனுப்பவா ?இந்த தொடர்பை முடக்கவா ?
diff --git a/src/main/res/values-te/strings.xml b/src/main/res/values-te/strings.xml
index 901421550..08f1aa3b2 100644
--- a/src/main/res/values-te/strings.xml
+++ b/src/main/res/values-te/strings.xml
@@ -122,6 +122,7 @@
8 గంటలు నిశబ్దంగా ఉంచు1 రోజు నిశబ్దంగా ఉంచు7 రోజులు నిశబ్దంగా ఉంచు
+
సందేశాలు %1$s ఫార్వర్డ్ చేయాలా?మీరు ఈ పరిచయాన్ని రద్దుచేయాలని నిర్ణయించుకున్నారా?
diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml
index b34769f41..36984779d 100644
--- a/src/main/res/values-tr/strings.xml
+++ b/src/main/res/values-tr/strings.xml
@@ -61,7 +61,9 @@
OrtamUygulamalar ve OrtamlarProfil
+
Tüm Profiller
+
Şu Anki ProfilAna MenüSohbet Başlat
@@ -86,6 +88,7 @@
Her zamanHer Zaman Uzak Görselleri YükleBir kez
+
Uyarı GösterŞimdi değilHiçbir zaman
@@ -203,6 +206,7 @@
KameraYakala
+
Kamerayı DeğiştirTam Ekran Moduna GeçKonum
@@ -380,12 +384,13 @@
7 günlüğüne sessize alSonsuza dek sessize al
+
5 dakikalığına
+
30 dakikalığına1 saatliğine2 saatliğine6 saatliğine
-
Aşağıdaki dosya %s kişisine gönderilsin mi?Aşağıdaki %d dosya %s kişisine gönderilsin mi?
@@ -426,7 +431,6 @@
Zaten bir aramadaArama başka bir aygıtta yanıtlandıMikrofon izni aramalar için gereklidir
-
Ayrılmak istediğinizden emin misiniz?
@@ -440,6 +444,7 @@
%d ileti silinsin mi?%d ileti silinsin mi?
+
İletiler %1$s kişisine iletilsin mi?İletiler %1$d sohbete iletilsin mi?İlişikleri dışa aktarmak, aygıtınızdaki diğer uygulamaların onlara erişmesine izin verir.\n\nSürdürülsün mü?
@@ -764,6 +769,7 @@
ÖncelikYeni iletiler için sistem bildirimlerini etkinleştirBildirimde ileti içeriğini göster
+
Bildirimlerde iletinin gönderenini ve ilk sözcüklerini gösterirLED RengiSes
@@ -806,16 +812,23 @@
Duvar KâğıdıVarsayılan Görseli KullanGaleriden Seç
+
Bu seçeneği değiştirirseniz, sunucunuzun ve diğer istemcilerinizin uygun olarak yapılandırıldığından emin olun.\n\nDeğilse özellikler hiç çalışmayabilir.Çoklu Aygıt Moduİletilerinizi diğer aygıtlarınızla eşzamanlayın. İkinci bir aygıt eklendiğinde otomatik olarak etkinleştirilirAynı profili birden fazla aygıtta kullanırken Çoklu Aygıt Modu etkinleştirilmelidir. Bu ayarı yalnızca bu profili diğer tüm aygıtlarınızdan kaldırdıysanız etkisizleştirin.\n\nProfili birden fazla aygıtta kullanırken Çoklu Aygıt Modu\'nu etkisizleştirmek, iletilerin kaçırılmasına ve diğer sorunlara neden olur.
+
DeltaChat Klasörüne Otomatik Olarak Taşı
+
Yalnızca DeltaChat Klasöründen Getir
+
Klasik E-Postaları Göster
+
Hayır, yalnızca sohbetler
+
Kabul edilen kişiler için
+
TümüDeneysel ÖzelliklerBu özellikler, kararsız olabilir ve değiştirilebilir ya da kaldırılabilir
@@ -870,14 +883,17 @@
Eski İletileri Silİletileri Aygıttan Sil
+
İletileri Sunucudan Sil%1$d iletiyi şimdi ve gelecekte yeni getirilen tüm iletileri “%2$s” silmek istiyor musunuz?\n\n• Bu, tüm ortamları kapsar\n\n• İletiler görülse de görülmese de silinecek\n\n• “Kaydedilen İletiler” yerel silmeden atlanacak
-
+
%1$d iletiyi şimdi ve gelecekte yeni getirilen tüm iletileri “%2$s” silmek istiyor musunuz?\n\n⚠️ Bu, tüm sunucu klasörlerindeki e-postaları, ortamları ve “Kaydedilen İletiler”i kapsar\n\n⚠️ Verileri sunucuda tutmak istiyorsanız ya da klasik e-posta istemcilerini de kullanıyorsanız bu işlevi kullanmayın
-
+
Bu, tüm sunucu klasörlerindeki e-postaları, ortamları ve “Kaydedilen İletiler”i kapsar. Verileri sunucuda tutmak istiyorsanız ya da klasik e-posta istemcilerini de kullanıyorsanız bu işlevi kullanmayın
+
Bir kerede silmeyi aç
+
Bir kerede silmeyi etkinleştirirseniz, bu profilde çoklu aygıtları kullanamazsınız.Anladım, tüm bu iletileri sil
@@ -974,7 +990,7 @@
Daha Fazlasını Öğrenin“Kaydedilen İletiler” sohbetini sildiniz.\n\nℹ️ “Kaydedilen İletiler” özelliğini yeniden kullanmak için kendinizle yeni bir sohbet oluşturun.
-
+
⚠️ Sağlayıcınızın depolaması dolmak üzere: %1$s%% zaten kullanımda.\n\nDepolama tam dolduğunda iletileri alamayabilirsiniz.\n\n👉 Lütfen sağlayıcınızın web arabiriminden eski verileri silip silemeyeceğinizi denetleyin ve “Ayarlar / Sohbetler / Eski İletileri Sil”i etkinleştirmeyi düşünün. Herhangi bir zamanda şu anki depolama kullanımınızı “Ayarlar / Bağlanabilirlik”ten denetleyebilirsiniz.⚠️ Aygıtınızdaki tarih ya da saat yanlış görünüyor (%1$s).\n\nİletilerinizin doğru şekilde alınmasını sağlamak için saatinizi ⏰🔧 ayarlayın.
@@ -1058,8 +1074,6 @@
%2$d sohbette %1$d ileti
- İsteğe Bağlı Konum Akışı için Kanal
- Konum AkışıKonumunuzu paylaşıyorsunuzSohbet üyeleriyle canlı konumunuzu paylaşmak için Delta Chat\'in konum verilerinizi kullanmasına izin verin.\n\nCanlı konumun çalışmasını kesintisiz yapmak için konum verileri, uygulama kapatıldığında ya da kullanımda değilken bile kullanılır.
@@ -1155,7 +1169,6 @@
İleti eylemleriDuvar kâğıdı önizlemesiKaybolan iletiler etkinleştirildi
-
Konum paylaşımını durdurKaydettikten sonra göndermek için çift dokunun. Kaydı atmak için iki parmakla sarın.
diff --git a/src/main/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml
index 2327fa483..7aa036c14 100644
--- a/src/main/res/values-uk/strings.xml
+++ b/src/main/res/values-uk/strings.xml
@@ -59,7 +59,9 @@
МедіаДодатки й медіаПрофіль
+
Усі профілі
+
Поточний ПрофільГоловне менюПочати розмову
@@ -82,6 +84,7 @@
ЗавждиЗавжди завантажувати віддалені зображенняОдин раз
+
Показати попередженняНе заразНіколи
@@ -218,6 +221,7 @@
КамераЗахопити
+
Перемкнути камеруПерейти в повноекранний режимРозташування
@@ -397,12 +401,13 @@
Вимкнути сповіщення на 7 днівВимкнути сповіщення назавжди
+
на 5 хвилин
+
на 30 хвилинна 1 годинуна 2 годинина 6 годин
-
Надіслати цей файл → %s?Надіслати ці %d файли → %s?
@@ -460,6 +465,7 @@
Видалити %d повідомлень?Видалити %d повідомлень?
+
Переслати повідомлення %1$s?Переслати повідомлення в %1$d?Якщо експортувати вкладені файли, інші програми на вашому пристрої отримають до них доступ.\n\nПродовжити?
@@ -786,6 +792,7 @@
ПріоритетУвімкнути системні сповіщення для нових повідомленьВідображати вміст повідомлення у сповіщенні
+
Відображає відправника та перші слова повідомлення в сповіщенняхКолір світлодіодуЗвук
@@ -826,16 +833,23 @@
ФонВикористовувати тло за замовчуваннямВибрати з галереї
+
Якщо ви змінюєте цей параметр, переконайтеся, що Ваш сервер та інші Ваші клієнти налаштовані відповідним чином.\n\nІнакше щось може взагалі не працювати.Режим роботи з декількома пристроямиСинхронізуйте свої повідомлення з іншими пристроями. Автоматично вмикається після додавання іншими пристроямиРежим декількох пристроїв має бути увімкнений, якщо ви використовуєте один і той самий профіль на декількох пристроях. Вимикайте цей параметр, лише якщо ви видалили цей профіль з усіх інших пристроїв.\n\nВимкнення режиму декількох пристроїв під час використання профілю на декількох пристроях призведе до пропусків повідомлення та інших проблем.
+
Автоматично пересувати до папки DeltaChat
+
Збирати лише з теки DeltaChat.
+
Показувати звичайну пошту
+
Ні, лише чати
+
Для прийнятих контактів
+
ВсіЕкспериментальні функціїЦі функції можуть бути нестабільними і можуть бути змінені або видалені
@@ -890,14 +904,17 @@
Видалити старі повідомленняВидалити повідомлення з пристрою
+
Видалити повідомлення з сервераВи хочете видалити %1$d повідомлень зараз і всі нові повідомлення \"%2$s\" у майбутньому?\n\n- Це включає всі медіа\n\n- Повідомлення буде видалено незалежно від того, чи були вони переглянуті чи ні\n\n- \"Збережені повідомлення\" буде пропущено при локальному видаленні
-
+
Ви хочете видалити %1$d повідмолень зараз і всі нові повідомлення \"%2$s\" в майбутньому?\n\n⚠️ Сюди входять електронні листи, медіа та \"Збережені повідомлення\" у всіх теках сервера\n\n⚠️ Не використовуйте цю функцію, якщо ви хочете зберегти дані на сервері або якщо ви також використовуєте класичні поштові клієнти
-
+
Сюди входять електронні листи, медіафайли та \"Збережені повідомлення\" у всіх папках сервера. Не використовуйте цю функцію, якщо ви хочете зберігати дані на сервері або якщо ви використовуєте класичні поштові клієнти
+
Увімкнути одномоментне видалення
+
Якщо ви ввімкнули одномоментне видалення, ви не зможете використовувати кілька пристроїв у цьому профілі.Я розумію, видалити всі ці повідомлення
@@ -991,7 +1008,7 @@
Дізнатися більшеВи видалили чат \"Збережені повідомлення\".\n\nℹ️ Аби використовувати функцію \"Збережені повідомлення\" знову, створіть новий чат самі із собою.
-
+
⚠️ Сховище вашого провайдера електронної пошти майже заповнено, уже використовується %1$s%%.\n\nМожливо, Ви не зможете отримувати повідомлення, коли сховище буде заповнене.\n\n👉 Перевірте, чи можна видалити старі дані у веб-інтерфейсі провайдера та ввімкніть \"Налаштування / Чати / Видалити старі повідомлення\". Ви можете будь-коли перевірити своє поточне використання сховища в \"Налаштування / Зʼєднання\". ⚠️ Дата й час на вашому пристрої видаються неточними (%1$s).\n\nНалаштуйте свій годинник ⏰🔧 для правильного отримання повідомлень.
@@ -1154,7 +1171,6 @@
Дії з повідомленнямПопередній перегляд фонуЗникнення повідомлень увімкнено
-
Припинити надсилати геоданіПісля запису двічі торкніться для відправки. Щоб скинути запис, проведіть двома пальцями.
diff --git a/src/main/res/values-vi/strings.xml b/src/main/res/values-vi/strings.xml
index 705eedb31..21b8aebbd 100644
--- a/src/main/res/values-vi/strings.xml
+++ b/src/main/res/values-vi/strings.xml
@@ -64,6 +64,7 @@
Luôn luônLuôn tải hình ảnh từ xaMột lần
+
Hiển thị cảnh báoKhông phải bây giờKhông bao giờ
@@ -153,6 +154,7 @@
Máy ảnhChụp
+
Chuyển đổi máy ảnhChuyển đổi Chế độ toàn màn hìnhVị trí
@@ -277,12 +279,13 @@
Tắt tiếng trong 7 ngàyTắt tiếng vĩnh viễn
+
Trong 5 phút
+
Trong 30 phútTrong 1 giờTrong 2 giờTrong 6 giờ
-
Gửi tập tin sau tới %s?
@@ -291,6 +294,7 @@
Xóa %d tin nhắn?
+
Chuyển tiếp tin nhắn tới %1$s?Chuyển tiếp tin nhắn tới %1$d cuộc trò chuyện?Xuất tệp đính kèm sẽ cho phép các ứng dụng khác trên thiết bị của bạn truy cập chúng.\n\nTiếp tục?
@@ -520,6 +524,7 @@
Ưu tiênBật thông báo hệ thống cho tin nhắn mớiHiển thị nội dung tin nhắn trong thông báo
+
Hiển thị người gửi và từ đầu tiên của tin nhắn trong thông báoMàu LEDÂm thanh
@@ -556,12 +561,19 @@
Hình nềnSử dụng hình ảnh mặc địnhChọn từ thư viện
+
Nếu bạn thay đổi tùy chọn này, hãy đảm bảo rằng máy chủ và các máy khách khác của bạn được cấu hình tương ứng.\n\nNếu không, mọi thứ có thể không hoạt động.
+
Tự động di chuyển đến Thư mục DeltaChat
+
Chỉ tìm nạp từ thư mục DeltaChat
+
Hiển thị E-mail cổ điển
+
Không, chỉ trò chuyện
+
Đối với các liên hệ được chấp nhận
+
Tất cảTính năng thử nghiệmTruyền phát vị trí theo yêu cầu
@@ -599,12 +611,13 @@
Xóa tin nhắn cũXóa tin nhắn khỏi thiết bị
+
Xóa tin nhắn khỏi máy chủBạn có muốn xóa %1$d tin nhắn ngay bây giờ và tất cả các tin nhắn mới được tìm nạp \"%2$s\" trong tương lai không?\n\n• Điều này bao gồm tất cả phương tiện\n\n• Tin nhắn sẽ bị xóa dù chúng có được nhìn thấy hay không\n\n• \"Tin nhắn đã lưu\" sẽ bị bỏ qua khỏi quá trình xóa cục bộ
-
+
Bạn có muốn xóa %1$d tin nhắn ngay bây giờ và tất cả các tin nhắn mới được tìm nạp \"%2$s\" trong tương lai không?\n\n⚠️ Điều này bao gồm e-mail, phương tiện và \"Tin nhắn đã lưu\" trong tất cả máy chủ thư mục\n\n⚠️ Không sử dụng chức năng này nếu bạn muốn giữ dữ liệu trên máy chủ\n\n⚠️ Không sử dụng chức năng này nếu bạn đang sử dụng các ứng dụng e-mail khác ngoài Delta Chat
-
+
Điều này bao gồm e-mail, phương tiện và \"Tin nhắn đã lưu\" trong tất cả các thư mục máy chủ. Không sử dụng chức năng này nếu bạn muốn giữ dữ liệu trên máy chủ hoặc nếu bạn đang sử dụng các ứng dụng e-mail khác ngoài Delta Chat.Tôi hiểu, hãy xóa tất cả những tin nhắn này
@@ -681,7 +694,7 @@
Tìm hiểu thêmBạn đã xóa cuộc trò chuyện \"Tin nhắn đã lưu\".\n\nℹ️ Để sử dụng lại tính năng \"Tin nhắn đã lưu\", hãy tạo một cuộc trò chuyện mới với chính bạn.
-
+
⚠️ Bộ nhớ nhà cung cấp của bạn sắp hết: %1$s%% đã được sử dụng.\n\nBạn có thể không nhận được tin nhắn nếu bộ nhớ đầy.\n\n 👉 Vui lòng kiểm tra xem bạn có thể xóa không dữ liệu cũ trong giao diện web của nhà cung cấp và cân nhắc bật \"Cài đặt / Xóa tin nhắn cũ\". Bạn có thể kiểm tra mức sử dụng bộ nhớ hiện tại của mình bất kỳ lúc nào tại \"Cài đặt / Kết nối\".⚠️ Ngày hoặc giờ trên thiết bị của bạn có vẻ không chính xác (%1$s).\n\nĐiều chỉnh đồng hồ của bạn ⏰🔧 để đảm bảo tin nhắn của bạn được nhận chính xác.
@@ -826,7 +839,6 @@
Hành động tin nhắnXem trước hình nềnĐã kích hoạt tin nhắn biến mất
-
Dừng chia sẻ vị tríSau khi ghi, nhấn đúp để gửi. Để loại bỏ bản ghi, hãy chà bằng hai ngón tay.
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index df8500ea5..ad58f7ab3 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -61,7 +61,9 @@
媒体应用和媒体账号
+
所有账号
+
当前账号主菜单开始聊天
@@ -86,6 +88,7 @@
总是始终加载远程图像仅一次
+
显示警告现在不从不
@@ -193,7 +196,10 @@
相机捕获
+
切换摄像头
+
+ 切换摄像头切换全屏模式位置位置
@@ -369,11 +375,14 @@
静音 7 天永久静音
+
5 分钟
+
30 分钟1 小时2 小时6 小时
+ 24 小时将以下 %d 个文件发送给 %s?
@@ -390,6 +399,8 @@
接听拒接
+
+ 结束通话音频通话
@@ -413,7 +424,12 @@
未接来电已在通话中通话已在其他设备上接听
+ 视频通话需要摄像头权限通话需要麦克风权限
+
+ 与 %1$s 的通话
+
+ 正在呼叫 %1$s…
@@ -426,8 +442,13 @@
删除 %d 条消息?
- 将消息转发给 %1$s?
- 转发消息到 %1$d 个聊天?
+
+
+ 将 %1$d 条消息转发到 %2$s?
+
+
+ 将消息转发到 %1$s?
+ 将消息转发到 %1$d 个聊天?导出附件将允许您设备上的其他应用访问这些附件。\n\n是否继续?屏蔽此联系人?\n\n被屏蔽的联系人所创建的直接消息或群组将不会显示。\n\n被屏蔽的联系人所创建的其他群组仍将显示他们的消息。取消屏蔽此联系人?
@@ -453,7 +474,7 @@
已归档聊天请输入消息。
- 相机不可用。
+ 摄像头不可用。无法录制音频。%d 条新消息
@@ -730,7 +751,7 @@
发出媒体质量如需发送原始质量的媒体,请将媒体以“文件”形式附加。此方式会消耗您和接收者更多的数据使用量。平衡
- 体积小,但质量更差
+ 质量较差,节省数据振动屏幕安全
@@ -742,11 +763,12 @@
通话
- 来电时显示通话屏幕
+ 显示已接听联系人的通话屏幕显示优先级为新消息启用系统通知在通知中显示消息内容
+
在通知中显示发送者和消息开头部分LED 颜色声音
@@ -789,20 +811,27 @@
背景使用默认图像从图库中选择
+
若要更改此选项,请您务必调整服务器以及其他客户端的相应设置。\n\n否则软件可能无法正常工作。多设备模式将您的消息与其他设备同步。添加第二台设备时自动启用在多个设备上使用同一账号时,必须启用多设备模式。仅当您已从所有其他设备中移除此账号后,才能禁用此设置。\n\n在多个设备上使用该账号时禁用多设备模式会导致错过消息和其他问题。
+
自动移动至 DeltaChat 文件夹
+
只从 DeltaChat 文件夹获取
+
显示传统电子邮件
+
不显示,仅聊天
+
已接受的联系人
+
全部实验性功能这些功能可能不稳定,可能会更改或移除
- 按需位置流
+ 位置流默认背景默认颜色自定义图像
@@ -853,14 +882,17 @@
删除旧消息从设备删除消息
+
从服务器删除消息您是否要立即删除 %1$d 条消息,并在之后于消息收到 %2$s 删除它们?\n\n• 这包括所有媒体文件\n\n• 无论消息是否被浏览过,它们都将被删除\n\n• 在本地删除中,“保存的消息”将被跳过
-
+
您是否要立即删除 %1$d 条消息,并在之后于消息收到 %2$s 删除它们?\n\n⚠️ 这包括服务器所有文件夹中的电子邮件、媒体和“保存的消息”\n\n⚠️ 如果您想在服务器上保留数据或使用传统电子邮件客户端,请勿使用此功能
-
+
这包括所有服务器文件夹中的电子邮件、媒体和“保存的消息”。如果您想在服务器上保留数据,或者也使用传统电子邮件客户端,请勿使用此功能
+
开启一次性删除
+
如果您启用一次删除,则无法在此配置文件中使用多台设备。我了解,将这些消息全部删除
@@ -957,7 +989,7 @@
了解更多您已删除“保存的消息”聊天。\n\nℹ️ 要再次使用“保存的消息”功能,请创建一个与自己的新聊天。
-
+
⚠️ 您的服务提供者存储空间即将用完:已使用 %1$s%%。\n\n如果存储空间已满,您可能无法接收消息。\n\n👉 请检查您是否可以在服务提供者的网页界面中删除旧数据,并考虑启用“设置/聊天/删除旧消息”。您可以随时在“设置/连接”中查看当前的存储空间使用情况。⚠️ 设备的日期或时间似乎不准确 (%1$s)。\n\n请调整时钟 ⏰🔧 以确保能够正确接收消息。
@@ -971,7 +1003,7 @@
从图像加载二维码扫描二维码将摄像头对准二维码。
- 移动二维码到相机
+ 将二维码移动到摄像头二维码无法被解码是否要加入群组“%1$s”?是否要加入频道“%1$s”?
@@ -1041,8 +1073,6 @@
%1$d 条消息,位于 %2$d 个聊天内
- 按需位置流频道
- 位置流您正在共享您的位置要与聊天成员共享您的实时位置,请允许 Delta Chat 使用您的位置数据。\n\n为了确保实时位置无缝工作,即使应用已关闭或未使用,也会使用位置数据。
@@ -1138,6 +1168,8 @@
消息操作背景预览消息定时销毁已激活
+
+ 打开 %1$s停止共享位置
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 8b39a272a..7a0e49c38 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -59,7 +59,9 @@
多媒體應用程式和媒體賬戶
+
所有賬戶
+
當前賬戶主選單開始聊天
@@ -80,6 +82,7 @@
永遠總是載入遠端圖片僅一次
+
顯示警告現在不要永遠不要
@@ -186,6 +189,7 @@
相機拍攝
+
切換相機切換全螢幕模式地點
@@ -362,12 +366,13 @@
靜音7天永遠靜音
+
5分鐘
+
30分鐘1小時2小時6小時
-
要將%d個檔案傳送給%s?
@@ -415,6 +420,7 @@
是否刪除所有裝置上的%d條訊息?
+
轉發訊息給%1$s?轉發訊息到%1$d個聊天?要匯出附件嗎?匯出的附件可以用裝置上的其它應用程式打開。\n\n要繼續嗎?
@@ -730,6 +736,7 @@
通知優先權為新訊息啟用系統通知在通知中顯示訊息內容
+
顯示通知中訊息的寄件人和開頭部分LED顏色音效
@@ -770,16 +777,23 @@
背景使用預設圖案從相簿中挑選
+
如果關閉本選項的話,請務必確定你的伺服器和其它客戶端應用程式都使用相同的設定,否則很可能不能運作。多裝置模式將您的訊息與其他裝置同步。新增第二個裝置時自動啟用在多個裝置上使用同一的帳戶時,必須啟用多裝置模式。只有在您已從所有其他設備移除此帳戶後,才可以禁用此設定。\n\n在多個裝置上使用該帳戶時禁用多裝置模式將導致漏接訊息及其他問題。
+
自動搬移到 DeltaChat 資料夾
+
僅從 DeltaChat 資料夾中獲取
+
顯示傳統email
+
只顯示對話
+
顯示已接受的聯絡人
+
所有郵件實驗性功能這些功能可能不穩定,並且可能會被更改或移除
@@ -834,14 +848,17 @@
刪除舊訊息從裝置中刪除訊息
+
從伺服器中刪除訊息您是否要立即刪除%1$d條消息,之後在收到消息「%2$s」后刪除它們? \n\n⚠️ 這包括伺服器所有媒體\n\n•這包括所有媒體\n\n• 無論消息是否被看到都將被刪除\n\n• “已保存的郵件”將不會被本地刪除
-
+
您是否要立即刪除%1$d條訊息,之後在訊息收到「%2$s」后刪除它們? \n\n⚠️ 這包括伺服器所有資料夾中的電子郵件、媒體和“保存的消息”\n\n⚠️ 如果您想在伺服器上保留數據,請不要使用此功能\n\n⚠️ 如果您正在使用 Delta Chat 之外的電子郵件用戶端,請不要使用此功能
-
+
這包括所有伺服器資料夾中的電子郵件、媒體和「保存的訊息」。如果您想將數據保留在伺服器上,或者您正在使用 Delta Chat 以外的其他電子郵件用戶端,請不要使用此功能。
+
啟用一次性刪除
+
如果啟用一次性刪除,則您無法使用多個裝置登入該賬戶。我已知曉,刪除所有這些消息
@@ -934,7 +951,7 @@
瞭解更多您刪除了「已保存的訊息」聊天。\n\nℹ️要再次使用「已保存的訊息」功能,請與自己創建新聊天。
-
+
⚠️ 您的供應商的存儲空間即將用完:已使用%1$s%%。\n\n如果存儲空間已滿,您可能無法接收訊息。\n\n👉請檢查您是否可以在提供商的網頁介面中刪除舊數據,並考慮啟用「設定/聊天和媒體/刪除舊訊息」。您可以隨時在「設定/連接」 中檢查您目前的儲存使用方式。⚠️ 您裝置上的日期或時間似乎不準確 (%1$s)。\n\n調整您的時鐘⏰🔧以確保您的訊息被正確接收。
@@ -1097,7 +1114,6 @@
訊息動作壁紙預覽自動刪除訊息計時器設置已啟用
-
停止分享位置錄製后,按兩下以傳送。要放棄錄製內容,請用兩根手指劃動。