Compare commits

...

10 Commits

Author SHA1 Message Date
Cody Henthorne 81926d1bc4 Bump version to 8.20.3 2026-07-17 16:14:00 -04:00
Cody Henthorne b327d92b82 Update translations and other static files. 2026-07-17 16:05:21 -04:00
Cody Henthorne 9a8e0dd64f Fix linked device changing discoverability bug. 2026-07-17 15:56:53 -04:00
Alex Hart c50757880e Add proper rounded corners and end margin to detail pane. 2026-07-17 15:56:53 -04:00
Alex Hart 99b1fa0ebb Update span count in gallery according to breakpoint. 2026-07-17 15:56:53 -04:00
Cody Henthorne 74f08927f2 Maybe mark registration complete after a terminal restore decision. 2026-07-17 15:56:53 -04:00
Cody Henthorne 39598a8da0 Bump version to 8.20.2 2026-07-16 16:33:22 -04:00
Cody Henthorne 5949d96cfd Update translations and other static files. 2026-07-16 16:29:26 -04:00
Alex Hart c9ebc1c12e Replace lottie with static badge image and update sheet sizing. 2026-07-16 17:15:28 -03:00
Cody Henthorne 99ed40580c Add missing field for 1:1 sync messages. 2026-07-16 15:53:14 -04:00
89 changed files with 306 additions and 217 deletions
+2 -2
View File
@@ -32,8 +32,8 @@ plugins {
val staticIps = Properties().apply { file("static-ips.properties").reader().use { load(it) } }
staticIps.stringPropertyNames().forEach { rootProject.extra[it] = staticIps.getProperty(it) }
val canonicalVersionCode = 1721
val canonicalVersionName = "8.20.1"
val canonicalVersionCode = 1723
val canonicalVersionName = "8.20.3"
val currentHotfixVersion = 0
val maxHotfixVersions = 100
@@ -672,46 +672,54 @@ class MainActivity :
}
},
primaryContent = {
when (mainNavigationState.currentListLocation) {
MainNavigationListLocation.CHATS, MainNavigationListLocation.ARCHIVE -> {
NavDisplay<NavKey>(
backStack = mainNavigationViewModel.chatsBackStackEntries,
onBack = { mainNavigationViewModel.popChatsDetailLocation() },
transitionSpec = { TransitionSpecs.HorizontalSlide.transitionSpec },
popTransitionSpec = { TransitionSpecs.HorizontalSlide.popTransitionSpec },
predictivePopTransitionSpec = { TransitionSpecs.HorizontalSlide.predictivePopTransitionSpec },
entryProvider = entryProvider { chatsNavEntries(convoTransitionState) }
)
}
Box(
modifier = Modifier
.padding(end = contentLayoutData.detailPaddingEnd)
.clip(contentLayoutData.shape)
.background(color = MaterialTheme.colorScheme.surface)
.fillMaxSize()
) {
when (mainNavigationState.currentListLocation) {
MainNavigationListLocation.CHATS, MainNavigationListLocation.ARCHIVE -> {
NavDisplay<NavKey>(
backStack = mainNavigationViewModel.chatsBackStackEntries,
onBack = { mainNavigationViewModel.popChatsDetailLocation() },
transitionSpec = { TransitionSpecs.HorizontalSlide.transitionSpec },
popTransitionSpec = { TransitionSpecs.HorizontalSlide.popTransitionSpec },
predictivePopTransitionSpec = { TransitionSpecs.HorizontalSlide.predictivePopTransitionSpec },
entryProvider = entryProvider { chatsNavEntries(convoTransitionState) }
)
}
MainNavigationListLocation.CALLS -> {
NavDisplay<NavKey>(
backStack = mainNavigationViewModel.callsBackStackEntries,
onBack = { mainNavigationViewModel.popCallsDetailLocation() },
transitionSpec = { TransitionSpecs.HorizontalSlide.transitionSpec },
popTransitionSpec = { TransitionSpecs.HorizontalSlide.popTransitionSpec },
predictivePopTransitionSpec = { TransitionSpecs.HorizontalSlide.predictivePopTransitionSpec },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator()
),
entryProvider = entryProvider { callsNavEntries(isSplitPane) }
)
}
MainNavigationListLocation.CALLS -> {
NavDisplay<NavKey>(
backStack = mainNavigationViewModel.callsBackStackEntries,
onBack = { mainNavigationViewModel.popCallsDetailLocation() },
transitionSpec = { TransitionSpecs.HorizontalSlide.transitionSpec },
popTransitionSpec = { TransitionSpecs.HorizontalSlide.popTransitionSpec },
predictivePopTransitionSpec = { TransitionSpecs.HorizontalSlide.predictivePopTransitionSpec },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator()
),
entryProvider = entryProvider { callsNavEntries(isSplitPane) }
)
}
MainNavigationListLocation.STORIES -> {
NavDisplay<NavKey>(
backStack = mainNavigationViewModel.storiesBackStackEntries,
onBack = { mainNavigationViewModel.popStoriesDetailLocation() },
transitionSpec = { TransitionSpecs.HorizontalSlide.transitionSpec },
popTransitionSpec = { TransitionSpecs.HorizontalSlide.popTransitionSpec },
predictivePopTransitionSpec = { TransitionSpecs.HorizontalSlide.predictivePopTransitionSpec },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator()
),
entryProvider = entryProvider { storiesNavEntries() }
)
MainNavigationListLocation.STORIES -> {
NavDisplay<NavKey>(
backStack = mainNavigationViewModel.storiesBackStackEntries,
onBack = { mainNavigationViewModel.popStoriesDetailLocation() },
transitionSpec = { TransitionSpecs.HorizontalSlide.transitionSpec },
popTransitionSpec = { TransitionSpecs.HorizontalSlide.popTransitionSpec },
predictivePopTransitionSpec = { TransitionSpecs.HorizontalSlide.predictivePopTransitionSpec },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator()
),
entryProvider = entryProvider { storiesNavEntries() }
)
}
}
}
},
@@ -93,12 +93,14 @@ private fun Loading() {
@Composable
private fun Ready(state: GatewaySelectorState.Ready, onEvent: (GatewaySelectorBottomSheetEvent) -> Unit) {
Spacer(modifier = Modifier.size(38.dp))
BadgeImage112(
badge = state.inAppPayment.data.badge!!.let { Badges.fromDatabaseBadge(it) },
modifier = Modifier.size(112.dp)
modifier = Modifier.size(80.dp)
)
Spacer(modifier = Modifier.size(12.dp))
Spacer(modifier = Modifier.size(16.dp))
TitleAndSubtitle(state.inAppPayment)
@@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.components.settings.app.subscription.thanks
import android.animation.Animator
import android.content.DialogInterface
import android.os.Bundle
import android.text.SpannableStringBuilder
@@ -11,14 +10,12 @@ import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.core.text.method.LinkMovementMethodCompat
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieDrawable
import com.google.android.material.button.MaterialButton
import com.google.android.material.materialswitch.MaterialSwitch
import io.reactivex.rxjava3.kotlin.subscribeBy
import org.signal.core.ui.FixedRoundedCornerBottomSheetDialogFragment
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.animation.AnimationCompleteListener
import org.thoughtcrime.securesms.badges.BadgeImageView
import org.thoughtcrime.securesms.badges.BadgeRepository
import org.thoughtcrime.securesms.badges.models.Badge
@@ -122,23 +119,8 @@ class ThanksForYourSupportBottomSheetDialogFragment : FixedRoundedCornerBottomSh
controlState = ControlState.DISPLAY
}
if (args.badge.isBoost()) {
badgeView.visibility = View.INVISIBLE
lottie.visible = true
lottie.playAnimation()
lottie.addAnimatorListener(object : AnimationCompleteListener() {
override fun onAnimationEnd(animation: Animator) {
lottie.removeAnimatorListener(this)
lottie.setMinAndMaxFrame(30, 91)
lottie.repeatMode = LottieDrawable.RESTART
lottie.repeatCount = LottieDrawable.INFINITE
lottie.frame = 30
lottie.playAnimation()
}
})
} else {
lottie.visible = false
}
// New badge does not have a lottie, so we just hide it and show a static image.
lottie.visible = false
done.setOnClickListener { dismissAllowingStateLoss() }
}
@@ -444,6 +444,7 @@ class IndividualSendJobV2 private constructor(parameters: Parameters, private va
timestamp = timestamp,
message = dataMessage,
editMessage = editMessage,
expirationStartTimestamp = if ((dataMessage?.expireTimer ?: 0) > 0) System.currentTimeMillis() else null,
unidentifiedStatus = listOf(
SyncMessage.Sent.UnidentifiedDeliveryStatus(
destinationServiceIdBinary = recipientServiceId.toByteString(),
@@ -108,8 +108,10 @@ public class RefreshAttributesJob extends BaseJob {
if (SignalStore.account().isPrimaryDevice()) {
setPrimaryDeviceAttributes(svrValues, capabilities);
} else {
Log.i(TAG, "Linked device, refreshing device capabilities only. Capabilities: " + capabilities);
boolean phoneNumberDiscoverable = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode() == PhoneNumberDiscoverabilityMode.DISCOVERABLE;
Log.i(TAG, "Linked device, refreshing device capabilities and phone number discoverability. Capabilities: " + capabilities + ", discoverable: " + phoneNumberDiscoverable);
RequestResultUtil.successOrThrow(SignalNetwork.account().setCapabilities(capabilities));
RequestResultUtil.successOrThrow(SignalNetwork.account().setPhoneNumberDiscoverability(phoneNumberDiscoverable));
}
hasRefreshedThisAppCycle = true;
@@ -16,6 +16,8 @@ import androidx.lifecycle.map
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.ItemTouchHelper
import org.signal.core.models.media.Media
import org.signal.core.ui.WindowBreakpoint
import org.signal.core.ui.getWindowBreakpoint
import org.signal.core.ui.permissions.Permissions
import org.signal.core.ui.util.StorageUtil
import org.signal.core.util.Stopwatch
@@ -41,6 +43,10 @@ import org.signal.core.ui.R as CoreUiR
*/
class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
companion object {
private const val SPAN_COUNT = 24
}
private val viewModel: MediaGalleryViewModel by viewModels(
factoryProducer = { MediaGalleryViewModel.Factory(null, null, MediaGalleryRepository(requireContext(), MediaRepository())) }
)
@@ -77,15 +83,28 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
height = ViewUtil.getStatusBarHeight(view)
}
binding.mediaGalleryGrid.layoutManager = object : GridLayoutManager(requireContext(), 4) {
binding.mediaGalleryGrid.layoutManager = object : GridLayoutManager(requireContext(), SPAN_COUNT) {
override fun canScrollVertically() = shouldEnableScrolling
}
val breakpoint = resources.getWindowBreakpoint()
val folderSpans = when (breakpoint) {
is WindowBreakpoint.Large -> SPAN_COUNT / 4
is WindowBreakpoint.Medium -> SPAN_COUNT / 3
is WindowBreakpoint.Small -> SPAN_COUNT / 2
}
val fileSpans = when (breakpoint) {
is WindowBreakpoint.Large -> SPAN_COUNT / 8
is WindowBreakpoint.Medium -> SPAN_COUNT / 6
is WindowBreakpoint.Small -> SPAN_COUNT / 4
}
(binding.mediaGalleryGrid.layoutManager as GridLayoutManager).spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
val isFolder: Boolean = (binding.mediaGalleryGrid.adapter as MappingAdapter).getModel(position).map { it is MediaGallerySelectableItem.FolderModel }.orElse(false)
return if (isFolder) 2 else 1
return if (isFolder) folderSpans else fileSpans
}
}
@@ -272,6 +272,8 @@ class AppRegistrationStorageController(private val context: Context) : StorageCo
RestoreDecision.SKIPPED -> RestoreDecisionState.Skipped
RestoreDecision.COMPLETED -> RestoreDecisionState.Completed
}
RegistrationUtil.maybeMarkRegistrationComplete()
}
override fun restoreLocalBackupV1(rootUri: Uri, backupUri: Uri, passphrase: String): Flow<LocalBackupRestoreProgress> = callbackFlow {
@@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.database.model.KeyTransparencyStore
import org.thoughtcrime.securesms.database.model.RecipientRecord
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.dependencies.KeyTransparencyApi
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob
import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob
import org.thoughtcrime.securesms.jobs.StorageSyncJob
import org.thoughtcrime.securesms.keyvalue.AccountValues
@@ -263,6 +264,11 @@ object StorageSyncHelper {
SignalStore.story.userHasSeenGroupStoryEducationSheet = update.new.proto.hasSeenGroupStoryEducationSheet
SignalStore.uiHints.setHasCompletedUsernameOnboarding(update.new.proto.hasCompletedUsernameOnboarding)
if (update.new.proto.unlistedPhoneNumber != update.old.proto.unlistedPhoneNumber && SignalStore.account.isPrimaryDevice) {
Log.i(TAG, "Phone number discoverability changed via storage service. Refreshing attributes to push the change to the server.")
AppDependencies.jobManager.add(RefreshAttributesJob())
}
if (SignalStore.settings.automaticVerificationEnabled && update.new.proto.automaticKeyVerificationDisabled) {
SignalDatabase.recipients.clearAllKeyTransparencyData()
}
@@ -32,7 +32,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dsl_settings_gutter"
android:layout_marginTop="12dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="@dimen/dsl_settings_gutter"
android:gravity="center"
android:text="@string/SubscribeThanksForYourSupportBottomSheetDialogFragment__thanks_for_your_support"
@@ -58,10 +58,10 @@
<org.thoughtcrime.securesms.badges.BadgeImageView
android:id="@+id/thanks_bottom_sheet_badge"
android:layout_width="112dp"
android:layout_height="112dp"
android:layout_marginTop="26dp"
app:badge_size="xlarge"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginTop="28dp"
app:badge_size="badge_112"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
@@ -69,8 +69,8 @@
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/thanks_bottom_sheet_lottie"
android:layout_width="112dp"
android:layout_height="112dp"
android:layout_width="80dp"
android:layout_height="80dp"
app:layout_constraintBottom_toBottomOf="@id/thanks_bottom_sheet_badge"
app:layout_constraintEnd_toEndOf="@id/thanks_bottom_sheet_badge"
app:layout_constraintStart_toStartOf="@id/thanks_bottom_sheet_badge"
@@ -59,7 +59,7 @@
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintBottom_toTopOf="@id/media_gallery_bottom_bar_barrier"
app:layout_constraintTop_toBottomOf="@id/media_gallery_manage_container"
app:spanCount="4"
app:spanCount="24"
tools:itemCount="36"
tools:listitem="@layout/v2_media_gallery_item" />
+14 -14
View File
@@ -5109,29 +5109,29 @@
<!-- LinkedDeviceAccountSettingsFragment -->
<!-- Title of an informational card shown on the account settings screen of a linked device -->
<string name="LinkedDeviceAccountSettingsFragment__this_is_a_linked_device">This is a linked device</string>
<string name="LinkedDeviceAccountSettingsFragment__this_is_a_linked_device">Hierdie is \'n gekoppelde toestel</string>
<!-- Body of an informational card explaining that account settings must be managed from the primary device -->
<string name="LinkedDeviceAccountSettingsFragment__to_manage_your_account_settings">To manage your account settings, open Signal on your primary device.</string>
<string name="LinkedDeviceAccountSettingsFragment__to_manage_your_account_settings">Om jou rekeninginstellings te bestuur, maak Signal op jou primêre toestel oop.</string>
<!-- Title of a settings row that deletes all Signal data from this linked device -->
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data">Delete app data</string>
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data">Skrap toepassing data</string>
<!-- Subtitle of the delete app data row explaining what it does -->
<string name="LinkedDeviceAccountSettingsFragment__this_will_remove_all_data">This will remove all data from the Signal app on this device.</string>
<string name="LinkedDeviceAccountSettingsFragment__this_will_remove_all_data">Dit sal alle data van die Signal-toepassing op hierdie toestel verwyder.</string>
<!-- Title of the confirmation dialog shown when deleting app data from a linked device -->
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data_question">Skrap toepassing se data?</string>
<!-- Message of the confirmation dialog explaining that only this device\'s data is deleted, not the account -->
<string name="LinkedDeviceAccountSettingsFragment__this_will_delete_all_data_and_messages">This will delete all data and messages from the Signal app on this device. Your Signal account and data on your primary device or other linked devices will not be deleted. The app will close after this process is complete.</string>
<string name="LinkedDeviceAccountSettingsFragment__this_will_delete_all_data_and_messages">Dit sal alle data en boodskappe van die Signal-toepassing op hierdie toestel skrap. Jou Signal-rekening en data op jou primêre toestel of ander gekoppelde toestelle sal nie geskrap word nie. Die toepassing sal toemaak nadat hierdie proses voltooi is.</string>
<!-- LinkedDeviceAccountLearnMoreBottomSheet -->
<!-- Emphasized lead-in phrase shown in bold at the start of the learn more sheet body. Must appear verbatim within LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access. -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices">Gekoppelde toestelle</string>
<!-- Body text of the linked devices learn more sheet. The leading \"Linked Devices\" is shown in bold. -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access">Linked Devices let you access your Signal account and messages securely on any of your additional devices.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access">Gekoppelde toestelle laat jou toe om veilig op enige van jou bykomende toestelle toegang tot jou Signal-rekening en -boodskappe te verkry.</string>
<!-- Bullet point describing what devices can be linked -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__you_can_link_a_desktop">You can link a desktop, tablet or additional phone</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__you_can_link_a_desktop">Jy kan \'n rekenaar, tablet of bykomende telefoon koppel</string>
<!-- Bullet point describing that the primary device manages linked devices -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__your_primary_device_manages">Your primary device manages what\'s linked, you can link up to 5 devices.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__your_primary_device_manages">Jy bestuur van jou primêre toestel af wat gekoppel word; jy kan tot vyf toestelle koppel.</string>
<!-- Bullet point describing that some settings are only available on the primary device -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__some_account_settings">Some account settings are managed on your primary device only, including account settings and backups.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__some_account_settings">Sommige rekeninginstellings word slegs op jou primêre toestel bestuur, ingesluit jou rekeninginstellings en rugsteun.</string>
<!-- TransferOrRestoreFragment -->
<string name="TransferOrRestoreFragment__transfer_or_restore_account">Dra rekening oor of herstel dit.</string>
@@ -8854,15 +8854,15 @@
<!-- Subtext describing when a backup has never taken place. -->
<string name="RemoteBackupsSettingsFragment__never">Nooit</string>
<!-- Subtext on a linked device describing when the primary device last backed up. Placeholder is the formatted date and time. -->
<string name="RemoteBackupsSettingsFragment__your_phone_s">Your phone · %1$s</string>
<string name="RemoteBackupsSettingsFragment__your_phone_s">Jou telefoon · %1$s</string>
<!-- Message shown on a linked device with a free backup plan explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_your_subscription_on_your_primary_device">You can manage or upgrade your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_your_subscription_on_your_primary_device">Jy kan jou intekening op Signal Veilige Rugsteun op jou primêre toestel bestuur of opgradeer.</string>
<!-- Message shown on a linked device with a paid backup plan explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_cancel_your_subscription_on_your_primary_device">You can manage or cancel your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_cancel_your_subscription_on_your_primary_device">Jy kan jou intekening op Signal Veilige Rugsteun op jou primêre toestel bestuur of kanselleer.</string>
<!-- Message shown on a linked device with a canceled backup subscription explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_renew_your_subscription_on_your_primary_device">You can manage or renew your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_renew_your_subscription_on_your_primary_device">Jy kan jou intekening op Signal Veilige Rugsteun op jou primêre toestel bestuur of hernu.</string>
<!-- Message shown on a linked device when backups are off or the subscription was not found, explaining that backups are managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_backups_on_your_primary_device">You can manage or upgrade Signal Secure Backups on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_backups_on_your_primary_device">Jy kan Signal Veilige Rugsteun op jou primêre toestel bestuur of opgradeer.</string>
<!-- Button label to perform a backup immediately -->
<string name="RemoteBackupsSettingsFragment__back_up_now">Rugsteun nou</string>
<!-- Dialog title when confirming whether to turn off and deleting backups -->
+14 -14
View File
@@ -5109,29 +5109,29 @@
<!-- LinkedDeviceAccountSettingsFragment -->
<!-- Title of an informational card shown on the account settings screen of a linked device -->
<string name="LinkedDeviceAccountSettingsFragment__this_is_a_linked_device">This is a linked device</string>
<string name="LinkedDeviceAccountSettingsFragment__this_is_a_linked_device">Това е свързано устройство</string>
<!-- Body of an informational card explaining that account settings must be managed from the primary device -->
<string name="LinkedDeviceAccountSettingsFragment__to_manage_your_account_settings">To manage your account settings, open Signal on your primary device.</string>
<string name="LinkedDeviceAccountSettingsFragment__to_manage_your_account_settings">За да управлявате настройките на акаунта ви, отворете Signal на основното ви устройство.</string>
<!-- Title of a settings row that deletes all Signal data from this linked device -->
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data">Delete app data</string>
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data">Изтриване на данните на приложението</string>
<!-- Subtitle of the delete app data row explaining what it does -->
<string name="LinkedDeviceAccountSettingsFragment__this_will_remove_all_data">This will remove all data from the Signal app on this device.</string>
<string name="LinkedDeviceAccountSettingsFragment__this_will_remove_all_data">Това ще премахне всички данни от приложението на Signal на това устройство.</string>
<!-- Title of the confirmation dialog shown when deleting app data from a linked device -->
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data_question">Изтриване на данните на приложението?</string>
<!-- Message of the confirmation dialog explaining that only this device\'s data is deleted, not the account -->
<string name="LinkedDeviceAccountSettingsFragment__this_will_delete_all_data_and_messages">This will delete all data and messages from the Signal app on this device. Your Signal account and data on your primary device or other linked devices will not be deleted. The app will close after this process is complete.</string>
<string name="LinkedDeviceAccountSettingsFragment__this_will_delete_all_data_and_messages">Това ще изтрие всички данни и съобщения от приложението на Signal на това устройство. Вашият акаунт в Signal и данните на основното ви устройство или други свързани устройства няма да бъдат изтрити. Това приложение ще се затвори, след като процесът бъде завършен.</string>
<!-- LinkedDeviceAccountLearnMoreBottomSheet -->
<!-- Emphasized lead-in phrase shown in bold at the start of the learn more sheet body. Must appear verbatim within LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access. -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices">Свързани устройства</string>
<!-- Body text of the linked devices learn more sheet. The leading \"Linked Devices\" is shown in bold. -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access">Linked Devices let you access your Signal account and messages securely on any of your additional devices.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access">Свързаните устройства ви позволяват да осъществявате сигурен достъп до вашите акаунт и съобщения в Signal на допълнителните ви устройства.</string>
<!-- Bullet point describing what devices can be linked -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__you_can_link_a_desktop">You can link a desktop, tablet or additional phone</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__you_can_link_a_desktop">Можете да свържете десктоп, таблет или допълнителен телефон</string>
<!-- Bullet point describing that the primary device manages linked devices -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__your_primary_device_manages">Your primary device manages what\'s linked, you can link up to 5 devices.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__your_primary_device_manages">На основното ви устройство се управлява какво е свързано и можете да свържете до 5 устройства.</string>
<!-- Bullet point describing that some settings are only available on the primary device -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__some_account_settings">Some account settings are managed on your primary device only, including account settings and backups.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__some_account_settings">Някои настройки на акаунта се управляват само на основното ви устройство, включително настройките на акаунта и архивните копия.</string>
<!-- TransferOrRestoreFragment -->
<string name="TransferOrRestoreFragment__transfer_or_restore_account">Прехвърли или възстанови акаунт</string>
@@ -8854,15 +8854,15 @@
<!-- Subtext describing when a backup has never taken place. -->
<string name="RemoteBackupsSettingsFragment__never">Никога</string>
<!-- Subtext on a linked device describing when the primary device last backed up. Placeholder is the formatted date and time. -->
<string name="RemoteBackupsSettingsFragment__your_phone_s">Your phone · %1$s</string>
<string name="RemoteBackupsSettingsFragment__your_phone_s">Вашият телефон · %1$s</string>
<!-- Message shown on a linked device with a free backup plan explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_your_subscription_on_your_primary_device">You can manage or upgrade your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_your_subscription_on_your_primary_device">Можете да управлявате или да надградите абонамента ви за „Сигурни резервни копия на Signal“ на основното ви устройство.</string>
<!-- Message shown on a linked device with a paid backup plan explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_cancel_your_subscription_on_your_primary_device">You can manage or cancel your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_cancel_your_subscription_on_your_primary_device">Можете да управлявате или да отмените абонамента ви за „Сигурни резервни копия на Signal“ на основното ви устройство.</string>
<!-- Message shown on a linked device with a canceled backup subscription explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_renew_your_subscription_on_your_primary_device">You can manage or renew your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_renew_your_subscription_on_your_primary_device">Можете да управлявате или да подновите абонамента ви за „Сигурни резервни копия на Signal“ на основното ви устройство.</string>
<!-- Message shown on a linked device when backups are off or the subscription was not found, explaining that backups are managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_backups_on_your_primary_device">You can manage or upgrade Signal Secure Backups on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_backups_on_your_primary_device">Можете да управлявате или да надградите „Сигурни резервни копия на Signal“ на основното ви устройство.</string>
<!-- Button label to perform a backup immediately -->
<string name="RemoteBackupsSettingsFragment__back_up_now">Архивиране сега</string>
<!-- Dialog title when confirming whether to turn off and deleting backups -->
+3 -3
View File
@@ -930,9 +930,9 @@
<!-- Remote media restoration paused status title. -->
<string name="RestoreMediaReminder__Restoring_media_paused">La restauració dels arxius s s\'ha interromput</string>
<!-- Remote media restoration paused status description for when the restore is paused because unmetered connectivity, such as WiFi, is unavailable. -->
<string name="RestoreMediaReminder__Waiting_for_Wifi">Esperant el WiFi</string>
<string name="RestoreMediaReminder__Waiting_for_Wifi">Esperant el WiFi...</string>
<!-- Remote media restoration paused status description for when the restore is paused because internet is unavailable. -->
<string name="RestoreMediaReminder__Waiting_for_internet_connection">Esperant la connexió a Internet</string>
<string name="RestoreMediaReminder__Waiting_for_internet_connection">Esperant la connexió a Internet...</string>
<!-- Remote media restoration paused status description for when the device\'s battery is low -->
<string name="RestoreMediaReminder__low_battery">Bateria baixa. Carrega el teu dispositiu.</string>
<!-- Remote media restoration call to action when the device is out of space. The placeholder string is a file size, such as "1.23 GB". -->
@@ -1073,7 +1073,7 @@
<!-- Toast message shown after a device has been linked -->
<string name="LinkDeviceFragment__device_approved">Dispositiu aprovat</string>
<!-- Progress dialog message indicating that the list of linked devices is currently loading -->
<string name="LinkDeviceFragment__loading">Carregant</string>
<string name="LinkDeviceFragment__loading">Carregant...</string>
<!-- Progress dialog message indicating that you are syncing messages to your linked device -->
<string name="LinkDeviceFragment__syncing_messages">Sincronitzant missatges…</string>
<!-- Text message shown when the user has no linked devices -->
+8 -8
View File
@@ -699,7 +699,7 @@
<string name="SafetyTips_next_tip">Siguiente</string>
<!-- Summary tip 0 title: Don\'t respond to chats from Signal -->
<string name="SafetyTips_summary_tip0_title">No respondas a los mensajes de Signal</string>
<string name="SafetyTips_summary_tip0_title">No respondas a los chats de Signal</string>
<!-- Summary tip 0 message -->
<string name="SafetyTips_summary_tip0_message">Signal nunca te enviará un mensaje para pedirte tu código de registro, PIN o clave de recuperación. Nunca respondas a un mensaje que diga ser de Signal.</string>
<!-- Summary tip 1 title: Review names and photos -->
@@ -712,7 +712,7 @@
<string name="SafetyTips_summary_tip2_message">Ignora los mensajes poco precisos que tratan de llamar tu atención para que respondas. Desconfía si recibes consejos financieros y enlaces web sospechosos.</string>
<!-- Detail tip 0 title -->
<string name="SafetyTips_detail_tip0_title">No respondas a los mensajes de Signal</string>
<string name="SafetyTips_detail_tip0_title">No respondas a los chats de Signal</string>
<!-- Detail tip 0 message -->
<string name="SafetyTips_detail_tip0_message">Signal nunca te enviará un mensaje para pedirte tu código de registro, PIN o clave de recuperación. Nunca respondas a un mensaje que diga ser de Signal o del equipo de Asistencia de Signal. Los agentes maliciosos usan chats falsos para intentar tomar el control de tu cuenta.</string>
<!-- Detail tip 1 title -->
@@ -2283,7 +2283,7 @@
<!-- Alert dialog body to review the message request carefully -->
<string name="MessageRequestBottomView_review_requests_carefully">Revisa detenidamente las solicitudes. Cada usuario elige su nombre de perfil y los nombres no se verifican.</string>
<!-- Alert dialog body for accepting a message request. Contains bold substring placeholder -->
<string name="MessageRequestBottomView_accept_request_body">Acepta solamente las solicitudes de personas de tu confianza. %1$s te enviará un mensaje para pedirte tu código de registro, PIN o clave de recuperación.</string>
<string name="MessageRequestBottomView_accept_request_body">Acepta únicamente las solicitudes de personas de tu confianza. %1$s te enviará un mensaje para pedirte tu código de registro, PIN o clave de recuperación.</string>
<!-- Bold substring used in accept request body: "Signal will never" -->
<string name="MessageRequestBottomView_signal_will_never">Signal nunca</string>
<!-- Alert dialog title to accept a message request to join a group -->
@@ -3969,11 +3969,11 @@
<!-- Bottom sheet title when encryption is auto-verified -->
<string name="EncryptionVerifiedSheet__title_success">El cifrado para este chat se ha verificado automáticamente</string>
<!-- Bottom sheet body when encryption is auto-verified -->
<string name="EncryptionVerifiedSheet__body_success">Para las personas con las que hayas iniciado la comunicación mediante un número de teléfono, Signal puede confirmar automáticamente si la conexión es segura usando un proceso llamado transparencia de claves. Para mayor seguridad, verifica el cifrado de extremo a extremo manualmente comparando los números en la pantalla anterior o escaneando el código que se muestra en el dispositivo de la otra persona.</string>
<string name="EncryptionVerifiedSheet__body_success">Si inicias un chat en Signal usando el número de teléfono de tu contacto, la aplicación puede confirmar automáticamente que la conexión es segura gracias a un proceso llamado transparencia de claves. Para mayor seguridad, verifica el cifrado de extremo a extremo manualmente comparando los números en la pantalla anterior o escaneando el código que se muestra en el dispositivo de la otra persona.</string>
<!-- Bottom sheet title when encryption is no longer auto-verified -->
<string name="EncryptionVerifiedSheet__title_no_longer_unavailable">La verificación automática no está disponible para este chat</string>
<!-- Bottom sheet body when encryption is no longer auto-verified. Placeholder is the name of the person. -->
<string name="EncryptionVerifiedSheet__body_no_longer_unavailable">Signal no puede verificar automáticamente el cifrado de este chat. Es probable que %1$s haya cambiado su número de teléfono o sus ajustes de privacidad del número de teléfono. Verifica el cifrado de extremo a extremo manualmente comparando los números en la pantalla anterior o escaneando el código que se muestra en su dispositivo.</string>
<string name="EncryptionVerifiedSheet__body_no_longer_unavailable">Signal no puede verificar automáticamente el cifrado de este chat. Es probable que %1$s haya cambiado su número de teléfono o los ajustes de privacidad de su número de teléfono. Verifica el cifrado de extremo a extremo manualmente comparando los números en la pantalla anterior o escaneando el código que se muestra en su dispositivo.</string>
<!-- Bottom sheet title when encryption cannot be auto-verified -->
<string name="EncryptionVerifiedSheet__title_unavailable">La verificación automática no está disponible para este chat</string>
<!-- Bottom sheet body when encryption cannot be auto-verified -->
@@ -6557,7 +6557,7 @@
<!-- Subtitle shown when processing a donation transaction -->
<string name="MySupportPreference__processing_transaction">Procesando transacción…</string>
<!-- Displayed on "My Support" screen when user badge failed to be added to their account -->
<string name="MySupportPreference__couldnt_add_badge_s">No se ha podido añadir la insignia. %1$s</string>
<string name="MySupportPreference__couldnt_add_badge_s">No se ha podido añadir tu insignia. %1$s</string>
<string name="MySupportPreference__please_contact_support">Contacta con el equipo de Asistencia.</string>
<!-- Displayed as a subtitle on a row in the Manage Donations screen when payment for a donation is pending -->
<string name="MySupportPreference__payment_pending">Pago pendiente</string>
@@ -6648,7 +6648,7 @@
<string name="DonationsErrors__error_processing_payment_s">No se ha podido procesar tu donación. %1$s</string>
<string name="DonationsErrors__your_payment">No se ha podido procesar tu donación y no se ha aplicado ningún cargo. Inténtalo de nuevo.</string>
<string name="DonationsErrors__still_processing">Aún se está procesando</string>
<string name="DonationsErrors__couldnt_add_badge">No se ha podido añadir la insignia</string>
<string name="DonationsErrors__couldnt_add_badge">No se ha podido añadir tu insignia</string>
<!-- Displayed when backup credential could not be redeemed. Dialog or notification title -->
<string name="DonationsError__something_went_wrong">Se ha producido un error</string>
<!-- Displayed when backup credential could not be redeemed. Dialog or notification body -->
@@ -9965,7 +9965,7 @@
<!-- Title of the safety tips screen within the verification code requested sheet -->
<string name="SafetyTipsBottomSheet__title">Consejos de seguridad</string>
<!-- Title of the first safety tip: don\'t respond to chats claiming to be Signal -->
<string name="SafetyTipsBottomSheet__tip_1_title">No respondas a los mensajes de Signal</string>
<string name="SafetyTipsBottomSheet__tip_1_title">No respondas a los chats de Signal</string>
<!-- Body of the first safety tip -->
<string name="SafetyTipsBottomSheet__tip_1_body">Signal nunca te enviará un mensaje para pedirte tu código de registro, PIN o clave de recuperación. Nunca respondas a un mensaje que diga ser de Signal.</string>
<!-- Title of the second safety tip: keep your verification code safe -->
+14 -14
View File
@@ -4976,29 +4976,29 @@
<!-- LinkedDeviceAccountSettingsFragment -->
<!-- Title of an informational card shown on the account settings screen of a linked device -->
<string name="LinkedDeviceAccountSettingsFragment__this_is_a_linked_device">This is a linked device</string>
<string name="LinkedDeviceAccountSettingsFragment__this_is_a_linked_device">بۇ بىر ئۇلانغان ئۈسكۈنە</string>
<!-- Body of an informational card explaining that account settings must be managed from the primary device -->
<string name="LinkedDeviceAccountSettingsFragment__to_manage_your_account_settings">To manage your account settings, open Signal on your primary device.</string>
<string name="LinkedDeviceAccountSettingsFragment__to_manage_your_account_settings">ھېسابات تەڭشەكلىرىڭىزنى ئاكتىپ ھالەتتە ساقلاش ئۈچۈن ئاساسلىق ئۈسكۈنىڭىزدە Signal نى ئېچىڭ.</string>
<!-- Title of a settings row that deletes all Signal data from this linked device -->
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data">Delete app data</string>
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data">ئەپ سانلىق-مەلۇماتلىرىنى ئۆچۈرۈش</string>
<!-- Subtitle of the delete app data row explaining what it does -->
<string name="LinkedDeviceAccountSettingsFragment__this_will_remove_all_data">This will remove all data from the Signal app on this device.</string>
<string name="LinkedDeviceAccountSettingsFragment__this_will_remove_all_data">بۇنداق قىلىش، Signal ئېپىدىكى بارلىق سانلىق-مەلۇماتلارنى بۇ ئۈسكۈنىدىن چىقىرىپ تاشلايدۇ.</string>
<!-- Title of the confirmation dialog shown when deleting app data from a linked device -->
<string name="LinkedDeviceAccountSettingsFragment__delete_app_data_question">ئەپ سانلىق-مەلۇماتلىرىنى ئۆچۈرەمسىز؟</string>
<!-- Message of the confirmation dialog explaining that only this device\'s data is deleted, not the account -->
<string name="LinkedDeviceAccountSettingsFragment__this_will_delete_all_data_and_messages">This will delete all data and messages from the Signal app on this device. Your Signal account and data on your primary device or other linked devices will not be deleted. The app will close after this process is complete.</string>
<string name="LinkedDeviceAccountSettingsFragment__this_will_delete_all_data_and_messages">بۇنداق قىلغاندا، بۇ ئۈسكۈنىدە بار Signal ئەپتىكى بارلىق سانلىق-مەلۇماتلار ۋە ئۇچۇرلار ئۆچۈپ كېتىدۇ. Signal ھېساباتىڭىز ۋە ئاساسلىق ھەمدە قوشۇمچە ئۇلانغان ئۈسكۈنىلەردىكى سانلىق- مەلۇماتلىرىڭىز ئۆچۈرۈلمەيدۇ. بۇ جەريان تاماملانغاندىن كېيىن ئەپ تاقىلىدۇ.</string>
<!-- LinkedDeviceAccountLearnMoreBottomSheet -->
<!-- Emphasized lead-in phrase shown in bold at the start of the learn more sheet body. Must appear verbatim within LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access. -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices">باغلانغان ئۈسكۈنىلەر</string>
<!-- Body text of the linked devices learn more sheet. The leading \"Linked Devices\" is shown in bold. -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access">Linked Devices let you access your Signal account and messages securely on any of your additional devices.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__linked_devices_let_you_access">ئۇلانغان ئۈسكۈنىلەر ھەرقانداق قوشۇمچە ئۈسكۈنىلىرىڭىزدە بىخەتەر ھالدا Signal ھېساباتىڭىزغا كىرىشكە ۋە ئۇچۇرلارنى زىيارەت قىلىشىڭىزغا يول قويىدۇ.</string>
<!-- Bullet point describing what devices can be linked -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__you_can_link_a_desktop">You can link a desktop, tablet or additional phone</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__you_can_link_a_desktop">سىز ئۈستەل كومپيۇتېرى، تاختا كومپيۇتېر(مەسىلەن: iPad) ياكى قوشۇمچە تېلېفوننى باغلىيالايسىز</string>
<!-- Bullet point describing that the primary device manages linked devices -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__your_primary_device_manages">Your primary device manages what\'s linked, you can link up to 5 devices.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__your_primary_device_manages">ئاسالىق ئۈسكۈنىڭىزدە نېمىلەرگە باغلىيالايدىغانلىقىڭىزنى باشقۇرىسىز، ئەڭ كۆپ بولغاندا 5 دانە ئۈسكۈنىنى باغلىيالايسىز.</string>
<!-- Bullet point describing that some settings are only available on the primary device -->
<string name="LinkedDeviceAccountLearnMoreBottomSheet__some_account_settings">Some account settings are managed on your primary device only, including account settings and backups.</string>
<string name="LinkedDeviceAccountLearnMoreBottomSheet__some_account_settings">ھېسابات تەڭشەكلىرى ۋە زاپاسلارنى ئۆز ئىچىگە ئالغان بەزى ھېسابات تەڭشەكلىرى پەقەت سىزنىڭ ئاساسلىق ئۈسكۈنىڭىز تەرىپىدىنلا باشقۇرۇلىدۇ.</string>
<!-- TransferOrRestoreFragment -->
<string name="TransferOrRestoreFragment__transfer_or_restore_account">ھېساباتنى يۆتكە ياكى ئەسلىگە كەلتۈر</string>
@@ -8659,15 +8659,15 @@
<!-- Subtext describing when a backup has never taken place. -->
<string name="RemoteBackupsSettingsFragment__never">ھەرگىز</string>
<!-- Subtext on a linked device describing when the primary device last backed up. Placeholder is the formatted date and time. -->
<string name="RemoteBackupsSettingsFragment__your_phone_s">Your phone · %1$s</string>
<string name="RemoteBackupsSettingsFragment__your_phone_s">تېلىفون نومۇرىڭىز · %1$s</string>
<!-- Message shown on a linked device with a free backup plan explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_your_subscription_on_your_primary_device">You can manage or upgrade your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_your_subscription_on_your_primary_device">ئاساسلىق ئۈسكۈنىڭىزدە Signal بىخەتەر زاپاسلانمىللىرى مۇشتەرىلىكىڭىزنى باشقۇرالايسىز ياكى دەرىجىسىنى كۆتۈرەلەيسىز.</string>
<!-- Message shown on a linked device with a paid backup plan explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_cancel_your_subscription_on_your_primary_device">You can manage or cancel your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_cancel_your_subscription_on_your_primary_device">ئاساسلىق ئۈسكۈنىڭىزدە Signal بىخەتەر زاپاسلانمىلىرى مۇشتەرىلىكىڭىزنى باشقۇرالايسىز ياكى ئەمەلدىن قالدۇرالايسىز.</string>
<!-- Message shown on a linked device with a canceled backup subscription explaining that the subscription is managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_renew_your_subscription_on_your_primary_device">You can manage or renew your Signal Secure Backups subscription on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_renew_your_subscription_on_your_primary_device">ئاساسلىق ئۈسكۈنىڭىزدە Signal بىخەتەر زاپاسلانمىللىرى مۇشتەرىلىكىڭىزنى باشقۇرالايسىز ياكى يېڭىلىيالايسىز.</string>
<!-- Message shown on a linked device when backups are off or the subscription was not found, explaining that backups are managed on the primary device -->
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_backups_on_your_primary_device">You can manage or upgrade Signal Secure Backups on your primary device.</string>
<string name="RemoteBackupsSettingsFragment__you_can_manage_or_upgrade_backups_on_your_primary_device">ئاساسلىق ئۈسكۈنىڭىزدە Signal بىخەتەر زاپاسلانمىللىرىنى باشقۇرالايسىز ياكى دەرىجىسىنى كۆتۈرەلەيسىز.</string>
<!-- Button label to perform a backup immediately -->
<string name="RemoteBackupsSettingsFragment__back_up_now">ھازىر زاپاسلا</string>
<!-- Dialog title when confirming whether to turn off and deleting backups -->
@@ -11,6 +11,9 @@ import arrow.core.left
import arrow.core.right
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isGreaterThan
import assertk.assertions.isNotNull
import assertk.assertions.isNull
import assertk.assertions.isTrue
import io.mockk.coEvery
import io.mockk.coVerify
@@ -427,6 +430,46 @@ class IndividualSendJobV2Test {
}
}
@Test
fun `Given multi-device and an expiring message, when send succeeds, then sync transcript carries expirationStartTimestamp`() {
every { signalStore.account.isMultiDevice } returns true
every { outgoingMessage.expiresIn } returns 60_000L
dataMessage = DataMessage(timestamp = sentTime, expireTimer = 60)
every { outgoingMessage.toDataMessage() } returns dataMessage.right()
val syncSlot = slot<EnvelopeContent>()
val primaryContent = EnvelopeContent.encrypted(Content(dataMessage = dataMessage), ContentHint.RESENDABLE, Optional.empty())
coEvery {
messageService.sendMessage(any(), any(), any(), any(), any(), any(), any(), any())
} returns MessageService.SendSuccess(envelopeContent = primaryContent, sentSealedSender = false, devices = listOf(1)).right()
coEvery {
messageService.sendSyncMessage(timestamp = any(), envelopeContent = capture(syncSlot), urgent = any(), onEncrypted = any())
} returns MessageService.SendSuccess(envelopeContent = primaryContent, sentSealedSender = false, devices = listOf(1)).right()
createAndRunJob()
val sent = syncSlot.captured.content.get().syncMessage!!.sent!!
assertThat(sent.expirationStartTimestamp).isNotNull().isGreaterThan(0L)
}
@Test
fun `Given multi-device and a non-expiring message, when send succeeds, then sync transcript omits expirationStartTimestamp`() {
every { signalStore.account.isMultiDevice } returns true
val syncSlot = slot<EnvelopeContent>()
coEvery {
messageService.sendSyncMessage(timestamp = any(), envelopeContent = capture(syncSlot), urgent = any(), onEncrypted = any())
} returns MessageService.SendSuccess(envelopeContent = EnvelopeContent.encrypted(Content(dataMessage = dataMessage), ContentHint.RESENDABLE, Optional.empty()), sentSealedSender = false, devices = listOf(1)).right()
coEvery {
messageService.sendMessage(any(), any(), any(), any(), any(), any(), any(), any())
} returns MessageService.SendSuccess(envelopeContent = EnvelopeContent.encrypted(Content(dataMessage = dataMessage), ContentHint.RESENDABLE, Optional.empty()), sentSealedSender = false, devices = listOf(1)).right()
createAndRunJob()
val sent = syncSlot.captured.content.get().syncMessage!!.sent!!
assertThat(sent.expirationStartTimestamp).isNull()
}
@Test
fun `Given an edit of an already-edited message, when run, then target the edited revision's dateSent`() {
val editTargetMessageId = messageId + 1
+1 -1
View File
@@ -1,5 +1,5 @@
service_ips=new String[]{"13.248.212.111","76.223.92.165"}
storage_ips=new String[]{"142.250.72.19"}
storage_ips=new String[]{"142.251.211.211"}
cdn_ips=new String[]{"18.238.49.106","18.238.49.6","18.238.49.66","18.238.49.90"}
cdn2_ips=new String[]{"104.18.10.47","104.18.11.47"}
cdn3_ips=new String[]{"104.18.10.47","104.18.11.47"}
@@ -70,7 +70,7 @@
<!-- Dialog description that explains the steps needed to give Signal camera permissions -->
<string name="CameraXFragment_to_scan_qr_codes">Para escanear códigos QR:</string>
<!-- Error message shown when we try to take a photo, but fail -->
<string name="CameraXFragment_photo_capture_failed">No se ha podido hacer la foto. Inténtalo de nuevo.</string>
<string name="CameraXFragment_photo_capture_failed">No se ha podido capturar la foto. Inténtalo de nuevo.</string>
<!-- Error message shown when we try to take a photo, but fail when trying to process it (convert it into something the user can see). -->
<string name="CameraXFragment_photo_processing_failed">No se ha podido procesar la foto. Inténtalo de nuevo.</string>
<!-- Accessibility label for the switch camera button -->
@@ -45,11 +45,11 @@
<string name="RegistrationActivity_select_a_country">Kies \'n land</string>
<string name="RegistrationActivity_phone_number_description">Telefoonnommer</string>
<!-- Error shown beneath the phone number field when the entered number is not valid -->
<string name="RegistrationActivity_not_a_valid_phone_number">Not a valid phone number</string>
<string name="RegistrationActivity_not_a_valid_phone_number">Nie \'n geldige telefoonnommer nie</string>
<!-- Dialog title shown when the entered phone number is rejected as invalid -->
<string name="RegistrationActivity_invalid_phone_number">Ongeldige telefoonnommer</string>
<!-- Dialog body shown when the entered phone number is rejected as invalid -->
<string name="RegistrationActivity_the_number_you_entered_is_not_valid">The number you entered doesn\'t appear to be valid. Please check the country code and phone number and try again.</string>
<string name="RegistrationActivity_the_number_you_entered_is_not_valid">Die nommer wat jy ingevoer het, lyk nie of dit geldig is nie. Gaan asseblief die landkode en telefoonnommer na en probeer weer.</string>
<string name="RegistrationActivity_next">Volgende</string>
<!-- Dialog title to confirm phone number -->
<string name="RegistrationActivity_is_the_phone_number">Is die telefoonnommer hier onder korrek?</string>
@@ -204,7 +204,7 @@
<!-- Label for the recovery key text field -->
<string name="LocalBackupRestoreScreen__recovery_key">Herwinsleutel</string>
<!-- Label for the backup passphrase text field -->
<string name="LocalBackupRestoreScreen__passphrase">Passphrase</string>
<string name="LocalBackupRestoreScreen__passphrase">Wagwoordfrase</string>
<!-- Error text when passphrase is too long -->
<string name="LocalBackupRestoreScreen__too_long">Te lank (%1$d/%2$d)</string>
<!-- Link for users who don\'t have their passphrase -->
@@ -251,11 +251,11 @@
<!-- Button to retry restore after failure -->
<string name="LocalBackupRestoreScreen__try_again">Probeer weer</string>
<!-- Title shown when the entered passphrase cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_passphrase">Incorrect passphrase</string>
<string name="LocalBackupRestoreScreen__incorrect_passphrase">Verkeerde wagwoordfrase</string>
<!-- Title shown when the entered recovery key cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_recovery_key">Verkeerde herwinsleutel</string>
<!-- Description shown when the entered passphrase or recovery key cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_credential_description">The credential you entered doesn\'t match this backup. Please check it and try again.</string>
<string name="LocalBackupRestoreScreen__incorrect_credential_description">Die verifiëringsbesonderhede wat jy ingevoer het, stem nie met hierdie rugsteun ooreen nie. Gaan dit asseblief na en probeer weer.</string>
<!-- Button to link an existing Signal account to this device -->
<string name="WelcomeScreen__link_your_account">Koppel jou rekening</string>
<!-- Prompt shown to users who don\'t have a Signal account yet -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Besig om te voltooi…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Herstel tans</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Boodskappe en kletsinligting word deur end-tot-end-enkriptering beskerm, wat die sinchroniseringsproses insluit.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -452,7 +452,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">جارٍ إنهاء العملية…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">جارية الاستعادة</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">معلومات الرسائل والدردشات محمية من خلال التشفير من طرف لِطرف، بما في ذلك عملية المزامنة.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Tamamlanır…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Bərpa olunur</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Mesajlar və çat məlumatı sinxronlaşdırma prosesi daxil, tam şifrələmə ilə qorunur.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Сканчэнне…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Аднаўленне</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Паведамленні і змесціва чатаў абаронены скразным шыфраваннем, як і сам працэс сінхранізацыі.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -45,11 +45,11 @@
<string name="RegistrationActivity_select_a_country">Изберете държава</string>
<string name="RegistrationActivity_phone_number_description">Телефонен номер</string>
<!-- Error shown beneath the phone number field when the entered number is not valid -->
<string name="RegistrationActivity_not_a_valid_phone_number">Not a valid phone number</string>
<string name="RegistrationActivity_not_a_valid_phone_number">Не е валиден телефонен номер</string>
<!-- Dialog title shown when the entered phone number is rejected as invalid -->
<string name="RegistrationActivity_invalid_phone_number">Невалиден телефонен номер</string>
<!-- Dialog body shown when the entered phone number is rejected as invalid -->
<string name="RegistrationActivity_the_number_you_entered_is_not_valid">The number you entered doesn\'t appear to be valid. Please check the country code and phone number and try again.</string>
<string name="RegistrationActivity_the_number_you_entered_is_not_valid">Номерът, който сте въвели, изглежда не е валиден. Моля, проверете кода на държавата и телефонния номер и опитайте отново.</string>
<string name="RegistrationActivity_next">Напред</string>
<!-- Dialog title to confirm phone number -->
<string name="RegistrationActivity_is_the_phone_number">Телефонният номер по-долу правилен ли е?</string>
@@ -204,7 +204,7 @@
<!-- Label for the recovery key text field -->
<string name="LocalBackupRestoreScreen__recovery_key">Ключ за възстановяване</string>
<!-- Label for the backup passphrase text field -->
<string name="LocalBackupRestoreScreen__passphrase">Passphrase</string>
<string name="LocalBackupRestoreScreen__passphrase">Тайна фраза</string>
<!-- Error text when passphrase is too long -->
<string name="LocalBackupRestoreScreen__too_long">Твърде дълго (%1$d/%2$d)</string>
<!-- Link for users who don\'t have their passphrase -->
@@ -251,11 +251,11 @@
<!-- Button to retry restore after failure -->
<string name="LocalBackupRestoreScreen__try_again">Опитайте отново</string>
<!-- Title shown when the entered passphrase cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_passphrase">Incorrect passphrase</string>
<string name="LocalBackupRestoreScreen__incorrect_passphrase">Неправилна тайна фраза</string>
<!-- Title shown when the entered recovery key cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_recovery_key">Неправилен ключ за възстановяване</string>
<!-- Description shown when the entered passphrase or recovery key cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_credential_description">The credential you entered doesn\'t match this backup. Please check it and try again.</string>
<string name="LocalBackupRestoreScreen__incorrect_credential_description">Данните, които сте въвели, не отговарят на това резервно копие. Моля, проверете ги и опитайте отново.</string>
<!-- Button to link an existing Signal account to this device -->
<string name="WelcomeScreen__link_your_account">Свържете акаунта си</string>
<!-- Prompt shown to users who don\'t have a Signal account yet -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Завършване…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Възстановяване</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Съобщенията и информацията за чатовете са защитени чрез криптиране от край до край, включително и процеса за синхронизиране.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">শেষ হচ্ছে…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">পুনরুদ্ধার করা হচ্ছে</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">সিঙ্কিং প্রক্রিয়া সহ মেসেজ এবং চ্যাটের তথ্য এন্ড-টু-এন্ড এনক্রিপশন দ্বারা সুরক্ষিত।</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Završava se…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Vraćanje</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Poruke i informacije o chatu zaštićene su sveobuhvatnim šifriranjem, uključujući postupak sinhronizacije.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Completant…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">S\'està restaurant</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Els missatges i la informació del xat estan protegits mitjançant una codificació d\'extrem a extrem, inclòs el procés de sincronització.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Dokončování…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Obnovování</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Zprávy a informace o chatech jsou chráněny koncovým šifrováním, včetně procesu synchronizace.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Afslutter…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Gendanner</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Beskeder og chatoplysninger er beskyttede af end-to-end-kryptering, herunder også under synkroniseringen.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Wird abgeschlossen …</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Wiederherstellen </string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Nachrichten und Chat-Infos sowie der Synchronisierungsvorgang sind durch eine Ende-zu-Ende-Verschlüsselung geschützt.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Ολοκλήρωση…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Επαναφορά</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Τα μηνύματα και οι πληροφορίες συνομιλίας προστατεύονται με κρυπτογράφηση από άκρο σε άκρο, συμπεριλαμβανομένης της διαδικασίας συγχρονισμού.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -322,7 +322,7 @@
<!-- Title for screen when your account is locked -->
<string name="AccountLockedScreen__account_locked">Cuenta bloqueada</string>
<!-- Description for screen when account is locked -->
<string name="AccountLockedScreen__your_account">Se ha bloqueado tu cuenta para proteger tu privacidad y seguridad. Después de %1$d días de inactividad de la cuenta, podrás volver a registrarte con este número de teléfono sin necesidad de introducir tu PIN. Se eliminará todo tu contenido.</string>
<string name="AccountLockedScreen__your_account">Se ha bloqueado tu cuenta para proteger tu privacidad y seguridad. Después de %1$d días con tu cuenta inactiva, podrás volver a registrarte con este número de teléfono sin necesidad de introducir tu PIN. Se eliminará todo tu contenido.</string>
<!-- Step 1 to quick restore -->
<string name="QuickRestoreQRScreen__step_1">Abre Signal en tu dispositivo anterior</string>
@@ -360,9 +360,9 @@
<!-- Labels the button to learn more about Signal PINs. -->
<string name="PinCreationScreen__learn_more">Más información</string>
<!-- Labels the button to switch to the numeric PIN keyboard type. -->
<string name="PinCreationScreen__switch_to_numeric">Cambiar a numérico</string>
<string name="PinCreationScreen__switch_to_numeric">Cambiar a clave numérica</string>
<!-- Labels the button to switch to the alphanumeric PIN keyboard type. -->
<string name="PinCreationScreen__switch_to_alphanumeric">Cambiar a alfanumérico</string>
<string name="PinCreationScreen__switch_to_alphanumeric">Cambiar a clave alfanumérica</string>
<!-- Labels the button to submit a new Signal PIN. -->
<string name="PinCreationScreen__next">Siguiente</string>
<!-- Hint shown below the create PIN field when numeric keyboard is active. -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Completando…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Restaurando</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Los mensajes y chats, al igual que el proceso de sincronización, están protegidos con cifrado de extremo a extremo.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -498,7 +498,7 @@
<string name="LinkAccountScreen__close_qr_code">Cerrar código QR</string>
<!-- Device transfer: Instructions screen -->
<string name="DeviceTransferInstructions__transfer_your_account">Transferir tu cuenta</string>
<string name="DeviceTransferInstructions__transfer_your_account">Transfiere tu cuenta</string>
<string name="DeviceTransferInstructions__to_transfer_open_signal_on_your_old_android_device">Para transferir tu cuenta, abre Signal en tu dispositivo Android anterior y selecciona Transferir cuenta.</string>
<string name="DeviceTransferInstructions__continue">Continuar</string>
@@ -506,7 +506,7 @@
<string name="DeviceTransferSetup__preparing_to_connect">Preparando la conexión con tu dispositivo Android anterior…</string>
<string name="DeviceTransferSetup__take_a_moment_should_be_ready_soon">Esto puede llevar unos minutos. Debería estar listo pronto.</string>
<string name="DeviceTransferSetup__waiting_for_old_device">Esperando a la conexión de tu dispositivo anterior…</string>
<string name="DeviceTransferSetup__verify_numbers_match">Verifica que coincidan los números de ambos dispositivos</string>
<string name="DeviceTransferSetup__verify_numbers_match">Comprueba que coinciden los números de ambos dispositivos</string>
<string name="DeviceTransferSetup__numbers_match">Sí, los números coinciden</string>
<string name="DeviceTransferSetup__numbers_do_not_match">Los números no coinciden</string>
<string name="DeviceTransferSetup__waiting_for_other_to_verify">Esperando a la verificación de tu dispositivo anterior…</string>
@@ -521,7 +521,7 @@
<string name="DeviceTransferSetup__unexpected_error_connecting">No se ha podido conectar con tu dispositivo anterior.</string>
<string name="DeviceTransferSetup__retry">Reintentar</string>
<string name="DeviceTransferSetup__unable_to_discover_old_device">No se puede encontrar tu dispositivo anterior</string>
<string name="DeviceTransferSetup__troubleshooting_tips">• Asegúrate de haber concedido los permisos de ubicación.\n• Comprueba que el Wi-Fi está activado y que no haya grupos de Wi-Fi Direct guardados.\n• Desactiva y vuelve a activar la conexión Wi-Fi en ambos dispositivos.\n• Asegúrate de que ambos dispositivos estén en modo de transferencia.</string>
<string name="DeviceTransferSetup__troubleshooting_tips">• Asegúrate de haber concedido los permisos de ubicación.\n• Comprueba que el Wi-Fi está activado y que no hay grupos de Wi-Fi Direct guardados.\n• Desactiva y vuelve a activar la conexión Wi-Fi en ambos dispositivos.\n• Asegúrate de que ambos dispositivos estén en modo de transferencia.</string>
<string name="DeviceTransferSetup__try_again">Reintentar</string>
<string name="DeviceTransferSetup__the_numbers_do_not_match">Los números no coinciden</string>
<string name="DeviceTransferSetup__if_numbers_dont_match_wrong_device">Si los números de tus dispositivos no coinciden, es posible que no te hayas conectado al dispositivo correcto.</string>
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Lõpuleviimine …</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Taastamine </string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Sõnumid ja vestluste info on kaitstud kõigis seadmetes otspunktkrüpteeringuga, sh sünkroniseerimisprotsess.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Amaitzen…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Leheneratzen</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Mezuak eta txatari buruzko informazioa muturretik muturrerako enkriptatzearen bidez daude babestuta (sinkronizazio-prozesua barne).</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">در حال اتمام…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">در حال بازیابی</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">پیام‌ها و اطلاعات گفتگو با رمزگذاری سرتاسری، از‌جمله فرایند همگام‌سازی، محافظت می‌شوند.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Viimeistellään…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Palautetaan</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Viestit ja keskustelujen tiedot on suojattu päästä päähän -salauksella, myös synkronoinnin aikana.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Finalisation…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Restauration en cours</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Avec son protocole de chiffrement de bout en bout, Signal protège systématiquement vos messages et vos conversations. Même pendant la synchronisation.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -450,7 +450,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Cur i gcrích ar bun…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Aischur ar bun</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Déantar teachtaireachtaí agus faisnéis comhráite a chosaint le criptiú ó cheann ceann, an próiseas sioncronaithe san áireamh.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Rematando…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Restaurando</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">As mensaxes e a información das conversas están protexidas por unha encriptación de extremo a extremo, incluído o proceso de sincronización.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">સમાપ્ત થઈ રહ્યું છે…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">રિસ્ટોર થાય છે</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">મેસેજ અને ચેટની માહિતી સિંક પ્રક્રિયા સહિત એન્ડ-ટૂ-એન્ડ એન્ક્રિપ્શન દ્વારા સુરક્ષિત છે.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">पूरा हो रहा है…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">रीस्टोर किया जा रहा है</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">मैसेज और चैट का डेटा एंड-टू-एंड एनक्रिप्शन से सुरक्षित है। इसमें सिंक करने की प्रक्रिया भी शामिल है।</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Pričekajte…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Vraćanje</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Poruke, podaci o razgovorima i cijeli proces sinkronizacije zaštićeni su sveobuhvatnim šifriranjem.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Befejezés…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Visszaállítás</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Az üzeneteket és a csevegési információkat végpontok közötti titkosítás védi, beleértve a szinkronizálási folyamatot is.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Menyelesaikan …</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Memulihkan</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Info chat dan pesan dilindungi enkripsi E2E, termasuk proses sinkronisasi.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Ci siamo quasi…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Ripristino in corso</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">I messaggi e le informazioni delle chat sono protetti da una crittografia end-to-end (incluso il processo di sincronizzazione).</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">בשלבי סיום…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">משחזרים</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">הודעות ופרטי צ׳אט מוגנים באמצעות הצפנה מקצה לקצה, כולל תהליך הסנכרון.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">終了しています…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">復元中</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">同期のプロセスも含め、メッセージ情報とチャット情報はエンドツーエンドの暗号化で保護されています。</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">სრულდება…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">მიმდინარეობს აღდგენა</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">შეტყობინებები და ჩატის ინფორმაცია, სინქრონიზაციის პროცესის ჩათვლით, ბოლომდეა დაშიფრული.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Аяқталып жатыр…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Қалпына келтірілуде</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Хабарлар мен чат туралы ақпарат тура шифрлау әдісімен, соның ішінде синхрондау процесімен қорғалған.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">កំពុងបញ្ចប់…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">កំពុងស្ដារ</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">សារ និងព័ត៌មានជជែកត្រូវបានការពារដោយការអ៊ីនគ្រីបទាំងសងខាង រាប់បញ្ចូលទាំងដំណើរការធ្វើសមកាលកម្មផងដែរ។</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">ರಿಸ್ಟೋರ್ ಮಾಡಲಾಗುತ್ತಿದೆ</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">ಸಿಂಕ್ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯೂ ಸೇರಿದಂತೆ, ಮೆಸೇಜ್‌ಗಳು ಮತ್ತು ಚಾಟ್ ಮಾಹಿತಿಯನ್ನು ಎಂಡ್-ಟು-ಎಂಡ್ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಮೂಲಕ ರಕ್ಷಿಸಲಾಗಿದೆ.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">완료하는 중…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">복원 중</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">동기화 프로세스를 비롯하여 메시지와 대화 정보는 종단간 암호화로 보호됩니다.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Бүтүп жатат…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Калыбына келүүдө</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Билдирүүлөр жана маектеги нерселер, ошондой эле шайкештирүү процесси баштан аяк шифрленип корголот.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Užbaigiama…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Atkuriama</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Žinutės ir pokalbių informacija yra visiškai užšifruoti, įskaitant ir sinchronizavimo procesą.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -446,7 +446,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Notiek pabeigšana…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Notiek atjaunošana</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Ziņas un sarunu informāciju aizsargā pilnīga šifrēšana, tostarp sinhronizēšanas process.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Се завршува…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Враќање</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Пораките и информациите за разговорите се заштитени со целосно шифрирање, вклучувајќи го и процесот на синхронизација.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">പൂർത്തിയാക്കുന്നു…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">പുനഃസ്ഥാപിക്കുന്നു</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">സമന്വയ പ്രക്രിയ ഉൾപ്പെടെ, സന്ദേശങ്ങളും ചാറ്റ് വിവരങ്ങളും എൻഡ്-ടു-എൻഡ് എൻക്രിപ്ഷൻ വഴി പരിരക്ഷിച്ചിരിക്കുന്നു.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">पूर्ण होत आहे…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">पुर्नस्थापित करत आहे</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">संदेशाची आणि चॅटची माहिती एन्ड-टू-एन्ड एन्क्रिप्शनने संरक्षित आहे, अगदी सिंकिंगची प्रक्रियासुद्धा.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Menyelesaikan…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Memulihkan</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Mesej dan maklumat sembang dilindungi oleh penyulitan hujung ke hujung termasuk proses penyegerakan.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">အပြီးသတ်နေသည်…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">ပြန်လည်ရယူနေသည်</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">ချိန်ကိုက်မှု လုပ်ငန်းစဉ်အပါအဝင် မက်ဆေ့ချ်များနှင့် ချက်(တ်)အချက်အလက်ကို ဟိုဘက်သည်ဘက် ကုဒ်ပြောင်းဝှက်ခြင်းဖြင့် ကာကွယ်ထားသည်။</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Ferdigstiller …</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Gjenoppretter </string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Meldinger og samtaleinnhold beskyttes av ende-til-ende-kryptering. Dette inkluderer også synkroniseringen.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Voltooien…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Herstellen</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Berichten en chatgegevens worden beschermd door end-to-end-versleuteling, ook tijdens het synchronisatieproces.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">ਰੀਸਟੋਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">ਸਿੰਕ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਸਮੇਤ, ਸੁਨੇਹੇ ਅਤੇ ਚੈਟ ਦੀ ਜਾਣਕਾਰੀ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕ੍ਰਿਪਸ਼ਨ ਨਾਲ ਸੁਰੱਖਿਅਤ ਹੁੰਦੀ ਹੈ।</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Już prawie koniec…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Przywracanie</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Wiadomości i informacje o czatach są szyfrowane metodą end-to-end. Dotyczy to także procesu synchronizacji.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Finalizando…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Restaurando</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">As mensagens e as informações das conversas são protegidas por criptografia de ponta a ponta, inclusive durante o processo de sincronização. </string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">A terminar…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">A restaurar</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">As informações das mensagens e chats são protegidas por encriptação de ponta a ponta, incluindo o processo de sincronização.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -446,7 +446,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Se finalizează…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Se restaurează</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Mesajele și informațiile legate de conversații sunt protejate prin criptare end-to-end, inclusiv prin procesul de sincronizare.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Завершаем…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Восстановление</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Сообщения и информация о чате защищены сквозным шифрованием, включая процесс синхронизации.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Dokončuje sa…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Obnovuje sa</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Správy a informácie o četoch sú chránené end-to-end šifrovaním vrátane procesu synchronizácie.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Zaključevanje …</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Obnavljanje </string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Sporočila in informacije o klepetu so zaščitene s celovitim šifriranjem, vključno s postopkom sinhronizacije.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Duke përfunduar…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Po kthehet</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Mesazhet dhe informacionet e bisedës mbrohen nga kodimi skaji në skaj, duke përfshirë procesin e sinkronizimit.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Завршава се…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Враћање</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Поруке и информације о ћаскањима заштићене су потпуним шифровањем, укључујући процес синхронизације.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Slutför …</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Återställer </string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Meddelanden och chattinformation skyddas av totalstreckskryptering, inklusive synkroniseringsprocessen.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Inamaliza…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Inarejesha</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Maelezo ya ujumbe na gumzo yanalindwa na kusimbwa fiche, ikiwemo mchakato wa kusawazisha.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">முடிக்கிறது…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">மீட்டெடுக்கப்படுகிறது</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">ஒத்திசைவுச் செயல்முறை உட்பட, செய்திகள் மற்றும் சாட் தகவல் ஆகியவை எண்டு-டு-எண்டு குறியாக்கத்தால் பாதுகாக்கப்படுகின்றன.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">పూర్తి చేస్తోంది…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">రీస్టోర్ అవుతున్నాయి</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">సమకాలీకరణ ప్రక్రియతో సహా ఎండ్-టు-ఎండ్ గుప్తీకరణ ద్వారా సందేశాలు మరియు చాట్ సమాచారం సంరక్షించబడతాయి.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">ใกล้เสร็จสิ้น…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">กำลังกู้คืน</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">ปกป้องข้อความและข้อมูลการแชทด้วยการเข้ารหัสตั้งแต่ต้นทางถึงปลายทาง รวมถึงในขั้นตอนการซิงค์</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Tinatapos…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Nagre-restore</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Protektado ng end-to-end encryption ang messages at chat info, kasama ang proseso ng pag-sync.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Tamamlanıyor…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Geri yükleniyor</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Mesajlar ve sohbet bilgileri, senkronizasyon süreci de dahil olmak üzere uçtan uca şifreleme ile korunmaktadır.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -45,11 +45,11 @@
<string name="RegistrationActivity_select_a_country">بىر دۆلەتنى تاللاڭ</string>
<string name="RegistrationActivity_phone_number_description">تېلېفون نومۇرىڭىز</string>
<!-- Error shown beneath the phone number field when the entered number is not valid -->
<string name="RegistrationActivity_not_a_valid_phone_number">Not a valid phone number</string>
<string name="RegistrationActivity_not_a_valid_phone_number">ئىناۋەتسىز تېلېفون نومۇرى</string>
<!-- Dialog title shown when the entered phone number is rejected as invalid -->
<string name="RegistrationActivity_invalid_phone_number">ئىناۋەتسىز تېلېفون نومۇر</string>
<!-- Dialog body shown when the entered phone number is rejected as invalid -->
<string name="RegistrationActivity_the_number_you_entered_is_not_valid">The number you entered doesn\'t appear to be valid. Please check the country code and phone number and try again.</string>
<string name="RegistrationActivity_the_number_you_entered_is_not_valid">سىز كىرگۈزگەن ئىشلەتكۈچى تېپىلمىدى. دۆلەت كودى بىلەن تېلېفون نومۇرىنىڭ توغرىلىقىنى تەكشۈرۈپ، يەنە بىر قېتىم سىناپ بېقىڭ.</string>
<string name="RegistrationActivity_next">كېيىنكى</string>
<!-- Dialog title to confirm phone number -->
<string name="RegistrationActivity_is_the_phone_number">تۆۋەندىكى تېلېفون نومۇرى توغرىمۇ؟</string>
@@ -204,7 +204,7 @@
<!-- Label for the recovery key text field -->
<string name="LocalBackupRestoreScreen__recovery_key">ئەسلىگە كەلتۈرۈش ئاچقۇچى</string>
<!-- Label for the backup passphrase text field -->
<string name="LocalBackupRestoreScreen__passphrase">Passphrase</string>
<string name="LocalBackupRestoreScreen__passphrase">پارول</string>
<!-- Error text when passphrase is too long -->
<string name="LocalBackupRestoreScreen__too_long">بەك ئۇزۇن (%2$d/%1$d)</string>
<!-- Link for users who don\'t have their passphrase -->
@@ -251,11 +251,11 @@
<!-- Button to retry restore after failure -->
<string name="LocalBackupRestoreScreen__try_again">قايتا سىناڭ</string>
<!-- Title shown when the entered passphrase cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_passphrase">Incorrect passphrase</string>
<string name="LocalBackupRestoreScreen__incorrect_passphrase">خاتا پارول</string>
<!-- Title shown when the entered recovery key cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_recovery_key">ناتوغرا ئەسلىگە كەلتۈرۈش ئاچقۇچى</string>
<!-- Description shown when the entered passphrase or recovery key cannot decrypt the selected backup -->
<string name="LocalBackupRestoreScreen__incorrect_credential_description">The credential you entered doesn\'t match this backup. Please check it and try again.</string>
<string name="LocalBackupRestoreScreen__incorrect_credential_description">سىز كىرگۈزگەن سالاھىيەت ئۇچۇرى بۇ زاپاس بىلەن ماس كەلمىدى. تەكشۈرۈپ قايتا سىناڭ.</string>
<!-- Button to link an existing Signal account to this device -->
<string name="WelcomeScreen__link_your_account">ھېساباتىڭىزنى ئۇلاڭ</string>
<!-- Prompt shown to users who don\'t have a Signal account yet -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">تاماملاۋاتىدۇ…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">ئەسلىگە كەلتۈرىۋاتىدۇ</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">ئۇچۇرلار ۋە پاراڭ مەزمۇنلىرى، ماس قەدەملىك جەرياننى ئۆز ئىچىگە ئالغان ئاخىرىغىچە شىفىرلىق مەخپىيلەشتۈرۈش ئارقىلىق قوغدىلىدۇ.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -448,7 +448,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Завершення…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Відновлення</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Повідомлення й інформацію про чати, а також сам процес синхронізації захищено наскрізним шифруванням.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -444,7 +444,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">مکمل ہو رہا ہے…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">بحال کیا جا رہا ہے</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">میسجز اور چیٹس کی معلومات آخر سے آخر تک انکرپشن کے ذریعے محفوظ شدہ ہیں، بشمول سنکنگ کے عمل سمیت۔</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">Đang hoàn tất…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">Đang khôi phục</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">Thông tin tin nhắn và cuộc trò chuyện được bảo vệ bằng hình thức mã hóa đầu cuối, bao gồm cả quá trình đồng bộ.</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">完成緊……</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">還原緊…</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">訊息同聊天資料都受到端對端加密保護,包括同步過程。</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">正在完成…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">正在恢复</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">消息和聊天信息受端对端加密保护,包括同步过程。</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">完成中…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">正在還原</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">訊息和聊天資訊均受端對端加密的保護,包括同步過程。</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -442,7 +442,7 @@
<!-- Progress label shown under the sync progress bar while messages are being imported and the rest of the account is restored, after the download finishes -->
<string name="MessageSyncScreen__finishing">完成中…</string>
<!-- Progress label shown while messages are being imported/restored from the downloaded backup -->
<string name="MessageSyncScreen__restoring">Restoring</string>
<string name="MessageSyncScreen__restoring">正在還原</string>
<!-- Informational notice in the sync screen footer, indicating the sync is end-to-end encrypted. Precedes a separate "Learn more" link. -->
<string name="MessageSyncScreen__messages_and_chat_info_are_protected_by_e2ee">訊息和聊天資訊均受端對端加密的保護,包括同步過程。</string>
<!-- Inline link in the sync screen footer that opens documentation about end-to-end encryption during sync -->
@@ -22,6 +22,7 @@ import org.whispersystems.signalservice.api.websocket.SignalWebSocket
import org.whispersystems.signalservice.internal.push.ConfirmUsernameRequest
import org.whispersystems.signalservice.internal.push.ConfirmUsernameResponse
import org.whispersystems.signalservice.internal.push.GcmRegistrationId
import org.whispersystems.signalservice.internal.push.PhoneNumberDiscoverabilityRequest
import org.whispersystems.signalservice.internal.push.PushServiceSocket
import org.whispersystems.signalservice.internal.push.ReserveUsernameRequest
import org.whispersystems.signalservice.internal.push.ReserveUsernameResponse
@@ -90,6 +91,18 @@ class AccountApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSock
return authWebSocket.fromWebSocketRequest(request, Unit::class)
}
/**
* Set whether this account is discoverable by phone number. Unlike [setAccountAttributes], this
* dedicated endpoint can be called from a linked device.
*
* PUT /v2/accounts/phone_number_discoverability
* - 204: Success
*/
fun setPhoneNumberDiscoverability(discoverable: Boolean): RequestResult<Unit, RestStatusCodeError> {
val request = WebSocketRequestMessage.put("/v2/accounts/phone_number_discoverability", PhoneNumberDiscoverabilityRequest(discoverable))
return authWebSocket.fromWebSocketRequest(request, Unit::class)
}
/**
* PUT /v1/accounts/registration_lock
* - 204: Success
@@ -0,0 +1,11 @@
/*
* Copyright 2026 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.whispersystems.signalservice.internal.push
import com.fasterxml.jackson.annotation.JsonProperty
data class PhoneNumberDiscoverabilityRequest(
@JsonProperty val discoverableByPhoneNumber: Boolean
)