")
+}
+
+fun Resources.getText(@StringRes id: Int, vararg args: Any): CharSequence {
+ val escapedArgs = args.map {
+ if (it is Spanned) it.toHtmlWithoutParagraphs() else it
+ }.toTypedArray()
+ val resource = SpannedString(getText(id))
+ val htmlResource = resource.toHtmlWithoutParagraphs()
+ val formattedHtml = String.format(htmlResource, *escapedArgs)
+ return HtmlCompat.fromHtml(formattedHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
+}
+
+@Composable
+fun annotatedStringResource(@StringRes id: Int, vararg formatArgs: Any): AnnotatedString {
+ val resources = resources()
+ val density = LocalDensity.current
+ return remember(id, formatArgs) {
+ val text = resources.getText(id, *formatArgs)
+ spannableStringToAnnotatedString(text, density)
+ }
+}
+
+@Composable
+fun annotatedStringResource(@StringRes id: Int): AnnotatedString {
+ val resources = resources()
+ val density = LocalDensity.current
+ return remember(id) {
+ val text = resources.getText(id)
+ spannableStringToAnnotatedString(text, density)
+ }
+}
+
+private fun spannableStringToAnnotatedString(
+ text: CharSequence,
+ density: Density
+): AnnotatedString {
+ return if (text is Spanned) {
+ with(density) {
+ buildAnnotatedString {
+ append((text.toString()))
+ text.getSpans(0, text.length, Any::class.java).forEach {
+ val start = text.getSpanStart(it)
+ val end = text.getSpanEnd(it)
+ when (it) {
+ is StyleSpan -> when (it.style) {
+ Typeface.NORMAL -> addStyle(
+ SpanStyle(
+ fontWeight = FontWeight.Normal,
+ fontStyle = FontStyle.Normal
+ ),
+ start,
+ end
+ )
+ Typeface.BOLD -> addStyle(
+ SpanStyle(
+ fontWeight = FontWeight.Bold,
+ fontStyle = FontStyle.Normal
+ ),
+ start,
+ end
+ )
+ Typeface.ITALIC -> addStyle(
+ SpanStyle(
+ fontWeight = FontWeight.Normal,
+ fontStyle = FontStyle.Italic
+ ),
+ start,
+ end
+ )
+ Typeface.BOLD_ITALIC -> addStyle(
+ SpanStyle(
+ fontWeight = FontWeight.Bold,
+ fontStyle = FontStyle.Italic
+ ),
+ start,
+ end
+ )
+ }
+ is TypefaceSpan -> addStyle(
+ SpanStyle(
+ fontFamily = when (it.family) {
+ FontFamily.SansSerif.name -> FontFamily.SansSerif
+ FontFamily.Serif.name -> FontFamily.Serif
+ FontFamily.Monospace.name -> FontFamily.Monospace
+ FontFamily.Cursive.name -> FontFamily.Cursive
+ else -> FontFamily.Default
+ }
+ ),
+ start,
+ end
+ )
+ is BulletSpan -> {
+ Log.d("StringResources", "BulletSpan not supported yet")
+ addStyle(SpanStyle(), start, end)
+ }
+ is AbsoluteSizeSpan -> addStyle(
+ SpanStyle(fontSize = if (it.dip) it.size.dp.toSp() else it.size.toSp()),
+ start,
+ end
+ )
+ is RelativeSizeSpan -> addStyle(
+ SpanStyle(fontSize = it.sizeChange.em),
+ start,
+ end
+ )
+ is StrikethroughSpan -> addStyle(
+ SpanStyle(textDecoration = TextDecoration.LineThrough),
+ start,
+ end
+ )
+ is UnderlineSpan -> addStyle(
+ SpanStyle(textDecoration = TextDecoration.Underline),
+ start,
+ end
+ )
+ is SuperscriptSpan -> addStyle(
+ SpanStyle(baselineShift = BaselineShift.Superscript),
+ start,
+ end
+ )
+ is SubscriptSpan -> addStyle(
+ SpanStyle(baselineShift = BaselineShift.Subscript),
+ start,
+ end
+ )
+ is ForegroundColorSpan -> addStyle(
+ SpanStyle(color = Color(it.foregroundColor)),
+ start,
+ end
+ )
+ else -> addStyle(SpanStyle(), start, end)
+ }
+ }
+ }
+ }
+ } else {
+ AnnotatedString(text.toString())
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt
new file mode 100644
index 0000000000..2d95a13d5c
--- /dev/null
+++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt
@@ -0,0 +1,246 @@
+package org.thoughtcrime.securesms.ui.components
+
+import android.Manifest
+import android.annotation.SuppressLint
+import android.content.Intent
+import android.net.Uri
+import android.provider.Settings
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageProxy
+import androidx.camera.core.Preview
+import androidx.camera.lifecycle.ProcessCameraProvider
+import androidx.camera.view.PreviewView
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.Scaffold
+import androidx.compose.material.Snackbar
+import androidx.compose.material.SnackbarHost
+import androidx.compose.material.Text
+import androidx.compose.material.rememberScaffoldState
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.compose.ui.platform.LocalSoftwareKeyboardController
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.viewinterop.AndroidView
+import com.google.accompanist.permissions.ExperimentalPermissionsApi
+import com.google.accompanist.permissions.isGranted
+import com.google.accompanist.permissions.rememberPermissionState
+import com.google.accompanist.permissions.shouldShowRationale
+import com.google.mlkit.vision.barcode.BarcodeScanner
+import com.google.mlkit.vision.barcode.BarcodeScannerOptions
+import com.google.mlkit.vision.barcode.BarcodeScanning
+import com.google.mlkit.vision.barcode.common.Barcode
+import com.google.mlkit.vision.common.InputImage
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.launch
+import network.loki.messenger.R
+import org.session.libsignal.utilities.Log
+import org.thoughtcrime.securesms.ui.LocalDimensions
+import org.thoughtcrime.securesms.ui.base
+import org.thoughtcrime.securesms.ui.color.LocalColors
+import org.thoughtcrime.securesms.ui.xl
+import java.util.concurrent.Executors
+
+private const val TAG = "NewMessageFragment"
+
+@OptIn(ExperimentalPermissionsApi::class)
+@Composable
+fun MaybeScanQrCode(
+ errors: Flow,
+ onClickSettings: () -> Unit = LocalContext.current.run { {
+ Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
+ data = Uri.fromParts("package", packageName, null)
+ }.let(::startActivity)
+ } },
+ onScan: (String) -> Unit
+) {
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .background(LocalColors.current.background)
+ ) {
+ LocalSoftwareKeyboardController.current?.hide()
+
+ val cameraPermissionState = rememberPermissionState(Manifest.permission.CAMERA)
+
+ if (cameraPermissionState.status.isGranted) {
+ ScanQrCode(errors, onScan)
+ } else if (cameraPermissionState.status.shouldShowRationale) {
+ Column(
+ modifier = Modifier
+ .align(Alignment.Center)
+ .padding(horizontal = 60.dp)
+ ) {
+ Text(
+ stringResource(R.string.activity_link_camera_permission_permanently_denied_configure_in_settings),
+ style = base,
+ textAlign = TextAlign.Center
+ )
+ Spacer(modifier = Modifier.size(LocalDimensions.current.itemSpacing))
+ OutlineButton(
+ stringResource(R.string.sessionSettings),
+ modifier = Modifier.align(Alignment.CenterHorizontally),
+ onClick = onClickSettings
+ )
+ }
+ } else {
+ Column(
+ modifier = Modifier
+ .background(color = LocalColors.current.backgroundSecondary)
+ .fillMaxSize()
+ .padding(LocalDimensions.current.largeMargin),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Spacer(modifier = Modifier.weight(1f))
+ Text(stringResource(R.string.fragment_scan_qr_code_camera_access_explanation), style = xl, textAlign = TextAlign.Center)
+ Spacer(modifier = Modifier.height(LocalDimensions.current.itemSpacing))
+ PrimaryOutlineButton(
+ stringResource(R.string.cameraGrantAccess),
+ modifier = Modifier.fillMaxWidth(),
+ onClick = { cameraPermissionState.run { launchPermissionRequest() } }
+ )
+ Spacer(modifier = Modifier.weight(1f))
+ }
+ }
+ }
+}
+
+@Composable
+fun ScanQrCode(errors: Flow, onScan: (String) -> Unit) {
+ val localContext = LocalContext.current
+ val cameraProvider = remember { ProcessCameraProvider.getInstance(localContext) }
+
+ val preview = Preview.Builder().build()
+ val selector = CameraSelector.Builder()
+ .requireLensFacing(CameraSelector.LENS_FACING_BACK)
+ .build()
+
+ runCatching {
+ cameraProvider.get().unbindAll()
+
+ val options = BarcodeScannerOptions.Builder()
+ .setBarcodeFormats(Barcode.FORMAT_QR_CODE)
+ .build()
+ val scanner = BarcodeScanning.getClient(options)
+
+ cameraProvider.get().bindToLifecycle(
+ LocalLifecycleOwner.current,
+ selector,
+ preview,
+ buildAnalysisUseCase(scanner, onScan)
+ )
+ }.onFailure { Log.e(TAG, "error binding camera", it) }
+
+ DisposableEffect(cameraProvider) {
+ onDispose {
+ cameraProvider.get().unbindAll()
+ }
+ }
+
+ val scaffoldState = rememberScaffoldState()
+
+ val scope = rememberCoroutineScope()
+
+ LaunchedEffect(Unit) {
+ errors.collect { error ->
+ scaffoldState.snackbarHostState
+ .takeIf { it.currentSnackbarData == null }
+ ?.run {
+ scope.launch {
+ // showSnackbar() suspends until the Snackbar is dismissed.
+ // Launch in new scope so we drop new QR scan events, to prevent spamming
+ // snackbars to the user, or worse, queuing a chain of snackbars one after
+ // another to show and hide for the next minute or 2.
+ // Don't use debounce() because many QR scans can come through each second,
+ // and each scan could restart the timer which could mean no scan gets
+ // through until the user stops scanning; quite perplexing.
+ showSnackbar(message = error)
+ }
+ }
+ }
+ }
+
+ Scaffold(
+ scaffoldState = scaffoldState,
+ snackbarHost = {
+ SnackbarHost(
+ hostState = scaffoldState.snackbarHostState,
+ modifier = Modifier.padding(LocalDimensions.current.smallItemSpacing)
+ ) { data ->
+ Snackbar(
+ snackbarData = data,
+ modifier = Modifier.padding(LocalDimensions.current.smallItemSpacing)
+ )
+ }
+ }
+ ) { padding ->
+ Box(modifier = Modifier.padding(padding)) {
+ AndroidView(
+ modifier = Modifier.fillMaxSize(),
+ factory = { PreviewView(it).apply { preview.setSurfaceProvider(surfaceProvider) } }
+ )
+
+ Box(
+ Modifier
+ .aspectRatio(1f)
+ .padding(LocalDimensions.current.itemSpacing)
+ .clip(shape = RoundedCornerShape(26.dp))
+ .background(Color(0x33ffffff))
+ .align(Alignment.Center)
+ )
+ }
+ }
+}
+
+@SuppressLint("UnsafeOptInUsageError")
+private fun buildAnalysisUseCase(
+ scanner: BarcodeScanner,
+ onBarcodeScanned: (String) -> Unit
+): ImageAnalysis = ImageAnalysis.Builder()
+ .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
+ .build().apply {
+ setAnalyzer(Executors.newSingleThreadExecutor(), Analyzer(scanner, onBarcodeScanned))
+ }
+
+class Analyzer(
+ private val scanner: BarcodeScanner,
+ private val onBarcodeScanned: (String) -> Unit
+): ImageAnalysis.Analyzer {
+ @SuppressLint("UnsafeOptInUsageError")
+ override fun analyze(image: ImageProxy) {
+ InputImage.fromMediaImage(
+ image.image!!,
+ image.imageInfo.rotationDegrees
+ ).let(scanner::process).apply {
+ addOnSuccessListener { barcodes ->
+ barcodes.forEach {
+ it.rawValue?.let(onBarcodeScanned)
+ }
+ }
+ addOnCompleteListener {
+ image.close()
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt
new file mode 100644
index 0000000000..48d81aa723
--- /dev/null
+++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt
@@ -0,0 +1,109 @@
+package org.thoughtcrime.securesms.ui.components
+
+import android.graphics.Bitmap
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.fadeIn
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.material.Card
+import androidx.compose.material.Icon
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.FilterQuality
+import androidx.compose.ui.graphics.asImageBitmap
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import network.loki.messenger.R
+import org.thoughtcrime.securesms.ui.LocalDimensions
+import org.thoughtcrime.securesms.ui.color.LocalColors
+import org.thoughtcrime.securesms.util.QRCodeUtilities
+
+@Composable
+fun QrImage(
+ string: String?,
+ modifier: Modifier = Modifier,
+ contentPadding: Dp = LocalDimensions.current.smallItemSpacing,
+ icon: Int = R.drawable.session_shield
+) {
+ var bitmap: Bitmap? by remember {
+ mutableStateOf(null)
+ }
+
+ val scope = rememberCoroutineScope()
+ LaunchedEffect(string) {
+ if (string != null) scope.launch(Dispatchers.IO) {
+ bitmap = (300..500 step 100).firstNotNullOf {
+ runCatching { QRCodeUtilities.encode(string, it) }.getOrNull()
+ }
+ }
+ }
+
+ Card(
+ backgroundColor = LocalColors.current.qrCodeBackground,
+ elevation = 0.dp,
+ modifier = modifier
+ ) { Content(bitmap, icon, Modifier.padding(contentPadding), backgroundColor = LocalColors.current.qrCodeBackground) }
+}
+
+@Composable
+private fun Content(
+ bitmap: Bitmap?,
+ icon: Int,
+ modifier: Modifier = Modifier,
+ qrColor: Color = LocalColors.current.qrCodeContent,
+ backgroundColor: Color,
+) {
+ Box(
+ modifier = modifier
+ .fillMaxWidth()
+ .aspectRatio(1f)
+ ) {
+ AnimatedVisibility(
+ visible = bitmap != null,
+ enter = fadeIn(),
+ ) {
+ bitmap?.let {
+ Image(
+ bitmap = it.asImageBitmap(),
+ contentDescription = "",
+ contentScale = ContentScale.Crop,
+ modifier = Modifier
+ .fillMaxWidth()
+ .aspectRatio(1f),
+ colorFilter = ColorFilter.tint(qrColor),
+ // Use FilterQuality.None to keep QR edges sharp
+ filterQuality = FilterQuality.None
+ )
+ }
+ }
+
+ Icon(
+ painter = painterResource(id = icon),
+ contentDescription = "",
+ tint = qrColor,
+ modifier = Modifier
+ .size(62.dp)
+ .align(Alignment.Center)
+ .background(color = backgroundColor)
+ .size(66.dp)
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/RadioButton.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/RadioButton.kt
new file mode 100644
index 0000000000..8058459a7c
--- /dev/null
+++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/RadioButton.kt
@@ -0,0 +1,99 @@
+package org.thoughtcrime.securesms.ui.components
+
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.scaleIn
+import androidx.compose.animation.scaleOut
+import androidx.compose.foundation.background
+import androidx.compose.foundation.border
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.selection.selectable
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.material.TextButton
+import androidx.compose.material.ripple.rememberRipple
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.graphics.RectangleShape
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.unit.dp
+import org.thoughtcrime.securesms.ui.LocalDimensions
+import org.thoughtcrime.securesms.ui.color.LocalColors
+import org.thoughtcrime.securesms.ui.color.transparentButtonColors
+
+@Composable
+fun RadioButton(
+ onClick: () -> Unit = {},
+ modifier: Modifier = Modifier,
+ checked: Boolean = false,
+ contentPadding: PaddingValues = PaddingValues(),
+ content: @Composable RowScope.() -> Unit = {}
+) {
+ TextButton(
+ modifier = modifier
+ .fillMaxWidth()
+ .selectable(
+ selected = checked,
+ enabled = true,
+ role = Role.RadioButton,
+ onClick = onClick
+ ),
+ colors = transparentButtonColors(),
+ onClick = onClick,
+ shape = RectangleShape,
+ contentPadding = contentPadding
+ ) {
+ content()
+ Spacer(modifier = Modifier.width(20.dp))
+ RadioButtonIndicator(
+ checked = checked,
+ modifier = Modifier
+ .size(22.dp)
+ .align(Alignment.CenterVertically)
+ )
+ }
+}
+
+@Composable
+private fun RadioButtonIndicator(
+ checked: Boolean,
+ modifier: Modifier
+) {
+ Box(modifier = modifier) {
+ AnimatedVisibility(
+ checked,
+ modifier = Modifier
+ .padding(2.5.dp)
+ .clip(CircleShape),
+ enter = scaleIn(),
+ exit = scaleOut()
+ ) {
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .background(
+ color = LocalColors.current.primary,
+ shape = CircleShape
+ )
+ )
+ }
+ Box(
+ modifier = Modifier
+ .aspectRatio(1f)
+ .border(
+ width = LocalDimensions.current.borderStroke,
+ color = LocalColors.current.text,
+ shape = CircleShape
+ )
+ ) {}
+ }
+}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt
new file mode 100644
index 0000000000..5a3956922e
--- /dev/null
+++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt
@@ -0,0 +1,78 @@
+package org.thoughtcrime.securesms.ui.components
+
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.pager.PagerState
+import androidx.compose.foundation.pager.rememberPagerState
+import androidx.compose.material.Tab
+import androidx.compose.material.TabRow
+import androidx.compose.material.TabRowDefaults
+import androidx.compose.material.TabRowDefaults.tabIndicatorOffset
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.PreviewParameter
+import androidx.compose.ui.unit.dp
+import kotlinx.coroutines.launch
+import network.loki.messenger.R
+import org.thoughtcrime.securesms.ui.LocalDimensions
+import org.thoughtcrime.securesms.ui.color.LocalColors
+import org.thoughtcrime.securesms.ui.PreviewTheme
+import org.thoughtcrime.securesms.ui.color.Colors
+import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider
+import org.thoughtcrime.securesms.ui.color.divider
+import org.thoughtcrime.securesms.ui.h8
+
+private val TITLES = listOf(R.string.sessionRecoveryPassword, R.string.qrScan)
+
+@OptIn(ExperimentalFoundationApi::class)
+@Composable
+fun SessionTabRow(pagerState: PagerState, titles: List) {
+ TabRow(
+ backgroundColor = Color.Unspecified,
+ selectedTabIndex = pagerState.currentPage,
+ contentColor = LocalColors.current.text,
+ indicator = { tabPositions ->
+ TabRowDefaults.Indicator(
+ Modifier.tabIndicatorOffset(tabPositions[pagerState.currentPage]),
+ color = LocalColors.current.primary,
+ height = LocalDimensions.current.indicatorHeight
+ )
+ },
+ divider = { TabRowDefaults.Divider(color = LocalColors.current.divider) },
+ modifier = Modifier
+ .height(48.dp)
+ .background(color = Color.Unspecified)
+ ) {
+ val animationScope = rememberCoroutineScope()
+ titles.forEachIndexed { i, it ->
+ Tab(
+ i == pagerState.currentPage,
+ onClick = { animationScope.launch { pagerState.animateScrollToPage(i) } },
+ selectedContentColor = LocalColors.current.text,
+ unselectedContentColor = LocalColors.current.text,
+ ) {
+ Text(
+ stringResource(id = it),
+ style = h8
+ )
+ }
+ }
+ }
+}
+
+@OptIn(ExperimentalFoundationApi::class)
+@androidx.compose.ui.tooling.preview.Preview
+@Composable
+fun PreviewSessionTabRow(
+ @PreviewParameter(SessionColorsParameterProvider::class) colors: Colors
+) {
+ PreviewTheme(colors) {
+ val pagerState = rememberPagerState { TITLES.size }
+ SessionTabRow(pagerState = pagerState, titles = TITLES)
+ }
+}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt
new file mode 100644
index 0000000000..b6a12a792d
--- /dev/null
+++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt
@@ -0,0 +1,189 @@
+package org.thoughtcrime.securesms.ui.components
+
+import androidx.annotation.DrawableRes
+import androidx.compose.animation.animateContentSize
+import androidx.compose.foundation.border
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.layout.wrapContentSize
+import androidx.compose.foundation.text.BasicTextField
+import androidx.compose.foundation.text.InlineTextContent
+import androidx.compose.foundation.text.KeyboardActions
+import androidx.compose.foundation.text.KeyboardOptions
+import androidx.compose.foundation.text.appendInlineContent
+import androidx.compose.material.Icon
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.Placeholder
+import androidx.compose.ui.text.PlaceholderVerticalAlign
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.buildAnnotatedString
+import androidx.compose.ui.text.input.ImeAction
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.TextUnit
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import network.loki.messenger.R
+import org.thoughtcrime.securesms.ui.LocalDimensions
+import org.thoughtcrime.securesms.ui.PreviewTheme
+import org.thoughtcrime.securesms.ui.base
+import org.thoughtcrime.securesms.ui.baseBold
+import org.thoughtcrime.securesms.ui.color.LocalColors
+import org.thoughtcrime.securesms.ui.color.borders
+import org.thoughtcrime.securesms.ui.color.text
+import org.thoughtcrime.securesms.ui.color.textSecondary
+import org.thoughtcrime.securesms.ui.contentDescription
+
+@Preview
+@Composable
+fun PreviewSessionOutlinedTextField() {
+ PreviewTheme {
+ Column(modifier = Modifier.padding(10.dp),
+ verticalArrangement = Arrangement.spacedBy(10.dp)) {
+ SessionOutlinedTextField(
+ text = "text",
+ placeholder = "",
+ )
+
+ SessionOutlinedTextField(
+ text = "",
+ placeholder = "placeholder"
+ )
+
+ SessionOutlinedTextField(
+ text = "text",
+ placeholder = "",
+ error = "error"
+ )
+
+ SessionOutlinedTextField(
+ text = "text onChange after error",
+ placeholder = "",
+ error = "error",
+ isTextErrorColor = false
+ )
+ }
+ }
+}
+
+@Composable
+fun SessionOutlinedTextField(
+ text: String,
+ modifier: Modifier = Modifier,
+ contentDescription: String? = null,
+ onChange: (String) -> Unit = {},
+ textStyle: TextStyle = base,
+ placeholder: String = "",
+ onContinue: () -> Unit = {},
+ error: String? = null,
+ isTextErrorColor: Boolean = error != null
+) {
+ Column(modifier = modifier.animateContentSize()) {
+ Box(
+ modifier = Modifier.border(
+ width = LocalDimensions.current.borderStroke,
+ color = LocalColors.current.borders(error != null),
+ shape = MaterialTheme.shapes.small
+ )
+ .fillMaxWidth()
+ .wrapContentHeight()
+ .padding(vertical = 28.dp)
+ .padding(horizontal = 21.dp)
+ ) {
+ if (text.isEmpty()) {
+ Text(
+ text = placeholder,
+ style = base,
+ color = LocalColors.current.textSecondary(isTextErrorColor),
+ modifier = Modifier.wrapContentSize()
+ .align(Alignment.CenterStart)
+ .wrapContentSize()
+ )
+ }
+
+ BasicTextField(
+ value = text,
+ onValueChange = onChange,
+ modifier = Modifier.wrapContentHeight().fillMaxWidth().contentDescription(contentDescription),
+ textStyle = textStyle.copy(color = LocalColors.current.text(isTextErrorColor)),
+ cursorBrush = SolidColor(LocalColors.current.text(isTextErrorColor)),
+ keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
+ keyboardActions = KeyboardActions(
+ onDone = { onContinue() },
+ onGo = { onContinue() },
+ onSearch = { onContinue() },
+ onSend = { onContinue() },
+ )
+ )
+ }
+ error?.let {
+ Spacer(modifier = Modifier.height(LocalDimensions.current.xsItemSpacing))
+ Text(
+ it,
+ modifier = Modifier.fillMaxWidth()
+ .contentDescription(R.string.AccessibilityId_error_message),
+ textAlign = TextAlign.Center,
+ style = baseBold,
+ color = LocalColors.current.danger
+ )
+ }
+ }
+}
+
+@Composable
+fun AnnotatedTextWithIcon(
+ text: String,
+ @DrawableRes iconRes: Int,
+ modifier: Modifier = Modifier,
+ style: TextStyle = base,
+ color: Color = Color.Unspecified,
+ iconSize: TextUnit = 12.sp
+) {
+ val myId = "inlineContent"
+ val annotated = buildAnnotatedString {
+ append(text)
+ appendInlineContent(myId, "[icon]")
+ }
+
+ val inlineContent = mapOf(
+ Pair(
+ myId,
+ InlineTextContent(
+ Placeholder(
+ width = iconSize,
+ height = iconSize,
+ placeholderVerticalAlign = PlaceholderVerticalAlign.TextCenter
+ )
+ ) {
+ Icon(
+ painter = painterResource(id = iconRes),
+ contentDescription = null,
+ modifier = Modifier.padding(1.dp),
+ tint = color
+ )
+ }
+ )
+ )
+
+ Text(
+ text = annotated,
+ modifier = modifier.fillMaxWidth(),
+ style = style,
+ color = color,
+ textAlign = TextAlign.Center,
+ inlineContent = inlineContent
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt
index 5ff823a15c..c3b7eaca96 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt
@@ -1,8 +1,10 @@
package org.thoughtcrime.securesms.util
import android.annotation.SuppressLint
+import android.app.Activity
import android.content.Context
import android.content.Intent
+import android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP
import android.view.View
import androidx.annotation.StyleRes
import androidx.appcompat.app.AppCompatActivity
@@ -10,6 +12,10 @@ import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.DialogFragment
import network.loki.messenger.R
import org.session.libsession.utilities.TextSecurePreferences
+import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK
+import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_LIGHT
+import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_DARK
+import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_LIGHT
import org.thoughtcrime.securesms.BaseActionBarActivity
fun BaseActionBarActivity.setUpActionBarSessionLogo(hideBackButton: Boolean = false) {
@@ -82,20 +88,25 @@ fun TextSecurePreferences.themeState(): ThemeState {
@StyleRes
fun String.getThemeStyle(): Int = when (this) {
- TextSecurePreferences.CLASSIC_DARK -> R.style.Classic_Dark
- TextSecurePreferences.CLASSIC_LIGHT -> R.style.Classic_Light
- TextSecurePreferences.OCEAN_DARK -> R.style.Ocean_Dark
- TextSecurePreferences.OCEAN_LIGHT -> R.style.Ocean_Light
+ CLASSIC_DARK -> R.style.Classic_Dark
+ CLASSIC_LIGHT -> R.style.Classic_Light
+ OCEAN_DARK -> R.style.Ocean_Dark
+ OCEAN_LIGHT -> R.style.Ocean_Light
else -> throw NullPointerException("The style [$this] is not supported")
}
@StyleRes
-fun Int.getDefaultAccentColor(): Int =
- if (this == R.style.Ocean_Dark || this == R.style.Ocean_Light) R.style.PrimaryBlue
- else R.style.PrimaryGreen
+fun Int.getDefaultAccentColor(): Int = when (this) {
+ R.style.Ocean_Dark, R.style.Ocean_Light -> R.style.PrimaryBlue
+ else -> R.style.PrimaryGreen
+}
data class ThemeState (
@StyleRes val theme: Int,
@StyleRes val accentStyle: Int,
val followSystem: Boolean
-)
\ No newline at end of file
+)
+
+inline fun Activity.show() = Intent(this, T::class.java).also(::startActivity).let { overridePendingTransition(R.anim.slide_from_bottom, R.anim.fade_scale_out) }
+inline fun Activity.push(modify: Intent.() -> Unit = {}) = Intent(this, T::class.java).also(modify).also(::startActivity).let { overridePendingTransition(R.anim.slide_from_right, R.anim.fade_scale_out) }
+inline fun Context.start(modify: Intent.() -> Unit = {}) = Intent(this, T::class.java).also(modify).apply { addFlags(FLAG_ACTIVITY_SINGLE_TOP) }.let(::startActivity)
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ConfigurationMessageUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ConfigurationMessageUtilities.kt
index a467614376..e59d3aae17 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/ConfigurationMessageUtilities.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/ConfigurationMessageUtilities.kt
@@ -95,10 +95,10 @@ object ConfigurationMessageUtilities {
val storage = MessagingModuleConfiguration.shared.storage
val localUserKey = storage.getUserPublicKey() ?: return null
val contactsWithSettings = storage.getAllContacts().filter { recipient ->
- recipient.sessionID != localUserKey && recipient.sessionID.startsWith(IdPrefix.STANDARD.value)
- && storage.getThreadId(recipient.sessionID) != null
+ recipient.accountID != localUserKey && recipient.accountID.startsWith(IdPrefix.STANDARD.value)
+ && storage.getThreadId(recipient.accountID) != null
}.map { contact ->
- val address = Address.fromSerialized(contact.sessionID)
+ val address = Address.fromSerialized(contact.accountID)
val thread = storage.getThreadId(address)
val isPinned = if (thread != null) {
storage.isPinned(thread)
@@ -117,7 +117,7 @@ object ConfigurationMessageUtilities {
}
val contactInfo = Contact(
- id = contact.sessionID,
+ id = contact.accountID,
name = contact.name.orEmpty(),
nickname = contact.nickname.orEmpty(),
blocked = settings.isBlocked,
@@ -205,7 +205,7 @@ object ConfigurationMessageUtilities {
val admins = group.admins.map { it.serialize() to true }.toMap()
val members = group.members.filterNot { it.serialize() !in admins.keys }.map { it.serialize() to false }.toMap()
GroupInfo.LegacyGroupInfo(
- sessionId = groupPublicKey,
+ accountId = groupPublicKey,
name = group.title,
members = admins + members,
priority = if (isPinned) ConfigBase.PRIORITY_PINNED else ConfigBase.PRIORITY_VISIBLE,
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/GlowView.kt b/app/src/main/java/org/thoughtcrime/securesms/util/GlowView.kt
index c7d53c1fef..a0c0da24fe 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/GlowView.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/GlowView.kt
@@ -118,7 +118,7 @@ class PNModeView : LinearLayout, GlowView {
// endregion
}
-class NewConversationButtonImageView : androidx.appcompat.widget.AppCompatImageView, GlowView {
+class StartConversationButtonImageView : androidx.appcompat.widget.AppCompatImageView, GlowView {
@ColorInt override var mainColor: Int = 0
set(newValue) { field = newValue; paint.color = newValue }
@ColorInt override var sessionShadowColor: Int = 0
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/MockDataGenerator.kt b/app/src/main/java/org/thoughtcrime/securesms/util/MockDataGenerator.kt
index 4d00da8f96..a7eb864893 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/MockDataGenerator.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/MockDataGenerator.kt
@@ -55,7 +55,7 @@ object MockDataGenerator {
val stringContent: List = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 ".map { it.toString() }
val wordContent: List = listOf("alias", "consequatur", "aut", "perferendis", "sit", "voluptatem", "accusantium", "doloremque", "aperiam", "eaque", "ipsa", "quae", "ab", "illo", "inventore", "veritatis", "et", "quasi", "architecto", "beatae", "vitae", "dicta", "sunt", "explicabo", "aspernatur", "aut", "odit", "aut", "fugit", "sed", "quia", "consequuntur", "magni", "dolores", "eos", "qui", "ratione", "voluptatem", "sequi", "nesciunt", "neque", "dolorem", "ipsum", "quia", "dolor", "sit", "amet", "consectetur", "adipisci", "velit", "sed", "quia", "non", "numquam", "eius", "modi", "tempora", "incidunt", "ut", "labore", "et", "dolore", "magnam", "aliquam", "quaerat", "voluptatem", "ut", "enim", "ad", "minima", "veniam", "quis", "nostrum", "exercitationem", "ullam", "corporis", "nemo", "enim", "ipsam", "voluptatem", "quia", "voluptas", "sit", "suscipit", "laboriosam", "nisi", "ut", "aliquid", "ex", "ea", "commodi", "consequatur", "quis", "autem", "vel", "eum", "iure", "reprehenderit", "qui", "in", "ea", "voluptate", "velit", "esse", "quam", "nihil", "molestiae", "et", "iusto", "odio", "dignissimos", "ducimus", "qui", "blanditiis", "praesentium", "laudantium", "totam", "rem", "voluptatum", "deleniti", "atque", "corrupti", "quos", "dolores", "et", "quas", "molestias", "excepturi", "sint", "occaecati", "cupiditate", "non", "provident", "sed", "ut", "perspiciatis", "unde", "omnis", "iste", "natus", "error", "similique", "sunt", "in", "culpa", "qui", "officia", "deserunt", "mollitia", "animi", "id", "est", "laborum", "et", "dolorum", "fuga", "et", "harum", "quidem", "rerum", "facilis", "est", "et", "expedita", "distinctio", "nam", "libero", "tempore", "cum", "soluta", "nobis", "est", "eligendi", "optio", "cumque", "nihil", "impedit", "quo", "porro", "quisquam", "est", "qui", "minus", "id", "quod", "maxime", "placeat", "facere", "possimus", "omnis", "voluptas", "assumenda", "est", "omnis", "dolor", "repellendus", "temporibus", "autem", "quibusdam", "et", "aut", "consequatur", "vel", "illum", "qui", "dolorem", "eum", "fugiat", "quo", "voluptas", "nulla", "pariatur", "at", "vero", "eos", "et", "accusamus", "officiis", "debitis", "aut", "rerum", "necessitatibus", "saepe", "eveniet", "ut", "et", "voluptates", "repudiandae", "sint", "et", "molestiae", "non", "recusandae", "itaque", "earum", "rerum", "hic", "tenetur", "a", "sapiente", "delectus", "ut", "aut", "reiciendis", "voluptatibus", "maiores", "doloribus", "asperiores", "repellat")
val timestampNow: Long = System.currentTimeMillis()
- val userSessionId: String = MessagingModuleConfiguration.shared.storage.getUserPublicKey()!!
+ val userAccountId: String = MessagingModuleConfiguration.shared.storage.getUserPublicKey()!!
val logProgress: ((String, String) -> Unit) = logProgress@{ title, event ->
if (!printProgress) { return@logProgress }
@@ -84,7 +84,7 @@ object MockDataGenerator {
logProgress("DM Thread $threadIndex", "Start")
val dataBytes = (0 until 16).map { dmThreadRandomGenerator.nextInt(UByte.MAX_VALUE.toInt()).toByte() }
- val randomSessionId: String = KeyPairUtilities.generate(dataBytes.toByteArray()).x25519KeyPair.hexEncodedPublicKey
+ val randomAccountId: String = KeyPairUtilities.generate(dataBytes.toByteArray()).x25519KeyPair.hexEncodedPublicKey
val isMessageRequest: Boolean = dmThreadRandomGenerator.nextBoolean()
val contactNameLength: Int = (5 + dmThreadRandomGenerator.nextInt(15))
@@ -94,8 +94,8 @@ object MockDataGenerator {
)
// Generate the thread
- val recipient = Recipient.from(context, Address.fromSerialized(randomSessionId), false)
- val contact = Contact(randomSessionId)
+ val recipient = Recipient.from(context, Address.fromSerialized(randomAccountId), false)
+ val contact = Contact(randomAccountId)
val threadId = threadDb.getOrCreateThreadIdFor(recipient)
// Generate the contact
@@ -194,16 +194,16 @@ object MockDataGenerator {
)
// Generate the Contacts in the group
- val members: MutableList = mutableListOf(userSessionId)
+ val members: MutableList = mutableListOf(userAccountId)
logProgress("Closed Group Thread $threadIndex", "Generate $numGroupMembers Contacts")
(0 until numGroupMembers).forEach {
val contactBytes = (0 until 16).map { cgThreadRandomGenerator.nextInt(UByte.MAX_VALUE.toInt()).toByte() }
- val randomSessionId: String = KeyPairUtilities.generate(contactBytes.toByteArray()).x25519KeyPair.hexEncodedPublicKey
+ val randomAccountId: String = KeyPairUtilities.generate(contactBytes.toByteArray()).x25519KeyPair.hexEncodedPublicKey
val contactNameLength: Int = (5 + cgThreadRandomGenerator.nextInt(15))
- val recipient = Recipient.from(context, Address.fromSerialized(randomSessionId), false)
- val contact = Contact(randomSessionId)
+ val recipient = Recipient.from(context, Address.fromSerialized(randomAccountId), false)
+ val contact = Contact(randomAccountId)
contactDb.setContact(contact)
recipientDb.setApproved(recipient, true)
recipientDb.setApprovedMe(recipient, true)
@@ -213,7 +213,7 @@ object MockDataGenerator {
.joinToString()
recipientDb.setProfileName(recipient, contact.name)
contactDb.setContact(contact)
- members.add(randomSessionId)
+ members.add(randomAccountId)
}
val groupId = GroupUtil.doubleEncodeGroupID(randomGroupPublicKey)
@@ -237,7 +237,7 @@ object MockDataGenerator {
storage.createInitialConfigGroup(randomGroupPublicKey, groupName, GroupUtil.createConfigMemberMap(members, setOf(adminUserId)), System.currentTimeMillis(), encryptionKeyPair, 0)
// Add the group created message
- if (userSessionId == adminUserId) {
+ if (userAccountId == adminUserId) {
storage.insertOutgoingInfoMessage(context, groupId, SignalServiceGroup.Type.CREATION, groupName, members, listOf(adminUserId), threadId, (timestampNow - (numMessages * 5000)))
} else {
storage.insertIncomingInfoMessage(context, adminUserId, groupId, SignalServiceGroup.Type.CREATION, groupName, members, listOf(adminUserId), (timestampNow - (numMessages * 5000)))
@@ -250,7 +250,7 @@ object MockDataGenerator {
val messageWords: Int = (1 + cgThreadRandomGenerator.nextInt(19))
val senderId: String = members.random(cgThreadRandomGenerator.asKotlinRandom())
- if (senderId != userSessionId) {
+ if (senderId != userAccountId) {
smsDb.insertMessageInbox(
IncomingTextMessage(
Address.fromSerialized(senderId),
@@ -331,16 +331,16 @@ object MockDataGenerator {
)
// Generate the Contacts in the group
- val members: MutableList = mutableListOf(userSessionId)
+ val members: MutableList = mutableListOf(userAccountId)
logProgress("Open Group Thread $threadIndex", "Generate $numGroupMembers Contacts")
(0 until numGroupMembers).forEach {
val contactBytes = (0 until 16).map { ogThreadRandomGenerator.nextInt(UByte.MAX_VALUE.toInt()).toByte() }
- val randomSessionId: String = KeyPairUtilities.generate(contactBytes.toByteArray()).x25519KeyPair.hexEncodedPublicKey
+ val randomAccountId: String = KeyPairUtilities.generate(contactBytes.toByteArray()).x25519KeyPair.hexEncodedPublicKey
val contactNameLength: Int = (5 + ogThreadRandomGenerator.nextInt(15))
- val recipient = Recipient.from(context, Address.fromSerialized(randomSessionId), false)
- val contact = Contact(randomSessionId)
+ val recipient = Recipient.from(context, Address.fromSerialized(randomAccountId), false)
+ val contact = Contact(randomAccountId)
contactDb.setContact(contact)
recipientDb.setApproved(recipient, true)
recipientDb.setApprovedMe(recipient, true)
@@ -350,7 +350,7 @@ object MockDataGenerator {
.joinToString()
recipientDb.setProfileName(recipient, contact.name)
contactDb.setContact(contact)
- members.add(randomSessionId)
+ members.add(randomAccountId)
}
// Create the open group model and the thread
@@ -377,7 +377,7 @@ object MockDataGenerator {
val messageWords: Int = (1 + ogThreadRandomGenerator.nextInt(19))
val senderId: String = members.random(ogThreadRandomGenerator.asKotlinRandom())
- if (senderId != userSessionId) {
+ if (senderId != userAccountId) {
smsDb.insertMessageInbox(
IncomingTextMessage(
Address.fromSerialized(senderId),
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/QRCodeUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/util/QRCodeUtilities.kt
index f7d1e3e8ad..80eccae41a 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/QRCodeUtilities.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/QRCodeUtilities.kt
@@ -4,28 +4,35 @@ import android.graphics.Bitmap
import android.graphics.Color
import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
-import com.google.zxing.WriterException
import com.google.zxing.qrcode.QRCodeWriter
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
object QRCodeUtilities {
- fun encode(data: String, size: Int, isInverted: Boolean = false, hasTransparentBackground: Boolean = true): Bitmap {
- try {
- val hints = hashMapOf( EncodeHintType.MARGIN to 1 )
- val result = QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, size, size, hints)
- val bitmap = Bitmap.createBitmap(result.width, result.height, Bitmap.Config.ARGB_8888)
+ fun encode(
+ data: String,
+ size: Int,
+ isInverted: Boolean = false,
+ hasTransparentBackground: Boolean = true,
+ dark: Int = Color.BLACK,
+ light: Int = Color.WHITE,
+ ): Bitmap? = runCatching {
+ val hints = hashMapOf(
+ EncodeHintType.MARGIN to 0,
+ EncodeHintType.ERROR_CORRECTION to ErrorCorrectionLevel.M
+ )
+ val color = if (isInverted) light else dark
+ val background = if (isInverted) dark else light
+ val result = QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, size, size, hints)
+ Bitmap.createBitmap(result.width, result.height, Bitmap.Config.ARGB_8888).apply {
for (y in 0 until result.height) {
for (x in 0 until result.width) {
- if (result.get(x, y)) {
- bitmap.setPixel(x, y, if (isInverted) Color.WHITE else Color.BLACK)
- } else if (!hasTransparentBackground) {
- bitmap.setPixel(x, y, if (isInverted) Color.BLACK else Color.WHITE)
+ when {
+ result.get(x, y) -> setPixel(x, y, color)
+ !hasTransparentBackground -> setPixel(x, y, background)
}
}
}
- return bitmap
- } catch (e: WriterException) {
- return Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888)
}
- }
-}
\ No newline at end of file
+ }.getOrNull()
+}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt
index c0477825fd..a7ba6027d5 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt
@@ -16,6 +16,7 @@ import androidx.annotation.DimenRes
import network.loki.messenger.R
import org.session.libsession.utilities.getColorFromAttr
import android.view.inputmethod.InputMethodManager
+import android.widget.EditText
import androidx.annotation.AttrRes
import androidx.annotation.ColorRes
import androidx.core.graphics.applyCanvas
@@ -111,3 +112,11 @@ fun Size.coerceAtMost(longestWidth: Int): Size =
height.coerceAtMost(longestWidth).let { Size((it * aspect).roundToInt(), it) }
}
}
+
+fun EditText.addTextChangedListener(listener: (String) -> Unit) {
+ addTextChangedListener(object: SimpleTextWatcher() {
+ override fun onTextChanged(text: String) {
+ listener(text)
+ }
+ })
+}
diff --git a/app/src/main/res/drawable/session_id_text_view_background.xml b/app/src/main/res/drawable/account_id_text_view_background.xml
similarity index 100%
rename from app/src/main/res/drawable/session_id_text_view_background.xml
rename to app/src/main/res/drawable/account_id_text_view_background.xml
diff --git a/app/src/main/res/drawable/conversation_view_search__background.xml b/app/src/main/res/drawable/conversation_view_search__background.xml
new file mode 100644
index 0000000000..50e38698b4
--- /dev/null
+++ b/app/src/main/res/drawable/conversation_view_search__background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/emoji_tada_large.xml b/app/src/main/res/drawable/emoji_tada_large.xml
new file mode 100644
index 0000000000..ed802646ff
--- /dev/null
+++ b/app/src/main/res/drawable/emoji_tada_large.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_circle_question_mark.xml b/app/src/main/res/drawable/ic_circle_question_mark.xml
new file mode 100644
index 0000000000..9bc2b817f1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_circle_question_mark.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_dialog_x.xml b/app/src/main/res/drawable/ic_dialog_x.xml
new file mode 100644
index 0000000000..a65f2abb88
--- /dev/null
+++ b/app/src/main/res/drawable/ic_dialog_x.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_logo_large.xml b/app/src/main/res/drawable/ic_logo_large.xml
new file mode 100644
index 0000000000..b494b17663
--- /dev/null
+++ b/app/src/main/res/drawable/ic_logo_large.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_outline_bookmark_border_24.xml b/app/src/main/res/drawable/ic_outline_bookmark_border_24.xml
deleted file mode 100644
index 0cb95b7706..0000000000
--- a/app/src/main/res/drawable/ic_outline_bookmark_border_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_path_yellow.xml b/app/src/main/res/drawable/ic_path_yellow.xml
new file mode 100644
index 0000000000..04f0c51545
--- /dev/null
+++ b/app/src/main/res/drawable/ic_path_yellow.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_recovery_phrase.xml b/app/src/main/res/drawable/ic_recovery_phrase.xml
deleted file mode 100644
index 3d5bc18e21..0000000000
--- a/app/src/main/res/drawable/ic_recovery_phrase.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_shield_outline.xml b/app/src/main/res/drawable/ic_shield_outline.xml
new file mode 100644
index 0000000000..3db98f53d0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shield_outline.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_status.xml b/app/src/main/res/drawable/ic_status.xml
new file mode 100644
index 0000000000..7b19ad1413
--- /dev/null
+++ b/app/src/main/res/drawable/ic_status.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/search_background.xml b/app/src/main/res/drawable/search_background.xml
index a2090ca6bc..58da2d8522 100644
--- a/app/src/main/res/drawable/search_background.xml
+++ b/app/src/main/res/drawable/search_background.xml
@@ -2,5 +2,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/session.xml b/app/src/main/res/drawable/session.xml
new file mode 100644
index 0000000000..2c6e1081f7
--- /dev/null
+++ b/app/src/main/res/drawable/session.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable/session_logo.xml b/app/src/main/res/drawable/session_logo.xml
index f88a4f21a9..b2f931990f 100644
--- a/app/src/main/res/drawable/session_logo.xml
+++ b/app/src/main/res/drawable/session_logo.xml
@@ -1,9 +1,9 @@
-
-
-
-
-
+
+
diff --git a/app/src/main/res/drawable/session_shield.xml b/app/src/main/res/drawable/session_shield.xml
new file mode 100644
index 0000000000..a7c6d1a24a
--- /dev/null
+++ b/app/src/main/res/drawable/session_shield.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout-sw400dp/activity_display_name.xml b/app/src/main/res/layout-sw400dp/activity_display_name.xml
deleted file mode 100644
index d62faca064..0000000000
--- a/app/src/main/res/layout-sw400dp/activity_display_name.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw400dp/activity_landing.xml b/app/src/main/res/layout-sw400dp/activity_landing.xml
deleted file mode 100644
index 5e5a36704a..0000000000
--- a/app/src/main/res/layout-sw400dp/activity_landing.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw400dp/activity_pn_mode.xml b/app/src/main/res/layout-sw400dp/activity_pn_mode.xml
deleted file mode 100644
index b55b35f149..0000000000
--- a/app/src/main/res/layout-sw400dp/activity_pn_mode.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw400dp/activity_register.xml b/app/src/main/res/layout-sw400dp/activity_register.xml
deleted file mode 100644
index b642bb292c..0000000000
--- a/app/src/main/res/layout-sw400dp/activity_register.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw400dp/activity_seed.xml b/app/src/main/res/layout-sw400dp/activity_seed.xml
deleted file mode 100644
index 97b63ede5e..0000000000
--- a/app/src/main/res/layout-sw400dp/activity_seed.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw400dp/fragment_recovery_phrase.xml b/app/src/main/res/layout-sw400dp/fragment_recovery_phrase.xml
deleted file mode 100644
index 7b220207e2..0000000000
--- a/app/src/main/res/layout-sw400dp/fragment_recovery_phrase.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw400dp/view_seed_reminder.xml b/app/src/main/res/layout-sw400dp/view_seed_reminder.xml
deleted file mode 100644
index 5be50ebe6c..0000000000
--- a/app/src/main/res/layout-sw400dp/view_seed_reminder.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_conversation_v2.xml b/app/src/main/res/layout/activity_conversation_v2.xml
index 4d38e2ab5b..91c60f2126 100644
--- a/app/src/main/res/layout/activity_conversation_v2.xml
+++ b/app/src/main/res/layout/activity_conversation_v2.xml
@@ -279,6 +279,7 @@
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/outdatedBanner"
android:elevation="8dp"
+ android:contentDescription="@string/AccessibilityId_control_message"
tools:text="@string/activity_conversation_empty_state_default"
/>
diff --git a/app/src/main/res/layout/activity_display_name.xml b/app/src/main/res/layout/activity_display_name.xml
deleted file mode 100644
index 54351693b0..0000000000
--- a/app/src/main/res/layout/activity_display_name.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index 124a44b374..dc129821da 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -94,7 +94,7 @@
android:background="?android:dividerHorizontal"
android:elevation="1dp" />
-
-
-
-
-
-
-
-
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="gone"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_link_device.xml b/app/src/main/res/layout/activity_link_device.xml
index b267c08ac8..5c93e251c9 100644
--- a/app/src/main/res/layout/activity_link_device.xml
+++ b/app/src/main/res/layout/activity_link_device.xml
@@ -1,7 +1,6 @@
@@ -18,28 +17,4 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_pn_mode.xml b/app/src/main/res/layout/activity_pn_mode.xml
deleted file mode 100644
index 0cdbeb992a..0000000000
--- a/app/src/main/res/layout/activity_pn_mode.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_qr_code.xml b/app/src/main/res/layout/activity_qr_code.xml
deleted file mode 100644
index 58c7e40c82..0000000000
--- a/app/src/main/res/layout/activity_qr_code.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml
deleted file mode 100644
index e2434e7c77..0000000000
--- a/app/src/main/res/layout/activity_register.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_seed.xml b/app/src/main/res/layout/activity_seed.xml
deleted file mode 100644
index 4587bc01df..0000000000
--- a/app/src/main/res/layout/activity_seed.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index d84f183b5c..02854d53d6 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -30,7 +30,6 @@
@@ -86,393 +83,13 @@
android:textColor="?android:textColorPrimary"
android:fontFamily="@font/space_mono_regular"
android:textAlignment="center"
- android:contentDescription="@string/AccessibilityId_session_id"
+ android:contentDescription="@string/AccessibilityId_account_id"
tools:text="05987d601943c267879be41830888066c6a024cbdc9a548d06813924bf3372ea78" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"/>
+ android:text="@string/activity_conversation_menu_copy_account_id" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_recovery_phrase.xml b/app/src/main/res/layout/fragment_recovery_phrase.xml
deleted file mode 100644
index 674c194044..0000000000
--- a/app/src/main/res/layout/fragment_recovery_phrase.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_user_details_bottom_sheet.xml b/app/src/main/res/layout/fragment_user_details_bottom_sheet.xml
index eb0ccd9961..eaad4bd8b8 100644
--- a/app/src/main/res/layout/fragment_user_details_bottom_sheet.xml
+++ b/app/src/main/res/layout/fragment_user_details_bottom_sheet.xml
@@ -91,7 +91,6 @@
android:textAlignment="center"
android:paddingVertical="12dp"
android:inputType="text"
- android:maxLength="@integer/max_user_nickname_length_chars"
android:maxLines="1"
android:imeOptions="actionDone"
android:textColorHint="?android:textColorSecondary"
@@ -110,12 +109,12 @@
diff --git a/app/src/main/res/layout/view_contact.xml b/app/src/main/res/layout/view_contact.xml
deleted file mode 100644
index ceb4304cc7..0000000000
--- a/app/src/main/res/layout/view_contact.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_fake_chat.xml b/app/src/main/res/layout/view_fake_chat.xml
deleted file mode 100644
index 654cbd86bf..0000000000
--- a/app/src/main/res/layout/view_fake_chat.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_global_search_input.xml b/app/src/main/res/layout/view_global_search_input.xml
index d559d52aeb..38a872ad10 100644
--- a/app/src/main/res/layout/view_global_search_input.xml
+++ b/app/src/main/res/layout/view_global_search_input.xml
@@ -15,11 +15,13 @@
app:layout_constraintEnd_toStartOf="@+id/search_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:gravity="center"
+ android:minHeight="40dp"
android:orientation="horizontal">
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_seed_reminder.xml b/app/src/main/res/layout/view_seed_reminder.xml
deleted file mode 100644
index 850ceaef5a..0000000000
--- a/app/src/main/res/layout/view_seed_reminder.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_separator.xml b/app/src/main/res/layout/view_separator.xml
index aca7f26d23..1ab0036692 100644
--- a/app/src/main/res/layout/view_separator.xml
+++ b/app/src/main/res/layout/view_separator.xml
@@ -27,7 +27,7 @@
android:gravity="center"
android:textColor="?android:textColorTertiary"
android:textSize="@dimen/small_font_size"
- android:text="@string/your_session_id" />
+ android:text="@string/your_account_id" />
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_conversation_copy_session_id.xml b/app/src/main/res/menu/menu_conversation_copy_account_id.xml
similarity index 64%
rename from app/src/main/res/menu/menu_conversation_copy_session_id.xml
rename to app/src/main/res/menu/menu_conversation_copy_account_id.xml
index 68a546ba9f..e6206b81e9 100644
--- a/app/src/main/res/menu/menu_conversation_copy_session_id.xml
+++ b/app/src/main/res/menu/menu_conversation_copy_account_id.xml
@@ -3,9 +3,9 @@
xmlns:android="http://schemas.android.com/apk/res/android">
+ android:contentDescription="@string/AccessibilityId_copy_account_id"/>
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_conversation_item_action.xml b/app/src/main/res/menu/menu_conversation_item_action.xml
index ea81685617..6bf96590a3 100644
--- a/app/src/main/res/menu/menu_conversation_item_action.xml
+++ b/app/src/main/res/menu/menu_conversation_item_action.xml
@@ -53,7 +53,7 @@
app:showAsAction="never" />
diff --git a/app/src/main/res/menu/menu_pn_mode.xml b/app/src/main/res/menu/menu_pn_mode.xml
deleted file mode 100644
index a3dcff339d..0000000000
--- a/app/src/main/res/menu/menu_pn_mode.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
diff --git a/app/src/main/res/menu/settings_general.xml b/app/src/main/res/menu/settings_general.xml
index a965be5fb1..48100eddaa 100644
--- a/app/src/main/res/menu/settings_general.xml
+++ b/app/src/main/res/menu/settings_general.xml
@@ -6,6 +6,7 @@
diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml
index 0e11ce4603..c4b3afcdac 100644
--- a/app/src/main/res/values-ar-rSA/strings.xml
+++ b/app/src/main/res/values-ar-rSA/strings.xml
@@ -571,27 +571,24 @@
تم النسخ الى الحافظة المؤقتةالتاليشارك
- عنوان تعريف خاطئ
+ عنوان تعريف خاطئإلغاء
- عنوان تعريفك
- اِبدأ من هنا...
- أنشئ عنوان تعريف
- واصل بالحساب القديم
+ عنوان تعريفكما هي الجلسة (Session)؟هو تطبيق مراسلة مشفر, لامركزياِذن لا يقوم بجمع المعلومات الشخصية أو المعلومات الوصفية لمحادثاتي؟ كيف يعمل؟باِستخدام مُركَب من تكنولوجيات التشفير من الطرفين و توجيه مجهول للمعلومات.الأصدقاء لا يتركون أصدقائهم يستعملون تطبيق مراسلة مكشوف. مرحبا بك.
- رحب بعنوان تعريفك
- عنوان تعريفك هو عنوان وحيد خاص بك, يمكن للناس الاتصال بك عن طريقه. دون معرفة هويتك الحقيقية, هذا العنوان مصمم ليكون خاص و مجهول.
+
+
استرجع حسابكأدخل عبارة الأسترجاع التي اعطيت لك عندما سجلت الدخول لاِسترجاع حسابك.ادخل عبارة الاسترجاع
- أختر اِسم الاِظهار
- هذا سيكون اِسمك عندما تستخدم Session. قد يكون اِسمك الحقيقي, اِسم مستعار أو اي شيئ ترغب به.
- ادخل اسم الِاظهار
- اِختر اسم من فضلك
- اِختر اسم اقصر من فضلك
+ أختر اِسم الاِظهار
+ هذا سيكون اِسمك عندما تستخدم Session. قد يكون اِسمك الحقيقي, اِسم مستعار أو اي شيئ ترغب به.
+ ادخل اسم الِاظهار
+ اِختر اسم من فضلك
+ اِختر اسم اقصر من فضلكمحبذاِخترلا تملك اي متصلين لحد الان
@@ -600,11 +597,6 @@
"لا يمكن مغادرة المجموعة"هل أنت متأكد من حذفك المحادثة؟تم حذف المحادثة
- عبارة الاسترجاع
- هذه هي عبارة الاسترجاع
- عبارة الاسترجاع هي مفتاح عنوان تعريفك - يمكنك استخدامها لاسترجاع عنوان تعريفك اذا فقدت الوصول لجهازك. قم بحفظها في مكان امن و لا تعطها الى اي أحد.
- انقر مطولاً للكشف
- انت على وشك الإنتهاء! ٨٠٪أمّن حسابك بحفظ كلمات إسترجاع الحسابانقر بإستمرار على الكلمات المغطاة للكشف عن كلمات إسترداد حسابك، ثم قم بتخزينها بأمان للحفاظ على معرّف الجلسة الخاص بك.تأكد من الإحتفاظ بكلمات الإسترجاع الخاصة بك في مكان آمن
@@ -617,7 +609,7 @@
لمعرفة المزيدجار ربط الاِتصال…جلسة جديدة
- أدخِل معرّف الجلسة
+ أدخِل معرّف الجلسةمسح رمز الاستجابة السريع\"QR\"امسح رمز QR المستخدم لبدء جلسة معه. يمكن الحصول على رموز الـQR بالضغط على أيقونة رمز الـQR في إعدادات الحساب.أدخل عنوان التعريف أو اسم ONS
@@ -649,7 +641,6 @@
الأجهزةأُدع صديقالأسئلة الأكثر طرحاً
- عبارة الإستردادمسح البياناتمسح البيانات بما في ذلك الشبكةساعدنا في ترجمة سيشن
@@ -662,8 +653,6 @@
سوف يتم تنبيهك بالرسائل الجديدة بشكل موثوق و فوري بإستخدام خوادم غوغل.غَير الاسمألغي ربط الجهاز
- عبارة الاسترجاع الخاصة بك
- هذه هي عبارة الاِسترجاع, يمكن بواسطتها اِسترجاع عنوان التعريف أو الاِنتقال اِلى جهاز جديد.اِمسح جميع البياناتسيؤدي هذا إلى حذف رسائلك, محادثاتك و متصليك نهائيا.هل تريد مسح من هذا الجهاز فقط، أو حذف حسابك كليا ؟
@@ -697,7 +686,7 @@
نهارليلاختيارات النضام
- اِنسخ رابط التعريف
+ اِنسخ رابط التعريفمُرفقرسالة صوتيةتفاصيل
@@ -707,7 +696,6 @@
اِختر ملف النسخ الاحتياطي وأدخل عبارة المرور التي تم إنشاؤه بها.جملة مرور مكونة من 30 عنصرهذا يستغرق بعض الوقت، هل تريد أن تتخطى؟
- اربط جهازجملة الاسترجاعاِفحص رمز QRاِذهب إلى التعديلات جملة الاِسترجاع في جهازك الاآخر لإظهار رمز QR الخاص بك.
@@ -718,7 +706,6 @@
الوضع البطيءسوف يتم إشعارك بالرسائل بشكل موثوق و فوري بإستخدام خوادم جوجل للإشعارات.سيقوم سيشن بالتحقق من وجود رسائل جديدة بشكل دوري في الخلفية.
- عبارة الإستردادإن سيشن مُقفَلانقر للفتحأدخل اسم
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 0e11ce4603..c4b3afcdac 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -571,27 +571,24 @@
تم النسخ الى الحافظة المؤقتةالتاليشارك
- عنوان تعريف خاطئ
+ عنوان تعريف خاطئإلغاء
- عنوان تعريفك
- اِبدأ من هنا...
- أنشئ عنوان تعريف
- واصل بالحساب القديم
+ عنوان تعريفكما هي الجلسة (Session)؟هو تطبيق مراسلة مشفر, لامركزياِذن لا يقوم بجمع المعلومات الشخصية أو المعلومات الوصفية لمحادثاتي؟ كيف يعمل؟باِستخدام مُركَب من تكنولوجيات التشفير من الطرفين و توجيه مجهول للمعلومات.الأصدقاء لا يتركون أصدقائهم يستعملون تطبيق مراسلة مكشوف. مرحبا بك.
- رحب بعنوان تعريفك
- عنوان تعريفك هو عنوان وحيد خاص بك, يمكن للناس الاتصال بك عن طريقه. دون معرفة هويتك الحقيقية, هذا العنوان مصمم ليكون خاص و مجهول.
+
+
استرجع حسابكأدخل عبارة الأسترجاع التي اعطيت لك عندما سجلت الدخول لاِسترجاع حسابك.ادخل عبارة الاسترجاع
- أختر اِسم الاِظهار
- هذا سيكون اِسمك عندما تستخدم Session. قد يكون اِسمك الحقيقي, اِسم مستعار أو اي شيئ ترغب به.
- ادخل اسم الِاظهار
- اِختر اسم من فضلك
- اِختر اسم اقصر من فضلك
+ أختر اِسم الاِظهار
+ هذا سيكون اِسمك عندما تستخدم Session. قد يكون اِسمك الحقيقي, اِسم مستعار أو اي شيئ ترغب به.
+ ادخل اسم الِاظهار
+ اِختر اسم من فضلك
+ اِختر اسم اقصر من فضلكمحبذاِخترلا تملك اي متصلين لحد الان
@@ -600,11 +597,6 @@
"لا يمكن مغادرة المجموعة"هل أنت متأكد من حذفك المحادثة؟تم حذف المحادثة
- عبارة الاسترجاع
- هذه هي عبارة الاسترجاع
- عبارة الاسترجاع هي مفتاح عنوان تعريفك - يمكنك استخدامها لاسترجاع عنوان تعريفك اذا فقدت الوصول لجهازك. قم بحفظها في مكان امن و لا تعطها الى اي أحد.
- انقر مطولاً للكشف
- انت على وشك الإنتهاء! ٨٠٪أمّن حسابك بحفظ كلمات إسترجاع الحسابانقر بإستمرار على الكلمات المغطاة للكشف عن كلمات إسترداد حسابك، ثم قم بتخزينها بأمان للحفاظ على معرّف الجلسة الخاص بك.تأكد من الإحتفاظ بكلمات الإسترجاع الخاصة بك في مكان آمن
@@ -617,7 +609,7 @@
لمعرفة المزيدجار ربط الاِتصال…جلسة جديدة
- أدخِل معرّف الجلسة
+ أدخِل معرّف الجلسةمسح رمز الاستجابة السريع\"QR\"امسح رمز QR المستخدم لبدء جلسة معه. يمكن الحصول على رموز الـQR بالضغط على أيقونة رمز الـQR في إعدادات الحساب.أدخل عنوان التعريف أو اسم ONS
@@ -649,7 +641,6 @@
الأجهزةأُدع صديقالأسئلة الأكثر طرحاً
- عبارة الإستردادمسح البياناتمسح البيانات بما في ذلك الشبكةساعدنا في ترجمة سيشن
@@ -662,8 +653,6 @@
سوف يتم تنبيهك بالرسائل الجديدة بشكل موثوق و فوري بإستخدام خوادم غوغل.غَير الاسمألغي ربط الجهاز
- عبارة الاسترجاع الخاصة بك
- هذه هي عبارة الاِسترجاع, يمكن بواسطتها اِسترجاع عنوان التعريف أو الاِنتقال اِلى جهاز جديد.اِمسح جميع البياناتسيؤدي هذا إلى حذف رسائلك, محادثاتك و متصليك نهائيا.هل تريد مسح من هذا الجهاز فقط، أو حذف حسابك كليا ؟
@@ -697,7 +686,7 @@
نهارليلاختيارات النضام
- اِنسخ رابط التعريف
+ اِنسخ رابط التعريفمُرفقرسالة صوتيةتفاصيل
@@ -707,7 +696,6 @@
اِختر ملف النسخ الاحتياطي وأدخل عبارة المرور التي تم إنشاؤه بها.جملة مرور مكونة من 30 عنصرهذا يستغرق بعض الوقت، هل تريد أن تتخطى؟
- اربط جهازجملة الاسترجاعاِفحص رمز QRاِذهب إلى التعديلات جملة الاِسترجاع في جهازك الاآخر لإظهار رمز QR الخاص بك.
@@ -718,7 +706,6 @@
الوضع البطيءسوف يتم إشعارك بالرسائل بشكل موثوق و فوري بإستخدام خوادم جوجل للإشعارات.سيقوم سيشن بالتحقق من وجود رسائل جديدة بشكل دوري في الخلفية.
- عبارة الإستردادإن سيشن مُقفَلانقر للفتحأدخل اسم
diff --git a/app/src/main/res/values-az-rAZ/strings.xml b/app/src/main/res/values-az-rAZ/strings.xml
index 2f33cdbc67..b516b4d482 100644
--- a/app/src/main/res/values-az-rAZ/strings.xml
+++ b/app/src/main/res/values-az-rAZ/strings.xml
@@ -525,27 +525,24 @@
Lövhəyə kopyalandıNövbətiPaylaş
- Etibarsız Session Kimliyi
+ Etibarsız Session Kimliyiİmtina
- Session Kimliyiniz
- Session-unuz burada başlayır...
- Session Kimliyini yarat
- Seansınıza davam edin
+ Session KimliyinizSession nədir?Mərkəzi olmayan, şifrəli bir mesajlaşma tətbiqidirYəni, şəxsi məlumatlarımı və ya danışıq meta verilənlərimi yığmır? Necə işləyir?Qabaqcıl anonim yönləndirmə və bir ucdan digərinə qədər şifrələmə texnologiyalarının kombinasiyasını istifadə edir.Dostlar, dostlarının güvənliyi qorunmayan messencerlərdən istifadə etməsinə icazə verməz. Xoşdur, buyurun.
- Session kimliyinizə salam deyin
- Session kimliyiniz, əlaqələrin Session-da sizinlə əlaqə saxlamaq üçün istifadə edəcəyi unikal bir ünvandır. Gerçək kimliyinizlə heç bir bağlantısı olmadan, Session kimliyiniz, ümumilikdə anonimlik və gizlilik üzərinə dizayn edilmişdir.
+
+
Hesabınızı bərpa edinHesabınızı bərpa etmək üçün qeydiyyatdan keçərkən sizə verliən bərpa paroluunu daxil edin.Bərpa parolunu daxil edin
- Ekran adınızı seçin
- Bu, Session istifadə edərkən adınız olacaq. Gerçək adınız, ləqəbiniz və ya istədiyiniz başqa bir ad ola bilər.
- Ekran adını daxil edin
- Zəhmət olmasa bir ekran adı seçin
- Zəhmət olmasa qısa bir ekran adı seçin
+ Ekran adınızı seçin
+ Bu, Session istifadə edərkən adınız olacaq. Gerçək adınız, ləqəbiniz və ya istədiyiniz başqa bir ad ola bilər.
+ Ekran adını daxil edin
+ Zəhmət olmasa bir ekran adı seçin
+ Zəhmət olmasa qısa bir ekran adı seçinTövsiyə edilənZəhmət olmasa bir variant seçinHələ ki, heç bir əlaqəniz yoxdur
@@ -554,11 +551,6 @@
"Qrupu tərk etmək alınmadı"Bu danışığı silmək istədiyinizə əminsiniz?Danışıq silindi
- Bərpa parolunuz
- Bərpa parolunuzla tanış olun
- Bərpa parolunuz, Session kimliyinizin ana açarıdır - cihazınıza müraciəti itirsəniz, Session kimliyinizi geri yükləmək üçün bunu istifadə edə bilərsiniz. Bərpa parolunuzu etibarlı bir yerdə saxlayın və heç kəsə verməyin.
- Aşkarlamaq üçün basılı saxlayın
- Demək olar ki, bitdi! 80%Bərpa parolunuzu bir yerdə saxlayaraq hesabınızı qoruyunBərpa parolunuzu aşkarlamaq üçün düzəldilmiş sözlərə basılı saxlayın, daha sonra Session kimliyinizi qorumaq üçün güvənli bir yerdə saxlayın.Bərpa parolunuzu etibarlı bir yerdə saxladığınıza əmin olun
@@ -571,7 +563,7 @@
Daha ƏtraflıHəll edilir…Yeni Seans
- Session kimliyini daxil edin
+ Session kimliyini daxil edinQR kodu skan edinBir seans başlatmaq üçün istifadəçinin QR kodunu skan edin. QR kodları, hesab tənzimləmələrindəki QR kodu nişanına toxunaraq tapıla bilər.Session kimliyini və ya ONS adını daxil edin
@@ -603,7 +595,6 @@
CihazlarDostu dəvət edinTSS
- Bərpa paroluVerilənləri təmizləŞəbəkə daxil olmaqla verilənləri təmizləSession-un tərcüməsinə kömək et
@@ -616,8 +607,6 @@
Google-un bildiriş serverlərini istifadə edərək yeni mesajlardan dərhal və etibarlı şəkildə xəbərdar olacaqsınız.Adı dəyişdirCihazın əlaqəsini kəs
- Bərpa parolunuz
- Bu, bərpa parolunuzdur. Bununla, Session kimliyinizi bərpa edə və ya yeni bir cihaza daşıya bilərsiniz.Bütün verilənləri təmizləBu, bütün mesajlarınızı, seanslarınızı və əlaqələrinizi birdəfəlik siləcək.Yalnız bu cihazı silmək istəyirsiniz, yoxsa hesabınızın tamamını silmək istəyirsiniz?
@@ -651,7 +640,7 @@
GündüzGecəİlkin sistem
- Session kimliyini kopyala
+ Session kimliyini kopyalaQoşmaSəsyazmalı mesajTəfsilatlar
@@ -661,7 +650,6 @@
Bir nüsxə faylı seçin və ya yaradılan vaxt verilən parolu daxil edin.30 rəqəmli parolBu bir az vaxt apara bilər, ötürmək istəyirsiniz?
- Bir cihazla əlaqə yaratBərpa paroluQR kodu skan etQR kodunu göstərmək üçün digər cihazınızda Tənzimləmələr → \"Bərpa parolu\"na gedin.
@@ -672,7 +660,6 @@
Yavaş rejimGoogle-un bildiriş serverlərini istifadə edərək yeni mesajlardan dərhal və etibarlı şəkildə xəbərdar olacaqsınız.Session, arada arxaplanda yeni mesajları yoxlayacaq.
- Bərpa paroluSession kilidlidirKilidi açmaq üçün toxununBir ləqəb daxil edin
diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml
index 2f33cdbc67..e88cabda44 100644
--- a/app/src/main/res/values-az/strings.xml
+++ b/app/src/main/res/values-az/strings.xml
@@ -525,27 +525,22 @@
Lövhəyə kopyalandıNövbətiPaylaş
- Etibarsız Session Kimliyi
+ Etibarsız Session Kimliyiİmtina
- Session Kimliyiniz
- Session-unuz burada başlayır...
- Session Kimliyini yarat
- Seansınıza davam edin
+ Session KimliyinizSession nədir?Mərkəzi olmayan, şifrəli bir mesajlaşma tətbiqidirYəni, şəxsi məlumatlarımı və ya danışıq meta verilənlərimi yığmır? Necə işləyir?Qabaqcıl anonim yönləndirmə və bir ucdan digərinə qədər şifrələmə texnologiyalarının kombinasiyasını istifadə edir.Dostlar, dostlarının güvənliyi qorunmayan messencerlərdən istifadə etməsinə icazə verməz. Xoşdur, buyurun.
- Session kimliyinizə salam deyin
- Session kimliyiniz, əlaqələrin Session-da sizinlə əlaqə saxlamaq üçün istifadə edəcəyi unikal bir ünvandır. Gerçək kimliyinizlə heç bir bağlantısı olmadan, Session kimliyiniz, ümumilikdə anonimlik və gizlilik üzərinə dizayn edilmişdir.Hesabınızı bərpa edinHesabınızı bərpa etmək üçün qeydiyyatdan keçərkən sizə verliən bərpa paroluunu daxil edin.Bərpa parolunu daxil edin
- Ekran adınızı seçin
- Bu, Session istifadə edərkən adınız olacaq. Gerçək adınız, ləqəbiniz və ya istədiyiniz başqa bir ad ola bilər.
- Ekran adını daxil edin
- Zəhmət olmasa bir ekran adı seçin
- Zəhmət olmasa qısa bir ekran adı seçin
+ Ekran adınızı seçin
+ Bu, Session istifadə edərkən adınız olacaq. Gerçək adınız, ləqəbiniz və ya istədiyiniz başqa bir ad ola bilər.
+ Ekran adını daxil edin
+ Zəhmət olmasa bir ekran adı seçin
+ Zəhmət olmasa qısa bir ekran adı seçinTövsiyə edilənZəhmət olmasa bir variant seçinHələ ki, heç bir əlaqəniz yoxdur
@@ -554,11 +549,6 @@
"Qrupu tərk etmək alınmadı"Bu danışığı silmək istədiyinizə əminsiniz?Danışıq silindi
- Bərpa parolunuz
- Bərpa parolunuzla tanış olun
- Bərpa parolunuz, Session kimliyinizin ana açarıdır - cihazınıza müraciəti itirsəniz, Session kimliyinizi geri yükləmək üçün bunu istifadə edə bilərsiniz. Bərpa parolunuzu etibarlı bir yerdə saxlayın və heç kəsə verməyin.
- Aşkarlamaq üçün basılı saxlayın
- Demək olar ki, bitdi! 80%Bərpa parolunuzu bir yerdə saxlayaraq hesabınızı qoruyunBərpa parolunuzu aşkarlamaq üçün düzəldilmiş sözlərə basılı saxlayın, daha sonra Session kimliyinizi qorumaq üçün güvənli bir yerdə saxlayın.Bərpa parolunuzu etibarlı bir yerdə saxladığınıza əmin olun
@@ -571,7 +561,7 @@
Daha ƏtraflıHəll edilir…Yeni Seans
- Session kimliyini daxil edin
+ Session kimliyini daxil edinQR kodu skan edinBir seans başlatmaq üçün istifadəçinin QR kodunu skan edin. QR kodları, hesab tənzimləmələrindəki QR kodu nişanına toxunaraq tapıla bilər.Session kimliyini və ya ONS adını daxil edin
@@ -603,7 +593,6 @@
CihazlarDostu dəvət edinTSS
- Bərpa paroluVerilənləri təmizləŞəbəkə daxil olmaqla verilənləri təmizləSession-un tərcüməsinə kömək et
@@ -616,8 +605,6 @@
Google-un bildiriş serverlərini istifadə edərək yeni mesajlardan dərhal və etibarlı şəkildə xəbərdar olacaqsınız.Adı dəyişdirCihazın əlaqəsini kəs
- Bərpa parolunuz
- Bu, bərpa parolunuzdur. Bununla, Session kimliyinizi bərpa edə və ya yeni bir cihaza daşıya bilərsiniz.Bütün verilənləri təmizləBu, bütün mesajlarınızı, seanslarınızı və əlaqələrinizi birdəfəlik siləcək.Yalnız bu cihazı silmək istəyirsiniz, yoxsa hesabınızın tamamını silmək istəyirsiniz?
@@ -651,7 +638,7 @@
GündüzGecəİlkin sistem
- Session kimliyini kopyala
+ Session kimliyini kopyalaQoşmaSəsyazmalı mesajTəfsilatlar
@@ -661,7 +648,6 @@
Bir nüsxə faylı seçin və ya yaradılan vaxt verilən parolu daxil edin.30 rəqəmli parolBu bir az vaxt apara bilər, ötürmək istəyirsiniz?
- Bir cihazla əlaqə yaratBərpa paroluQR kodu skan etQR kodunu göstərmək üçün digər cihazınızda Tənzimləmələr → \"Bərpa parolu\"na gedin.
@@ -672,7 +658,6 @@
Yavaş rejimGoogle-un bildiriş serverlərini istifadə edərək yeni mesajlardan dərhal və etibarlı şəkildə xəbərdar olacaqsınız.Session, arada arxaplanda yeni mesajları yoxlayacaq.
- Bərpa paroluSession kilidlidirKilidi açmaq üçün toxununBir ləqəb daxil edin
diff --git a/app/src/main/res/values-bal-rBA/strings.xml b/app/src/main/res/values-bal-rBA/strings.xml
index 040da442f3..f47408b9a6 100644
--- a/app/src/main/res/values-bal-rBA/strings.xml
+++ b/app/src/main/res/values-bal-rBA/strings.xml
@@ -423,27 +423,24 @@ memproses pertukaran kunci korupsi.Salin ke clipboardSelanjutnyaBagikan
- Session salah
+ Session salahBatal
- Session ID anda
- Session anda dimulai di sini
- Buat Session ID
- Lanjutkan Session
+ Account ID andaApa itu Session?Session adalah aplikasi pesan terenkripsi yang terdesentralisasiBagaimana dengan pengumpulan informasi personal atau metadata percakapan? Bagaimana cara kerjanya?Menggunakan kombinasi routing yang anonim canggih dan teknologi enkripsi ujung-ke-ujung (end-to-end encryption)Rekan yang baik tak membiarkan rekannya menggunakan aplikasi bertukar pesan yang tak aman. Terima kasih kembali.
- Ucapkan halo pada Session ID anda
- Session ID adalah alamat unik yang bisa digunakan untuk mengontak anda. Tanpa koneksi dengan identitas asli, Session ID anda didesain bersifat anonim dan rahasia.
+
+
Kembalikan akunMasukkan kata pemulihan yang diberikan saat anda mencoba masuk ke akunmasukan kata pemulihan
- Pilih nama yang ditampilkan
- Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka
- Masukkan nama
- Pilih nama yang ditampilkan
- Nama yang dibuat terlalu panjang
+ Pilih nama yang ditampilkan
+ Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka
+ Masukkan nama
+ Pilih nama yang ditampilkan
+ Nama yang dibuat terlalu panjangDirekomendasikanPilih salah satu opsiAnda belum memiliki kontak
@@ -452,12 +449,8 @@ memproses pertukaran kunci korupsi."Tak bisa meninggalkan grup"Apakah anda yakin ingin menghapus percakapan ini?Percakapan terhapus
- Kata pemulihan anda
- Inilah kata pemulihan anda
- Kata pemulihan adalah kunci Session ID -- bisa digunakan untuk mengembalikan Session ID ketika anda kehilangan perangkat. Simpan kata pemulihan di tempat yang aman dan jangan berikan kepada siapapun
- Tekan untuk melihatAmankan akun anda dengan menyimpan kata pemulihan
- Ketuk dan tekan kata yang disensor untuk mengetahui kata pemulihan anda, lalu simpan baik-baik untuk mengamnkan Session ID anda
+ Ketuk dan tekan kata yang disensor untuk mengetahui kata pemulihan anda, lalu simpan baik-baik untuk mengamnkan Account ID andaPastikan untuk menyimpan kata pemulihan di tempat yang amanSession menyembunyikan IP dengan memantulkan pesan melalui berbagai simpul layanan di jaringan Session yang terdesentralisasi. Ini adalah negara yang menjadi lokasi pesan anda dipantulkanAnda
@@ -466,10 +459,10 @@ memproses pertukaran kunci korupsi.TujuanPelajari lebih lanjutSession baru
- Masukkan Session ID
+ Masukkan Account IDPindai kode QRPindai kode QR pengguna lain untuk memulai Session. Kode QR bisa ditemukan dengan mengetukan gambar kode QR di pengaturan akun
- Pengguna bisa membagikan Session ID miliknya dengan masuk ke pengaturan akun dan mengetuk \"Bagikan Session ID\" atau dengan membagikan kode QR mereka
+ Pengguna bisa membagikan Account ID miliknya dengan masuk ke pengaturan akun dan mengetuk \"Bagikan Account ID\" atau dengan membagikan kode QR merekaSession membutuhkan akses kamera untuk memindai kode QRBerikan akses kameraGrup tertutup baru
@@ -493,7 +486,6 @@ memproses pertukaran kunci korupsi.NotifikasiPercakapanPerangkat
- Kata pemulihanHapus dataNotifikasiGaya notifikasi
@@ -502,8 +494,6 @@ memproses pertukaran kunci korupsi.Strategi notofikasiUbah namaPutuskan koneksi dengan perangkat
- Kata pemulihan anda
- Ini adalah kata pemulihan anda. Gunakan untuk mengembalikan atau memindahkan Session ID anda ke perangkat lainHapus semua dataPesan, Session, dan kontak anda akan dihapus secara permanenKode QR
diff --git a/app/src/main/res/values-bal/strings.xml b/app/src/main/res/values-bal/strings.xml
index 040da442f3..f47408b9a6 100644
--- a/app/src/main/res/values-bal/strings.xml
+++ b/app/src/main/res/values-bal/strings.xml
@@ -423,27 +423,24 @@ memproses pertukaran kunci korupsi.Salin ke clipboardSelanjutnyaBagikan
- Session salah
+ Session salahBatal
- Session ID anda
- Session anda dimulai di sini
- Buat Session ID
- Lanjutkan Session
+ Account ID andaApa itu Session?Session adalah aplikasi pesan terenkripsi yang terdesentralisasiBagaimana dengan pengumpulan informasi personal atau metadata percakapan? Bagaimana cara kerjanya?Menggunakan kombinasi routing yang anonim canggih dan teknologi enkripsi ujung-ke-ujung (end-to-end encryption)Rekan yang baik tak membiarkan rekannya menggunakan aplikasi bertukar pesan yang tak aman. Terima kasih kembali.
- Ucapkan halo pada Session ID anda
- Session ID adalah alamat unik yang bisa digunakan untuk mengontak anda. Tanpa koneksi dengan identitas asli, Session ID anda didesain bersifat anonim dan rahasia.
+
+
Kembalikan akunMasukkan kata pemulihan yang diberikan saat anda mencoba masuk ke akunmasukan kata pemulihan
- Pilih nama yang ditampilkan
- Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka
- Masukkan nama
- Pilih nama yang ditampilkan
- Nama yang dibuat terlalu panjang
+ Pilih nama yang ditampilkan
+ Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka
+ Masukkan nama
+ Pilih nama yang ditampilkan
+ Nama yang dibuat terlalu panjangDirekomendasikanPilih salah satu opsiAnda belum memiliki kontak
@@ -452,12 +449,8 @@ memproses pertukaran kunci korupsi."Tak bisa meninggalkan grup"Apakah anda yakin ingin menghapus percakapan ini?Percakapan terhapus
- Kata pemulihan anda
- Inilah kata pemulihan anda
- Kata pemulihan adalah kunci Session ID -- bisa digunakan untuk mengembalikan Session ID ketika anda kehilangan perangkat. Simpan kata pemulihan di tempat yang aman dan jangan berikan kepada siapapun
- Tekan untuk melihatAmankan akun anda dengan menyimpan kata pemulihan
- Ketuk dan tekan kata yang disensor untuk mengetahui kata pemulihan anda, lalu simpan baik-baik untuk mengamnkan Session ID anda
+ Ketuk dan tekan kata yang disensor untuk mengetahui kata pemulihan anda, lalu simpan baik-baik untuk mengamnkan Account ID andaPastikan untuk menyimpan kata pemulihan di tempat yang amanSession menyembunyikan IP dengan memantulkan pesan melalui berbagai simpul layanan di jaringan Session yang terdesentralisasi. Ini adalah negara yang menjadi lokasi pesan anda dipantulkanAnda
@@ -466,10 +459,10 @@ memproses pertukaran kunci korupsi.TujuanPelajari lebih lanjutSession baru
- Masukkan Session ID
+ Masukkan Account IDPindai kode QRPindai kode QR pengguna lain untuk memulai Session. Kode QR bisa ditemukan dengan mengetukan gambar kode QR di pengaturan akun
- Pengguna bisa membagikan Session ID miliknya dengan masuk ke pengaturan akun dan mengetuk \"Bagikan Session ID\" atau dengan membagikan kode QR mereka
+ Pengguna bisa membagikan Account ID miliknya dengan masuk ke pengaturan akun dan mengetuk \"Bagikan Account ID\" atau dengan membagikan kode QR merekaSession membutuhkan akses kamera untuk memindai kode QRBerikan akses kameraGrup tertutup baru
@@ -493,7 +486,6 @@ memproses pertukaran kunci korupsi.NotifikasiPercakapanPerangkat
- Kata pemulihanHapus dataNotifikasiGaya notifikasi
@@ -502,8 +494,6 @@ memproses pertukaran kunci korupsi.Strategi notofikasiUbah namaPutuskan koneksi dengan perangkat
- Kata pemulihan anda
- Ini adalah kata pemulihan anda. Gunakan untuk mengembalikan atau memindahkan Session ID anda ke perangkat lainHapus semua dataPesan, Session, dan kontak anda akan dihapus secara permanenKode QR
diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml
index f984a7d857..4d1fa98314 100644
--- a/app/src/main/res/values-bg-rBG/strings.xml
+++ b/app/src/main/res/values-bg-rBG/strings.xml
@@ -496,7 +496,6 @@
Копиране на обществен ключПродължи
- Продължете Вашата СесияВъзстановяване на профилВие
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index f984a7d857..4d1fa98314 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -496,7 +496,6 @@
Копиране на обществен ключПродължи
- Продължете Вашата СесияВъзстановяване на профилВие
diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml
index ff7a30c74f..46d156a746 100644
--- a/app/src/main/res/values-ca-rES/strings.xml
+++ b/app/src/main/res/values-ca-rES/strings.xml
@@ -517,27 +517,24 @@ d\'intercanvi de claus!Copiat al porta-retallsSegüentComparteix
- ID de Session invàlid
+ ID de Session invàlidCancel·la
- El teu ID de Session
- El teu Session comença aquí...
- Crea un ID de Session
- Continua el teu Session
+ El teu ID de SessionQuè és Session?És una app xifrada i descentralitzadaPer tant, no agafa les meves dades personals o les metadades de les meves converses? Com funciona?Fent servir una combinació de tecnologies d\'encaminament anònim avançat i un xifratge d\'extrem a extrem.Amics no deixis que els amics facin servir missatgeries compromeses. Sigueu benvinguts.
- Digues hola al teu ID de Session
- El teu ID de Session és l\'adreça única que els usuaris poden utilitzar per a contactar-te a Session. Sense cap connexió amb la teva identitat real, el teu ID de Session ID per disseny és totalment anònim i privat.
+
+
Restableix el teu compteIntrodueix la frase de recuperació que se\'t va proporcionar quan et vas registrar per a restaurar el compte.Introdueix la frase de recuperació
- Tria el nom que es mostrarà
- Aquest serà el teu nom quan facis servir Session. Pot ser el teu nom real, un àlies o qualsevol altra cosa que t\'agradi.
- Escriu el nom a mostrar
- Tria un nom a mostrar, si us plau
- Selecciona un nom de visualització més curt
+ Tria el nom que es mostrarà
+ Aquest serà el teu nom quan facis servir Session. Pot ser el teu nom real, un àlies o qualsevol altra cosa que t\'agradi.
+ Escriu el nom a mostrar
+ Tria un nom a mostrar, si us plau
+ Selecciona un nom de visualització més curtRecomanatSelecciona una opció, si us plauEncara no tens cap contacte
@@ -546,11 +543,6 @@ d\'intercanvi de claus!"No s'ha pogut marxar del grup"Estàs segur que vols esborrar aquesta conversa?S\'ha suprimit la conversa
- La teva frase de recuperació
- Coneix la teva frase de recuperació
- La teva frase de recuperació és la clau principal del teu ID de Session — pots fer-la servir per a restaurar la teva ID de Session si perds l\'accés al dispositiu. Emmagatzema la frase de recuperació en un lloc segur i no la donis a ningú.
- Mantingues premut per a revelar
- Gairebé has acabat! 80%Protegeix el teu compte desant la frase de recuperacióMantingues premudes les paraules redactades per a mostrar la teva frase de recuperació. Desa-la de manera segura per a protegir la teva ID de Session.Assegura\'t d\'emmagatzemar la frase de recuperació en un lloc segur
@@ -562,7 +554,7 @@ d\'intercanvi de claus!DestinacióAprèn-ne mésNova sessió
- Introdueix el teu ID de Session
+ Introdueix el teu ID de SessionEscaneja el codi QREscaneja el codi QR d’un usuari per a iniciar una sessió. Es poden trobar codis QR tocant la icona de codi QR a la configuració del compte.Els usuaris poden compartir el seu ID de Session accedint a la configuració del compte i tocant \'Comparteix l\'ID de Session\' o compartint el seu codi QR.
@@ -590,7 +582,6 @@ d\'intercanvi de claus!NotificacionsXatsDispositius
- Frase de recuperacióNeteja les dadesAjuda\'ns a traduir SessionNotificacions
@@ -600,8 +591,6 @@ d\'intercanvi de claus!Estratègia de les notificacionsCanvia el nomDesenllaça el dispositiu
- La teva frase de recuperació
- Aquesta és la teva frase de recuperació. Pots restaurar-ne o migrar-ne el teu ID de Session cap a un nou dispositiu.Esborra totes les dadesAixò esborrarà tots els missatges, sessions i contactes permanentment.Codi QR
@@ -632,7 +621,7 @@ d\'intercanvi de claus!DiaNitPer defecte del sistema
- Copia l\'ID de Session
+ Copia l\'ID de SessionAdjuntMissatge de veuDetalls
@@ -642,7 +631,6 @@ d\'intercanvi de claus!Selecciona un fitxer de còpia de seguretat i entra la frase de pas amb el qual va ser creat.Frase de pas de 30 dígitsAixò triga un xic, t\'ho vols saltar?
- Enllaça un dispositiuO uneix-te a alguns d\'aquests…Notificacions de missatgeHi ha dues maneres per les quals Session et pot notificar els missatges nous.
@@ -650,7 +638,6 @@ d\'intercanvi de claus!Mode lentEs notificaran els missatges de forma immediata i fiable fent servir els servidors de notificació de Google.Session ocasionalment comprovarà en pla secundari si hi ha nous missatges.
- Frase de recuperacióEl Session està blocatToca per a desblocarIntrodueix una sobrenom
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index ff7a30c74f..46d156a746 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -517,27 +517,24 @@ d\'intercanvi de claus!Copiat al porta-retallsSegüentComparteix
- ID de Session invàlid
+ ID de Session invàlidCancel·la
- El teu ID de Session
- El teu Session comença aquí...
- Crea un ID de Session
- Continua el teu Session
+ El teu ID de SessionQuè és Session?És una app xifrada i descentralitzadaPer tant, no agafa les meves dades personals o les metadades de les meves converses? Com funciona?Fent servir una combinació de tecnologies d\'encaminament anònim avançat i un xifratge d\'extrem a extrem.Amics no deixis que els amics facin servir missatgeries compromeses. Sigueu benvinguts.
- Digues hola al teu ID de Session
- El teu ID de Session és l\'adreça única que els usuaris poden utilitzar per a contactar-te a Session. Sense cap connexió amb la teva identitat real, el teu ID de Session ID per disseny és totalment anònim i privat.
+
+
Restableix el teu compteIntrodueix la frase de recuperació que se\'t va proporcionar quan et vas registrar per a restaurar el compte.Introdueix la frase de recuperació
- Tria el nom que es mostrarà
- Aquest serà el teu nom quan facis servir Session. Pot ser el teu nom real, un àlies o qualsevol altra cosa que t\'agradi.
- Escriu el nom a mostrar
- Tria un nom a mostrar, si us plau
- Selecciona un nom de visualització més curt
+ Tria el nom que es mostrarà
+ Aquest serà el teu nom quan facis servir Session. Pot ser el teu nom real, un àlies o qualsevol altra cosa que t\'agradi.
+ Escriu el nom a mostrar
+ Tria un nom a mostrar, si us plau
+ Selecciona un nom de visualització més curtRecomanatSelecciona una opció, si us plauEncara no tens cap contacte
@@ -546,11 +543,6 @@ d\'intercanvi de claus!"No s'ha pogut marxar del grup"Estàs segur que vols esborrar aquesta conversa?S\'ha suprimit la conversa
- La teva frase de recuperació
- Coneix la teva frase de recuperació
- La teva frase de recuperació és la clau principal del teu ID de Session — pots fer-la servir per a restaurar la teva ID de Session si perds l\'accés al dispositiu. Emmagatzema la frase de recuperació en un lloc segur i no la donis a ningú.
- Mantingues premut per a revelar
- Gairebé has acabat! 80%Protegeix el teu compte desant la frase de recuperacióMantingues premudes les paraules redactades per a mostrar la teva frase de recuperació. Desa-la de manera segura per a protegir la teva ID de Session.Assegura\'t d\'emmagatzemar la frase de recuperació en un lloc segur
@@ -562,7 +554,7 @@ d\'intercanvi de claus!DestinacióAprèn-ne mésNova sessió
- Introdueix el teu ID de Session
+ Introdueix el teu ID de SessionEscaneja el codi QREscaneja el codi QR d’un usuari per a iniciar una sessió. Es poden trobar codis QR tocant la icona de codi QR a la configuració del compte.Els usuaris poden compartir el seu ID de Session accedint a la configuració del compte i tocant \'Comparteix l\'ID de Session\' o compartint el seu codi QR.
@@ -590,7 +582,6 @@ d\'intercanvi de claus!
NotificacionsXatsDispositius
- Frase de recuperacióNeteja les dadesAjuda\'ns a traduir SessionNotificacions
@@ -600,8 +591,6 @@ d\'intercanvi de claus!
Estratègia de les notificacionsCanvia el nomDesenllaça el dispositiu
- La teva frase de recuperació
- Aquesta és la teva frase de recuperació. Pots restaurar-ne o migrar-ne el teu ID de Session cap a un nou dispositiu.Esborra totes les dadesAixò esborrarà tots els missatges, sessions i contactes permanentment.Codi QR
@@ -632,7 +621,7 @@ d\'intercanvi de claus!
DiaNitPer defecte del sistema
- Copia l\'ID de Session
+ Copia l\'ID de SessionAdjuntMissatge de veuDetalls
@@ -642,7 +631,6 @@ d\'intercanvi de claus!
Selecciona un fitxer de còpia de seguretat i entra la frase de pas amb el qual va ser creat.Frase de pas de 30 dígitsAixò triga un xic, t\'ho vols saltar?
- Enllaça un dispositiuO uneix-te a alguns d\'aquests…Notificacions de missatgeHi ha dues maneres per les quals Session et pot notificar els missatges nous.
@@ -650,7 +638,6 @@ d\'intercanvi de claus!
Mode lentEs notificaran els missatges de forma immediata i fiable fent servir els servidors de notificació de Google.Session ocasionalment comprovarà en pla secundari si hi ha nous missatges.
- Frase de recuperacióEl Session està blocatToca per a desblocarIntrodueix una sobrenom
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index ff36cc691a..1f3d993aa3 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -547,27 +547,24 @@
Zkopírováno do schránkyDalšíSdílet
- Neplatné Session ID
+ Neplatné Account IDZrušit
- ID vaší relace
- Vaše Session začíná zde...
- Vytvořit ID relace
- Pokračujte ve své relaci
+ ID vaší relaceCo je Session?Je to decentralizovaná a šifrovaná aplikace pro zasílání zprávTakže neshromažďuje mé osobní údaje ani metadata mých konverzací? Jak to funguje?Použitím kombinace pokročilých anonymních směrovacích a end-to-end šifrovacích technologií.Přátelé nenechávají přátelé používat kompromitované aplikace. Není zač.
- Přivítejte své nové Session ID
- Vaše Session ID je jedinečná adresa, kterou mohou lidé použít k vašemu kontaktování na Session. Bez jakékoli návaznosti na vaší skutečnou identitu je vaše Session ID stavbou zcela anonymní a soukromí chránící.
+
+
Obnovit účetZadejte frázi pro obnovení, která vám byla vygenerována během registrace účtu.Zadejte frázi pro obnovení
- Vaše jméno
- Toto bude váš pseudonym během používání Session. Může to být vaše skutečné jméno, alias, nebo cokoliv jiného, co se vám líbí.
- Zadejte pseudonym
- Vyberte prosím pseudonym
- Vyberte prosím kratší pseudonym
+ Vaše jméno
+ Toto bude váš pseudonym během používání Session. Může to být vaše skutečné jméno, alias, nebo cokoliv jiného, co se vám líbí.
+ Zadejte pseudonym
+ Vyberte prosím pseudonym
+ Vyberte prosím kratší pseudonymDoporučenoProsím vyberte možnostZatím nemáte žádné kontakty
@@ -576,13 +573,8 @@
"Skupinu se nepodařilo opustit"Opravdu chcete smazat tuto konverzaci?Konverzace byla smazána
- Vaše fráze pro obnovení
- Zadejte frázi pro obnovení
- Ahoj
- Podrž pro zobrazení
- Jste skoro u konce! 80 %Zabezpečte svůj účet uložením Vašich klíčových slov
- Pro zobrazení fráze pro obnovení klepněte a podržte redigovaná slova a poté ji bezpečně uložte, abyste si ochránili své Session ID.
+ Pro zobrazení fráze pro obnovení klepněte a podržte redigovaná slova a poté ji bezpečně uložte, abyste si ochránili své Account ID.Uchovejte svou frázi pro obnovení na bezpečném místěCestaSession skrývá IP adresu tak, že přesouvá zprávy mezi několika provozními uzly ve své vlastní decentralizované síti. Spojení probíhá v tuto chvíli mezi následujícími státy:
@@ -593,12 +585,12 @@
Další informacePřipojování…Nová relace
- Zadejte Session ID
+ Zadejte Account IDNaskenovat QR kódPro zahájení relace naskenujte QR kód uživatele. QR kódy lze nalézt po klepnutí na QR kód v nastavení účtu.
- Zadejte Session ID nebo název ONS
- Uživatelé mohou sdílet Session ID po klepnutí na \"Sdílet Session ID\" v nastavení účtu nebo sdílením svého QR kódu.
- Zkontrolujte prosím své Session ID nebo název ONS a zkuste to znovu.
+ Zadejte Account ID nebo název ONS
+ Uživatelé mohou sdílet Account ID po klepnutí na \"Sdílet Account ID\" v nastavení účtu nebo sdílením svého QR kódu.
+ Zkontrolujte prosím své Account ID nebo název ONS a zkuste to znovu.Session potřebuje přístup ke kameře, aby bylo možné skenovat QR kódyUdělit přístup k fotoaparátuNová uzavřená skupina
@@ -625,7 +617,6 @@
ZařízeníPozvat příteleČasto kladené dotazy
- Fráze pro obnoveníVymazat dataSmazat data včetně sítěPomozte nám přeložit Session
@@ -638,8 +629,6 @@
Budete spolehlivě a okamžitě informováni o nových zprávách pomocí oznamovacích serverů Google.Změnit jménoOdpojit zařízení
- Vaše fráze pro obnovení
- Toto je vaše fráze pro obnovení. S její pomocí můžete obnovit nebo přesunout své Session ID na nové zařízení.Vymazat všechna dataTímto trvale odstraníte vaše zprávy, relace a kontakty.Chcete vymazat data pouze na tomto zařízení, nebo odstranit celý účet?
@@ -673,7 +662,7 @@
DenNocVýchozí nastavení
- Kopírovat Session ID
+ Kopírovat Account IDPřílohaHlasová zprávaDetaily
@@ -683,7 +672,6 @@
Vyberte soubor se zálohou a vložte frázi pro obnovení, s níž byl vytvořen.Přístupové heslo o délce 30 číselTrvá to trochu déle, chcete přeskočit?
- Propojit zařízeníFráze pro obnoveníNaskenovat QR kódPřejděte do Nastavení → Fráze pro obnovení na vašem dalším zařízení a zobrazte svůj QR kód.
@@ -694,7 +682,6 @@
Pomalý režimBudete spolehlivě a okamžitě informováni o nových zprávách pomocí oznamovacích serverů Google.Session občas zkontroluje nové zprávy na pozadí.
- Fráze pro obnoveníSession je zamčenýKlepněte pro odemčeníZadej přezdívku
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index ff36cc691a..1f3d993aa3 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -547,27 +547,24 @@
Zkopírováno do schránkyDalšíSdílet
- Neplatné Session ID
+ Neplatné Account IDZrušit
- ID vaší relace
- Vaše Session začíná zde...
- Vytvořit ID relace
- Pokračujte ve své relaci
+ ID vaší relaceCo je Session?Je to decentralizovaná a šifrovaná aplikace pro zasílání zprávTakže neshromažďuje mé osobní údaje ani metadata mých konverzací? Jak to funguje?Použitím kombinace pokročilých anonymních směrovacích a end-to-end šifrovacích technologií.Přátelé nenechávají přátelé používat kompromitované aplikace. Není zač.
- Přivítejte své nové Session ID
- Vaše Session ID je jedinečná adresa, kterou mohou lidé použít k vašemu kontaktování na Session. Bez jakékoli návaznosti na vaší skutečnou identitu je vaše Session ID stavbou zcela anonymní a soukromí chránící.
+
+
Obnovit účetZadejte frázi pro obnovení, která vám byla vygenerována během registrace účtu.Zadejte frázi pro obnovení
- Vaše jméno
- Toto bude váš pseudonym během používání Session. Může to být vaše skutečné jméno, alias, nebo cokoliv jiného, co se vám líbí.
- Zadejte pseudonym
- Vyberte prosím pseudonym
- Vyberte prosím kratší pseudonym
+ Vaše jméno
+ Toto bude váš pseudonym během používání Session. Může to být vaše skutečné jméno, alias, nebo cokoliv jiného, co se vám líbí.
+ Zadejte pseudonym
+ Vyberte prosím pseudonym
+ Vyberte prosím kratší pseudonymDoporučenoProsím vyberte možnostZatím nemáte žádné kontakty
@@ -576,13 +573,8 @@
"Skupinu se nepodařilo opustit"Opravdu chcete smazat tuto konverzaci?Konverzace byla smazána
- Vaše fráze pro obnovení
- Zadejte frázi pro obnovení
- Ahoj
- Podrž pro zobrazení
- Jste skoro u konce! 80 %Zabezpečte svůj účet uložením Vašich klíčových slov
- Pro zobrazení fráze pro obnovení klepněte a podržte redigovaná slova a poté ji bezpečně uložte, abyste si ochránili své Session ID.
+ Pro zobrazení fráze pro obnovení klepněte a podržte redigovaná slova a poté ji bezpečně uložte, abyste si ochránili své Account ID.Uchovejte svou frázi pro obnovení na bezpečném místěCestaSession skrývá IP adresu tak, že přesouvá zprávy mezi několika provozními uzly ve své vlastní decentralizované síti. Spojení probíhá v tuto chvíli mezi následujícími státy:
@@ -593,12 +585,12 @@
Další informacePřipojování…Nová relace
- Zadejte Session ID
+ Zadejte Account IDNaskenovat QR kódPro zahájení relace naskenujte QR kód uživatele. QR kódy lze nalézt po klepnutí na QR kód v nastavení účtu.
- Zadejte Session ID nebo název ONS
- Uživatelé mohou sdílet Session ID po klepnutí na \"Sdílet Session ID\" v nastavení účtu nebo sdílením svého QR kódu.
- Zkontrolujte prosím své Session ID nebo název ONS a zkuste to znovu.
+ Zadejte Account ID nebo název ONS
+ Uživatelé mohou sdílet Account ID po klepnutí na \"Sdílet Account ID\" v nastavení účtu nebo sdílením svého QR kódu.
+ Zkontrolujte prosím své Account ID nebo název ONS a zkuste to znovu.Session potřebuje přístup ke kameře, aby bylo možné skenovat QR kódyUdělit přístup k fotoaparátuNová uzavřená skupina
@@ -625,7 +617,6 @@
ZařízeníPozvat příteleČasto kladené dotazy
- Fráze pro obnoveníVymazat dataSmazat data včetně sítěPomozte nám přeložit Session
@@ -638,8 +629,6 @@
Budete spolehlivě a okamžitě informováni o nových zprávách pomocí oznamovacích serverů Google.Změnit jménoOdpojit zařízení
- Vaše fráze pro obnovení
- Toto je vaše fráze pro obnovení. S její pomocí můžete obnovit nebo přesunout své Session ID na nové zařízení.Vymazat všechna dataTímto trvale odstraníte vaše zprávy, relace a kontakty.Chcete vymazat data pouze na tomto zařízení, nebo odstranit celý účet?
@@ -673,7 +662,7 @@
DenNocVýchozí nastavení
- Kopírovat Session ID
+ Kopírovat Account IDPřílohaHlasová zprávaDetaily
@@ -683,7 +672,6 @@
Vyberte soubor se zálohou a vložte frázi pro obnovení, s níž byl vytvořen.Přístupové heslo o délce 30 číselTrvá to trochu déle, chcete přeskočit?
- Propojit zařízeníFráze pro obnoveníNaskenovat QR kódPřejděte do Nastavení → Fráze pro obnovení na vašem dalším zařízení a zobrazte svůj QR kód.
@@ -694,7 +682,6 @@
Pomalý režimBudete spolehlivě a okamžitě informováni o nových zprávách pomocí oznamovacích serverů Google.Session občas zkontroluje nové zprávy na pozadí.
- Fráze pro obnoveníSession je zamčenýKlepněte pro odemčeníZadej přezdívku
diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml
index ca9600171c..7cfd927873 100644
--- a/app/src/main/res/values-da-rDK/strings.xml
+++ b/app/src/main/res/values-da-rDK/strings.xml
@@ -523,27 +523,24 @@ udveksel besked!
Kopieret til udklipsholderNæsteDel
- Ugyldigt Session ID
+ Ugyldigt Account IDAnnuller
- Dit Sessions-ID
- Dit eventyr med Session begynder her...
- Opret Session ID
- Fortsæt din Session
+ Dit Sessions-IDHvad er Session?Det er en decentraliseret, krypteret besked appSå den indsamler ikke mine personlige oplysninger eller min samtale metadata? Hvordan virker det?Ved hjælp af en kombination af avanceret anonym routing og end-to-end krypteringsteknologier.Venner lader ikke venner bruge usikre besked tjenester. Du er velkommen.
- Sig hej til dit Session ID
- Dit Session ID er den unikke adresse, som folk kan bruge til at kontakte dig i Session. Dit Session ID har ingen tilknytning til din rigtige identitet og er helt anonymt og privat.
+
+
Gendan din kontoAngiv den genoprettelsessætning, du fik, da du tilmeldte dig, for at kunne gendanne din konto.Angiv din genoprettelsessætning
- Vælg dit visningsnavn
- Dette vil være dit navn, når du bruger Session. Det kan være dit rigtige navn, et alias eller noget helt andet.
- Tast et visningsnavn
- Vælg venligst et display navn
- Vælg venligst et kortere display navn
+ Vælg dit visningsnavn
+ Dette vil være dit navn, når du bruger Session. Det kan være dit rigtige navn, et alias eller noget helt andet.
+ Tast et visningsnavn
+ Vælg venligst et display navn
+ Vælg venligst et kortere display navnAnbefaletDu har ingen kontakter endnuStart en Session
@@ -551,22 +548,17 @@ udveksel besked!
"Kunne ikke forlade gruppen"Er du sikker på, at du vil slette denne samtale?Samtale slettet
- Din gendannelsessætning
- Mød din gendannelsessætning
- Din gendannelsessætning er hovednøglen til dit Session ID - du kan bruge den til at gendanne dit Session ID, hvis du mister adgang til din enhed. Gem din gendannelsessætning på et sikkert sted, og giv det ikke til nogen.
- Hold nede for at se
- Du er næsten færdig! 80%Sikre din konto ved at gemme din gendannelsessætning
- Tryk og hold de redigerede ord for at afsløre din gendannelsessætning, og gem det derefter et sikkert sted for at sikre dit Session ID.
+ Tryk og hold de redigerede ord for at afsløre din gendannelsessætning, og gem det derefter et sikkert sted for at sikre dit Account ID.Sørg for at gemme din gendannelsessætning et sikkert stedStiDigDestinationLæs mereNy Session
- Indtast Session ID
+ Indtast Account IDSkan QR-kode
- Indtast Session ID eller ONS navn
+ Indtast Account ID eller ONS navnSession skal bruge kameraadgang for at scanne QR-koderTildel Adgang Til KameraIndtast et gruppenavn
@@ -585,7 +577,6 @@ udveksel besked!
EnhederInviter en venOfte stillede spørgsmål
- GendannelsesssætningRyd dataRyd Data Inklusiv NetværkHjælp os med at oversætte Session
@@ -628,14 +619,13 @@ udveksel besked!
DagNatSystemstandard
- Kopier Session ID
+ Kopier Account IDTalebeskedDetaljerKunne ikke aktivere sikkerhedskopier. Prøv igen, eller kontakt support.Gendan sikkerhedskopiVælg en filDette tager et stykke tid, vil du gerne springe over?
- Forbind en enhedGendannelsessætningSkan QR-kodeNaviger til Indstillinger → Gendannelsessætning på din anden enhed, for at vise din QR-kode.
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index ca9600171c..7cfd927873 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -523,27 +523,24 @@ udveksel besked!
Kopieret til udklipsholderNæsteDel
- Ugyldigt Session ID
+ Ugyldigt Account IDAnnuller
- Dit Sessions-ID
- Dit eventyr med Session begynder her...
- Opret Session ID
- Fortsæt din Session
+ Dit Sessions-IDHvad er Session?Det er en decentraliseret, krypteret besked appSå den indsamler ikke mine personlige oplysninger eller min samtale metadata? Hvordan virker det?Ved hjælp af en kombination af avanceret anonym routing og end-to-end krypteringsteknologier.Venner lader ikke venner bruge usikre besked tjenester. Du er velkommen.
- Sig hej til dit Session ID
- Dit Session ID er den unikke adresse, som folk kan bruge til at kontakte dig i Session. Dit Session ID har ingen tilknytning til din rigtige identitet og er helt anonymt og privat.
+
+
Gendan din kontoAngiv den genoprettelsessætning, du fik, da du tilmeldte dig, for at kunne gendanne din konto.Angiv din genoprettelsessætning
- Vælg dit visningsnavn
- Dette vil være dit navn, når du bruger Session. Det kan være dit rigtige navn, et alias eller noget helt andet.
- Tast et visningsnavn
- Vælg venligst et display navn
- Vælg venligst et kortere display navn
+ Vælg dit visningsnavn
+ Dette vil være dit navn, når du bruger Session. Det kan være dit rigtige navn, et alias eller noget helt andet.
+ Tast et visningsnavn
+ Vælg venligst et display navn
+ Vælg venligst et kortere display navnAnbefaletDu har ingen kontakter endnuStart en Session
@@ -551,22 +548,17 @@ udveksel besked!
"Kunne ikke forlade gruppen"Er du sikker på, at du vil slette denne samtale?Samtale slettet
- Din gendannelsessætning
- Mød din gendannelsessætning
- Din gendannelsessætning er hovednøglen til dit Session ID - du kan bruge den til at gendanne dit Session ID, hvis du mister adgang til din enhed. Gem din gendannelsessætning på et sikkert sted, og giv det ikke til nogen.
- Hold nede for at se
- Du er næsten færdig! 80%Sikre din konto ved at gemme din gendannelsessætning
- Tryk og hold de redigerede ord for at afsløre din gendannelsessætning, og gem det derefter et sikkert sted for at sikre dit Session ID.
+ Tryk og hold de redigerede ord for at afsløre din gendannelsessætning, og gem det derefter et sikkert sted for at sikre dit Account ID.Sørg for at gemme din gendannelsessætning et sikkert stedStiDigDestinationLæs mereNy Session
- Indtast Session ID
+ Indtast Account IDSkan QR-kode
- Indtast Session ID eller ONS navn
+ Indtast Account ID eller ONS navnSession skal bruge kameraadgang for at scanne QR-koderTildel Adgang Til KameraIndtast et gruppenavn
@@ -585,7 +577,6 @@ udveksel besked!
EnhederInviter en venOfte stillede spørgsmål
- GendannelsesssætningRyd dataRyd Data Inklusiv NetværkHjælp os med at oversætte Session
@@ -628,14 +619,13 @@ udveksel besked!
DagNatSystemstandard
- Kopier Session ID
+ Kopier Account IDTalebeskedDetaljerKunne ikke aktivere sikkerhedskopier. Prøv igen, eller kontakt support.Gendan sikkerhedskopiVælg en filDette tager et stykke tid, vil du gerne springe over?
- Forbind en enhedGendannelsessætningSkan QR-kodeNaviger til Indstillinger → Gendannelsessætning på din anden enhed, for at vise din QR-kode.
diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml
index 0b645e0317..32920f29e4 100644
--- a/app/src/main/res/values-de-rDE/strings.xml
+++ b/app/src/main/res/values-de-rDE/strings.xml
@@ -523,27 +523,24 @@
In die Zwischenablage kopiert.WeiterTeilen
- Ungültige Session ID
+ Ungültige Account IDAbbrechen
- Ihre Session ID
- Ihre Session beginnt hier...
- Session ID erstellen
- Ihre Session fortsetzen
+ Ihre Account IDWas ist Session?Es ist eine dezentrale, verschlüsselte Messaging-App.Es werden also weder meine persönlichen Daten noch die Metadaten meiner Konversation erfasst? Wie funktioniert das?Mit einer Kombination fortschrittlicher anonyme Routing- und End-to-End-Verschlüsselungstechnologien.Freunde lassen Freunde keine kompromittierten Messenger verwenden. Herzlich Willkommen.
- Das ist Ihre Session ID.
- Ihre Session ID ist die eindeutige Adresse, unter der Personen Sie über Session kontaktieren können. Ihre Session ID ist nicht mit Ihrer realen Identität verbunden, völlig anonym und von Natur aus privat.
+
+
Ihr Konto wiederherstellenGeben Sie den Wiederherstellungssatz ein, den Sie bei der Anmeldung zur Wiederherstellung Ihres Kontos erhalten haben.Ihr Wiederherstellungssatz
- Wählen Sie Ihren Anzeigenamen
- Dies ist Ihr Name, wenn Sie Session verwenden. Es kann Ihr richtiger Name, ein Alias oder etwas andere sein.
- Geben Sie einen Anzeigenamen ein
- Bitte wählen Sie einen Anzeigenamen
- Bitte wählen Sie einen kürzeren Anzeigenamen
+ Wählen Sie Ihren Anzeigenamen
+ Dies ist Ihr Name, wenn Sie Session verwenden. Es kann Ihr richtiger Name, ein Alias oder etwas andere sein.
+ Geben Sie einen Anzeigenamen ein
+ Bitte wählen Sie einen Anzeigenamen
+ Bitte wählen Sie einen kürzeren AnzeigenamenEmpfohlenBitte wählen Sie eine Option aus.Sie haben noch keine Kontakte.
@@ -552,13 +549,8 @@
"Gruppe konnte nicht verlassen werden."Möchten Sie diese Unterhaltung wirklich löschen?Die Unterhaltung wurde gelöscht.
- Ihr Wiederherstellungssatz
- Das ist Ihr Wiederherstellungssatz.
- Ihr Wiederherstellungssatz ist der Hauptschlüssel für Ihre Session ID. Mit diesem Satz können Sie Ihre Session ID wiederherstellen, wenn Sie den Zugriff auf Ihr Gerät verlieren. Bewahren Sie Ihren Wiederherstellungssatz an einem sicheren Ort auf und geben Sie ihn an niemandem weiter.
- Zur Anzeige gedrückt halten
- Du bist fast fertgi! 80%Sichern Sie Ihr Konto, indem Sie Ihren Wiederherstellungssatz speichern
- Tippen und halten Sie die verborgenen Wörter, um Ihren Wiederherstellungssatz anzuzeigen, und speichern Sie ihn dann sicher, um Ihre Session ID zu sichern.
+ Tippen und halten Sie die verborgenen Wörter, um Ihren Wiederherstellungssatz anzuzeigen, und speichern Sie ihn dann sicher, um Ihre Account ID zu sichern.Bewahren Sie Ihren Wiederherstellungssatz an einem sicheren Ort auf.PfadSession verbirgt Ihre IP-Adresse, indem Ihre Nachrichten über mehrere Dienstknoten im dezentralen Session-Netzwerk weitergeleitet werden. Dies sind die Länder, durch die Ihre Verbindung derzeit weitergeleitet wird:
@@ -569,12 +561,12 @@
Mehr erfahrenAuflösung…Neue Session
- Session ID eingeben
+ Account ID eingebenQR-Code scannenScannen Sie den QR-Code eines Benutzers, um eine Session zu starten. QR-Codes finden Sie, indem Sie in den Einstellungen auf das QR-Code-Symbol tippen.Sitzungs-ID oder ONS-Name eingeben
- Benutzer können ihre Session ID freigeben, indem sie in ihren Einstellungen auf \"Session ID freigeben\" tippen oder ihren QR-Code freigeben.
- Bitte überprüfe die Session-ID oder den ONS-Namen und versuche es erneut.
+ Benutzer können ihre Account ID freigeben, indem sie in ihren Einstellungen auf \"Account ID freigeben\" tippen oder ihren QR-Code freigeben.
+ Bitte überprüfe die Account-ID oder den ONS-Namen und versuche es erneut.Session benötigt Kamerazugriff, um die QR-Codes scannen zu können.Kamerazugriff gewährenNeue geschlossene Gruppe
@@ -601,7 +593,6 @@
GeräteEinen Freund einladenHäufig gestellte Fragen
- WiederherstellungssatzDaten löschenDaten löschen, einschließlich NetzwerkHilf uns, Session zu übersetzen
@@ -614,8 +605,6 @@
Über neue Nachrichten wirst du zuverlässig und sofort von Googles Benachrichtigungsservern informiert.Namen ändernGerät trennen
- Ihr Wiederherstellungssatz
- Das ist Ihr Wiederherstellungssatz. Damit können Sie Ihre Session ID wiederherstellen oder auf ein neues Gerät migrieren.Alle Daten löschenDadurch werden Ihre Nachrichten, Sessions und Kontakte dauerhaft gelöscht.Möchtest du nur dieses Gerät leeren oder dein gesamtes Konto löschen?
@@ -649,7 +638,7 @@
TagNachtSystemstandard
- Session-ID kopieren
+ Account-ID kopierenAnhangSprachnachrichtDetails
@@ -659,7 +648,6 @@
Wähle eine Sicherungs-Datei aus und gib die Passphrase von ihrer Erstellung ein.30-stellige PassphraseDies dauert eine Weile, möchtest du überspringen?
- Gerät verbindenWiederherstellungssatzQR-Code scannenNavigiere zu Einstellungen → Wiederherstellungssatz auf deinem anderen Gerät, um deinen QR-Code anzuzeigen.
@@ -670,7 +658,6 @@
Langsamer ModusDu wirst über neue Nachrichten zuverlässig und sofort über Google\'s Server benachrichtigt.Session sucht gelegentlich nach neuen Nachrichten im Hintergrund.
- Sicherungs-PassphraseSession ist gesperrtTippe zum entsperrenSpitznamen eingeben
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 0b645e0317..32920f29e4 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -523,27 +523,24 @@
In die Zwischenablage kopiert.WeiterTeilen
- Ungültige Session ID
+ Ungültige Account IDAbbrechen
- Ihre Session ID
- Ihre Session beginnt hier...
- Session ID erstellen
- Ihre Session fortsetzen
+ Ihre Account IDWas ist Session?Es ist eine dezentrale, verschlüsselte Messaging-App.Es werden also weder meine persönlichen Daten noch die Metadaten meiner Konversation erfasst? Wie funktioniert das?Mit einer Kombination fortschrittlicher anonyme Routing- und End-to-End-Verschlüsselungstechnologien.Freunde lassen Freunde keine kompromittierten Messenger verwenden. Herzlich Willkommen.
- Das ist Ihre Session ID.
- Ihre Session ID ist die eindeutige Adresse, unter der Personen Sie über Session kontaktieren können. Ihre Session ID ist nicht mit Ihrer realen Identität verbunden, völlig anonym und von Natur aus privat.
+
+
Ihr Konto wiederherstellenGeben Sie den Wiederherstellungssatz ein, den Sie bei der Anmeldung zur Wiederherstellung Ihres Kontos erhalten haben.Ihr Wiederherstellungssatz
- Wählen Sie Ihren Anzeigenamen
- Dies ist Ihr Name, wenn Sie Session verwenden. Es kann Ihr richtiger Name, ein Alias oder etwas andere sein.
- Geben Sie einen Anzeigenamen ein
- Bitte wählen Sie einen Anzeigenamen
- Bitte wählen Sie einen kürzeren Anzeigenamen
+ Wählen Sie Ihren Anzeigenamen
+ Dies ist Ihr Name, wenn Sie Session verwenden. Es kann Ihr richtiger Name, ein Alias oder etwas andere sein.
+ Geben Sie einen Anzeigenamen ein
+ Bitte wählen Sie einen Anzeigenamen
+ Bitte wählen Sie einen kürzeren AnzeigenamenEmpfohlenBitte wählen Sie eine Option aus.Sie haben noch keine Kontakte.
@@ -552,13 +549,8 @@
"Gruppe konnte nicht verlassen werden."Möchten Sie diese Unterhaltung wirklich löschen?Die Unterhaltung wurde gelöscht.
- Ihr Wiederherstellungssatz
- Das ist Ihr Wiederherstellungssatz.
- Ihr Wiederherstellungssatz ist der Hauptschlüssel für Ihre Session ID. Mit diesem Satz können Sie Ihre Session ID wiederherstellen, wenn Sie den Zugriff auf Ihr Gerät verlieren. Bewahren Sie Ihren Wiederherstellungssatz an einem sicheren Ort auf und geben Sie ihn an niemandem weiter.
- Zur Anzeige gedrückt halten
- Du bist fast fertgi! 80%Sichern Sie Ihr Konto, indem Sie Ihren Wiederherstellungssatz speichern
- Tippen und halten Sie die verborgenen Wörter, um Ihren Wiederherstellungssatz anzuzeigen, und speichern Sie ihn dann sicher, um Ihre Session ID zu sichern.
+ Tippen und halten Sie die verborgenen Wörter, um Ihren Wiederherstellungssatz anzuzeigen, und speichern Sie ihn dann sicher, um Ihre Account ID zu sichern.Bewahren Sie Ihren Wiederherstellungssatz an einem sicheren Ort auf.PfadSession verbirgt Ihre IP-Adresse, indem Ihre Nachrichten über mehrere Dienstknoten im dezentralen Session-Netzwerk weitergeleitet werden. Dies sind die Länder, durch die Ihre Verbindung derzeit weitergeleitet wird:
@@ -569,12 +561,12 @@
Mehr erfahrenAuflösung…Neue Session
- Session ID eingeben
+ Account ID eingebenQR-Code scannenScannen Sie den QR-Code eines Benutzers, um eine Session zu starten. QR-Codes finden Sie, indem Sie in den Einstellungen auf das QR-Code-Symbol tippen.Sitzungs-ID oder ONS-Name eingeben
- Benutzer können ihre Session ID freigeben, indem sie in ihren Einstellungen auf \"Session ID freigeben\" tippen oder ihren QR-Code freigeben.
- Bitte überprüfe die Session-ID oder den ONS-Namen und versuche es erneut.
+ Benutzer können ihre Account ID freigeben, indem sie in ihren Einstellungen auf \"Account ID freigeben\" tippen oder ihren QR-Code freigeben.
+ Bitte überprüfe die Account-ID oder den ONS-Namen und versuche es erneut.Session benötigt Kamerazugriff, um die QR-Codes scannen zu können.Kamerazugriff gewährenNeue geschlossene Gruppe
@@ -601,7 +593,6 @@
GeräteEinen Freund einladenHäufig gestellte Fragen
- WiederherstellungssatzDaten löschenDaten löschen, einschließlich NetzwerkHilf uns, Session zu übersetzen
@@ -614,8 +605,6 @@
Über neue Nachrichten wirst du zuverlässig und sofort von Googles Benachrichtigungsservern informiert.Namen ändernGerät trennen
- Ihr Wiederherstellungssatz
- Das ist Ihr Wiederherstellungssatz. Damit können Sie Ihre Session ID wiederherstellen oder auf ein neues Gerät migrieren.Alle Daten löschenDadurch werden Ihre Nachrichten, Sessions und Kontakte dauerhaft gelöscht.Möchtest du nur dieses Gerät leeren oder dein gesamtes Konto löschen?
@@ -649,7 +638,7 @@
TagNachtSystemstandard
- Session-ID kopieren
+ Account-ID kopierenAnhangSprachnachrichtDetails
@@ -659,7 +648,6 @@
Wähle eine Sicherungs-Datei aus und gib die Passphrase von ihrer Erstellung ein.30-stellige PassphraseDies dauert eine Weile, möchtest du überspringen?
- Gerät verbindenWiederherstellungssatzQR-Code scannenNavigiere zu Einstellungen → Wiederherstellungssatz auf deinem anderen Gerät, um deinen QR-Code anzuzeigen.
@@ -670,7 +658,6 @@
Langsamer ModusDu wirst über neue Nachrichten zuverlässig und sofort über Google\'s Server benachrichtigt.Session sucht gelegentlich nach neuen Nachrichten im Hintergrund.
- Sicherungs-PassphraseSession ist gesperrtTippe zum entsperrenSpitznamen eingeben
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index 2a5026673f..5daadded79 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -525,27 +525,24 @@
Αντιγράφηκε στο πρόχειροΕπόμενοΔιαμοιρασμός
- Μη έγκυρη Session ταυτότητα
+ Μη έγκυρη Session ταυτότηταΑκύρωση
- Η ταυτότητά σας
- Η συνομιλία σας ξεκινά εδώ...
- Δημιουργία Session ταυτότητας
- Συνέχεια συνομιλίας
+ Η ταυτότητά σαςΤι είναι το Session;Είναι μια αποκεντρωμένη, κρυπτογραφημένη εφαρμογή μηνυμάτωνΔηλαδή δεν συλλέγει τα προσωπικά μου στοιχεία ή τα μεταδεδομένα των συνομιλιών μου; Πώς λειτουργεί;Χρησιμοποιώντας ένα συνδυασμό προηγμένων ανώνυμων τεχνολογιών δρομολόγησης και τεχνολογίας κρυπτογράφησης από άκρο σε άκρο.Οι φίλοι δεν αφήνουν τους φίλους να χρησιμοποιούν ευάλωτες εφαρμογές μηνυμάτων. Είστε ευπρόσδεκτοι.
- Πείτε γεια στη Session ταυτότητά σας
- Η Session ταυτότητά σας είναι η μοναδική διεύθυνση που μπορούν να χρησιμοποιήσουν τα άτομα για να επικοινωνήσουν μαζί σας στο Session. Χωρίς σύνδεση με την πραγματική σας ταυτότητα, η Session ταυτότητά σας είναι εντελώς ανώνυμη και ιδιωτική.
+
+
Επαναφορά του λογαριασμού σαςΕισάγετε τη φράση ανάκτησης που σας δόθηκε κατά την εγγραφή σας για να επαναφέρετε το λογαριασμό σας.Εισάγετε τη φράση ανάκτησης σας
- Επιλέξτε το εμφανιζόμενο όνομα σας
- Αυτό θα είναι το όνομά σας όταν χρησιμοποιείτε το Session. Μπορεί να είναι το πραγματικό σας όνομα, ένα ψευδώνυμο ή οτιδήποτε άλλο θέλετε.
- Εισάγετε όνομα εμφάνισης
- Παρακαλώ επιλέξτε ένα εμφανιζόμενο όνομα
- Παρακαλώ επιλέξτε ένα μικρότερο όνομα εμφάνισης
+ Επιλέξτε το εμφανιζόμενο όνομα σας
+ Αυτό θα είναι το όνομά σας όταν χρησιμοποιείτε το Session. Μπορεί να είναι το πραγματικό σας όνομα, ένα ψευδώνυμο ή οτιδήποτε άλλο θέλετε.
+ Εισάγετε όνομα εμφάνισης
+ Παρακαλώ επιλέξτε ένα εμφανιζόμενο όνομα
+ Παρακαλώ επιλέξτε ένα μικρότερο όνομα εμφάνισηςΠροτεινόμενοΠαρακαλούμε κάντε μια επιλογήΔεν υπάρχουν επαφές
@@ -554,11 +551,6 @@
"Αδυναμία αποχώρησης από την ομάδα"Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την συνομιλία;Η συνομιλία διαγράφηκε
- Φράση ανάκτησης
- Γνωρίστε τη φράση ανάκτησής σας
- Η φράση ανάκτησης είναι το κύριο κλειδί στο Session ID σας - μπορείτε να τη χρησιμοποιήσετε για να επαναφέρετε το Session ID σας εάν χάσετε πρόσβαση στη συσκευή σας. Αποθηκεύστε τη φράση ανάκτησης σε ασφαλές μέρος, και μην τη δώσετε σε κανέναν.
- Πατήστε για εμφάνιση
- Σχεδόν τελειώσατε! 80%Ασφαλίστε το λογαριασμό σας αποθηκεύοντας τη φράση ανάκτησής σαςΠατήστε παρατεταμένα τις λέξεις που τροποποιήθηκαν για να αποκαλύψετε τη φράση ανάκτησης και μετά αποθηκεύστε την με ασφάλεια για να εξασφαλίσετε το αναγνωριστικό σας.Φροντίστε να αποθηκεύσετε τη φράση ανάκτησής σας σε ασφαλές μέρος
@@ -571,12 +563,12 @@
Μάθετε περισσότεραΕπίλυση…Νέα συνομιλία
- Εισαγωγή Session Ταυτότητας
+ Εισαγωγή Session ΤαυτότηταςΣαρώστε τον κωδικό QRΣαρώστε τον κωδικό QR ενός χρήστη για να ξεκινήσετε μια συνομιλία. Οι κωδικοί QR μπορούν να βρεθούν πατώντας το εικονίδιο QR κώδικα στις ρυθμίσεις λογαριασμού.
- Εισάγετε το Session ID ή το ONS όνομα
+ Εισάγετε το Account ID ή το ONS όνομαΟι χρήστες μπορούν να μοιραστούν τη ταυτότητα τους πηγαίνοντας στις ρυθμίσεις του λογαριασμού τους και πατώντας το \"Διαμοιρασμό Session ταυτότητας\" ή κοινοποιώντας τον κωδικό QR.
- Παρακαλώ ελέγξτε το Session ID ή το ONS όνομα και προσπαθήστε ξανά.
+ Παρακαλώ ελέγξτε το Account ID ή το ONS όνομα και προσπαθήστε ξανά.Το Session χρειάζεται πρόσβαση στην κάμερα για σάρωση κωδικών QRΧορήγηση Πρόσβασης ΚάμεραςΝέα Κλειστή Ομάδα
@@ -603,7 +595,6 @@
ΣυσκευέςΠροσκαλέστε ένα φίλοΣυχνές ερωτήσεις
- Φράση ΑνάκτησηςΕκκαθάριση ΔεδομένωνΕκκαθάριση Δεδομένων Με Το ΔίκτυοΒοηθήστε μας να μεταφράσουμε τo Session
@@ -616,8 +607,6 @@
Θα ειδοποιηθείτε για νέα μηνύματα αξιόπιστα και άμεσα χρησιμοποιώντας τους διακομιστές ειδοποιήσεων της Google.Αλλαγή ονόματοςΑποσύνδεση Συσκευής
- Η φράση ανάκτησής σας
- Αυτή είναι η φράση ανάκτησης σας. Με αυτή, μπορείτε να επαναφέρετε ή να μεταφέρετε τη Session ταυτότητά σας σε μια νέα συσκευή.Εκκαθάριση όλων των δεδομένωνΑυτό θα διαγράψει μόνιμα τα μηνύματα, τις συνομιλίες και τις επαφές σας.Θέλετε να γίνει εκκαθάριση μόνο αυτής της συσκευής, ή να διαγράψετε ολόκληρο το λογαριασμό σας;
@@ -651,7 +640,7 @@
ΗμέραΝύχταΠροεπιλογή συστήματος
- Αντιγραφή Ταυτότητας
+ Αντιγραφή ΤαυτότηταςΣυνημμένοΗχητικό μήνυμαΛεπτομέρειες
@@ -661,7 +650,6 @@
Επιλέξτε ένα αντίγραφο ασφαλείας και εισάγετε τη φράση πρόσβασης με την οποία δημιουργήθηκε.φράση 30-ψηφίωνΑυτό παίρνει λίγο χρόνο, θα θέλατε να παραλείψετε;
- Σύνδεση ΣυσκευήςΦράση ΑνάκτησηςΣάρωση QR κωδικούΜεταβείτε στις Ρυθμίσεις → Φράση Ανάκτησης στην άλλη συσκευή σας για να εμφανίσετε τον QR κωδικό σας.
@@ -672,7 +660,6 @@
Αργή ΕπιλογήΘα ειδοποιηθείτε για νέα μηνύματα αξιόπιστα και άμεσα χρησιμοποιώντας τους διακομιστές ειδοποιήσεων της Google.Το Session θα ελέγχει κατά καιρούς για νέα μηνύματα στο παρασκήνιο.
- Φράση ΑνάκτησηςΤο Session είναι κλειδωμένοΠατήστε για ξεκλείδωμαΕισαγωγή ψευδώνυμου
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 2a5026673f..5daadded79 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -525,27 +525,24 @@
Αντιγράφηκε στο πρόχειροΕπόμενοΔιαμοιρασμός
- Μη έγκυρη Session ταυτότητα
+ Μη έγκυρη Session ταυτότηταΑκύρωση
- Η ταυτότητά σας
- Η συνομιλία σας ξεκινά εδώ...
- Δημιουργία Session ταυτότητας
- Συνέχεια συνομιλίας
+ Η ταυτότητά σαςΤι είναι το Session;Είναι μια αποκεντρωμένη, κρυπτογραφημένη εφαρμογή μηνυμάτωνΔηλαδή δεν συλλέγει τα προσωπικά μου στοιχεία ή τα μεταδεδομένα των συνομιλιών μου; Πώς λειτουργεί;Χρησιμοποιώντας ένα συνδυασμό προηγμένων ανώνυμων τεχνολογιών δρομολόγησης και τεχνολογίας κρυπτογράφησης από άκρο σε άκρο.Οι φίλοι δεν αφήνουν τους φίλους να χρησιμοποιούν ευάλωτες εφαρμογές μηνυμάτων. Είστε ευπρόσδεκτοι.
- Πείτε γεια στη Session ταυτότητά σας
- Η Session ταυτότητά σας είναι η μοναδική διεύθυνση που μπορούν να χρησιμοποιήσουν τα άτομα για να επικοινωνήσουν μαζί σας στο Session. Χωρίς σύνδεση με την πραγματική σας ταυτότητα, η Session ταυτότητά σας είναι εντελώς ανώνυμη και ιδιωτική.
+
+
Επαναφορά του λογαριασμού σαςΕισάγετε τη φράση ανάκτησης που σας δόθηκε κατά την εγγραφή σας για να επαναφέρετε το λογαριασμό σας.Εισάγετε τη φράση ανάκτησης σας
- Επιλέξτε το εμφανιζόμενο όνομα σας
- Αυτό θα είναι το όνομά σας όταν χρησιμοποιείτε το Session. Μπορεί να είναι το πραγματικό σας όνομα, ένα ψευδώνυμο ή οτιδήποτε άλλο θέλετε.
- Εισάγετε όνομα εμφάνισης
- Παρακαλώ επιλέξτε ένα εμφανιζόμενο όνομα
- Παρακαλώ επιλέξτε ένα μικρότερο όνομα εμφάνισης
+ Επιλέξτε το εμφανιζόμενο όνομα σας
+ Αυτό θα είναι το όνομά σας όταν χρησιμοποιείτε το Session. Μπορεί να είναι το πραγματικό σας όνομα, ένα ψευδώνυμο ή οτιδήποτε άλλο θέλετε.
+ Εισάγετε όνομα εμφάνισης
+ Παρακαλώ επιλέξτε ένα εμφανιζόμενο όνομα
+ Παρακαλώ επιλέξτε ένα μικρότερο όνομα εμφάνισηςΠροτεινόμενοΠαρακαλούμε κάντε μια επιλογήΔεν υπάρχουν επαφές
@@ -554,11 +551,6 @@
"Αδυναμία αποχώρησης από την ομάδα"Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την συνομιλία;Η συνομιλία διαγράφηκε
- Φράση ανάκτησης
- Γνωρίστε τη φράση ανάκτησής σας
- Η φράση ανάκτησης είναι το κύριο κλειδί στο Session ID σας - μπορείτε να τη χρησιμοποιήσετε για να επαναφέρετε το Session ID σας εάν χάσετε πρόσβαση στη συσκευή σας. Αποθηκεύστε τη φράση ανάκτησης σε ασφαλές μέρος, και μην τη δώσετε σε κανέναν.
- Πατήστε για εμφάνιση
- Σχεδόν τελειώσατε! 80%Ασφαλίστε το λογαριασμό σας αποθηκεύοντας τη φράση ανάκτησής σαςΠατήστε παρατεταμένα τις λέξεις που τροποποιήθηκαν για να αποκαλύψετε τη φράση ανάκτησης και μετά αποθηκεύστε την με ασφάλεια για να εξασφαλίσετε το αναγνωριστικό σας.Φροντίστε να αποθηκεύσετε τη φράση ανάκτησής σας σε ασφαλές μέρος
@@ -571,12 +563,12 @@
Μάθετε περισσότεραΕπίλυση…Νέα συνομιλία
- Εισαγωγή Session Ταυτότητας
+ Εισαγωγή Session ΤαυτότηταςΣαρώστε τον κωδικό QRΣαρώστε τον κωδικό QR ενός χρήστη για να ξεκινήσετε μια συνομιλία. Οι κωδικοί QR μπορούν να βρεθούν πατώντας το εικονίδιο QR κώδικα στις ρυθμίσεις λογαριασμού.
- Εισάγετε το Session ID ή το ONS όνομα
+ Εισάγετε το Account ID ή το ONS όνομαΟι χρήστες μπορούν να μοιραστούν τη ταυτότητα τους πηγαίνοντας στις ρυθμίσεις του λογαριασμού τους και πατώντας το \"Διαμοιρασμό Session ταυτότητας\" ή κοινοποιώντας τον κωδικό QR.
- Παρακαλώ ελέγξτε το Session ID ή το ONS όνομα και προσπαθήστε ξανά.
+ Παρακαλώ ελέγξτε το Account ID ή το ONS όνομα και προσπαθήστε ξανά.Το Session χρειάζεται πρόσβαση στην κάμερα για σάρωση κωδικών QRΧορήγηση Πρόσβασης ΚάμεραςΝέα Κλειστή Ομάδα
@@ -603,7 +595,6 @@
ΣυσκευέςΠροσκαλέστε ένα φίλοΣυχνές ερωτήσεις
- Φράση ΑνάκτησηςΕκκαθάριση ΔεδομένωνΕκκαθάριση Δεδομένων Με Το ΔίκτυοΒοηθήστε μας να μεταφράσουμε τo Session
@@ -616,8 +607,6 @@
Θα ειδοποιηθείτε για νέα μηνύματα αξιόπιστα και άμεσα χρησιμοποιώντας τους διακομιστές ειδοποιήσεων της Google.Αλλαγή ονόματοςΑποσύνδεση Συσκευής
- Η φράση ανάκτησής σας
- Αυτή είναι η φράση ανάκτησης σας. Με αυτή, μπορείτε να επαναφέρετε ή να μεταφέρετε τη Session ταυτότητά σας σε μια νέα συσκευή.Εκκαθάριση όλων των δεδομένωνΑυτό θα διαγράψει μόνιμα τα μηνύματα, τις συνομιλίες και τις επαφές σας.Θέλετε να γίνει εκκαθάριση μόνο αυτής της συσκευής, ή να διαγράψετε ολόκληρο το λογαριασμό σας;
@@ -651,7 +640,7 @@
ΗμέραΝύχταΠροεπιλογή συστήματος
- Αντιγραφή Ταυτότητας
+ Αντιγραφή ΤαυτότηταςΣυνημμένοΗχητικό μήνυμαΛεπτομέρειες
@@ -661,7 +650,6 @@
Επιλέξτε ένα αντίγραφο ασφαλείας και εισάγετε τη φράση πρόσβασης με την οποία δημιουργήθηκε.φράση 30-ψηφίωνΑυτό παίρνει λίγο χρόνο, θα θέλατε να παραλείψετε;
- Σύνδεση ΣυσκευήςΦράση ΑνάκτησηςΣάρωση QR κωδικούΜεταβείτε στις Ρυθμίσεις → Φράση Ανάκτησης στην άλλη συσκευή σας για να εμφανίσετε τον QR κωδικό σας.
@@ -672,7 +660,6 @@
Αργή ΕπιλογήΘα ειδοποιηθείτε για νέα μηνύματα αξιόπιστα και άμεσα χρησιμοποιώντας τους διακομιστές ειδοποιήσεων της Google.Το Session θα ελέγχει κατά καιρούς για νέα μηνύματα στο παρασκήνιο.
- Φράση ΑνάκτησηςΤο Session είναι κλειδωμένοΠατήστε για ξεκλείδωμαΕισαγωγή ψευδώνυμου
diff --git a/app/src/main/res/values-eo-rUY/strings.xml b/app/src/main/res/values-eo-rUY/strings.xml
index 0601369b4d..66e6b6198c 100644
--- a/app/src/main/res/values-eo-rUY/strings.xml
+++ b/app/src/main/res/values-eo-rUY/strings.xml
@@ -524,27 +524,24 @@
Kopiite al tondejoSekvaKunhavigi
- Malvalida Session ID
+ Malvalida Account IDNuligi
- Via Session ID
- Via Sesio komenci ĉi tie...
- Krei Session ID-on
- Daŭrigi Vian Sesion
+ Via Account IDKio estas Session?Ĝi estas malcentraliza kaj ĉifrita mesaĝiloDo ĝi ne kolektas miajn personajn informojn aŭ miajn konversaciajn metadatumojn? Kiel ĝi funkcias?Uzante kombinon de progresinta anonima enkursigo kaj tutvoje ĉifraj teknologioj.Amikoj ne permesas amikojn uzi kompromititajn mesaĝilojn. Nedankinde.
- Diru saluton al via Session ID
- Via Session ID estas la unika adreso kiun homoj povas uzi por kontakti en Session. Sen ligo al via vera identeco, via Session ID estas tute anonima kaj privata per dezajno.
+
+
Restaŭri vian kontonEntajpu la riparan frazon, kiu estis donita al vi kiam vi aliĝis, por ripari vian konton.Entajpu vian riparan frazon
- Elektu vian vidigan nomon
- Ĉi tio estos via nomo kiam vi uzas Sesion. Ĝi povas esti via vera nomo, alinomo, aŭ io ajn alia vi volas.
- Entajpu vidigan nomon
- Bonvolu elekti vidigan nomon
- Bonvolu elekti plej mallongan vidigan nomon
+ Elektu vian vidigan nomon
+ Ĉi tio estos via nomo kiam vi uzas Sesion. Ĝi povas esti via vera nomo, alinomo, aŭ io ajn alia vi volas.
+ Entajpu vidigan nomon
+ Bonvolu elekti vidigan nomon
+ Bonvolu elekti plej mallongan vidigan nomonRekomendateBonvolu Elekti OpcionVi ankoraŭ ne havas kontaktojn
@@ -553,13 +550,8 @@
"Ne povis foriri el la grupo"Ĉu vi certas, ke vi volas forviŝi ĉi tiun konversacion?Konversacio forviŝite
- Via Ripara Frazo
- Ekkonu vian riparan frazon
- Via ripara frazo estas la ĉefŝlosilo de via Session ID — vi povas uzi ĝin por restaŭri vian Session ID-on se vi malgajros aliron al via aparato. Konservu vian riparan frazon en sekura loko, kaj donu ĝin al neniu.
- Tuŝadu por malkaŝi
- Vi preskaŭ estas fininta! 80%Sekurigi vian konton per konservi vian riparan frazon
- Tuŝadu la kaŝitajn vortojn por malkaŝi vian riparan frazon, tiam konservi ĝin sekure por sekurigi vian Session ID-on.
+ Tuŝadu la kaŝitajn vortojn por malkaŝi vian riparan frazon, tiam konservi ĝin sekure por sekurigi vian Account ID-on.Certigu konservi vian riparan frazon en sekura lokoVojoSesio kaŝas vian IP-adreson per resaltigi viajn mesaĝojn tra multaj Servaj Nodoj en la malcentraliza reto de Sesio. Ĉi tiuj estas la landoj via konekto estas nuntempe resaltigata tra:
@@ -570,10 +562,10 @@
Lerni pliSolvante…Nova Sesio
- Entajpu Session ID-on
+ Entajpu Account ID-onSkani QR-KodonSkanu QR-kodon de uzanto por komenci sesion. QR-kodoj povas esti trovitaj per tuŝeti la QR-kodan bildeton en la konta agordo.
- Uzantoj povas kunhavigi sian Session ID-on per irante en sia konta agordo kaj tuŝeti \"Kunhavigi Session ID-on\", aŭ per kunhavigi sian QR-kodon.
+ Uzantoj povas kunhavigi sian Account ID-on per irante en sia konta agordo kaj tuŝeti \"Kunhavigi Account ID-on\", aŭ per kunhavigi sian QR-kodon.Sesio bezonas fotilan aliron por skani QR-kodojnPermesi Fotilan AlironNova Ferma Grupo
@@ -600,7 +592,6 @@
AparatojInviti AmikonOftaj Demandoj
- Ripara FrazoViŝi DatumojnHelpu nin Traduki SessionSciigoj
@@ -611,8 +602,6 @@
Uzi Rapidan ReĝimonŜanĝi nomonMalligi aparaton
- Via Ripara Frazo
- Ĉi tio estas via ripara frazo. Kun ĝi, vi povas restaŭri aŭ migri vian Session ID-on al nova aparato.Viŝi Tutajn DatumojnĈi tio daŭre forviŝi viajn mesaĝojn, sesiojn, kaj kontaktojn.Forviŝi Sole
@@ -645,7 +634,7 @@
TageNokteSistema defaŭlto
- Kopii Session ID-on
+ Kopii Account ID-onKunsendaĵoVoĉmesaĝoDetaloj
@@ -653,7 +642,6 @@
Restaŭri savkopionElekti dosieron30-cifera pasfrazo
- Ligi AparatonRipara FrazoSkani QR-KodonAŭ aliĝu unu de ĉi tiuj…
@@ -661,7 +649,6 @@
Rapida ReĝimoMalrapida ManieroSession foje serĉos novajn mesaĝojn en la fono.
- Ripara FrazoSession estas ŜlositaTuŝetu por MalŝlosiEntajpu alnomon
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 0601369b4d..66e6b6198c 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -524,27 +524,24 @@
Kopiite al tondejoSekvaKunhavigi
- Malvalida Session ID
+ Malvalida Account IDNuligi
- Via Session ID
- Via Sesio komenci ĉi tie...
- Krei Session ID-on
- Daŭrigi Vian Sesion
+ Via Account IDKio estas Session?Ĝi estas malcentraliza kaj ĉifrita mesaĝiloDo ĝi ne kolektas miajn personajn informojn aŭ miajn konversaciajn metadatumojn? Kiel ĝi funkcias?Uzante kombinon de progresinta anonima enkursigo kaj tutvoje ĉifraj teknologioj.Amikoj ne permesas amikojn uzi kompromititajn mesaĝilojn. Nedankinde.
- Diru saluton al via Session ID
- Via Session ID estas la unika adreso kiun homoj povas uzi por kontakti en Session. Sen ligo al via vera identeco, via Session ID estas tute anonima kaj privata per dezajno.
+
+
Restaŭri vian kontonEntajpu la riparan frazon, kiu estis donita al vi kiam vi aliĝis, por ripari vian konton.Entajpu vian riparan frazon
- Elektu vian vidigan nomon
- Ĉi tio estos via nomo kiam vi uzas Sesion. Ĝi povas esti via vera nomo, alinomo, aŭ io ajn alia vi volas.
- Entajpu vidigan nomon
- Bonvolu elekti vidigan nomon
- Bonvolu elekti plej mallongan vidigan nomon
+ Elektu vian vidigan nomon
+ Ĉi tio estos via nomo kiam vi uzas Sesion. Ĝi povas esti via vera nomo, alinomo, aŭ io ajn alia vi volas.
+ Entajpu vidigan nomon
+ Bonvolu elekti vidigan nomon
+ Bonvolu elekti plej mallongan vidigan nomonRekomendateBonvolu Elekti OpcionVi ankoraŭ ne havas kontaktojn
@@ -553,13 +550,8 @@
"Ne povis foriri el la grupo"Ĉu vi certas, ke vi volas forviŝi ĉi tiun konversacion?Konversacio forviŝite
- Via Ripara Frazo
- Ekkonu vian riparan frazon
- Via ripara frazo estas la ĉefŝlosilo de via Session ID — vi povas uzi ĝin por restaŭri vian Session ID-on se vi malgajros aliron al via aparato. Konservu vian riparan frazon en sekura loko, kaj donu ĝin al neniu.
- Tuŝadu por malkaŝi
- Vi preskaŭ estas fininta! 80%Sekurigi vian konton per konservi vian riparan frazon
- Tuŝadu la kaŝitajn vortojn por malkaŝi vian riparan frazon, tiam konservi ĝin sekure por sekurigi vian Session ID-on.
+ Tuŝadu la kaŝitajn vortojn por malkaŝi vian riparan frazon, tiam konservi ĝin sekure por sekurigi vian Account ID-on.Certigu konservi vian riparan frazon en sekura lokoVojoSesio kaŝas vian IP-adreson per resaltigi viajn mesaĝojn tra multaj Servaj Nodoj en la malcentraliza reto de Sesio. Ĉi tiuj estas la landoj via konekto estas nuntempe resaltigata tra:
@@ -570,10 +562,10 @@
Lerni pliSolvante…Nova Sesio
- Entajpu Session ID-on
+ Entajpu Account ID-onSkani QR-KodonSkanu QR-kodon de uzanto por komenci sesion. QR-kodoj povas esti trovitaj per tuŝeti la QR-kodan bildeton en la konta agordo.
- Uzantoj povas kunhavigi sian Session ID-on per irante en sia konta agordo kaj tuŝeti \"Kunhavigi Session ID-on\", aŭ per kunhavigi sian QR-kodon.
+ Uzantoj povas kunhavigi sian Account ID-on per irante en sia konta agordo kaj tuŝeti \"Kunhavigi Account ID-on\", aŭ per kunhavigi sian QR-kodon.Sesio bezonas fotilan aliron por skani QR-kodojnPermesi Fotilan AlironNova Ferma Grupo
@@ -600,7 +592,6 @@
AparatojInviti AmikonOftaj Demandoj
- Ripara FrazoViŝi DatumojnHelpu nin Traduki SessionSciigoj
@@ -611,8 +602,6 @@
Uzi Rapidan ReĝimonŜanĝi nomonMalligi aparaton
- Via Ripara Frazo
- Ĉi tio estas via ripara frazo. Kun ĝi, vi povas restaŭri aŭ migri vian Session ID-on al nova aparato.Viŝi Tutajn DatumojnĈi tio daŭre forviŝi viajn mesaĝojn, sesiojn, kaj kontaktojn.Forviŝi Sole
@@ -645,7 +634,7 @@
TageNokteSistema defaŭlto
- Kopii Session ID-on
+ Kopii Account ID-onKunsendaĵoVoĉmesaĝoDetaloj
@@ -653,7 +642,6 @@
Restaŭri savkopionElekti dosieron30-cifera pasfrazo
- Ligi AparatonRipara FrazoSkani QR-KodonAŭ aliĝu unu de ĉi tiuj…
@@ -661,7 +649,6 @@
Rapida ReĝimoMalrapida ManieroSession foje serĉos novajn mesaĝojn en la fono.
- Ripara FrazoSession estas ŜlositaTuŝetu por MalŝlosiEntajpu alnomon
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index 61bad0e88f..3a0304d9f6 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -524,27 +524,24 @@ de intercambio de claves!
Copiado en el portapapelesSiguienteCompartir
- ID de Session no válida
+ ID de Session no válidaCancelar
- Tu ID de Session
- Tu Session comienza aquí...
- Crear ID de Session
- Continúa tu Session
+ Tu ID de Session¿Qué es Session?Es una aplicación de mensajería descentralizada y cifrada¿Entonces no recopila mi información personal ni los metadatos de mi conversación? ¿Cómo funciona?Utiliza una combinación de enrutamiento anónimo avanzado y tecnologías de cifrado de extremo a extremo.Los amigos no dejan que sus amigos usen messengers riesgosos. De nada.
- Saluda a tu ID de Session
- Tu ID de Session es la dirección única que las personas pueden usar para contactarte en Session. Por diseño, tu ID de Session es totalmente anónima y privada, sin vínculo con tu identidad real.
+
+
Restaura tu cuentaIngresa la frase de recuperación que se te dio cuando te registraste para restaurar tu cuenta.Ingresa tu frase de recuperación
- Elige tu nombre
- Este será tu nombre al usar Session. Puede ser tu nombre real, un alias, o lo que prefieras.
- Ingresa un nombre para mostrar
- Por favor, elige un nombre para mostrar
- Por favor, elige un nombre para mostrar más corto
+ Elige tu nombre
+ Este será tu nombre al usar Session. Puede ser tu nombre real, un alias, o lo que prefieras.
+ Ingresa un nombre para mostrar
+ Por favor, elige un nombre para mostrar
+ Por favor, elige un nombre para mostrar más cortoRecomendadoPor favor, elige una opciónAún no tienes contactos
@@ -553,11 +550,6 @@ de intercambio de claves!
"No pudiste salir del grupo"¿Seguro que quieres eliminar esta conversación?Conversación eliminada
- Tu frase de recuperación
- Guarda tu frase de recuperación
- Tu frase de recuperación es la llave maestra de tu ID de Session, puedes usarla para recuperar tu ID de Session en caso de pérdida de acceso a tu dispositivo. Guarda tu frase de recuperación en un lugar seguro y no se la digas a nadie.
- Mantén pulsado para revelar
- ¡Ya casi has terminado! 80%Protege tu cuenta guardando tu frase de recuperaciónToca y mantén presionadas las palabras redactadas para revelar tu frase de recuperación, después guárdala de manera segura para proteger tu ID de Session.Asegúrate de guardar tu frase de recuperación en un lugar seguro
@@ -570,7 +562,7 @@ de intercambio de claves!
Saber MásResolviendo…Nueva Session
- Session ID
+ Account IDEscanear código QREscanea el código QR de un usuario para empezar una sesión. Los códigos QR se pueden encontrar tocando el icono del código QR en los ajustes de la cuenta.Introduzca el ID de Session o el nombre ONS
@@ -602,7 +594,6 @@ de intercambio de claves!
DispositivosInvitar a un amigoPreguntas frecuentes
- Frase de recuperaciónBorrar datosLimpiar Datos Incluyendo La RedAyúdanos a traducir Session
@@ -615,8 +606,6 @@ de intercambio de claves!
Se te notificará de nuevos mensajes de forma fiable e inmediata usando los servidores de notificaciones de Google.Cambiar nombreDesvincular dispositivo
- Tu frase de recuperación
- Esta es tu frase de recuperación. Con ella, puedes restaurar o migrar tu ID de Session a un nuevo dispositivo.Borrar todos los datosEsto eliminará permanentemente tu ID de Session, incluyendo todos los mensajes, sesiones y contactos.¿Quieres borrar sólo este dispositivo o eliminar toda tu cuenta?
@@ -650,7 +639,7 @@ de intercambio de claves!
DíaNochePredeterminado del sistema
- Copiar ID de Session
+ Copiar ID de SessionAdjuntoMensaje de vozDetalles
@@ -660,7 +649,6 @@ de intercambio de claves!
Seleccione un archivo de copia de seguridad e introduzca la clave de acceso con la que fue creada.Clave de acceso de 30 dígitosEsto está tomando un tiempo, ¿te gustaría saltarlo?
- Vincular un DispositivoFrase de RecuperaciónEscanear Código QRNavega a Ajustes → Frase de Recuperación en tu otro dispositivo para mostrar tu código QR.
@@ -671,7 +659,6 @@ de intercambio de claves!
Modo LentoSe le notificará de los nuevos mensajes de forma fiable e inmediata usando los servidores de notificaciones de Google.Session comprobará ocasionalmente si hay nuevos mensajes en segundo plano.
- Frase de recuperaciónSession está BloqueadoToca para DesbloquearEscriba un apodo
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 61bad0e88f..3a0304d9f6 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -524,27 +524,24 @@ de intercambio de claves!
Copiado en el portapapelesSiguienteCompartir
- ID de Session no válida
+ ID de Session no válidaCancelar
- Tu ID de Session
- Tu Session comienza aquí...
- Crear ID de Session
- Continúa tu Session
+ Tu ID de Session¿Qué es Session?Es una aplicación de mensajería descentralizada y cifrada¿Entonces no recopila mi información personal ni los metadatos de mi conversación? ¿Cómo funciona?Utiliza una combinación de enrutamiento anónimo avanzado y tecnologías de cifrado de extremo a extremo.Los amigos no dejan que sus amigos usen messengers riesgosos. De nada.
- Saluda a tu ID de Session
- Tu ID de Session es la dirección única que las personas pueden usar para contactarte en Session. Por diseño, tu ID de Session es totalmente anónima y privada, sin vínculo con tu identidad real.
+
+
Restaura tu cuentaIngresa la frase de recuperación que se te dio cuando te registraste para restaurar tu cuenta.Ingresa tu frase de recuperación
- Elige tu nombre
- Este será tu nombre al usar Session. Puede ser tu nombre real, un alias, o lo que prefieras.
- Ingresa un nombre para mostrar
- Por favor, elige un nombre para mostrar
- Por favor, elige un nombre para mostrar más corto
+ Elige tu nombre
+ Este será tu nombre al usar Session. Puede ser tu nombre real, un alias, o lo que prefieras.
+ Ingresa un nombre para mostrar
+ Por favor, elige un nombre para mostrar
+ Por favor, elige un nombre para mostrar más cortoRecomendadoPor favor, elige una opciónAún no tienes contactos
@@ -553,11 +550,6 @@ de intercambio de claves!
"No pudiste salir del grupo"¿Seguro que quieres eliminar esta conversación?Conversación eliminada
- Tu frase de recuperación
- Guarda tu frase de recuperación
- Tu frase de recuperación es la llave maestra de tu ID de Session, puedes usarla para recuperar tu ID de Session en caso de pérdida de acceso a tu dispositivo. Guarda tu frase de recuperación en un lugar seguro y no se la digas a nadie.
- Mantén pulsado para revelar
- ¡Ya casi has terminado! 80%Protege tu cuenta guardando tu frase de recuperaciónToca y mantén presionadas las palabras redactadas para revelar tu frase de recuperación, después guárdala de manera segura para proteger tu ID de Session.Asegúrate de guardar tu frase de recuperación en un lugar seguro
@@ -570,7 +562,7 @@ de intercambio de claves!
Saber MásResolviendo…Nueva Session
- Session ID
+ Account IDEscanear código QREscanea el código QR de un usuario para empezar una sesión. Los códigos QR se pueden encontrar tocando el icono del código QR en los ajustes de la cuenta.Introduzca el ID de Session o el nombre ONS
@@ -602,7 +594,6 @@ de intercambio de claves!
DispositivosInvitar a un amigoPreguntas frecuentes
- Frase de recuperaciónBorrar datosLimpiar Datos Incluyendo La RedAyúdanos a traducir Session
@@ -615,8 +606,6 @@ de intercambio de claves!
Se te notificará de nuevos mensajes de forma fiable e inmediata usando los servidores de notificaciones de Google.Cambiar nombreDesvincular dispositivo
- Tu frase de recuperación
- Esta es tu frase de recuperación. Con ella, puedes restaurar o migrar tu ID de Session a un nuevo dispositivo.Borrar todos los datosEsto eliminará permanentemente tu ID de Session, incluyendo todos los mensajes, sesiones y contactos.¿Quieres borrar sólo este dispositivo o eliminar toda tu cuenta?
@@ -650,7 +639,7 @@ de intercambio de claves!
DíaNochePredeterminado del sistema
- Copiar ID de Session
+ Copiar ID de SessionAdjuntoMensaje de vozDetalles
@@ -660,7 +649,6 @@ de intercambio de claves!
Seleccione un archivo de copia de seguridad e introduzca la clave de acceso con la que fue creada.Clave de acceso de 30 dígitosEsto está tomando un tiempo, ¿te gustaría saltarlo?
- Vincular un DispositivoFrase de RecuperaciónEscanear Código QRNavega a Ajustes → Frase de Recuperación en tu otro dispositivo para mostrar tu código QR.
@@ -671,7 +659,6 @@ de intercambio de claves!
Modo LentoSe le notificará de los nuevos mensajes de forma fiable e inmediata usando los servidores de notificaciones de Google.Session comprobará ocasionalmente si hay nuevos mensajes en segundo plano.
- Frase de recuperaciónSession está BloqueadoToca para DesbloquearEscriba un apodo
diff --git a/app/src/main/res/values-fa-rIR/strings.xml b/app/src/main/res/values-fa-rIR/strings.xml
index 89b2c3ec56..d46e3eb821 100644
--- a/app/src/main/res/values-fa-rIR/strings.xml
+++ b/app/src/main/res/values-fa-rIR/strings.xml
@@ -547,27 +547,24 @@
در حافظه موقت کپی شدبعدیاشتراکگذاری
- شناسهی Session نامعتبر است.
+ شناسهی Session نامعتبر است.لغو
- شناسهی Session شما
- Session شما از اینجا شروع میشود...
- ساخت شناسهی Session
- Session خود را ادامه دهید
+ شناسهی Session شماSession چیست؟Session یک برنامه پیامرسان غیرمتمرکز و رمزگذاری شده است.پس اطلاعات شخصی من یا دادههای گفتوگوهایم جمعآوری نمیشود؟ چگونه کار میکند؟Session با استفاده از ترکیبی از فناوریهای پیشرفته مسیریابی ناشناس و رمزگذاری سرتاسری این کار را انجام میدهد.یک دوست هیچوقت به دوستان خود اجازه استفاده از پیامرسانهای در معرض خطر را نمیدهد.
- به شناسهی Session خود سلام کنید
- شناسهی Session شما آدرس منحصر به فردی است که افراد میتوانند از طریق آن با شما در Session تماس بگیرند. شناسهی Session شما، بدون اتصال با هویت واقعی شما، کاملاً ناشناس و خصوصی است.
+
+
حساب کاربری خود را بازیابی کنیدعبارت بازیابی را که هنگام نامنویسی برای بازیابی حساب به شما داده شده، وارد کنید.عبارت بازیابی خود را وارد کنید
- نام خود را برای نمایش انتخاب کنید
- این نام شما هنگام استفاده از Session خواهد بود. این نام میتواند نام واقعی شما، نام مستعار یا هر چیز دیگری که دوست دارید، باشد.
- یک نام وارد کنید
- لطفا یک نام انتخاب کنید
- لطفا نام کوتاهتری انتخاب کنید
+ نام خود را برای نمایش انتخاب کنید
+ این نام شما هنگام استفاده از Session خواهد بود. این نام میتواند نام واقعی شما، نام مستعار یا هر چیز دیگری که دوست دارید، باشد.
+ یک نام وارد کنید
+ لطفا یک نام انتخاب کنید
+ لطفا نام کوتاهتری انتخاب کنیدگزینه پیشنهادیلطفا یک گزینه را انتخاب کنیدفهرست مخاطبان شما خالی است.
@@ -576,11 +573,6 @@
"ترک گروه انجام نشد"آیا مطمئن هستید که میخواهید این مکالمه را حذف کنید؟مکالمه حذف شد
- عبارت بازیابی شما
- این عبارت بازیابی شماست
- عبارت بازیابی شما کلید اصلی شناسهی Session شما است - در صورت عدم دسترسی به دستگاه خود می توانید از آن برای بازگرداندن شناسهی Session خود استفاده کنید. عبارت بازیابی خود را در مکانی امن ذخیره کنید و آن را به کسی ندهید.
- نگه دارید تا نشان داده شود
- شما تقریبا تمام کردید! ۸۰٪با ذخیره کردن عبارت بازیابی، از حساب خود محافظت کنیدبرای دیدن عبارت بازیابی، بر روی کلمات پنهان شده ضربه زده و نگه دارید، سپس با خیال راحت آن را ذخیره کنید تا از شناسهی Session خود محافظت نمایید.حتماً عبارت بازیابی خود را در مکانی امن ذخیره کنید
@@ -593,11 +585,11 @@
بیشتر بدانیددر حال اصلاح…Session جدید
- شناسه Session را وارید کنید
+ شناسه Session را وارید کنیداسکن کد QRبرای شروع Session، کد QR کاربر را اسکن کنید. با ضربه زدن روی نماد کد QR در تنظیمات حساب کاربری، کدهای QR را میتوان یافت.شماره session نامعتبر
- کاربران میتوانند شناسهی Session خود را با رفتن به تنظیمات حساب خود و ضربه زدن به Share Session ID یا با به اشتراک گذاشتن کد QR خود، با دیگران به اشتراک بگذارند.
+ کاربران میتوانند شناسهی Session خود را با رفتن به تنظیمات حساب خود و ضربه زدن به Share Account ID یا با به اشتراک گذاشتن کد QR خود، با دیگران به اشتراک بگذارند.لطفا آیدی سشن یا اسم ONS را بررسی کنید و سپس دوباره امتحان کنید.برنامه Session برای اسکن کدهای QR احتیاج دارد به دوربین دسترسی داشته باشداجازه دسترسی به دوربین
@@ -626,7 +618,6 @@
دستگاههادعوت از یک دوستسوالات متداول
- عبارت بازیابیپاک کردن اطلاعاتپاک کردن دادهها همراه با شبکهبه ما کمک کنید که سشن را ترجمه کنیم
@@ -648,8 +639,6 @@
با استفاده از سرورهای اعلان گوگل به طور قابل اعتماد و بلافاصله از پیام جدید مطلع خواهید شد.تغییر نامقطع اتصال دستگاه
- عبارت بازیابی شما
- می توانید از عبارت بازیابی یا برای بازیابی حساب خود و یا برای وصل با یک دستگاه استفاده کنید.پاک کردن همه داتااین گزینه به طور دائم پیامها، جلسات و مخاطبین شما را حذف میکند.آیا فقط میخواهید این دستگاه را پاک کنید یا میخواهید کل اکانت را پاک کنید؟
@@ -686,7 +675,7 @@
روزشبپیش فرض سیستم
- کپی شناسهی Session
+ کپی شناسهی Sessionپیوستپیام صوتیجزئيات
@@ -696,7 +685,6 @@
یک فایل پشتیبان انتخاب و عبارت عبوری که با آن ساخته شده است را وارد کنید.عبارت عبور ۳۰رقمیاین فرآیند کمی طولانی است، دوست دارید ردش کنید؟
- اتصال به یک دستگاهعبارت بازیابیاسکن کد QRبرای دیدن کد QR خود، در دستگاه دیگرتان به «تنظیمات ← عبارت بازیابی» مراجعه کنید.
@@ -707,7 +695,6 @@
حالت آهستهبا استفاده از سرورهای گوگل، شما به صورت سریع و مطمئن از پیامهای جدید مطلع میشوید.Session هرازگاهی در پس زمینه وجود پیامهای جدید را بررسی میکند.
- متن بازیابینشست قفل شدهاست ﺑﺮﺍﯼ ﮔﺸﻮﺩﻥ ﺿﺮﺑﻪ ﺑﺰﻧﻴﺪیک نام مستعار وارد کنید
@@ -764,9 +751,9 @@
درخواست پیام شما قبول شد.درخواست پیام شما در انتظار پاسخ می باشد.هیچ درخواست پیامی وجود ندارد
- پیام مستقیم
- گروههای خصوصی
- گروههای باز
+ پیام مستقیم
+ گروههای خصوصی
+ گروههای بازشما درخواست پیام جدیدی داریددر حال اتصال…تماس دریافتی
@@ -830,7 +817,7 @@
و %1$d نفر دیگر با %2$s به این پیام واکنش نشان داده استو %1$d نفر دیگر با %2$s به این پیام واکنش نشان داده اند
- مکالمه جدید
+ مکالمه جدیدپیام جدیدایجاد گروهپیوستن به انجمن
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index e1cbc949f4..82183872e8 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -524,27 +524,24 @@
در کلیپبورد کپی شدبعدیاشتراکگذاری
- شناسهی Session نامعتبر است.
+ شناسهی Session نامعتبر است.لغو
- شناسهی Session شما
- Session شما از اینجا شروع میشود...
- ساخت شناسهی Session
- Session خود را ادامه دهید
+ شناسهی Session شماSession چیست؟Session یک برنامه پیامرسان غیرمتمرکز و رمزگذاری شده است.پس اطلاعات شخصی من یا دادههای گفتوگوهایم جمعآوری نمیشود؟ چگونه کار میکند؟Session با استفاده از ترکیبی از فناوریهای پیشرفته مسیریابی ناشناس و رمزگذاری سرتاسری این کار را انجام میدهد.یک دوست هیچوقت به دوستان خود اجازه استفاده از پیامرسانهای در معرض خطر را نمیدهد.
- به شناسهی Session خود سلام کنید
- شناسهی Session شما آدرس منحصر به فردی است که افراد میتوانند از طریق آن با شما در Session تماس بگیرند. شناسهی Session شما، بدون اتصال با هویت واقعی شما، کاملاً ناشناس و خصوصی است.
+
+
حساب کاربری خود را بازیابی کنیدعبارت بازیابی را که هنگام نامنویسی برای بازیابی حساب به شما داده شده، وارد کنید.عبارت بازیابی خود را وارد کنید
- نام خود را برای نمایش انتخاب کنید
- این نام شما هنگام استفاده از Session خواهد بود. این نام میتواند نام واقعی شما، نام مستعار یا هر چیز دیگری که دوست دارید، باشد.
- نام نمایشی را وارد کنید
- لطفا نام نمایشی را انتخاب کنید
- لطفا نام نمایشی کوتاهتری انتخاب کنید
+ نام خود را برای نمایش انتخاب کنید
+ این نام شما هنگام استفاده از Session خواهد بود. این نام میتواند نام واقعی شما، نام مستعار یا هر چیز دیگری که دوست دارید، باشد.
+ نام نمایشی را وارد کنید
+ لطفا نام نمایشی را انتخاب کنید
+ لطفا نام نمایشی کوتاهتری انتخاب کنیدگزینه پیشنهادیلطفا یک گزینه را انتخاب کنیدفهرست مخاطبان شما خالی است.
@@ -553,11 +550,6 @@
"ترک گروه انجام نشد"آیا مطمئن هستید که میخواهید این مکالمه را حذف کنید؟مکالمه حذف شد
- عبارت بازیابی شما
- این عبارت بازیابی شماست
- عبارت بازیابی شما کلید اصلی شناسهی Session شما است - در صورت عدم دسترسی به دستگاه خود می توانید از آن برای بازگرداندن شناسهی Session خود استفاده کنید. عبارت بازیابی خود را در مکانی امن ذخیره کنید و آن را به کسی ندهید.
- نگه دارید تا نشان داده شود
- شما تقریبا تمام کردید! ۸۰٪با ذخیره کردن عبارت بازیابی، از حساب خود را محافظت کنیدبرای فاش کردن عبارت بازیابی، بر روی کلمات redacted ضربه زده و نگه دارید، سپس با خیال راحت آن را ذخیره کنید تا از شناسهی Session خود محافظت نمایید.حتماً عبارت بازیابی خود را در مکانی امن ذخیره کنید
@@ -570,11 +562,11 @@
بیشتر بدانیددر حال اصلاح…Session جدید
- شناسهی Session را وارد کنید
+ شناسهی Session را وارد کنیدکد QR را اسکن کنیدبرای شروع Session، کد QR کاربر را اسکن کنید. با ضربه زدن روی نماد کد QR در تنظیمات حساب کاربری، کدهای QR را میتوان یافت.شماره session نامعتبر
- کاربران میتوانند شناسهی Session خود را با رفتن به تنظیمات حساب خود و ضربه زدن به Share Session ID یا با به اشتراک گذاشتن کد QR خود، با دیگران به اشتراک بگذارند.
+ کاربران میتوانند شناسهی Session خود را با رفتن به تنظیمات حساب خود و ضربه زدن به Share Account ID یا با به اشتراک گذاشتن کد QR خود، با دیگران به اشتراک بگذارند.لطفا آیدی سشن یا اسم ONS را بررسی کنید و سپس دوباره امتحان کنید.اپ Session برای اسکن کدهای QR احتیاج دارد به دوربین دسترسی داشته باشداجازه دسترسی به دوربین
@@ -602,7 +594,6 @@
دستگاههادعوت از یک دوستسوالات متداول
- عبارت بازیابیپاک کردن اطلاعاتپاک کردن دادهها همراه با شبکهبه ما کمک کنید که سشن را ترجمه کنیم
@@ -615,8 +606,6 @@
با استفاده از سرورهای گوگل، شما به صورت سریع و مطمئن از پیامهای جدید مطلع میشوید.تغییر نامقطع اتصال دستگاه
- عبارت بازیابی شما
- این عبارت بازیابی شماست. با استفاده از آن میتوانید شناسهی Session خود را به دستگاه جدید بازیابی یا انتقال دهید.پاک کردن همه دادههااین به طور دائم پیامها، جلسات و مخاطبین شما را حذف میکند.آیا فقط میخواهید این دستگاه را پاک کنید یا میخواهید کل اکانت را پاک کنید؟
@@ -650,7 +639,7 @@
روزشبپیش فرض سیستم
- کپی شناسهی Session
+ کپی شناسهی Sessionپیوستپیام صوتیجزئيات
@@ -660,7 +649,6 @@
یک فایل پشتیبان انتخاب و گذرمتنی که با آن ساخته شده است را وارد کنید.گذرمتن ۳۰رقمیاین مقداری طول میکشد، دوست دارید ردش کنید؟
- اتصال به یک دستگاهعبارت بازیابیاسکن کد QRبرای دیدن کد QR خود، در دستگاه دیگرتان به «تنظیمات ← عبارت بازیابی» مراجعه کنید.
@@ -671,7 +659,6 @@
حالت آهستهشما سریع و مطمئن با استفاده از سرورهای اطلاعرسانی گوگل از پیامهای جدید مطلع میشوید.نشست هرازگاهی در پس زمینه وجود پیامهای جدید را بررسی میکند.
- متن بازیابینشست قفل شدهاست ﺑﺮﺍﯼ ﮔﺸﻮﺩﻥ ﺿﺮﺑﻪ ﺑﺰﻧﻴﺪیک نام مستعار وارد کنید
diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml
index 09e662af45..45818d27f2 100644
--- a/app/src/main/res/values-fi-rFI/strings.xml
+++ b/app/src/main/res/values-fi-rFI/strings.xml
@@ -523,27 +523,24 @@ on viallinen!
Kopioitu leikepöydälleSeuraavaJaa
- Virheellinen Session ID
+ Virheellinen Account IDPeruuta
- Sinun Session ID
- Session alkaa täältä...
- Tee Session ID
- Jatka Istuntoasi
+ Sinun Account IDMikä on Session?Se on hajautettu, salattu viestisovellusJoten se ei kerää henkilökohtaisia tietoja tai keskustelun metatietoja? Miten se toimii?Käyttämällä kehittyneitä nimettömiä reititys- ja päästä päähän -salaustekniikoita.Ystävät eivät anna ystävien käyttää vaarantunutta viestintäsovellusta. Olet tervetullut.
- Sano tervehdys Session tunnuksellesi
- Session ID on yksilöllinen osoite, jonka avulla muut voivat ottaa sinuun yhteyttä Sessionissa. Sillä ei ole yhteyttä todelliseen identiteettiisi, Session ID on täysin anonyymi ja yksityinen tarkoituksella.
+
+
Palauta sinun tiliSyötä palautuslause joka annettiin sinulle, kun olet rekisteröitynyt palauttamaan tilisi.Syötä palautuslauseesi
- Valitse näyttönimi
- Tämä on nimesi, kun käytät Sessionia. Se voi olla oikea nimesi, kutsumanimi tai mitä tahansa muuta haluat.
- Syötä näyttönimi
- Valitse näyttönimi
- Valitse lyhyempi näyttönimi
+ Valitse näyttönimi
+ Tämä on nimesi, kun käytät Sessionia. Se voi olla oikea nimesi, kutsumanimi tai mitä tahansa muuta haluat.
+ Syötä näyttönimi
+ Valitse näyttönimi
+ Valitse lyhyempi näyttönimiSuositeltuValitse vaihtoehtoSinulla ei ole yhteystietoja
@@ -552,11 +549,6 @@ on viallinen!
"Ryhmästä ei voitu poistua"Haluatko varmasti poistaa tämän keskustelun?Keskustelu poistettu
- Palautuslauseke
- Tutustu palautuslauseesi
- Sinun palautuslause on pääavain Session tunnukseesi — voit käyttää sitä palauttamaan Session tunnuksesi jos menetät pääsyn laitteeseen. Säilytä palautuslauseesi turvallisessa paikassa, ja älä anna sitä kenellekään.
- Pidä pohjassa paljastaaksesi
- Olet melkein valmis! 80%Suojaa tilisi tallentamalla palautuslausekeNapauta ja pidä piiloteettuja sanoja paljastaaksesi palautuslauseen, ja säästä se turvallisesti suojataksesi Session tilisi.Varmista, että säilytät palautuslauseesi turvallisessa paikassa
@@ -569,11 +561,11 @@ on viallinen!
LisätietojaRatkaistaan…Uusi Istunto
- Anna Session ID
+ Anna Account IDLue QR-koodiSkannaa käyttäjän QR-koodi aloittaaksesi istunnon. QR-koodit löytyvät napauttamalla QR-koodin kuvaketta tilin asetuksista.
- Syötä Session ID tai ONS-nimi
- Käyttäjät voivat jakaa Session tunnuksensa menemällä tiliasetuksiinsa ja painamalla \"Jaa Session ID\" tai jakamalla QR-koodin.
+ Syötä Account ID tai ONS-nimi
+ Käyttäjät voivat jakaa Session tunnuksensa menemällä tiliasetuksiinsa ja painamalla \"Jaa Account ID\" tai jakamalla QR-koodin.Tarkista istunnon tunnus tai ONS nimi ja yritä uudelleen.Session tarvitsee kameran käyttöoikeuden skannatakseensa QR-kooditMyönnä Kameran Käyttöoikeus
@@ -601,7 +593,6 @@ on viallinen!
LaitteetKutsu ystäviäUKK
- PalautuslausekeTyhjennä tiedotTyhjennä Tiedot Mukaan Lukien VerkkoAuta meitä kääntämään Session
@@ -614,8 +605,6 @@ on viallinen!
Sinulle ilmoitetaan uusista viesteistä luotettavasti ja viivyttelemättä Applen ilmoituspalvelua käyttäen.Vaihda nimiPoista laitteen linkitys
- Palautuslauseke
- Tämä on palautuslause. Sen avulla voit palauttaa tai siirtää Session tunnuksesi uudelle laitteelle.Tyhjennä tiedotTämä poistaa pysyvästi viestit, istunnot ja yhteystiedot.Haluatko tyhjentää datan vain tästä laitteesta vai poistaa koko tilin?
@@ -649,7 +638,7 @@ on viallinen!
PäiväYöJärjestelmän oletus
- Kopioi Session ID
+ Kopioi Account IDLiiteÄäniviestiLisätiedot
@@ -659,7 +648,6 @@ on viallinen!
Valitse varmuuskopiotiedosto ja kirjoita salasana, jonka kanssa se on luotu.30-merkkinen pääsykoodiTämä kestää jonkin aikaa, haluaisitko ohittaa?
- Yhdistä laitePalautusvirkeSkannaa QR-koodiSiirry asetuksiin → palautusvirke toisella laitteellasi näyttääksesi QR-koodisi.
@@ -670,7 +658,6 @@ on viallinen!
HidastilaSinulle ilmoitetaan uusista viesteistä luotettavasti ja viivyttelemättä Applen ilmoituspalvelua käyttäen.Session tarkistaa taustalla ajoittain uudet viestit.
- PalautusvirkeSession on lukittuAvaa napauttamallaAnna nimimerkki
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 09e662af45..45818d27f2 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -523,27 +523,24 @@ on viallinen!
Kopioitu leikepöydälleSeuraavaJaa
- Virheellinen Session ID
+ Virheellinen Account IDPeruuta
- Sinun Session ID
- Session alkaa täältä...
- Tee Session ID
- Jatka Istuntoasi
+ Sinun Account IDMikä on Session?Se on hajautettu, salattu viestisovellusJoten se ei kerää henkilökohtaisia tietoja tai keskustelun metatietoja? Miten se toimii?Käyttämällä kehittyneitä nimettömiä reititys- ja päästä päähän -salaustekniikoita.Ystävät eivät anna ystävien käyttää vaarantunutta viestintäsovellusta. Olet tervetullut.
- Sano tervehdys Session tunnuksellesi
- Session ID on yksilöllinen osoite, jonka avulla muut voivat ottaa sinuun yhteyttä Sessionissa. Sillä ei ole yhteyttä todelliseen identiteettiisi, Session ID on täysin anonyymi ja yksityinen tarkoituksella.
+
+
Palauta sinun tiliSyötä palautuslause joka annettiin sinulle, kun olet rekisteröitynyt palauttamaan tilisi.Syötä palautuslauseesi
- Valitse näyttönimi
- Tämä on nimesi, kun käytät Sessionia. Se voi olla oikea nimesi, kutsumanimi tai mitä tahansa muuta haluat.
- Syötä näyttönimi
- Valitse näyttönimi
- Valitse lyhyempi näyttönimi
+ Valitse näyttönimi
+ Tämä on nimesi, kun käytät Sessionia. Se voi olla oikea nimesi, kutsumanimi tai mitä tahansa muuta haluat.
+ Syötä näyttönimi
+ Valitse näyttönimi
+ Valitse lyhyempi näyttönimiSuositeltuValitse vaihtoehtoSinulla ei ole yhteystietoja
@@ -552,11 +549,6 @@ on viallinen!
"Ryhmästä ei voitu poistua"Haluatko varmasti poistaa tämän keskustelun?Keskustelu poistettu
- Palautuslauseke
- Tutustu palautuslauseesi
- Sinun palautuslause on pääavain Session tunnukseesi — voit käyttää sitä palauttamaan Session tunnuksesi jos menetät pääsyn laitteeseen. Säilytä palautuslauseesi turvallisessa paikassa, ja älä anna sitä kenellekään.
- Pidä pohjassa paljastaaksesi
- Olet melkein valmis! 80%Suojaa tilisi tallentamalla palautuslausekeNapauta ja pidä piiloteettuja sanoja paljastaaksesi palautuslauseen, ja säästä se turvallisesti suojataksesi Session tilisi.Varmista, että säilytät palautuslauseesi turvallisessa paikassa
@@ -569,11 +561,11 @@ on viallinen!
LisätietojaRatkaistaan…Uusi Istunto
- Anna Session ID
+ Anna Account IDLue QR-koodiSkannaa käyttäjän QR-koodi aloittaaksesi istunnon. QR-koodit löytyvät napauttamalla QR-koodin kuvaketta tilin asetuksista.
- Syötä Session ID tai ONS-nimi
- Käyttäjät voivat jakaa Session tunnuksensa menemällä tiliasetuksiinsa ja painamalla \"Jaa Session ID\" tai jakamalla QR-koodin.
+ Syötä Account ID tai ONS-nimi
+ Käyttäjät voivat jakaa Session tunnuksensa menemällä tiliasetuksiinsa ja painamalla \"Jaa Account ID\" tai jakamalla QR-koodin.Tarkista istunnon tunnus tai ONS nimi ja yritä uudelleen.Session tarvitsee kameran käyttöoikeuden skannatakseensa QR-kooditMyönnä Kameran Käyttöoikeus
@@ -601,7 +593,6 @@ on viallinen!
LaitteetKutsu ystäviäUKK
- PalautuslausekeTyhjennä tiedotTyhjennä Tiedot Mukaan Lukien VerkkoAuta meitä kääntämään Session
@@ -614,8 +605,6 @@ on viallinen!
Sinulle ilmoitetaan uusista viesteistä luotettavasti ja viivyttelemättä Applen ilmoituspalvelua käyttäen.Vaihda nimiPoista laitteen linkitys
- Palautuslauseke
- Tämä on palautuslause. Sen avulla voit palauttaa tai siirtää Session tunnuksesi uudelle laitteelle.Tyhjennä tiedotTämä poistaa pysyvästi viestit, istunnot ja yhteystiedot.Haluatko tyhjentää datan vain tästä laitteesta vai poistaa koko tilin?
@@ -649,7 +638,7 @@ on viallinen!
PäiväYöJärjestelmän oletus
- Kopioi Session ID
+ Kopioi Account IDLiiteÄäniviestiLisätiedot
@@ -659,7 +648,6 @@ on viallinen!
Valitse varmuuskopiotiedosto ja kirjoita salasana, jonka kanssa se on luotu.30-merkkinen pääsykoodiTämä kestää jonkin aikaa, haluaisitko ohittaa?
- Yhdistä laitePalautusvirkeSkannaa QR-koodiSiirry asetuksiin → palautusvirke toisella laitteellasi näyttääksesi QR-koodisi.
@@ -670,7 +658,6 @@ on viallinen!
HidastilaSinulle ilmoitetaan uusista viesteistä luotettavasti ja viivyttelemättä Applen ilmoituspalvelua käyttäen.Session tarkistaa taustalla ajoittain uudet viestit.
- PalautusvirkeSession on lukittuAvaa napauttamallaAnna nimimerkki
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index d0562eb614..5513aa6619 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -550,27 +550,24 @@
Copié dans le presse-papierSuivantPartager
- Session ID non valide
+ Account ID non valideAnnuler
- Votre Session ID
- Votre Session débute ici...
- Créer un Session ID
- Continuez votre Session
+ Votre Account IDQu\'est-ce que Session ?C\'est une application de messagerie décentralisée et cryptéeElle ne recueille donc pas mes informations personnelles ou mes métadonnées de conversations ? Comment ça marche ?En utilisant une combinaison de technologies avancées de routage anonyme et de chiffrement de bout en bout.Les vrais amis ne laissent pas leurs amis utiliser des outils de messagerie compromis. De rien.
- Dites bonjour à votre Session ID
- Votre Session ID est l\'identifiant unique que les gens utilisent pour vous contacter dans Session. Sans lien avec votre identité réelle, votre Session ID est complètement anonyme et privé.
+
+
Restaurez votre comptePour restaurer votre compte, veuillez entrer la phrase de récupération qui vous a été fournie lors de la création de votre compte.Saisissez votre phrase de récupération
- Choisissez votre nom d\'utilisateur
- Ce sera votre nom lorsque vous utiliserez Session. Il peut s\'agir de votre vrai nom, d\'un pseudo ou de ce que vous voulez.
- Saisissez un nom d\'utilisateur
- Veuillez choisir un nom d\'utilisateur
- Veuillez choisir un nom d\'utilisateur plus court
+ Choisissez votre nom d\'utilisateur
+ Ce sera votre nom lorsque vous utiliserez Session. Il peut s\'agir de votre vrai nom, d\'un pseudo ou de ce que vous voulez.
+ Saisissez un nom d\'utilisateur
+ Veuillez choisir un nom d\'utilisateur
+ Veuillez choisir un nom d\'utilisateur plus courtRecommandéVeuillez choisir une optionVous n\'avez pas encore de contacts
@@ -579,13 +576,8 @@
"Impossible de quitter le groupe"Voulez-vous vraiment supprimer cette conversation ?Conversation supprimée
- Votre phrase de récupération
- Voici votre phrase de récupération
- Votre phrase de récupération est la clé principale de votre Session ID - vous pouvez l\'utiliser pour restaurer votre Session ID si vous perdez l\'accès à votre appareil. Conservez la dans un endroit sûr et ne la donnez à personne.
- Appuyer pour révéler
- Vous avez presque terminé ! 80%Sécurisez votre compte en sauvegardant votre phrase de récupération
- Appuyez et maintenez les mots masqués pour révéler votre phrase de récupération, puis stockez-la en toute sécurité pour sécuriser votre Session ID.
+ Appuyez et maintenez les mots masqués pour révéler votre phrase de récupération, puis stockez-la en toute sécurité pour sécuriser votre Account ID.Assurez-vous de conserver votre phrase de récupération dans un endroit sûrCheminSession occulte votre adresse IP en envoyant vos messages via plusieurs nœuds de service dans le réseau décentralisé de Session. Voici les pays par le biais desquels votre connexion est actuellement envoyée :
@@ -596,12 +588,12 @@
En savoir plusContact en cours…Nouvelle Session
- Saisir un Session ID
+ Saisir un Account IDScanner un QR CodeScannez le QR code d\'un utilisateur pour démarrer une session. Les QR codes peuvent se trouver en touchant l\'icône du QR code dans les paramètres du compte.
- Entrer un Session ID ou un nom ONS
- Les utilisateurs peuvent partager leur Session ID depuis les paramètres du compte ou en utilisant le code QR.
- Veuillez vérifier le Session ID ou le nom ONS et réessayer.
+ Entrer un Account ID ou un nom ONS
+ Les utilisateurs peuvent partager leur Account ID depuis les paramètres du compte ou en utilisant le code QR.
+ Veuillez vérifier le Account ID ou le nom ONS et réessayer.Session a besoin d\'accéder à l\'appareil photo pour scanner les QR codesAutoriser l\'accèsNouveau groupe privé
@@ -629,7 +621,6 @@
Appareils reliésInviter un amiFAQ
- Phrase de récupérationEffacer les donnéesEffacer les données et le réseauAidez-nous à traduire Session
@@ -651,8 +642,6 @@
Vous serez averti de nouveaux messages de manière fiable et immédiate en utilisant les serveurs de notification de Google.Modifier le nomDéconnecter l\'appareil
- Votre phrase de récupération
- Vous pouvez utiliser votre phrase de récupération pour restaurer votre compte ou relier un appareil.Effacer toutes les donnéesCela supprimera définitivement vos messages, vos sessions et vos contacts.Souhaitez-vous effacer seulement cet appareil ou supprimer l\'ensemble de votre compte ?
@@ -689,7 +678,7 @@
JourNuitDéfaut du système
- Copier le Session ID
+ Copier le Account IDFichier jointMessage vocalDétails
@@ -699,7 +688,6 @@
Sélectionnez un fichier de sauvegarde et entrez la phrase de passe avec laquelle il a été créé.Phrase de passe de 30 caractèresCela prend un certain temps, voulez-vous passer ?
- Relier un appareilPhrase de récupérationScanner le QR CodeAllez dans Paramètres → Phrase de récupération sur votre autre appareil pour afficher votre QR code.
@@ -710,7 +698,6 @@
Mode lentVous serez averti de nouveaux messages de manière fiable et immédiate en utilisant les serveurs de notification de Google.Session vérifiera occasionnellement la présence de nouveaux messages en tâche de fond.
- Phrase de récupérationSession est VerrouilléToucher pour déverrouillerSaisissez un nom
@@ -767,9 +754,9 @@
Votre demande de message a été acceptée.Votre demande de message est en attente.Aucune demande de message en attente
- Message privé
- Groupes privés
- Groupe public
+ Message privé
+ Groupes privés
+ Groupe publicVous avez une nouvelle demande de messageConnexion…Appel entrant
@@ -841,7 +828,7 @@
Et %1$d autre a réagi %2$s à ce messageEt %1$d autres ont réagi %2$s à ce message
- Nouvelle conversation
+ Nouvelle conversationNouveau messageCréer un groupeRejoindre la communauté
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index d0562eb614..5513aa6619 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -550,27 +550,24 @@
Copié dans le presse-papierSuivantPartager
- Session ID non valide
+ Account ID non valideAnnuler
- Votre Session ID
- Votre Session débute ici...
- Créer un Session ID
- Continuez votre Session
+ Votre Account IDQu\'est-ce que Session ?C\'est une application de messagerie décentralisée et cryptéeElle ne recueille donc pas mes informations personnelles ou mes métadonnées de conversations ? Comment ça marche ?En utilisant une combinaison de technologies avancées de routage anonyme et de chiffrement de bout en bout.Les vrais amis ne laissent pas leurs amis utiliser des outils de messagerie compromis. De rien.
- Dites bonjour à votre Session ID
- Votre Session ID est l\'identifiant unique que les gens utilisent pour vous contacter dans Session. Sans lien avec votre identité réelle, votre Session ID est complètement anonyme et privé.
+
+
Restaurez votre comptePour restaurer votre compte, veuillez entrer la phrase de récupération qui vous a été fournie lors de la création de votre compte.Saisissez votre phrase de récupération
- Choisissez votre nom d\'utilisateur
- Ce sera votre nom lorsque vous utiliserez Session. Il peut s\'agir de votre vrai nom, d\'un pseudo ou de ce que vous voulez.
- Saisissez un nom d\'utilisateur
- Veuillez choisir un nom d\'utilisateur
- Veuillez choisir un nom d\'utilisateur plus court
+ Choisissez votre nom d\'utilisateur
+ Ce sera votre nom lorsque vous utiliserez Session. Il peut s\'agir de votre vrai nom, d\'un pseudo ou de ce que vous voulez.
+ Saisissez un nom d\'utilisateur
+ Veuillez choisir un nom d\'utilisateur
+ Veuillez choisir un nom d\'utilisateur plus courtRecommandéVeuillez choisir une optionVous n\'avez pas encore de contacts
@@ -579,13 +576,8 @@
"Impossible de quitter le groupe"Voulez-vous vraiment supprimer cette conversation ?Conversation supprimée
- Votre phrase de récupération
- Voici votre phrase de récupération
- Votre phrase de récupération est la clé principale de votre Session ID - vous pouvez l\'utiliser pour restaurer votre Session ID si vous perdez l\'accès à votre appareil. Conservez la dans un endroit sûr et ne la donnez à personne.
- Appuyer pour révéler
- Vous avez presque terminé ! 80%Sécurisez votre compte en sauvegardant votre phrase de récupération
- Appuyez et maintenez les mots masqués pour révéler votre phrase de récupération, puis stockez-la en toute sécurité pour sécuriser votre Session ID.
+ Appuyez et maintenez les mots masqués pour révéler votre phrase de récupération, puis stockez-la en toute sécurité pour sécuriser votre Account ID.Assurez-vous de conserver votre phrase de récupération dans un endroit sûrCheminSession occulte votre adresse IP en envoyant vos messages via plusieurs nœuds de service dans le réseau décentralisé de Session. Voici les pays par le biais desquels votre connexion est actuellement envoyée :
@@ -596,12 +588,12 @@
En savoir plusContact en cours…Nouvelle Session
- Saisir un Session ID
+ Saisir un Account IDScanner un QR CodeScannez le QR code d\'un utilisateur pour démarrer une session. Les QR codes peuvent se trouver en touchant l\'icône du QR code dans les paramètres du compte.
- Entrer un Session ID ou un nom ONS
- Les utilisateurs peuvent partager leur Session ID depuis les paramètres du compte ou en utilisant le code QR.
- Veuillez vérifier le Session ID ou le nom ONS et réessayer.
+ Entrer un Account ID ou un nom ONS
+ Les utilisateurs peuvent partager leur Account ID depuis les paramètres du compte ou en utilisant le code QR.
+ Veuillez vérifier le Account ID ou le nom ONS et réessayer.Session a besoin d\'accéder à l\'appareil photo pour scanner les QR codesAutoriser l\'accèsNouveau groupe privé
@@ -629,7 +621,6 @@
Appareils reliésInviter un amiFAQ
- Phrase de récupérationEffacer les donnéesEffacer les données et le réseauAidez-nous à traduire Session
@@ -651,8 +642,6 @@
Vous serez averti de nouveaux messages de manière fiable et immédiate en utilisant les serveurs de notification de Google.Modifier le nomDéconnecter l\'appareil
- Votre phrase de récupération
- Vous pouvez utiliser votre phrase de récupération pour restaurer votre compte ou relier un appareil.Effacer toutes les donnéesCela supprimera définitivement vos messages, vos sessions et vos contacts.Souhaitez-vous effacer seulement cet appareil ou supprimer l\'ensemble de votre compte ?
@@ -689,7 +678,7 @@
JourNuitDéfaut du système
- Copier le Session ID
+ Copier le Account IDFichier jointMessage vocalDétails
@@ -699,7 +688,6 @@
Sélectionnez un fichier de sauvegarde et entrez la phrase de passe avec laquelle il a été créé.Phrase de passe de 30 caractèresCela prend un certain temps, voulez-vous passer ?
- Relier un appareilPhrase de récupérationScanner le QR CodeAllez dans Paramètres → Phrase de récupération sur votre autre appareil pour afficher votre QR code.
@@ -710,7 +698,6 @@
Mode lentVous serez averti de nouveaux messages de manière fiable et immédiate en utilisant les serveurs de notification de Google.Session vérifiera occasionnellement la présence de nouveaux messages en tâche de fond.
- Phrase de récupérationSession est VerrouilléToucher pour déverrouillerSaisissez un nom
@@ -767,9 +754,9 @@
Votre demande de message a été acceptée.Votre demande de message est en attente.Aucune demande de message en attente
- Message privé
- Groupes privés
- Groupe public
+ Message privé
+ Groupes privés
+ Groupe publicVous avez une nouvelle demande de messageConnexion…Appel entrant
@@ -841,7 +828,7 @@
Et %1$d autre a réagi %2$s à ce messageEt %1$d autres ont réagi %2$s à ce message
- Nouvelle conversation
+ Nouvelle conversationNouveau messageCréer un groupeRejoindre la communauté
diff --git a/app/src/main/res/values-gl-rES/strings.xml b/app/src/main/res/values-gl-rES/strings.xml
index e95c5d05e0..7073bf4316 100644
--- a/app/src/main/res/values-gl-rES/strings.xml
+++ b/app/src/main/res/values-gl-rES/strings.xml
@@ -515,17 +515,14 @@
Copiado ao portapapeisSeguintePartillar
- ID de Session inválido
+ ID de Session inválidoCancelar
- O teu ID de Session
- A túa sesión comeza aquí...
- Crear ID de Session
- Continuar coa túa sesión
+ O teu ID de SessionQue é Session?É unha app de mensaxería cifrada e descentralizadaEntón non recompila a miña información persoal ou os metadatos das miñas conversas? Como funciona?Empregando unha combinación de tecnoloxías avanzadas de encamiñamento anónimo e cifrado punto-a-punto.
- Di ola ao teu ID de Session
+
Iniciar unha sesiónTes a certeza de querer abandonar este grupo?"Non foi posible abandonar o grupo"
@@ -534,7 +531,7 @@
TiProcesando…Nova sesión
- Introducir ID de Session
+ Introducir ID de SessionEscanear código QRConceder acceso á cámaraCrear grupo pechado
@@ -564,7 +561,7 @@
Introduce un nome de grupo máis curto, por favorOs grupos deben ter polo menos 1 membroEliminar usuario do grupo
- Copiar ID de Session
+ Copiar ID de SessionEntrar no grupo %s?Tes a certeza de querer entrar no grupo aberto %s?%s está bloqueado. Desbloquealo?
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index e95c5d05e0..7073bf4316 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -515,17 +515,14 @@
Copiado ao portapapeisSeguintePartillar
- ID de Session inválido
+ ID de Session inválidoCancelar
- O teu ID de Session
- A túa sesión comeza aquí...
- Crear ID de Session
- Continuar coa túa sesión
+ O teu ID de SessionQue é Session?É unha app de mensaxería cifrada e descentralizadaEntón non recompila a miña información persoal ou os metadatos das miñas conversas? Como funciona?Empregando unha combinación de tecnoloxías avanzadas de encamiñamento anónimo e cifrado punto-a-punto.
- Di ola ao teu ID de Session
+
Iniciar unha sesiónTes a certeza de querer abandonar este grupo?"Non foi posible abandonar o grupo"
@@ -534,7 +531,7 @@
TiProcesando…Nova sesión
- Introducir ID de Session
+ Introducir ID de SessionEscanear código QRConceder acceso á cámaraCrear grupo pechado
@@ -564,7 +561,7 @@
Introduce un nome de grupo máis curto, por favorOs grupos deben ter polo menos 1 membroEliminar usuario do grupo
- Copiar ID de Session
+ Copiar ID de SessionEntrar no grupo %s?Tes a certeza de querer entrar no grupo aberto %s?%s está bloqueado. Desbloquealo?
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 4ade82a2c8..308874646c 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -524,27 +524,24 @@
क्लिपबोर्ड पर कॉपी किया गया हैअगलासाझा करें
- अमान्य सेशन आईडी
+ अमान्य सेशन आईडीरद्द करें
- आपकी सेशन आईडी
- आपका सेशन यहां आरंभ होता है...
- सेशन आईडी बनाएं
- अपना सेशन जारी रखें
+ आपकी सेशन आईडीसेशन क्या है?यह एक decentralized, encrypted मेसेजिंग ऐप हैइसलिए यह मेरी निजी जानकारी या बातचीत का metadata इकठ्ठा नहीं करता? यह कैसे काम करता है?एडवांस्ड anonymous routing और end-to-end encryption के मिश्रण का प्रयोग करके।दोस्त दोस्तों को असुरक्षित मैसेंजर नहीं उपयोग करने देते। आपका स्वागत है।
- अपनी सेशन आईडी को हेल्लो कहें
- आपकी Session ID एक ऐसा अनोखा पता है जिसका उपयोग करके लोग आपसे Session पर संपर्क कर सकते हैं। आपकी वास्तविक पहचान से कोई संबंध नहीं होने के कारण, आपका Session ID डिज़ाइन द्वारा पूरी तरह से गुमनाम और निजी है |
+
+
अकाउंट रिस्टोर करेंअकाउंट बनाते समय बनाया गया अपना रिकवरी वाक्य डालें।अपना पुनर्प्राप्ति वाक्यांश लिखें
- अपना प्रदर्शन नाम चुनें
- यह सेशन इस्तेमाल करते समय आपका नाम होगा। यह आपका असली नाम, उपनाम या कुछ और भी हो सकता है।
- डिस्प्ले नाम डालें
- कृपया एक डिस्प्ले नाम चुनें
- कृपया एक छोटा डिसप्ले नाम चुनें
+ अपना प्रदर्शन नाम चुनें
+ यह सेशन इस्तेमाल करते समय आपका नाम होगा। यह आपका असली नाम, उपनाम या कुछ और भी हो सकता है।
+ डिस्प्ले नाम डालें
+ कृपया एक डिस्प्ले नाम चुनें
+ कृपया एक छोटा डिसप्ले नाम चुनेंसुझाया गयाकृपया एक विकल्प चुनें।अभी तक आपके पास कोई कॉन्टैक्ट्स नहीं हैं
@@ -553,13 +550,8 @@
"ग्रुप नहीं छोड़ सके"क्या वाकई आप इस वार्तालाप को हटाना चाहते हैं?बातचीत हटाई गई
- आपका पुनर्प्राप्ति वाक्यांश
- अपने पुनर्प्राप्ति वाक्यांश से मिलें
- आपका रिकवरी फ्रेज आपके Session Id की मास्टर कीय है — आप इसका इस्तेमाल अपनी Session ID को वापिस पाने के लिए कर सकते है अगर आपका फ़ोन गुम हो गया है | अपने रिकवरी फ्रेज को एक सुरक्षित जगह रखे और इसे किसी के साथ शेयर न करे |
- देखने के लिए दबाएं
- पूर्ण होने वाला है! 80%अकाउंट सुरक्षित रखने के लिए अपनी पुनर्व्यप्ती वाक्यांश को सेव करके रखें
- अपना पुनर्प्राप्ति वाक्यांश प्रकट करने के लिए संशोधित शब्दों को टैप और होल्ड करें, फिर अपनी Session ID को सुरक्षित करने के लिए इसे सुरक्षित रूप से संग्रहीत करें।
+ अपना पुनर्प्राप्ति वाक्यांश प्रकट करने के लिए संशोधित शब्दों को टैप और होल्ड करें, फिर अपनी Account ID को सुरक्षित करने के लिए इसे सुरक्षित रूप से संग्रहीत करें।अपने रिकवरी फ्रेज को एक सुरक्षित जगह रखेपथसेशन आपके मैसेज को सेशन के डेंटरलिज़्ड नेटवर्क की बहुत साडी सर्विस नोड्स में भेज देता है जो आपकी IP को छुपाती है.
@@ -570,7 +562,7 @@
अधिक जानेंहल किया जा रहा हैनया सेशन
- सेशन आईडी डालें
+ सेशन आईडी डालेंQR कोड को स्कैन करेंसेशन शुरू करने के लिए यूजर के क्यूआर कोड को स्कैन करें। क्यूआर कोड को अकाउंट सेटिंग में क्यूआर कोड आइकन पर टैप करके पाया जा सकता है।Session आईडी या ओएनएस नाम दर्ज करें
@@ -602,7 +594,6 @@
डिवाइसेज़किसी मित्र को आमंत्रित करेंअकसर किये गए सवाल
- पुनर्प्राप्ति वाक्यांशडेटा हटाएंडाटा नेटवर्क के समेत साफ करें।सेशन का अनुवाद करने में सहायता करें
@@ -615,8 +606,6 @@
आपको नई सूचनाओं के बारे में google के नोटीफिकेशन servers से तत्काल सूचित किया जाएगा।नाम बदलेंडिवाइस को अनलिंक करें
- आपका पुनर्प्राप्ति वाक्यांश
- यह आपका रिकवरी फ्रेज है | इसके साथ, आप अपनी Session ID को किसी नए डिवाइस पर माइग्रेट कर सकते हैं।सभी डेटा हटाएंयह आपके मैसेजस, सेशन और कॉन्टैक्टस को स्थायी रूप से हटा देगा।क्या आप सिर्फ इस यंत्र को साफ करना चाहेंगे या अपना पूरा अकाउंट डिलीट करना चाहिएं?
@@ -650,7 +639,7 @@
हलकाअंधेरासिस्टम डिफ़ॉल्ट का इस्तेमाल करें
- कापी सेशन आईडी
+ कापी सेशन आईडीअटैचमेंटवौइस् मैसेजविस्तार
@@ -660,7 +649,6 @@
एक बैकअप फ़ाइल चुनें और वह पासफ़्रेज़ दर्ज करें जिसके साथ इसे बनाया गया था।30 अंक का पासफ्रेसयह समय ले रहा है, इसे छोड़ दें?
- डिवाइस को लिंक करेंपुनर्प्राप्ति वाक्यांशQR कोड को स्कैन करेंअपना क्यूआर कोड दिखाने के लिए अपने अन्य डिवाइस पर सेटिंग्स →पुनर्प्राप्ति वाक्यांश में जाएंं।
@@ -671,7 +659,6 @@
स्लो मोडआपको नई सूचनाओं के बारे में google के नोटीफिकेशन servers से तत्काल सूचित किया जाएगा।Session कभी-कभी पृष्ठभूमि में नए संदेशों की जांच करेगा।
- पुनर्प्राप्ति वाक्यांशSession लॉक हैअनलॉक करने के लिए टैप करेंउपनाम चुनें
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 4ade82a2c8..308874646c 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -524,27 +524,24 @@
क्लिपबोर्ड पर कॉपी किया गया हैअगलासाझा करें
- अमान्य सेशन आईडी
+ अमान्य सेशन आईडीरद्द करें
- आपकी सेशन आईडी
- आपका सेशन यहां आरंभ होता है...
- सेशन आईडी बनाएं
- अपना सेशन जारी रखें
+ आपकी सेशन आईडीसेशन क्या है?यह एक decentralized, encrypted मेसेजिंग ऐप हैइसलिए यह मेरी निजी जानकारी या बातचीत का metadata इकठ्ठा नहीं करता? यह कैसे काम करता है?एडवांस्ड anonymous routing और end-to-end encryption के मिश्रण का प्रयोग करके।दोस्त दोस्तों को असुरक्षित मैसेंजर नहीं उपयोग करने देते। आपका स्वागत है।
- अपनी सेशन आईडी को हेल्लो कहें
- आपकी Session ID एक ऐसा अनोखा पता है जिसका उपयोग करके लोग आपसे Session पर संपर्क कर सकते हैं। आपकी वास्तविक पहचान से कोई संबंध नहीं होने के कारण, आपका Session ID डिज़ाइन द्वारा पूरी तरह से गुमनाम और निजी है |
+
+
अकाउंट रिस्टोर करेंअकाउंट बनाते समय बनाया गया अपना रिकवरी वाक्य डालें।अपना पुनर्प्राप्ति वाक्यांश लिखें
- अपना प्रदर्शन नाम चुनें
- यह सेशन इस्तेमाल करते समय आपका नाम होगा। यह आपका असली नाम, उपनाम या कुछ और भी हो सकता है।
- डिस्प्ले नाम डालें
- कृपया एक डिस्प्ले नाम चुनें
- कृपया एक छोटा डिसप्ले नाम चुनें
+ अपना प्रदर्शन नाम चुनें
+ यह सेशन इस्तेमाल करते समय आपका नाम होगा। यह आपका असली नाम, उपनाम या कुछ और भी हो सकता है।
+ डिस्प्ले नाम डालें
+ कृपया एक डिस्प्ले नाम चुनें
+ कृपया एक छोटा डिसप्ले नाम चुनेंसुझाया गयाकृपया एक विकल्प चुनें।अभी तक आपके पास कोई कॉन्टैक्ट्स नहीं हैं
@@ -553,13 +550,8 @@
"ग्रुप नहीं छोड़ सके"क्या वाकई आप इस वार्तालाप को हटाना चाहते हैं?बातचीत हटाई गई
- आपका पुनर्प्राप्ति वाक्यांश
- अपने पुनर्प्राप्ति वाक्यांश से मिलें
- आपका रिकवरी फ्रेज आपके Session Id की मास्टर कीय है — आप इसका इस्तेमाल अपनी Session ID को वापिस पाने के लिए कर सकते है अगर आपका फ़ोन गुम हो गया है | अपने रिकवरी फ्रेज को एक सुरक्षित जगह रखे और इसे किसी के साथ शेयर न करे |
- देखने के लिए दबाएं
- पूर्ण होने वाला है! 80%अकाउंट सुरक्षित रखने के लिए अपनी पुनर्व्यप्ती वाक्यांश को सेव करके रखें
- अपना पुनर्प्राप्ति वाक्यांश प्रकट करने के लिए संशोधित शब्दों को टैप और होल्ड करें, फिर अपनी Session ID को सुरक्षित करने के लिए इसे सुरक्षित रूप से संग्रहीत करें।
+ अपना पुनर्प्राप्ति वाक्यांश प्रकट करने के लिए संशोधित शब्दों को टैप और होल्ड करें, फिर अपनी Account ID को सुरक्षित करने के लिए इसे सुरक्षित रूप से संग्रहीत करें।अपने रिकवरी फ्रेज को एक सुरक्षित जगह रखेपथसेशन आपके मैसेज को सेशन के डेंटरलिज़्ड नेटवर्क की बहुत साडी सर्विस नोड्स में भेज देता है जो आपकी IP को छुपाती है.
@@ -570,7 +562,7 @@
अधिक जानेंहल किया जा रहा हैनया सेशन
- सेशन आईडी डालें
+ सेशन आईडी डालेंQR कोड को स्कैन करेंसेशन शुरू करने के लिए यूजर के क्यूआर कोड को स्कैन करें। क्यूआर कोड को अकाउंट सेटिंग में क्यूआर कोड आइकन पर टैप करके पाया जा सकता है।Session आईडी या ओएनएस नाम दर्ज करें
@@ -602,7 +594,6 @@
डिवाइसेज़किसी मित्र को आमंत्रित करेंअकसर किये गए सवाल
- पुनर्प्राप्ति वाक्यांशडेटा हटाएंडाटा नेटवर्क के समेत साफ करें।सेशन का अनुवाद करने में सहायता करें
@@ -615,8 +606,6 @@
आपको नई सूचनाओं के बारे में google के नोटीफिकेशन servers से तत्काल सूचित किया जाएगा।नाम बदलेंडिवाइस को अनलिंक करें
- आपका पुनर्प्राप्ति वाक्यांश
- यह आपका रिकवरी फ्रेज है | इसके साथ, आप अपनी Session ID को किसी नए डिवाइस पर माइग्रेट कर सकते हैं।सभी डेटा हटाएंयह आपके मैसेजस, सेशन और कॉन्टैक्टस को स्थायी रूप से हटा देगा।क्या आप सिर्फ इस यंत्र को साफ करना चाहेंगे या अपना पूरा अकाउंट डिलीट करना चाहिएं?
@@ -650,7 +639,7 @@
हलकाअंधेरासिस्टम डिफ़ॉल्ट का इस्तेमाल करें
- कापी सेशन आईडी
+ कापी सेशन आईडीअटैचमेंटवौइस् मैसेजविस्तार
@@ -660,7 +649,6 @@
एक बैकअप फ़ाइल चुनें और वह पासफ़्रेज़ दर्ज करें जिसके साथ इसे बनाया गया था।30 अंक का पासफ्रेसयह समय ले रहा है, इसे छोड़ दें?
- डिवाइस को लिंक करेंपुनर्प्राप्ति वाक्यांशQR कोड को स्कैन करेंअपना क्यूआर कोड दिखाने के लिए अपने अन्य डिवाइस पर सेटिंग्स →पुनर्प्राप्ति वाक्यांश में जाएंं।
@@ -671,7 +659,6 @@
स्लो मोडआपको नई सूचनाओं के बारे में google के नोटीफिकेशन servers से तत्काल सूचित किया जाएगा।Session कभी-कभी पृष्ठभूमि में नए संदेशों की जांच करेगा।
- पुनर्प्राप्ति वाक्यांशSession लॉक हैअनलॉक करने के लिए टैप करेंउपनाम चुनें
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index cbb3fc8c8b..8e5c653181 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -526,27 +526,24 @@
Vágólapra másolvaKövetkezőMegosztás
- Érvénytelen Session azonosító
+ Érvénytelen Session azonosítóMégse
- A session azonosítód
- A Session itt kezdődik...
- Session azonosító létrehozása
- Session azonosító helyreállítása
+ A session azonosítódMi az a Session?Ez egy decentralizált, titkosított üzenetküldő alkalmazásTehát nem gyűjti a személyes adataimat vagy a beszélgetés metaadatait? Hogyan működik?Fejlett anonim útválasztási és végponttól-végpontig titkosítási technológiák használatával.A barátként nem engedhetem, hogy megbízhatatlan üzenetküldő appokat használj. Szívesen.
- Ismerd meg a Session ID-d
- A Session azonosító az az egyedi cím, amelyet az emberek használhatnak, hogy kapcsolatba lépjenek Önnel a Sessionon. Mivel nincs kapcsolat a valódi személyazonosságával, az Session azonosító teljesen névtelen, és privát.
+
+
Fiók visszaállításaÍrja be azt a helyreállítási kifejezést, amelyet a fiók visszaállításához regisztrálásakor kapott.Írja be a helyreállítási kifejezést
- Válassza ki a megjelenítendő nevet
- Ez lesz az ön neve, amikor használja a Session alkalmazást. Ez lehet a valódi neve, álneve, vagy bármi más, ami tetszik.
- Írja be a megjelenítendő nevet
- Kérjük, válassza ki a megjelenítendő nevet
- Válasszon rövidebb megjelenítési nevet
+ Válassza ki a megjelenítendő nevet
+ Ez lesz az ön neve, amikor használja a Session alkalmazást. Ez lehet a valódi neve, álneve, vagy bármi más, ami tetszik.
+ Írja be a megjelenítendő nevet
+ Kérjük, válassza ki a megjelenítendő nevet
+ Válasszon rövidebb megjelenítési nevetAjánlottKérjük, válasszon egy lehetőségetMég nincsenek névjegyei
@@ -555,11 +552,6 @@
"Nem sikerült kilépni a csoportból"Biztosan törli ezt a beszélgetést?A beszélgetés törölve
- A helyreállítási kifejezés
- Írja be a helyreállítási kifejezést
- A helyreállítási kifejezés a Session azonosító főkulcsa - használhatja a Session azonosító visszaállítására, ha elveszíti a hozzáférését eszközéhez. Tárolja helyreállítási mondatát biztonságos helyen, és ne adja át senkinek.
- Tartsa lenyomva, hogy felfedje
- Már majdnem kész! 80%Biztosítsa fiókját a helyreállítási szöveg elmentésévelÉrintse meg és tartsa lenyomva a szerkesztett szavakat, hogy felfedje a helyreállítási kifejezést, majd tárolja biztonságosan Session-azonosítója biztonsága érdekében.Ügyeljen arra, hogy a helyreállítási szöveget biztonságos helyen tárolja
@@ -572,7 +564,7 @@
Tudj meg többetFeloldás...Új Session
- Adja meg a Session azonosítóját
+ Adja meg a Session azonosítójátQR kód beolvasásaA beszélgetés elindításához olvassa be a felhasználó QR kódját. A QR kód a fiókbeállításokban található a QR kód ikonra koppintva.Írja be Session azonosítóját vagy ONS nevét
@@ -604,7 +596,6 @@
EszközökBarát meghívásaGyakori kérdések
- Helyreállítási kódmondatAdataid törléseAdatok törlése, beleértve a hálózatot isSegítsen nekünk a Session lefordításában
@@ -617,8 +608,6 @@
A Google értesítési szerverein keresztül megbízhatóan és azonnal értesítést kap az új üzenetekről.Név módosításaEszköz társításának megszüntetése
- A helyreállítási kifejezés
- Ez a helyreállítási kódmondatod. Ezzel, visszaálíthatod, vagy migrálhatod a Session azonosítódat egy új eszközre.Az összes adat törléseEz végleg törölni fogja üzeneteit, beszélgetéseit és ismerőseit.Csak ezt az eszközt szeretné törölni, vagy törölni szeretné az egész fiókját?
@@ -652,7 +641,7 @@
KiBeAlapértelmezett
- Az ön Session azonosító kimásolása
+ Az ön Session azonosító kimásolásaCsatolmányHangüzenetRészletek
@@ -662,7 +651,6 @@
Válassz ki egy visszaállítási fájlt és add meg a hozzá tartozó visszaálítási kódmondatot.30-betűs kódmondatEz eltarthat egy ideig, szeretnéd átugrani?
- Eszköz társításaVisszaállítási kódmondatQR kód beolvasásaA QR-kód megjelenítéséhez nyissa meg a Beállítások → Helyreállítási kifejezés elemet másik eszközén.
@@ -673,7 +661,6 @@
Lassított módA Google értesítési szerverein keresztül megbízhatóan és azonnal értesítést kapsz az új üzenetekről.A Session alkalmanként, az új üzeneteket a háttérben fogja ellenőrizni.
- Visszaállítási kódmondatSession zárolvaKoppintson a feloldáshozÍrjon be egy becenevet
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index cbb3fc8c8b..8e5c653181 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -526,27 +526,24 @@
Vágólapra másolvaKövetkezőMegosztás
- Érvénytelen Session azonosító
+ Érvénytelen Session azonosítóMégse
- A session azonosítód
- A Session itt kezdődik...
- Session azonosító létrehozása
- Session azonosító helyreállítása
+ A session azonosítódMi az a Session?Ez egy decentralizált, titkosított üzenetküldő alkalmazásTehát nem gyűjti a személyes adataimat vagy a beszélgetés metaadatait? Hogyan működik?Fejlett anonim útválasztási és végponttól-végpontig titkosítási technológiák használatával.A barátként nem engedhetem, hogy megbízhatatlan üzenetküldő appokat használj. Szívesen.
- Ismerd meg a Session ID-d
- A Session azonosító az az egyedi cím, amelyet az emberek használhatnak, hogy kapcsolatba lépjenek Önnel a Sessionon. Mivel nincs kapcsolat a valódi személyazonosságával, az Session azonosító teljesen névtelen, és privát.
+
+
Fiók visszaállításaÍrja be azt a helyreállítási kifejezést, amelyet a fiók visszaállításához regisztrálásakor kapott.Írja be a helyreállítási kifejezést
- Válassza ki a megjelenítendő nevet
- Ez lesz az ön neve, amikor használja a Session alkalmazást. Ez lehet a valódi neve, álneve, vagy bármi más, ami tetszik.
- Írja be a megjelenítendő nevet
- Kérjük, válassza ki a megjelenítendő nevet
- Válasszon rövidebb megjelenítési nevet
+ Válassza ki a megjelenítendő nevet
+ Ez lesz az ön neve, amikor használja a Session alkalmazást. Ez lehet a valódi neve, álneve, vagy bármi más, ami tetszik.
+ Írja be a megjelenítendő nevet
+ Kérjük, válassza ki a megjelenítendő nevet
+ Válasszon rövidebb megjelenítési nevetAjánlottKérjük, válasszon egy lehetőségetMég nincsenek névjegyei
@@ -555,11 +552,6 @@
"Nem sikerült kilépni a csoportból"Biztosan törli ezt a beszélgetést?A beszélgetés törölve
- A helyreállítási kifejezés
- Írja be a helyreállítási kifejezést
- A helyreállítási kifejezés a Session azonosító főkulcsa - használhatja a Session azonosító visszaállítására, ha elveszíti a hozzáférését eszközéhez. Tárolja helyreállítási mondatát biztonságos helyen, és ne adja át senkinek.
- Tartsa lenyomva, hogy felfedje
- Már majdnem kész! 80%Biztosítsa fiókját a helyreállítási szöveg elmentésévelÉrintse meg és tartsa lenyomva a szerkesztett szavakat, hogy felfedje a helyreállítási kifejezést, majd tárolja biztonságosan Session-azonosítója biztonsága érdekében.Ügyeljen arra, hogy a helyreállítási szöveget biztonságos helyen tárolja
@@ -572,7 +564,7 @@
Tudj meg többetFeloldás...Új Session
- Adja meg a Session azonosítóját
+ Adja meg a Session azonosítójátQR kód beolvasásaA beszélgetés elindításához olvassa be a felhasználó QR kódját. A QR kód a fiókbeállításokban található a QR kód ikonra koppintva.Írja be Session azonosítóját vagy ONS nevét
@@ -604,7 +596,6 @@
EszközökBarát meghívásaGyakori kérdések
- Helyreállítási kódmondatAdataid törléseAdatok törlése, beleértve a hálózatot isSegítsen nekünk a Session lefordításában
@@ -617,8 +608,6 @@
A Google értesítési szerverein keresztül megbízhatóan és azonnal értesítést kap az új üzenetekről.Név módosításaEszköz társításának megszüntetése
- A helyreállítási kifejezés
- Ez a helyreállítási kódmondatod. Ezzel, visszaálíthatod, vagy migrálhatod a Session azonosítódat egy új eszközre.Az összes adat törléseEz végleg törölni fogja üzeneteit, beszélgetéseit és ismerőseit.Csak ezt az eszközt szeretné törölni, vagy törölni szeretné az egész fiókját?
@@ -652,7 +641,7 @@
KiBeAlapértelmezett
- Az ön Session azonosító kimásolása
+ Az ön Session azonosító kimásolásaCsatolmányHangüzenetRészletek
@@ -662,7 +651,6 @@
Válassz ki egy visszaállítási fájlt és add meg a hozzá tartozó visszaálítási kódmondatot.30-betűs kódmondatEz eltarthat egy ideig, szeretnéd átugrani?
- Eszköz társításaVisszaállítási kódmondatQR kód beolvasásaA QR-kód megjelenítéséhez nyissa meg a Beállítások → Helyreállítási kifejezés elemet másik eszközén.
@@ -673,7 +661,6 @@
Lassított módA Google értesítési szerverein keresztül megbízhatóan és azonnal értesítést kapsz az új üzenetekről.A Session alkalmanként, az új üzeneteket a háttérben fogja ellenőrizni.
- Visszaállítási kódmondatSession zárolvaKoppintson a feloldáshozÍrjon be egy becenevet
diff --git a/app/src/main/res/values-hy-rAM/strings.xml b/app/src/main/res/values-hy-rAM/strings.xml
index 85b9a03779..14731ac6df 100644
--- a/app/src/main/res/values-hy-rAM/strings.xml
+++ b/app/src/main/res/values-hy-rAM/strings.xml
@@ -532,27 +532,24 @@
Պատճենվել է կցարանումՀաջորդըԿիսվել
- Սխալ Session ID
+ Սխալ Account IDՓակել
- Ձեր Session ID֊ն
- Ձեր Սեանսը սկսվում է այստեղ...
- Ստեղծել Session֊ի հաշիվ
- Շարունակել Session֊ից օգտվելը
+ Ձեր Account ID֊նԻ՞նչ է Սեանսը։Այն ապահով, ծածկագրված նամակների ծրագիր էԴա նշանակում է, որ այն չի՞ հավաքում իմ անձնական տվյալները կամ իմ զրույցի մետատվյալները։Այն օգտվում է հատուկ տվյալների փոխանցման միջոցներից և ամբողջական կոդավորման տեխնոլոգիաներից։Ընկերները չեն թողնի ընկերներին, որ նրանք օգտվեն վտանգավոր նամակների ծրագրերից։ Խնդրեմ։
- Ասեք «բարև» Ձեր Սեանսի ինքնությանը
- Ձեր Սեանսի ինքնությունը հատուկ հասցե է, որը մարդիկ պիտի օգտագործեն Ձեզ հետ Սեանսով կապ հաստատելու համար։ Ձեր իրական ինքնության հետ կապ չունենալով, Ձեր Սեանսի ինքնությունն լիովին գաղտնի է։
+
+
Վերականգնել ձեր հաշիվըՄուտքագրեք վերականգնման բառակապակցությունը, որը տրվել է ձեզ, երբ գրանցվել եք ձեր հաշիվը վերականգնելու համար:Գրեք գաղտնի արտահայտությունը
- Ընտրեք ցուցադրվող անուն
- Այս անունը կցուցադրվի, երբ Դուք կօգտվեք Սեանսից։ Այն կարող է լինել Ձեր անունը, կեղծանուն, կամ որևիցե այլ բան։
- Մուտքագրեք ցուցադրվող անուն
- Խնդրում ենք գրել անուն
- Խնդրում ենք ընտրել կարճ անուն
+ Ընտրեք ցուցադրվող անուն
+ Այս անունը կցուցադրվի, երբ Դուք կօգտվեք Սեանսից։ Այն կարող է լինել Ձեր անունը, կեղծանուն, կամ որևիցե այլ բան։
+ Մուտքագրեք ցուցադրվող անուն
+ Խնդրում ենք գրել անուն
+ Խնդրում ենք ընտրել կարճ անուն[Խորհուրդ է տրվում]Խնդրում ենք ընտրելԴուք չունեք կոնտակտներ
@@ -561,13 +558,8 @@
"Չստացվեց հեռանալ խումբից"Վստա՞հ եք, որ ցանկանում եք ջնջել այս խոսակցությունը:Ջնջված է
- Ձեր վերականգնման բառակապակցություն
- Ծանոթացեք ձեր վերականգնման բառակապակցության հետ
- Session այդին Ձեր Session բանալին է, որը կարող եք վերականգնել եթե կորցնեք ձեր սարքը, ձեր բանալին պահեք և մի տվեք ինչ-որ մեկին.
- Սեղմած պահեք տեսնելու համար
- Դուք վերջացրել եք 80%Պահեք ձեր անվտանգությունը պահպանելով session-ի բանալին
- Հպեք և պահեք տրված բառերը՝ ձեր վերականգնման բանալին գտնելու համար, այնուհետև պահեք այն ապահով՝ ձեր Session ID-ն ապահով պահելու համար.
+ Հպեք և պահեք տրված բառերը՝ ձեր վերականգնման բանալին գտնելու համար, այնուհետև պահեք այն ապահով՝ ձեր Account ID-ն ապահով պահելու համար.Վստահ եղեք որ ձեր վերականգման բանալին հուսալի տեղում էՈւղիՍեանսը թաքցնում է Ձեր IP հասցեն Ձեր հաղորդագրությունները տանելով Սեանսի ապահով ցանցերի Ծառայության Հանգույցներով։ Սրանք այն երկրներն են, որոնցով Ձեր հաղորդագրություններն անցնում են․
@@ -578,7 +570,7 @@
Իմանալ ԱվելինԼուծում է…Նոր Սեանս
- Մուտքագրեք Սեանսի ինքնությունը
+ Մուտքագրեք Սեանսի ինքնությունըՍկանավորել QR ԿոդՍկանավորեք մեկի QR կոդը, որ սկսեք սեանս։ QR կոդը կարող եք գտնել հաշվի կարգավորումների մեջ՝ QR կոդի նշանի վրա սեղմելուց հետո։Գրեք session այդին կամ ONS անունը
@@ -610,7 +602,6 @@
ՍարքերՀրավիրել ընկերոջըՀաճախակի տրվող հարցեր
- Վերականգնման ԱրտահայտությունԶրոյացնելՄաքրել տվյալները, ներառյալ ցանցըՕգնեք մեզ թարգմանելով Session֊ը
@@ -623,8 +614,6 @@
Դուք մշտապես և անմիջապես կտեղեկացվեք նոր հաղորդագրությունների մասին՝ օգտագործելով Google-ի ծանուցումների սերվերները:Փոխել անունըԱռանձնացնել սարքը
- Ձեր վերականգնման բառակապակցություն
- Սա ձեր վերականգնման բառակապակցություն է: Դրա միջոցով դուք կարող եք վերականգնել կամ տեղափոխել ձեր Session ID-ն նոր սարք:Ջնջել բոլոր տվյալներըՍա ընդմիշտ կջնջի ձեր հաղորդագրությունները, սեսիաներն ու կոնտակտները:Ցանկանու՞մ եք մաքրել միայն այս սարքը, թե՞ ջնջել ձեր ամբողջ հաշիվը:
@@ -658,7 +647,7 @@
ՑերեկԳիշերՀամակարգի լռելյայն
- Պատճենել Session ID֊ն
+ Պատճենել Account ID֊նԿցումՁայնագրությունՄանրամասներ
@@ -668,7 +657,6 @@
Ընտրեք կրկնօրինակի ֆայլ և մուտքագրեք այն գաղտնաբառը, որով ստեղծվել է:30֊թվանոց գախտնաբառՍա որոշ ժամանակ է տևում, կցանկանա՞ք բաց թողնել:
- Ավելացնել սարքՎերականգնման բառակապակցությունՍկանավորել QR ԿոդըԱնցեք Կարգավորումներ → Վերականգնման Բառակապակցություն՝ ձեր QR կոդը ցուցադրելու համար:
@@ -679,7 +667,6 @@
Դանդաղ ռեժիմԴուք մշտապես և անմիջապես կտեղեկացվեք նոր հաղորդագրությունների մասին՝ օգտագործելով Google-ի ծանուցումների սերվերները:Session-ը երբեմն, ֆոնային կստուգի նոր հաղորդագրությունների առկայությունը:
- Գաղտնի արտահայտությունSession֊ը արգելափակված էՀպեք՝ ապակողպելու համարՄուտքագրե՛ք կեղծանունը
@@ -722,7 +709,7 @@
Նշել բոլորը, որպես տեսնվածԿոնտակտներ և խմբերՀաղորդագրություններ
- Անմիջական հաղորդագրություն
- Փակ խումբ
- Բաց խումբ
+ Անմիջական հաղորդագրություն
+ Փակ խումբ
+ Բաց խումբ
diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml
index 85b9a03779..14731ac6df 100644
--- a/app/src/main/res/values-hy/strings.xml
+++ b/app/src/main/res/values-hy/strings.xml
@@ -532,27 +532,24 @@
Պատճենվել է կցարանումՀաջորդըԿիսվել
- Սխալ Session ID
+ Սխալ Account IDՓակել
- Ձեր Session ID֊ն
- Ձեր Սեանսը սկսվում է այստեղ...
- Ստեղծել Session֊ի հաշիվ
- Շարունակել Session֊ից օգտվելը
+ Ձեր Account ID֊նԻ՞նչ է Սեանսը։Այն ապահով, ծածկագրված նամակների ծրագիր էԴա նշանակում է, որ այն չի՞ հավաքում իմ անձնական տվյալները կամ իմ զրույցի մետատվյալները։Այն օգտվում է հատուկ տվյալների փոխանցման միջոցներից և ամբողջական կոդավորման տեխնոլոգիաներից։Ընկերները չեն թողնի ընկերներին, որ նրանք օգտվեն վտանգավոր նամակների ծրագրերից։ Խնդրեմ։
- Ասեք «բարև» Ձեր Սեանսի ինքնությանը
- Ձեր Սեանսի ինքնությունը հատուկ հասցե է, որը մարդիկ պիտի օգտագործեն Ձեզ հետ Սեանսով կապ հաստատելու համար։ Ձեր իրական ինքնության հետ կապ չունենալով, Ձեր Սեանսի ինքնությունն լիովին գաղտնի է։
+
+
Վերականգնել ձեր հաշիվըՄուտքագրեք վերականգնման բառակապակցությունը, որը տրվել է ձեզ, երբ գրանցվել եք ձեր հաշիվը վերականգնելու համար:Գրեք գաղտնի արտահայտությունը
- Ընտրեք ցուցադրվող անուն
- Այս անունը կցուցադրվի, երբ Դուք կօգտվեք Սեանսից։ Այն կարող է լինել Ձեր անունը, կեղծանուն, կամ որևիցե այլ բան։
- Մուտքագրեք ցուցադրվող անուն
- Խնդրում ենք գրել անուն
- Խնդրում ենք ընտրել կարճ անուն
+ Ընտրեք ցուցադրվող անուն
+ Այս անունը կցուցադրվի, երբ Դուք կօգտվեք Սեանսից։ Այն կարող է լինել Ձեր անունը, կեղծանուն, կամ որևիցե այլ բան։
+ Մուտքագրեք ցուցադրվող անուն
+ Խնդրում ենք գրել անուն
+ Խնդրում ենք ընտրել կարճ անուն[Խորհուրդ է տրվում]Խնդրում ենք ընտրելԴուք չունեք կոնտակտներ
@@ -561,13 +558,8 @@
"Չստացվեց հեռանալ խումբից"Վստա՞հ եք, որ ցանկանում եք ջնջել այս խոսակցությունը:Ջնջված է
- Ձեր վերականգնման բառակապակցություն
- Ծանոթացեք ձեր վերականգնման բառակապակցության հետ
- Session այդին Ձեր Session բանալին է, որը կարող եք վերականգնել եթե կորցնեք ձեր սարքը, ձեր բանալին պահեք և մի տվեք ինչ-որ մեկին.
- Սեղմած պահեք տեսնելու համար
- Դուք վերջացրել եք 80%Պահեք ձեր անվտանգությունը պահպանելով session-ի բանալին
- Հպեք և պահեք տրված բառերը՝ ձեր վերականգնման բանալին գտնելու համար, այնուհետև պահեք այն ապահով՝ ձեր Session ID-ն ապահով պահելու համար.
+ Հպեք և պահեք տրված բառերը՝ ձեր վերականգնման բանալին գտնելու համար, այնուհետև պահեք այն ապահով՝ ձեր Account ID-ն ապահով պահելու համար.Վստահ եղեք որ ձեր վերականգման բանալին հուսալի տեղում էՈւղիՍեանսը թաքցնում է Ձեր IP հասցեն Ձեր հաղորդագրությունները տանելով Սեանսի ապահով ցանցերի Ծառայության Հանգույցներով։ Սրանք այն երկրներն են, որոնցով Ձեր հաղորդագրություններն անցնում են․
@@ -578,7 +570,7 @@
Իմանալ ԱվելինԼուծում է…Նոր Սեանս
- Մուտքագրեք Սեանսի ինքնությունը
+ Մուտքագրեք Սեանսի ինքնությունըՍկանավորել QR ԿոդՍկանավորեք մեկի QR կոդը, որ սկսեք սեանս։ QR կոդը կարող եք գտնել հաշվի կարգավորումների մեջ՝ QR կոդի նշանի վրա սեղմելուց հետո։Գրեք session այդին կամ ONS անունը
@@ -610,7 +602,6 @@
ՍարքերՀրավիրել ընկերոջըՀաճախակի տրվող հարցեր
- Վերականգնման ԱրտահայտությունԶրոյացնելՄաքրել տվյալները, ներառյալ ցանցըՕգնեք մեզ թարգմանելով Session֊ը
@@ -623,8 +614,6 @@
Դուք մշտապես և անմիջապես կտեղեկացվեք նոր հաղորդագրությունների մասին՝ օգտագործելով Google-ի ծանուցումների սերվերները:Փոխել անունըԱռանձնացնել սարքը
- Ձեր վերականգնման բառակապակցություն
- Սա ձեր վերականգնման բառակապակցություն է: Դրա միջոցով դուք կարող եք վերականգնել կամ տեղափոխել ձեր Session ID-ն նոր սարք:Ջնջել բոլոր տվյալներըՍա ընդմիշտ կջնջի ձեր հաղորդագրությունները, սեսիաներն ու կոնտակտները:Ցանկանու՞մ եք մաքրել միայն այս սարքը, թե՞ ջնջել ձեր ամբողջ հաշիվը:
@@ -658,7 +647,7 @@
ՑերեկԳիշերՀամակարգի լռելյայն
- Պատճենել Session ID֊ն
+ Պատճենել Account ID֊նԿցումՁայնագրությունՄանրամասներ
@@ -668,7 +657,6 @@
Ընտրեք կրկնօրինակի ֆայլ և մուտքագրեք այն գաղտնաբառը, որով ստեղծվել է:30֊թվանոց գախտնաբառՍա որոշ ժամանակ է տևում, կցանկանա՞ք բաց թողնել:
- Ավելացնել սարքՎերականգնման բառակապակցությունՍկանավորել QR ԿոդըԱնցեք Կարգավորումներ → Վերականգնման Բառակապակցություն՝ ձեր QR կոդը ցուցադրելու համար:
@@ -679,7 +667,6 @@
Դանդաղ ռեժիմԴուք մշտապես և անմիջապես կտեղեկացվեք նոր հաղորդագրությունների մասին՝ օգտագործելով Google-ի ծանուցումների սերվերները:Session-ը երբեմն, ֆոնային կստուգի նոր հաղորդագրությունների առկայությունը:
- Գաղտնի արտահայտությունSession֊ը արգելափակված էՀպեք՝ ապակողպելու համարՄուտքագրե՛ք կեղծանունը
@@ -722,7 +709,7 @@
Նշել բոլորը, որպես տեսնվածԿոնտակտներ և խմբերՀաղորդագրություններ
- Անմիջական հաղորդագրություն
- Փակ խումբ
- Բաց խումբ
+ Անմիջական հաղորդագրություն
+ Փակ խումբ
+ Բաց խումբ
diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml
index 05c5513e44..d0b0ee6954 100644
--- a/app/src/main/res/values-in-rID/strings.xml
+++ b/app/src/main/res/values-in-rID/strings.xml
@@ -411,16 +411,16 @@
URL salahSalin ke clipboardBerikutnya
- Ucapkan halo pada Session ID anda
- Session ID adalah alamat unik yang bisa digunakan untuk mengontak anda. Tanpa koneksi dengan identitas asli, Session ID anda didesain bersifat anonim dan rahasia.
+
+
Memulihkan akun AndaMasukkan kata pemulihan yang diberikan saat anda masuk untuk memulihkan akun anda.Masukan kata pemulihan
- Pilih nama yang ditampilkan
- Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka.
- Masukkan nama
- Pilih nama yang ditampilkan
- Pilih nama yang lebih pendek
+ Pilih nama yang ditampilkan
+ Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka.
+ Masukkan nama
+ Pilih nama yang ditampilkan
+ Pilih nama yang lebih pendekDirekomendasikanPilih salah satu opsiAnda belum memiliki kontak
@@ -428,15 +428,11 @@
Apakah anda yakin ingin meninggalkan grup ini?"Tidak dapat meninggalkan grup"Percakapan dihapus
- Kata pemulihan anda
- Inilah kata pemulihan anda
- Tekan untuk melihat
- Hampir selesai! 80%AndaTujuanSelengkapnyaSession baru
- Masukkan Session ID
+ Masukkan Account IDPindai kode QRMasukkan nama grupMasukkan nama grup yang lebih pendek
@@ -462,7 +458,7 @@
TemaDayNight
- Salin Session ID
+ Salin Account IDPesan SuaraDetailPilih file
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 05c5513e44..354449c9e1 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -411,16 +411,14 @@
URL salahSalin ke clipboardBerikutnya
- Ucapkan halo pada Session ID anda
- Session ID adalah alamat unik yang bisa digunakan untuk mengontak anda. Tanpa koneksi dengan identitas asli, Session ID anda didesain bersifat anonim dan rahasia.Memulihkan akun AndaMasukkan kata pemulihan yang diberikan saat anda masuk untuk memulihkan akun anda.Masukan kata pemulihan
- Pilih nama yang ditampilkan
- Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka.
- Masukkan nama
- Pilih nama yang ditampilkan
- Pilih nama yang lebih pendek
+ Pilih nama yang ditampilkan
+ Ini akan menjadi nama anda ketika menggunakan Session. Bisa merupakan nama asli, alias, atau apapun yang anda suka.
+ Masukkan nama
+ Pilih nama yang ditampilkan
+ Pilih nama yang lebih pendekDirekomendasikanPilih salah satu opsiAnda belum memiliki kontak
@@ -428,15 +426,11 @@
Apakah anda yakin ingin meninggalkan grup ini?"Tidak dapat meninggalkan grup"Percakapan dihapus
- Kata pemulihan anda
- Inilah kata pemulihan anda
- Tekan untuk melihat
- Hampir selesai! 80%AndaTujuanSelengkapnyaSession baru
- Masukkan Session ID
+ Masukkan Account IDPindai kode QRMasukkan nama grupMasukkan nama grup yang lebih pendek
@@ -462,7 +456,7 @@
TemaDayNight
- Salin Session ID
+ Salin Account IDPesan SuaraDetailPilih file
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index 1babc03de5..754f633b38 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -525,27 +525,24 @@ scambia un altro messaggio!
Copiato negli appuntiSuccessivoCondividi
- ID Sessione non valido
+ ID Sessione non validoAnnulla
- Il tuo ID Sessione
- La tua Sessione inizia qui...
- Crea ID Sessione
- Continua la Sessione
+ Il tuo ID SessioneCos\'è Session?È un\'app di messaggistica decentralizzata e crittografataQuindi non raccoglie informazioni personali o metadati di conversazione? Come funziona?Utilizza una combinazione di tecnologie avanzate come instradamento anonimo e crittografia end-to-end.Gli amici non lasciano che i propri amici utilizzino app di messaggistica compromesse. Benvenuto/a.
- Ecco il tuo ID Sessione
- L\'ID Sessione è l\'indirizzo univoco che le persone possono utilizzare per contattarti su Session. L\'ID Sessione permette di eliminare ogni connessione con la tua identità reale: l\'ID Sessione è completamente anonimo e privato.
+
+
Ripristina il tuo accountInserisci la frase di recupero che ti è stata data quando ti sei registrato per ripristinare il tuo account.Inserisci la frase di recupero
- Scegli il nome da visualizzare
- Questo sarà il tuo nome quando usi una Sessione. Può essere il tuo vero nome, un soprannome o qualsiasi altra cosa.
- Inserisci il nome da visualizzare
- Scegli il nome da visualizzare
- Scegli un nome più breve
+ Scegli il nome da visualizzare
+ Questo sarà il tuo nome quando usi una Sessione. Può essere il tuo vero nome, un soprannome o qualsiasi altra cosa.
+ Inserisci il nome da visualizzare
+ Scegli il nome da visualizzare
+ Scegli un nome più breveConsigliatoScegli un\'opzioneNon hai ancora nessun contatto
@@ -554,11 +551,6 @@ scambia un altro messaggio!
"Impossibile lasciare il gruppo"Sei sicuro di voler eliminare questa conversazione?Conversazione eliminata
- Frase di recupero
- La frase di recupero
- La frase di recupero è la chiave principale per l\'ID Sessione: puoi usarla per ripristinare l\'ID Sessione se perdi l\'accesso al dispositivo. Conserva la frase di recupero in un luogo sicuro e non rivelarla a nessuno.
- Tieni premuto per rivelare
- Hai quasi finito! 80%Proteggi il tuo account salvando la frase di recuperoTocca e tieni premute le parole redatte per rivelare la frase di recupero, salva in modo sicuro per proteggere il tuo ID Sessione.Assicurati di salvare la frase di recupero in un luogo sicuro
@@ -571,7 +563,7 @@ scambia un altro messaggio!
Per saperne di piùIn Risoluzione…Nuova sessione
- Inserisci ID Sessione
+ Inserisci ID SessioneScansiona il codice QRScansiona il codice QR di un utente per avviare una sessione. Puoi trovare i codici QR toccando l\'icona Codice QR nelle impostazioni dell\'account.Inserisci ID Sessione o nome ONS
@@ -603,7 +595,6 @@ scambia un altro messaggio!
DispositiviInvita un amicoFAQ
- Frase di recuperoElimina datiCancella i dati e la reteAiutaci a tradurre Session
@@ -616,8 +607,6 @@ scambia un altro messaggio!
Riceverai notifiche di nuovi messaggi in modo affidabile e immediato utilizzando i server di notifica di Google.Cambia nomeScollega dispositivo
- Frase di recupero
- Questa è la tua frase di recupero. Usala per ripristinare o migrare l\'ID Sessione a un nuovo dispositivo.Elimina tutti i datiCiò eliminerà permanentemente i tuoi messaggi, sessioni e contatti.Vuoi formattare solo questo dispositivo o cancellare del tutto l\'account?
@@ -651,7 +640,7 @@ scambia un altro messaggio!
GiornoNottePredefinito di sistema
- Copia ID Sessione
+ Copia ID SessioneAllegatoMessaggio vocaleDettagli
@@ -661,7 +650,6 @@ scambia un altro messaggio!
Selezionare un file di backup ed inserire la passphrase con cui è stato creato.Frase di recupero di 30 caratteriQuesto sta impiegando un po\' di tempo, vorresti saltare?
- Collega dispositivoFrase di recuperoScansiona codice QRVai su Impostazioni → Frase di recupero sul tuo altro dispositivo per mostrare il tuo codice QR.
@@ -672,7 +660,6 @@ scambia un altro messaggio!
Modalità LentaRiceverai notifiche di nuovi messaggi in modo affidabile e immediato utilizzando i server di notifica di Google.Session controllerà di tanto in tanto la presenza di nuovi messaggi in background.
- Frase di recuperoSession è BloccatoTocca per SbloccareInserisci un nickname
@@ -715,6 +702,6 @@ scambia un altro messaggio!
Segna tutto come già lettoContatti e GruppiMessaggi
- Messaggio Privato
- Gruppo Chiuso
+ Messaggio Privato
+ Gruppo Chiuso
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 1babc03de5..754f633b38 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -525,27 +525,24 @@ scambia un altro messaggio!
Copiato negli appuntiSuccessivoCondividi
- ID Sessione non valido
+ ID Sessione non validoAnnulla
- Il tuo ID Sessione
- La tua Sessione inizia qui...
- Crea ID Sessione
- Continua la Sessione
+ Il tuo ID SessioneCos\'è Session?È un\'app di messaggistica decentralizzata e crittografataQuindi non raccoglie informazioni personali o metadati di conversazione? Come funziona?Utilizza una combinazione di tecnologie avanzate come instradamento anonimo e crittografia end-to-end.Gli amici non lasciano che i propri amici utilizzino app di messaggistica compromesse. Benvenuto/a.
- Ecco il tuo ID Sessione
- L\'ID Sessione è l\'indirizzo univoco che le persone possono utilizzare per contattarti su Session. L\'ID Sessione permette di eliminare ogni connessione con la tua identità reale: l\'ID Sessione è completamente anonimo e privato.
+
+
Ripristina il tuo accountInserisci la frase di recupero che ti è stata data quando ti sei registrato per ripristinare il tuo account.Inserisci la frase di recupero
- Scegli il nome da visualizzare
- Questo sarà il tuo nome quando usi una Sessione. Può essere il tuo vero nome, un soprannome o qualsiasi altra cosa.
- Inserisci il nome da visualizzare
- Scegli il nome da visualizzare
- Scegli un nome più breve
+ Scegli il nome da visualizzare
+ Questo sarà il tuo nome quando usi una Sessione. Può essere il tuo vero nome, un soprannome o qualsiasi altra cosa.
+ Inserisci il nome da visualizzare
+ Scegli il nome da visualizzare
+ Scegli un nome più breveConsigliatoScegli un\'opzioneNon hai ancora nessun contatto
@@ -554,11 +551,6 @@ scambia un altro messaggio!
"Impossibile lasciare il gruppo"Sei sicuro di voler eliminare questa conversazione?Conversazione eliminata
- Frase di recupero
- La frase di recupero
- La frase di recupero è la chiave principale per l\'ID Sessione: puoi usarla per ripristinare l\'ID Sessione se perdi l\'accesso al dispositivo. Conserva la frase di recupero in un luogo sicuro e non rivelarla a nessuno.
- Tieni premuto per rivelare
- Hai quasi finito! 80%Proteggi il tuo account salvando la frase di recuperoTocca e tieni premute le parole redatte per rivelare la frase di recupero, salva in modo sicuro per proteggere il tuo ID Sessione.Assicurati di salvare la frase di recupero in un luogo sicuro
@@ -571,7 +563,7 @@ scambia un altro messaggio!
Per saperne di piùIn Risoluzione…Nuova sessione
- Inserisci ID Sessione
+ Inserisci ID SessioneScansiona il codice QRScansiona il codice QR di un utente per avviare una sessione. Puoi trovare i codici QR toccando l\'icona Codice QR nelle impostazioni dell\'account.Inserisci ID Sessione o nome ONS
@@ -603,7 +595,6 @@ scambia un altro messaggio!
DispositiviInvita un amicoFAQ
- Frase di recuperoElimina datiCancella i dati e la reteAiutaci a tradurre Session
@@ -616,8 +607,6 @@ scambia un altro messaggio!
Riceverai notifiche di nuovi messaggi in modo affidabile e immediato utilizzando i server di notifica di Google.Cambia nomeScollega dispositivo
- Frase di recupero
- Questa è la tua frase di recupero. Usala per ripristinare o migrare l\'ID Sessione a un nuovo dispositivo.Elimina tutti i datiCiò eliminerà permanentemente i tuoi messaggi, sessioni e contatti.Vuoi formattare solo questo dispositivo o cancellare del tutto l\'account?
@@ -651,7 +640,7 @@ scambia un altro messaggio!
GiornoNottePredefinito di sistema
- Copia ID Sessione
+ Copia ID SessioneAllegatoMessaggio vocaleDettagli
@@ -661,7 +650,6 @@ scambia un altro messaggio!
Selezionare un file di backup ed inserire la passphrase con cui è stato creato.Frase di recupero di 30 caratteriQuesto sta impiegando un po\' di tempo, vorresti saltare?
- Collega dispositivoFrase di recuperoScansiona codice QRVai su Impostazioni → Frase di recupero sul tuo altro dispositivo per mostrare il tuo codice QR.
@@ -672,7 +660,6 @@ scambia un altro messaggio!
Modalità LentaRiceverai notifiche di nuovi messaggi in modo affidabile e immediato utilizzando i server di notifica di Google.Session controllerà di tanto in tanto la presenza di nuovi messaggi in background.
- Frase di recuperoSession è BloccatoTocca per SbloccareInserisci un nickname
@@ -715,6 +702,6 @@ scambia un altro messaggio!
Segna tutto come già lettoContatti e GruppiMessaggi
- Messaggio Privato
- Gruppo Chiuso
+ Messaggio Privato
+ Gruppo Chiuso
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 2c540ccc93..f5c5928b40 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -509,27 +509,24 @@
クリップボードにコピーされました次共有する
- Session ID が無効です
+ Account ID が無効です取り消す
- あなたの Session ID
- ここから Session が始まります...
- Session ID を作成する
- Session を続ける
+ あなたの Account IDSession とは?分散型の暗号化されたメッセージングアプリです個人情報や会話のメタデータは収集されませんか?どのように機能しますか?高度な匿名ルーティングとエンドツーエンドの暗号化テクノロジーを組み合わせて使用します。友人は、セキュリティ侵害されたメッセンジャーを自らの友人に使用させません。どういたしまして。
- Session ID をご紹介します
- Session ID は、Session で連絡を取るために使用できる一意のアドレスです。本当のアイデンティティに関係なく、あなたの Session ID は設計上完全に匿名でプライベートです。
+
+
アカウントを復元するアカウントを復元するためにサインアップしたときに与えられたリカバリーフレーズを入力します。リカバリーフレーズを入力してください
- 表示名を選択してください
- これは、Session を使用するときの名前になります。あなたの本当の名前、エイリアス、またはあなたが好きな他のものに設定することができます。
- 表示名を入力してください
- 表示名を選択してください
- 短い表示名を選択してください
+ 表示名を選択してください
+ これは、Session を使用するときの名前になります。あなたの本当の名前、エイリアス、またはあなたが好きな他のものに設定することができます。
+ 表示名を入力してください
+ 表示名を選択してください
+ 短い表示名を選択してくださいオススメオプションを選択してくださいまだ連絡先がありません
@@ -538,13 +535,8 @@
"グループを脱退できませんでした"この会話を削除してもよろしいですか?会話を削除しました
- あなたのリカバリーフレーズ
- リカバリーフレーズに合致する
- リカバリーフレーズは、Session ID のマスターキーです。デバイスにアクセスできなくなった場合、これを使用して Session ID を復元できます。リカバリーフレーズを安全な場所に保管し、誰にも教えないでください。
- 明らかにする
- あと少しで終了です。80%リカバリーフレーズを保存してアカウントを保護する
- 編集された単語をタップして長押ししてリカバリーフレーズを表示し、それを安全に保管して Session ID を保護します。
+ 編集された単語をタップして長押ししてリカバリーフレーズを表示し、それを安全に保管して Account ID を保護します。リカバリーフレーズは安全な場所に保管してくださいパスSession は、Sessionの分散型ネットワークの複数のサービスノードを介してメッセージをバウンスすることにより、IP を隠します。これらは、接続が現在バウンスされている国です。
@@ -555,11 +547,11 @@
詳細解決中...新しい Session
- Session ID を入力してください
+ Account ID を入力してくださいQR コードをスキャンするユーザーの QR コードをスキャンして、Session を開始します。QR コードは、アカウント設定の QR コードアイコンをタップすると見つかります。セッションIDまたはONS名を入力してください
- ユーザーは、アカウント設定に移動して [Session ID を共有] をタップするか、QR コードを共有することで、Session ID を共有できます。
+ ユーザーは、アカウント設定に移動して [Account ID を共有] をタップするか、QR コードを共有することで、Account ID を共有できます。セッションIDまたはONS名を確認して再度お試しください。Session で QR コードをスキャンするにはカメラへのアクセスが必要ですカメラへのアクセスを許可する
@@ -587,7 +579,6 @@
デバイス友達を招待よくある質問
- リカバリーフレーズデータを消去するネットワークを含むデータを消去セッションの翻訳にご協力ください
@@ -600,8 +591,6 @@
Googleの通知サーバーを使用して、新しいメッセージが確実かつ即座に通知されます。名前を変更するデバイスのリンクを解除する
- あなたのリカバリーフレーズ
- これはあなたのリカバリーフレーズです。これにより、Session ID を新しいデバイスに復元または移行できます。すべてのデータを消去するこれにより、メッセージ、Session、連絡先が完全に削除されます。この端末のみを消去するか、アカウント全体を削除しますか?
@@ -635,7 +624,7 @@
デイナイトシステムの既定値
- Session ID をコピーする
+ Account ID をコピーする添付ファイル音声メッセージ詳細
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 2c540ccc93..f5c5928b40 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -509,27 +509,24 @@
クリップボードにコピーされました次共有する
- Session ID が無効です
+ Account ID が無効です取り消す
- あなたの Session ID
- ここから Session が始まります...
- Session ID を作成する
- Session を続ける
+ あなたの Account IDSession とは?分散型の暗号化されたメッセージングアプリです個人情報や会話のメタデータは収集されませんか?どのように機能しますか?高度な匿名ルーティングとエンドツーエンドの暗号化テクノロジーを組み合わせて使用します。友人は、セキュリティ侵害されたメッセンジャーを自らの友人に使用させません。どういたしまして。
- Session ID をご紹介します
- Session ID は、Session で連絡を取るために使用できる一意のアドレスです。本当のアイデンティティに関係なく、あなたの Session ID は設計上完全に匿名でプライベートです。
+
+
アカウントを復元するアカウントを復元するためにサインアップしたときに与えられたリカバリーフレーズを入力します。リカバリーフレーズを入力してください
- 表示名を選択してください
- これは、Session を使用するときの名前になります。あなたの本当の名前、エイリアス、またはあなたが好きな他のものに設定することができます。
- 表示名を入力してください
- 表示名を選択してください
- 短い表示名を選択してください
+ 表示名を選択してください
+ これは、Session を使用するときの名前になります。あなたの本当の名前、エイリアス、またはあなたが好きな他のものに設定することができます。
+ 表示名を入力してください
+ 表示名を選択してください
+ 短い表示名を選択してくださいオススメオプションを選択してくださいまだ連絡先がありません
@@ -538,13 +535,8 @@
"グループを脱退できませんでした"この会話を削除してもよろしいですか?会話を削除しました
- あなたのリカバリーフレーズ
- リカバリーフレーズに合致する
- リカバリーフレーズは、Session ID のマスターキーです。デバイスにアクセスできなくなった場合、これを使用して Session ID を復元できます。リカバリーフレーズを安全な場所に保管し、誰にも教えないでください。
- 明らかにする
- あと少しで終了です。80%リカバリーフレーズを保存してアカウントを保護する
- 編集された単語をタップして長押ししてリカバリーフレーズを表示し、それを安全に保管して Session ID を保護します。
+ 編集された単語をタップして長押ししてリカバリーフレーズを表示し、それを安全に保管して Account ID を保護します。リカバリーフレーズは安全な場所に保管してくださいパスSession は、Sessionの分散型ネットワークの複数のサービスノードを介してメッセージをバウンスすることにより、IP を隠します。これらは、接続が現在バウンスされている国です。
@@ -555,11 +547,11 @@
詳細解決中...新しい Session
- Session ID を入力してください
+ Account ID を入力してくださいQR コードをスキャンするユーザーの QR コードをスキャンして、Session を開始します。QR コードは、アカウント設定の QR コードアイコンをタップすると見つかります。セッションIDまたはONS名を入力してください
- ユーザーは、アカウント設定に移動して [Session ID を共有] をタップするか、QR コードを共有することで、Session ID を共有できます。
+ ユーザーは、アカウント設定に移動して [Account ID を共有] をタップするか、QR コードを共有することで、Account ID を共有できます。セッションIDまたはONS名を確認して再度お試しください。Session で QR コードをスキャンするにはカメラへのアクセスが必要ですカメラへのアクセスを許可する
@@ -587,7 +579,6 @@
デバイス友達を招待よくある質問
- リカバリーフレーズデータを消去するネットワークを含むデータを消去セッションの翻訳にご協力ください
@@ -600,8 +591,6 @@
Googleの通知サーバーを使用して、新しいメッセージが確実かつ即座に通知されます。名前を変更するデバイスのリンクを解除する
- あなたのリカバリーフレーズ
- これはあなたのリカバリーフレーズです。これにより、Session ID を新しいデバイスに復元または移行できます。すべてのデータを消去するこれにより、メッセージ、Session、連絡先が完全に削除されます。この端末のみを消去するか、アカウント全体を削除しますか?
@@ -635,7 +624,7 @@
デイナイトシステムの既定値
- Session ID をコピーする
+ Account ID をコピーする添付ファイル音声メッセージ詳細
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 9bca01ef9b..8562708de1 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -403,10 +403,9 @@
클립보드에 복사됨공유취소
- 당신의 세션 ID
+ 당신의 세션 ID아직 연락처가 없습니다세션 시작하기
- 당신의 복구 코드Session 분산 네트워크의 여러 서비스 노드를 통해 메시지를 분산해 IP를 숨깁니다. 이들이 현재 연결을 분산하는 국가입니다:당신목적지
@@ -419,13 +418,10 @@
알림친구 초대자주 하는 질문
- 복구 코드데이터 지우기세션을 번역하는 데 기여하기알림개인정보
- 당신의 복구 코드
- 이것은 당신의 복구 코드입니다. 이것으로 세션 ID를 새 장치로 복원하거나 이동할 수 있습니다.메시지, 세션 및 연락처가 영구적으로 삭제됩니다.QR 코드내 QR 코드 보기
@@ -438,7 +434,6 @@
멤버 추가복구 코드QR 코드 스캔
- 복구 코드모두멘션만피드백/설문 조사
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 9bca01ef9b..8562708de1 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -403,10 +403,9 @@
클립보드에 복사됨공유취소
- 당신의 세션 ID
+ 당신의 세션 ID아직 연락처가 없습니다세션 시작하기
- 당신의 복구 코드Session 분산 네트워크의 여러 서비스 노드를 통해 메시지를 분산해 IP를 숨깁니다. 이들이 현재 연결을 분산하는 국가입니다:당신목적지
@@ -419,13 +418,10 @@
알림친구 초대자주 하는 질문
- 복구 코드데이터 지우기세션을 번역하는 데 기여하기알림개인정보
- 당신의 복구 코드
- 이것은 당신의 복구 코드입니다. 이것으로 세션 ID를 새 장치로 복원하거나 이동할 수 있습니다.메시지, 세션 및 연락처가 영구적으로 삭제됩니다.QR 코드내 QR 코드 보기
@@ -438,7 +434,6 @@
멤버 추가복구 코드QR 코드 스캔
- 복구 코드모두멘션만피드백/설문 조사
diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml
index cbeb344469..353f11156f 100644
--- a/app/src/main/res/values-lt-rLT/strings.xml
+++ b/app/src/main/res/values-lt-rLT/strings.xml
@@ -542,26 +542,23 @@
Nukopijuota į iškarpinęKitasBendrinti
- Neteisingas Session ID
+ Neteisingas Account IDAtsisakyti
- Jūsų Session ID
- Jūsų Session prasideda čia...
- Susikurti Session ID
- Tęsti savo Session
+ Jūsų Account IDKas yra Session?Tai – decentralizuota, šifruota pokalbių programėlėJi nerenka mano asmeninės informacijos ar mano pokalbių metaduomenų? Kaip ji veikia?Naudodama išplėstinio anoniminio nukreipimo ir ištisinio šifravimo technologijų kombinaciją.Draugai neleidžia savo draugams naudotis į pavojų statančiomis programėlėmis. Prašom.
- Pasisveikinkite su savo Session ID
- Jūsų Session ID yra unikalus adresas, kurį žmonės gali naudoti, kad susisiektų su jumis per Session programėlę. Neturėdamas jokių sąsajų su jūsų tikrąja tapatybe, jūsų Session ID yra tyčia visiškai anoniminis ir privatus.
+
+
Atkurkite savo paskyrąĮveskite savo atkūrimo frazę
- Pasirinkite savo rodomą vardą
- Tai bus jūsų vardas, kai naudositės Session. Tai gali būti jūsų tikras vardas, slapyvardis ar bet kas kita.
- Įveskite pasirinktą rodomą vardą
- Pasirinkite rodomą vardą
- Pasirinkite trumpesnį rodomą vardą
+ Pasirinkite savo rodomą vardą
+ Tai bus jūsų vardas, kai naudositės Session. Tai gali būti jūsų tikras vardas, slapyvardis ar bet kas kita.
+ Įveskite pasirinktą rodomą vardą
+ Pasirinkite rodomą vardą
+ Pasirinkite trumpesnį rodomą vardąRekomenduojamaPasirinkite parinktįKol kas neturite jokių adresatų
@@ -569,12 +566,8 @@
"Nepavyko išeiti iš grupės"Ar tikrai norite ištrinti šį pokalbį?Pokalbis ištrintas
- Jūsų atkūrimo frazė
- Pasitikite savo atkūrimo frazę
- Jūsų atkūrimo frazė yra pagrindinis raktas į jūsų Session ID — galite ją naudoti, kad atkurtumėte savo Session ID tuo atveju, jei prarasite prieigą prie savo įrenginio. Laikykite savo atkūrimo frazę saugioje vietoje ir niekam jos nerodykite.
- Beveik užbaigėte! 80%Apsaugokite savo paskyrą įsirašydami atkūrimo frazę
- Bakstelėkite ir laikykite ant redaguotų žodžių, kad būtų atskleista jūsų atkūrimo frazė. Tuomet, laikykite ją saugioje vietoje, kad apsaugotumėte savo Session ID.
+ Bakstelėkite ir laikykite ant redaguotų žodžių, kad būtų atskleista jūsų atkūrimo frazė. Tuomet, laikykite ją saugioje vietoje, kad apsaugotumėte savo Account ID.Užtikrinkite, kad laikytumėte savo atkūrimo frazę saugioje vietojeKeliasProgramėlė Session slepia jūsų IP adresą, peradresuodama jūsų žinutes per kelis aptarnavimo mazgus Session decentralizuotame tinkle. Štai čia yra šalys, per kurias šiuo metu yra peradresuojamas jūsų ryšys:
@@ -583,9 +576,9 @@
Aptarnavimo mazgasPaskirties vietaSužinoti daugiau
- Įveskite Session ID
+ Įveskite Account IDSkenuoti QR kodą
- Įveskite Session ID arba ONS vardą
+ Įveskite Account ID arba ONS vardąSuteikti prieigą prie kamerosNauja uždara grupėĮveskite grupės pavadinimą
@@ -608,7 +601,6 @@
PranešimaiPokalbiaiĮrenginiai
- Atkūrimo frazėIšvalyti duomenisPadėkite išversti SessionPranešimai
@@ -620,8 +612,6 @@
Jums bus nedelsiant ir patikimai pranešama apie naujas žinutes, naudojant „Google“ pranešimų serverius.Keisti pavadinimąAtsieti įrenginį
- Jūsų atkūrimo frazė
- Tai yra jūsų atkūrimo frazė. Naudodami ją, galite atkurti ir perkelti savo Session ID į naują įrenginį.Išvalyti visus duomenisTai visam laikui ištrins jūsų žinutes, seansus ir adresatus.Tik ištrinti
@@ -649,13 +639,12 @@
DieninisNaktinisSistemos numatytasis
- Kopijuoti Session ID
+ Kopijuoti Account IDPriedasBalso žinutėIšsamiauNepavyko aktyvuoti atsarginių kopijų. Bandykite dar kartą arba susisiekite su palaikymu.Atkurti atsarginę kopiją
- Susieti įrenginįAtkūrimo frazėSkenuoti QR kodąArba prisijunkite prie vienos iš šių…
@@ -665,7 +654,6 @@
Lėta veiksenaJums bus nedelsiant ir patikimai pranešama apie naujas žinutes, naudojant „Google“ pranešimų serverius.Session programėlė retkarčiais fone tikrins, ar yra naujų žinučių.
- Atkūrimo frazėSession yra užrakintaBakstelėkite norėdami atrakintiĮveskite slapyvardį
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index cbeb344469..353f11156f 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -542,26 +542,23 @@
Nukopijuota į iškarpinęKitasBendrinti
- Neteisingas Session ID
+ Neteisingas Account IDAtsisakyti
- Jūsų Session ID
- Jūsų Session prasideda čia...
- Susikurti Session ID
- Tęsti savo Session
+ Jūsų Account IDKas yra Session?Tai – decentralizuota, šifruota pokalbių programėlėJi nerenka mano asmeninės informacijos ar mano pokalbių metaduomenų? Kaip ji veikia?Naudodama išplėstinio anoniminio nukreipimo ir ištisinio šifravimo technologijų kombinaciją.Draugai neleidžia savo draugams naudotis į pavojų statančiomis programėlėmis. Prašom.
- Pasisveikinkite su savo Session ID
- Jūsų Session ID yra unikalus adresas, kurį žmonės gali naudoti, kad susisiektų su jumis per Session programėlę. Neturėdamas jokių sąsajų su jūsų tikrąja tapatybe, jūsų Session ID yra tyčia visiškai anoniminis ir privatus.
+
+
Atkurkite savo paskyrąĮveskite savo atkūrimo frazę
- Pasirinkite savo rodomą vardą
- Tai bus jūsų vardas, kai naudositės Session. Tai gali būti jūsų tikras vardas, slapyvardis ar bet kas kita.
- Įveskite pasirinktą rodomą vardą
- Pasirinkite rodomą vardą
- Pasirinkite trumpesnį rodomą vardą
+ Pasirinkite savo rodomą vardą
+ Tai bus jūsų vardas, kai naudositės Session. Tai gali būti jūsų tikras vardas, slapyvardis ar bet kas kita.
+ Įveskite pasirinktą rodomą vardą
+ Pasirinkite rodomą vardą
+ Pasirinkite trumpesnį rodomą vardąRekomenduojamaPasirinkite parinktįKol kas neturite jokių adresatų
@@ -569,12 +566,8 @@
"Nepavyko išeiti iš grupės"Ar tikrai norite ištrinti šį pokalbį?Pokalbis ištrintas
- Jūsų atkūrimo frazė
- Pasitikite savo atkūrimo frazę
- Jūsų atkūrimo frazė yra pagrindinis raktas į jūsų Session ID — galite ją naudoti, kad atkurtumėte savo Session ID tuo atveju, jei prarasite prieigą prie savo įrenginio. Laikykite savo atkūrimo frazę saugioje vietoje ir niekam jos nerodykite.
- Beveik užbaigėte! 80%Apsaugokite savo paskyrą įsirašydami atkūrimo frazę
- Bakstelėkite ir laikykite ant redaguotų žodžių, kad būtų atskleista jūsų atkūrimo frazė. Tuomet, laikykite ją saugioje vietoje, kad apsaugotumėte savo Session ID.
+ Bakstelėkite ir laikykite ant redaguotų žodžių, kad būtų atskleista jūsų atkūrimo frazė. Tuomet, laikykite ją saugioje vietoje, kad apsaugotumėte savo Account ID.Užtikrinkite, kad laikytumėte savo atkūrimo frazę saugioje vietojeKeliasProgramėlė Session slepia jūsų IP adresą, peradresuodama jūsų žinutes per kelis aptarnavimo mazgus Session decentralizuotame tinkle. Štai čia yra šalys, per kurias šiuo metu yra peradresuojamas jūsų ryšys:
@@ -583,9 +576,9 @@
Aptarnavimo mazgasPaskirties vietaSužinoti daugiau
- Įveskite Session ID
+ Įveskite Account IDSkenuoti QR kodą
- Įveskite Session ID arba ONS vardą
+ Įveskite Account ID arba ONS vardąSuteikti prieigą prie kamerosNauja uždara grupėĮveskite grupės pavadinimą
@@ -608,7 +601,6 @@
PranešimaiPokalbiaiĮrenginiai
- Atkūrimo frazėIšvalyti duomenisPadėkite išversti SessionPranešimai
@@ -620,8 +612,6 @@
Jums bus nedelsiant ir patikimai pranešama apie naujas žinutes, naudojant „Google“ pranešimų serverius.Keisti pavadinimąAtsieti įrenginį
- Jūsų atkūrimo frazė
- Tai yra jūsų atkūrimo frazė. Naudodami ją, galite atkurti ir perkelti savo Session ID į naują įrenginį.Išvalyti visus duomenisTai visam laikui ištrins jūsų žinutes, seansus ir adresatus.Tik ištrinti
@@ -649,13 +639,12 @@
DieninisNaktinisSistemos numatytasis
- Kopijuoti Session ID
+ Kopijuoti Account IDPriedasBalso žinutėIšsamiauNepavyko aktyvuoti atsarginių kopijų. Bandykite dar kartą arba susisiekite su palaikymu.Atkurti atsarginę kopiją
- Susieti įrenginįAtkūrimo frazėSkenuoti QR kodąArba prisijunkite prie vienos iš šių…
@@ -665,7 +654,6 @@
Lėta veiksenaJums bus nedelsiant ir patikimai pranešama apie naujas žinutes, naudojant „Google“ pranešimų serverius.Session programėlė retkarčiais fone tikrins, ar yra naujų žinučių.
- Atkūrimo frazėSession yra užrakintaBakstelėkite norėdami atrakintiĮveskite slapyvardį
diff --git a/app/src/main/res/values-lv-rLV/strings.xml b/app/src/main/res/values-lv-rLV/strings.xml
index 2e6bd9d0e9..4a7ae8858c 100644
--- a/app/src/main/res/values-lv-rLV/strings.xml
+++ b/app/src/main/res/values-lv-rLV/strings.xml
@@ -187,7 +187,6 @@
IerīcesUzaicināt drauguBiežāk uzdotie jautājumi
- Atjaunošanas frāzeIzdzēst datusPalīdzi mums pārtulkot SessionPaziņojumi
@@ -217,7 +216,7 @@
IzskatsDienaNakts
- Kopēt Session ID
+ Kopēt Account IDPielikumsBalss ziņojumsPapildu informācija
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
index 2e6bd9d0e9..4a7ae8858c 100644
--- a/app/src/main/res/values-lv/strings.xml
+++ b/app/src/main/res/values-lv/strings.xml
@@ -187,7 +187,6 @@
IerīcesUzaicināt drauguBiežāk uzdotie jautājumi
- Atjaunošanas frāzeIzdzēst datusPalīdzi mums pārtulkot SessionPaziņojumi
@@ -217,7 +216,7 @@
IzskatsDienaNakts
- Kopēt Session ID
+ Kopēt Account IDPielikumsBalss ziņojumsPapildu informācija
diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml
index 7a946799ec..0a46d0176f 100644
--- a/app/src/main/res/values-nb-rNO/strings.xml
+++ b/app/src/main/res/values-nb-rNO/strings.xml
@@ -524,27 +524,24 @@ nøkkelutvekslingsmelding.
Kopiert til utklippstavleNesteDel
- Ugyldig Session ID
+ Ugyldig Account IDAvbryt
- Din Session ID
- Din Session begynner her...
- Opprett Session-ID
- Fortsett din Session
+ Din Account IDHva er Session?Det er en desentralisert, kryptert meldingsappSå den henter ikke min personlige informasjon eller samtaletadata? Hvordan virker det?Bruker en kombinasjon av avansert anonym ruting og ende-til-ende-krypteringsteknologi.Venner lar ikke venner bruke kompromitterte meldinger. Du er velkommen.
- Si hei til din Session-ID
- Din Session-ID er den unike adressen folk kan bruke for å kontakte deg på Session. Uten en forbindelse til din virkelige identitet er din Session-ID laget for å være fullstendig anonym og privat.
+
+
Gjenopprett kontoen dinAngi gjenopprettingsfrasen som ble gitt til deg når du registrerte deg for å gjenopprette din konto.Skriv inn din gjenopprettelsesfrase
- Velg ditt visningsnavn
- Dette vil være navnet ditt når du bruker Session. Det kan være ditt virkelige navn, en alias, eller alt annet du vil.
- Skriv inn et visningsnavn
- Vennligst velg et visningsnavn
- Vennligst velg et kortere visningsnavn
+ Velg ditt visningsnavn
+ Dette vil være navnet ditt når du bruker Session. Det kan være ditt virkelige navn, en alias, eller alt annet du vil.
+ Skriv inn et visningsnavn
+ Vennligst velg et visningsnavn
+ Vennligst velg et kortere visningsnavnAnbefaltVennligst velg et alternativDu har ingen kontakter ennå
@@ -553,13 +550,8 @@ nøkkelutvekslingsmelding.
"Kunne ikke forlate gruppen"Er du sikker på at du vil slette denne samtalen?Samtalen slettet
- Din gjenopprettingsfrase
- Møt din gjenopprettingsfrase
- Gjenopprettelsesfrasen din er hovednøkkelen til Session-IDen din – du kan bruke den for å gjenopprette Session-IDen din dersom du mister tilgang til enheten din. Arkiver gjenopprettelsesfrasen din på et trygt sted, og ikke gi den til noen.
- Hold for å vise
- Du er nesten ferdig! 80%Sikre kontoen din ved å lagre din gjenopprettingsfrase
- Trykk og hold inne de overflødige ordene for å hente gjenopprettingsfrasen din, og lagre den trygt å sikre din Session-ID.
+ Trykk og hold inne de overflødige ordene for å hente gjenopprettingsfrasen din, og lagre den trygt å sikre din Account-ID.Pass på å lagre gjenopprettingsfrasen på et sikkert stedBaneSession skjuler din IP ved å laste ned meldingene dine gjennom flere Service Noder i Sessions desentraliserte nettverk. Disse er landene som koblingen din for øyeblikket blir kontaktet gjennom:
@@ -570,12 +562,12 @@ nøkkelutvekslingsmelding.
Lær merLøser…Ny Session
- Skriv inn Session ID
+ Skriv inn Account IDSkann QR-kodeSkann en brukers QR-kode for å starte en økt. QR-koder finnes ved å trykke på QR-koden i kontoinnstillingene.
- Angi Session-ID eller ONS-navn
- Brukere kan dele sin Session-ID ved å gå inn i sine kontoinnstillinger og trykke på \"Del Session-ID\", eller ved å dele sin QR-kode.
- Vennligst sjekk Session-ID\'en eller ONS-navnet og prøv igjen.
+ Angi Account-ID eller ONS-navn
+ Brukere kan dele sin Account-ID ved å gå inn i sine kontoinnstillinger og trykke på \"Del Account-ID\", eller ved å dele sin QR-kode.
+ Vennligst sjekk Account-ID\'en eller ONS-navnet og prøv igjen.Session trenger kameratilgang for å skanne QR-koderGi kameratilgangNy lukket gruppe
@@ -602,7 +594,6 @@ nøkkelutvekslingsmelding.
EnheterInviter en vennOfte Stilte Spørsmål
- GjenopprettingsfraseFjern dataFjern data inkludert nettverkHjelp oss med å oversette Session
@@ -615,8 +606,6 @@ nøkkelutvekslingsmelding.
Du vil bli varslet om nye meldinger på en pålitelig måte, og umiddelbart ved hjelp av Googles varslingsservere.Endre navnKoble fra enhet
- Din gjenopprettingsfrase
- Dette er din gjenopprettingsfrase, med den, du kan gjenopprette eller overføre din Session-ID til en ny enhet.Fjern alle dataDette vil permanent slette dine meldinger, økter og kontakter.Ønsker du å rense kun denne enheten, eller slette hele kontoen din?
@@ -650,7 +639,7 @@ nøkkelutvekslingsmelding.
DagNattSystemstandard
- Kopier Session-ID
+ Kopier Account-IDVedleggTalemeldingDetaljer
@@ -660,7 +649,6 @@ nøkkelutvekslingsmelding.
Velg en sikkerhetskopifil og skriv inn passordfrasen den ble opprettet med.30-digit passphraseDette tar en stund, vil du hoppe over?
- Koble til en enhetGjenopprettingsfraseSkann QR-kodeNaviger til innstillinger → Gjenopprettingsfrasen på din andre enhet for å vise QR-koden.
@@ -671,7 +659,6 @@ nøkkelutvekslingsmelding.
Langsom ModusDu vil bli varslet om nye meldinger på en pålitelig måte, og umiddelbart ved hjelp av Googles varslingsservere.Session vil av og til sjekke nye meldinger i bakgrunnen.
- GjenopprettingsfraseSession er låstTrykk for å låse oppSkriv inn et kallenavn
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 7a946799ec..0a46d0176f 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -524,27 +524,24 @@ nøkkelutvekslingsmelding.
Kopiert til utklippstavleNesteDel
- Ugyldig Session ID
+ Ugyldig Account IDAvbryt
- Din Session ID
- Din Session begynner her...
- Opprett Session-ID
- Fortsett din Session
+ Din Account IDHva er Session?Det er en desentralisert, kryptert meldingsappSå den henter ikke min personlige informasjon eller samtaletadata? Hvordan virker det?Bruker en kombinasjon av avansert anonym ruting og ende-til-ende-krypteringsteknologi.Venner lar ikke venner bruke kompromitterte meldinger. Du er velkommen.
- Si hei til din Session-ID
- Din Session-ID er den unike adressen folk kan bruke for å kontakte deg på Session. Uten en forbindelse til din virkelige identitet er din Session-ID laget for å være fullstendig anonym og privat.
+
+
Gjenopprett kontoen dinAngi gjenopprettingsfrasen som ble gitt til deg når du registrerte deg for å gjenopprette din konto.Skriv inn din gjenopprettelsesfrase
- Velg ditt visningsnavn
- Dette vil være navnet ditt når du bruker Session. Det kan være ditt virkelige navn, en alias, eller alt annet du vil.
- Skriv inn et visningsnavn
- Vennligst velg et visningsnavn
- Vennligst velg et kortere visningsnavn
+ Velg ditt visningsnavn
+ Dette vil være navnet ditt når du bruker Session. Det kan være ditt virkelige navn, en alias, eller alt annet du vil.
+ Skriv inn et visningsnavn
+ Vennligst velg et visningsnavn
+ Vennligst velg et kortere visningsnavnAnbefaltVennligst velg et alternativDu har ingen kontakter ennå
@@ -553,13 +550,8 @@ nøkkelutvekslingsmelding.
"Kunne ikke forlate gruppen"Er du sikker på at du vil slette denne samtalen?Samtalen slettet
- Din gjenopprettingsfrase
- Møt din gjenopprettingsfrase
- Gjenopprettelsesfrasen din er hovednøkkelen til Session-IDen din – du kan bruke den for å gjenopprette Session-IDen din dersom du mister tilgang til enheten din. Arkiver gjenopprettelsesfrasen din på et trygt sted, og ikke gi den til noen.
- Hold for å vise
- Du er nesten ferdig! 80%Sikre kontoen din ved å lagre din gjenopprettingsfrase
- Trykk og hold inne de overflødige ordene for å hente gjenopprettingsfrasen din, og lagre den trygt å sikre din Session-ID.
+ Trykk og hold inne de overflødige ordene for å hente gjenopprettingsfrasen din, og lagre den trygt å sikre din Account-ID.Pass på å lagre gjenopprettingsfrasen på et sikkert stedBaneSession skjuler din IP ved å laste ned meldingene dine gjennom flere Service Noder i Sessions desentraliserte nettverk. Disse er landene som koblingen din for øyeblikket blir kontaktet gjennom:
@@ -570,12 +562,12 @@ nøkkelutvekslingsmelding.
Lær merLøser…Ny Session
- Skriv inn Session ID
+ Skriv inn Account IDSkann QR-kodeSkann en brukers QR-kode for å starte en økt. QR-koder finnes ved å trykke på QR-koden i kontoinnstillingene.
- Angi Session-ID eller ONS-navn
- Brukere kan dele sin Session-ID ved å gå inn i sine kontoinnstillinger og trykke på \"Del Session-ID\", eller ved å dele sin QR-kode.
- Vennligst sjekk Session-ID\'en eller ONS-navnet og prøv igjen.
+ Angi Account-ID eller ONS-navn
+ Brukere kan dele sin Account-ID ved å gå inn i sine kontoinnstillinger og trykke på \"Del Account-ID\", eller ved å dele sin QR-kode.
+ Vennligst sjekk Account-ID\'en eller ONS-navnet og prøv igjen.Session trenger kameratilgang for å skanne QR-koderGi kameratilgangNy lukket gruppe
@@ -602,7 +594,6 @@ nøkkelutvekslingsmelding.
EnheterInviter en vennOfte Stilte Spørsmål
- GjenopprettingsfraseFjern dataFjern data inkludert nettverkHjelp oss med å oversette Session
@@ -615,8 +606,6 @@ nøkkelutvekslingsmelding.
Du vil bli varslet om nye meldinger på en pålitelig måte, og umiddelbart ved hjelp av Googles varslingsservere.Endre navnKoble fra enhet
- Din gjenopprettingsfrase
- Dette er din gjenopprettingsfrase, med den, du kan gjenopprette eller overføre din Session-ID til en ny enhet.Fjern alle dataDette vil permanent slette dine meldinger, økter og kontakter.Ønsker du å rense kun denne enheten, eller slette hele kontoen din?
@@ -650,7 +639,7 @@ nøkkelutvekslingsmelding.
DagNattSystemstandard
- Kopier Session-ID
+ Kopier Account-IDVedleggTalemeldingDetaljer
@@ -660,7 +649,6 @@ nøkkelutvekslingsmelding.
Velg en sikkerhetskopifil og skriv inn passordfrasen den ble opprettet med.30-digit passphraseDette tar en stund, vil du hoppe over?
- Koble til en enhetGjenopprettingsfraseSkann QR-kodeNaviger til innstillinger → Gjenopprettingsfrasen på din andre enhet for å vise QR-koden.
@@ -671,7 +659,6 @@ nøkkelutvekslingsmelding.
Langsom ModusDu vil bli varslet om nye meldinger på en pålitelig måte, og umiddelbart ved hjelp av Googles varslingsservere.Session vil av og til sjekke nye meldinger i bakgrunnen.
- GjenopprettingsfraseSession er låstTrykk for å låse oppSkriv inn et kallenavn
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index 599945761f..a02485849d 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -525,27 +525,24 @@
Gekopieerd naar klembordVolgendeDelen
- Ongeldige Sessie-ID
+ Ongeldige Sessie-IDAnnuleren
- Uw Sessie-ID
- Uw sessie begint hier...
- Sessie-ID aanmaken
- Doorgaan met uw sessie
+ Uw Sessie-IDWat is Sessie?Het is een gedecentraliseerde, versleutelde berichten-appDus het verzamelt geen persoonlijke informatie of de metagegevens van mijn gesprek? Hoe werkt het?Met behulp van een combinatie van geavanceerde anonieme routing en end-to-end encryptietechnologieën.Vrienden laten vrienden geen gecomprimeerde berichten apps gebruiken. Graag gedaan.
- Zeg hallo tegen uw Sessie-ID
- Uw Sessie-ID is het unieke adres dat mensen kunnen gebruiken om contact met u op te nemen via Sessie. Zonder verbinding met je echte identiteit, is je Sessie-ID volledig anoniem en privé.
+
+
Uw account herstellenVoer de herstel zin in die u hebt gekregen toen u uwzelf hebt aangemeld om uw account te herstellen.Voer uw herstel zin in
- Kies je weergavenaam
- Dit is je naam wanneer je Sessie gebruikt. Het kan je echte naam zijn, een alias, of wat je maar wilt.
- Voer een weergavenaam in
- Kies a.u.b. een weergavenaam
- Kies a.u.b. een kortere weergavenaam
+ Kies je weergavenaam
+ Dit is je naam wanneer je Sessie gebruikt. Het kan je echte naam zijn, een alias, of wat je maar wilt.
+ Voer een weergavenaam in
+ Kies a.u.b. een weergavenaam
+ Kies a.u.b. een kortere weergavenaamAanbevolenGelieve een optie te selecterenU heeft nog geen contactpersonen
@@ -554,11 +551,6 @@
"Kon de groep niet verlaten"Weet u zeker dat u deze groep wilt verlaten?Gesprek verwijderd
- Uw herstel zin
- Maak kennis met uw herstel zin
- Uw herstel zin is de hoofdsleutel van uw Sessie-ID - u kunt deze gebruiken om uw Sessie-ID te herstellen als u de toegang tot uw apparaat verliest. Sla uw herstel zin op op een veilige plaats op en geef het aan niemand anders.
- Ingedrukt houden om te onthullen
- Je bent bijna klaar! 80%Beveilig uw account door uw herstel zin op te slaanHou de herschreven woorden ingedrukt om uw herstelzin te onthullen, en sla het vervolgens veilig op om uw Sessie-ID te beveiligen.Zorg ervoor dat u uw herstel zin op een veilige plek opslaat
@@ -571,11 +563,11 @@
Kom meer te wetenBezig met verwerken...Nieuwe sessie
- Uw Sessie-ID
+ Uw Sessie-IDScan QR-codeScan de QR-code van een gebruiker om een sessie te starten. QR-codes kunnen worden gevonden door op het QR-icoon in de accountinstellingen te tikken.
- Voer uw Session ID of ONS naam in
- Gebruikers kunnen hun Session-ID delen door naar hun accountinstellingen te gaan en op \"Deel Session-ID\" te tikken, of door hun QR-code te delen.
+ Voer uw Account ID of ONS naam in
+ Gebruikers kunnen hun Account-ID delen door naar hun accountinstellingen te gaan en op \"Deel Account-ID\" te tikken, of door hun QR-code te delen.Controleer de sessie-ID of ONS naam en probeer het opnieuw.Sessie heeft cameratoegang nodig om QR-codes te scannenToegang tot camera verlenen
@@ -603,7 +595,6 @@
ApparatenNodig een vriend uitVeelgestelde vragen (FAQ)
- Herstel zinGegevens wissenWis Data, Inclusief NetwerkHelp ons om Sessie the vertalen
@@ -616,8 +607,6 @@
U wordt op een op een betrouwbare manier direct op de hoogte gebracht van nieuwe berichten via de notificatieservers van Google.Naam wijzigenApparaat ontkoppelen
- Uw herstel zin
- Dit is uw herstel zin, Hiermee kun je je Sessie-ID herstellen of migreren naar een nieuw apparaat.Wis alle gegevensHiermee worden uw berichten, sessies en contacten permanent verwijderd.Wilt u alleen de data op dit apparaat verwijderen, of wilt u uw hele account verwijderen?
@@ -651,7 +640,7 @@
DagNachtSysteemstandaard
- Sessie-ID kopiëren
+ Sessie-ID kopiërenBijlageSpraakberichtDetails
@@ -661,7 +650,6 @@
Selecteer een backup-bestand en voer de wachtwoordzin in waarmee het is gemaakt.Wachtwoordzin met 30 tekensDit duurt een tijdje, wilt u het overslaan?
- Koppel een apparaatHerstel zinQR-code scannenNavigeer naar Instellingen → Herstel zin op je andere apparaat om je QR-code te tonen.
@@ -672,7 +660,6 @@
Langzame modusU wordt op een betrouwbare en directe manier op de hoogte gebracht van nieuwe berichten via Googles notificatieservers.Sessie controleert af en toe op nieuwe berichten op de achtergrond.
- Herstel zinSessie is vergrendeldTik om te ontgrendelenBijnaam invoeren
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 599945761f..a02485849d 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -525,27 +525,24 @@
Gekopieerd naar klembordVolgendeDelen
- Ongeldige Sessie-ID
+ Ongeldige Sessie-IDAnnuleren
- Uw Sessie-ID
- Uw sessie begint hier...
- Sessie-ID aanmaken
- Doorgaan met uw sessie
+ Uw Sessie-IDWat is Sessie?Het is een gedecentraliseerde, versleutelde berichten-appDus het verzamelt geen persoonlijke informatie of de metagegevens van mijn gesprek? Hoe werkt het?Met behulp van een combinatie van geavanceerde anonieme routing en end-to-end encryptietechnologieën.Vrienden laten vrienden geen gecomprimeerde berichten apps gebruiken. Graag gedaan.
- Zeg hallo tegen uw Sessie-ID
- Uw Sessie-ID is het unieke adres dat mensen kunnen gebruiken om contact met u op te nemen via Sessie. Zonder verbinding met je echte identiteit, is je Sessie-ID volledig anoniem en privé.
+
+
Uw account herstellenVoer de herstel zin in die u hebt gekregen toen u uwzelf hebt aangemeld om uw account te herstellen.Voer uw herstel zin in
- Kies je weergavenaam
- Dit is je naam wanneer je Sessie gebruikt. Het kan je echte naam zijn, een alias, of wat je maar wilt.
- Voer een weergavenaam in
- Kies a.u.b. een weergavenaam
- Kies a.u.b. een kortere weergavenaam
+ Kies je weergavenaam
+ Dit is je naam wanneer je Sessie gebruikt. Het kan je echte naam zijn, een alias, of wat je maar wilt.
+ Voer een weergavenaam in
+ Kies a.u.b. een weergavenaam
+ Kies a.u.b. een kortere weergavenaamAanbevolenGelieve een optie te selecterenU heeft nog geen contactpersonen
@@ -554,11 +551,6 @@
"Kon de groep niet verlaten"Weet u zeker dat u deze groep wilt verlaten?Gesprek verwijderd
- Uw herstel zin
- Maak kennis met uw herstel zin
- Uw herstel zin is de hoofdsleutel van uw Sessie-ID - u kunt deze gebruiken om uw Sessie-ID te herstellen als u de toegang tot uw apparaat verliest. Sla uw herstel zin op op een veilige plaats op en geef het aan niemand anders.
- Ingedrukt houden om te onthullen
- Je bent bijna klaar! 80%Beveilig uw account door uw herstel zin op te slaanHou de herschreven woorden ingedrukt om uw herstelzin te onthullen, en sla het vervolgens veilig op om uw Sessie-ID te beveiligen.Zorg ervoor dat u uw herstel zin op een veilige plek opslaat
@@ -571,11 +563,11 @@
Kom meer te wetenBezig met verwerken...Nieuwe sessie
- Uw Sessie-ID
+ Uw Sessie-IDScan QR-codeScan de QR-code van een gebruiker om een sessie te starten. QR-codes kunnen worden gevonden door op het QR-icoon in de accountinstellingen te tikken.
- Voer uw Session ID of ONS naam in
- Gebruikers kunnen hun Session-ID delen door naar hun accountinstellingen te gaan en op \"Deel Session-ID\" te tikken, of door hun QR-code te delen.
+ Voer uw Account ID of ONS naam in
+ Gebruikers kunnen hun Account-ID delen door naar hun accountinstellingen te gaan en op \"Deel Account-ID\" te tikken, of door hun QR-code te delen.Controleer de sessie-ID of ONS naam en probeer het opnieuw.Sessie heeft cameratoegang nodig om QR-codes te scannenToegang tot camera verlenen
@@ -603,7 +595,6 @@
ApparatenNodig een vriend uitVeelgestelde vragen (FAQ)
- Herstel zinGegevens wissenWis Data, Inclusief NetwerkHelp ons om Sessie the vertalen
@@ -616,8 +607,6 @@
U wordt op een op een betrouwbare manier direct op de hoogte gebracht van nieuwe berichten via de notificatieservers van Google.Naam wijzigenApparaat ontkoppelen
- Uw herstel zin
- Dit is uw herstel zin, Hiermee kun je je Sessie-ID herstellen of migreren naar een nieuw apparaat.Wis alle gegevensHiermee worden uw berichten, sessies en contacten permanent verwijderd.Wilt u alleen de data op dit apparaat verwijderen, of wilt u uw hele account verwijderen?
@@ -651,7 +640,7 @@
DagNachtSysteemstandaard
- Sessie-ID kopiëren
+ Sessie-ID kopiërenBijlageSpraakberichtDetails
@@ -661,7 +650,6 @@
Selecteer een backup-bestand en voer de wachtwoordzin in waarmee het is gemaakt.Wachtwoordzin met 30 tekensDit duurt een tijdje, wilt u het overslaan?
- Koppel een apparaatHerstel zinQR-code scannenNavigeer naar Instellingen → Herstel zin op je andere apparaat om je QR-code te tonen.
@@ -672,7 +660,6 @@
Langzame modusU wordt op een betrouwbare en directe manier op de hoogte gebracht van nieuwe berichten via Googles notificatieservers.Sessie controleert af en toe op nieuwe berichten op de achtergrond.
- Herstel zinSessie is vergrendeldTik om te ontgrendelenBijnaam invoeren
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index 47214236d1..546a6a6b36 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -547,27 +547,24 @@
Skopiowano do schowkaDalejUdostępnij
- Nieprawidłowy identyfikator Session
+ Nieprawidłowy identyfikator SessionAnuluj
- Twój identyfikator Session
- Twoja sesja zaczyna się tutaj...
- Utwórz identyfikator Session
- Kontynuuj swoją sesję
+ Twój identyfikator SessionCzym jest Session?To zdecentralizowana, szyfrowana aplikacja do przesyłania wiadomościWięc nie zbiera moich danych osobowych ani metadanych z mojej rozmowy? Jak to działa?Wykorzystując połączenie zaawansowanych anonimowych tras i technologii szyfrowania end-to-end.Przyjaciele nie pozwalają przyjaciołom korzystać z niezabezpieczonych komunikatorów. Nie ma za co.
- Przywitaj się z identyfikatorem Session
- Twój identyfikator Session to unikalny adres, za pomocą którego można się z Tobą kontaktować w Session. Bez połączenia z twoją prawdziwą tożsamością, identyfikator Session jest z założenia całkowicie anonimowy i prywatny.
+
+
Przywróć swoje kontoWprowadź frazę odzyskiwania, która została Ci przekazana podczas rejestracji w celu przywrócenia konta.Wpisz swoją frazę odzyskiwania
- Wybierz swoją nazwę wyświetlaną
- To będzie twoje imię, kiedy będziesz używać Session. Może to być twoje prawdziwe imię, pseudonim lub cokolwiek innego, co lubisz.
- Wprowadź wyświetlaną nazwę
- Wybierz wyświetlaną nazwę
- Wybierz krótszą wyświetlaną nazwę
+ Wybierz swoją nazwę wyświetlaną
+ To będzie twoje imię, kiedy będziesz używać Session. Może to być twoje prawdziwe imię, pseudonim lub cokolwiek innego, co lubisz.
+ Wprowadź wyświetlaną nazwę
+ Wybierz wyświetlaną nazwę
+ Wybierz krótszą wyświetlaną nazwęZalecanaWybierz opcjęNie masz jeszcze żadnych kontaktów
@@ -576,11 +573,6 @@
"Nie można opuścić grupy"Czy na pewno chcesz usunąć tę rozmowę?Rozmowa usunięta
- Twoja fraza odzyskiwania
- Poznaj swoją frazę odzyskiwania
- Twoja fraza odzyskiwania jest głównym kluczem do identyfikatora Session - możesz jej użyć do przywrócenia identyfikatora Session, jeśli stracisz dostęp do urządzenia. Przechowuj swoją frazę odzyskiwania w bezpiecznym miejscu i nikomu jej nie udostępniaj.
- Przytrzymaj, aby odsłonić
- Prawie skończyłeś! 80%Zabezpiecz swoje konto, zapisując frazę odzyskiwaniaStuknij i przytrzymaj zredagowane słowa, aby odsłonić frazę odzyskiwania, a następnie przechowuj ją w bezpiecznym miejscu, aby zabezpieczyć identyfikator Session.Pamiętaj, aby przechowywać frazę odzyskiwania w bezpiecznym miejscu
@@ -593,7 +585,7 @@
Dowiedz się więcejŁadowanie…Nowa sesja
- Wpisz identyfikator Session
+ Wpisz identyfikator SessionSkanowania QR codeZeskanuj kod QR użytkownika, aby rozpocząć sesję. Kody QR można znaleźć, dotykając ikony kodu QR w ustawieniach konta.Wprowadź ID sesji lub nazwę ONS
@@ -625,7 +617,6 @@
UrządzeniaZaproś znajomegoFAQ
- Fraza odzyskiwaniaWyczyść daneWyczyść dane łącznie z sieciąPomóż nam w tłumaczeniu Session
@@ -638,8 +629,6 @@
Zostaniesz natychmiast powiadomiony o nowych wiadomościach w niezawodny sposób przy użyciu serwerów powiadomień Google.Zmień nazwęOdłącz urządzenie
- Twoja fraza odzyskiwania
- To jest twoja fraza odzyskiwania. Dzięki niej możesz przywrócić lub przenieść identyfikator Session na nowe urządzenie.Wyczyść wszystkie daneSpowoduje to trwałe usunięcie wiadomości, sesji i kontaktów.Czy chcesz wyczyścić tylko to urządzenie, czy usunąć całe swoje konto?
@@ -673,7 +662,7 @@
DzieńNocDomyślny dla systemu
- Skopiuj ID sesji
+ Skopiuj ID sesjiZałącznikWiadomość głosowaSzczegóły
@@ -683,7 +672,6 @@
Wybierz plik kopii zapasowej i wpisz hasło, z którym został utworzony.Hasło złożone z 30 znakówTo zajmuje chwilę, czy chcesz pominąć?
- Połącz urządzenieFraza odzyskiwaniaSkanuj kod QRPrzejdź do Ustawień → Fraza odzyskiwania na innym urządzeniu, aby wyświetlić kod QR.
@@ -694,7 +682,6 @@
Tryb wolnyZostaniesz natychmiast powiadomiony o nowych wiadomościach w niezawodny sposób przy użyciu serwerów powiadomień Google.Session będzie czasami sprawdzać w tle czy są nowe wiadomości.
- Fraza odzyskiwaniaSession jest zablokowanyDotknij by odblokowaćWpisz pseudonim
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 47214236d1..546a6a6b36 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -547,27 +547,24 @@
Skopiowano do schowkaDalejUdostępnij
- Nieprawidłowy identyfikator Session
+ Nieprawidłowy identyfikator SessionAnuluj
- Twój identyfikator Session
- Twoja sesja zaczyna się tutaj...
- Utwórz identyfikator Session
- Kontynuuj swoją sesję
+ Twój identyfikator SessionCzym jest Session?To zdecentralizowana, szyfrowana aplikacja do przesyłania wiadomościWięc nie zbiera moich danych osobowych ani metadanych z mojej rozmowy? Jak to działa?Wykorzystując połączenie zaawansowanych anonimowych tras i technologii szyfrowania end-to-end.Przyjaciele nie pozwalają przyjaciołom korzystać z niezabezpieczonych komunikatorów. Nie ma za co.
- Przywitaj się z identyfikatorem Session
- Twój identyfikator Session to unikalny adres, za pomocą którego można się z Tobą kontaktować w Session. Bez połączenia z twoją prawdziwą tożsamością, identyfikator Session jest z założenia całkowicie anonimowy i prywatny.
+
+
Przywróć swoje kontoWprowadź frazę odzyskiwania, która została Ci przekazana podczas rejestracji w celu przywrócenia konta.Wpisz swoją frazę odzyskiwania
- Wybierz swoją nazwę wyświetlaną
- To będzie twoje imię, kiedy będziesz używać Session. Może to być twoje prawdziwe imię, pseudonim lub cokolwiek innego, co lubisz.
- Wprowadź wyświetlaną nazwę
- Wybierz wyświetlaną nazwę
- Wybierz krótszą wyświetlaną nazwę
+ Wybierz swoją nazwę wyświetlaną
+ To będzie twoje imię, kiedy będziesz używać Session. Może to być twoje prawdziwe imię, pseudonim lub cokolwiek innego, co lubisz.
+ Wprowadź wyświetlaną nazwę
+ Wybierz wyświetlaną nazwę
+ Wybierz krótszą wyświetlaną nazwęZalecanaWybierz opcjęNie masz jeszcze żadnych kontaktów
@@ -576,11 +573,6 @@
"Nie można opuścić grupy"Czy na pewno chcesz usunąć tę rozmowę?Rozmowa usunięta
- Twoja fraza odzyskiwania
- Poznaj swoją frazę odzyskiwania
- Twoja fraza odzyskiwania jest głównym kluczem do identyfikatora Session - możesz jej użyć do przywrócenia identyfikatora Session, jeśli stracisz dostęp do urządzenia. Przechowuj swoją frazę odzyskiwania w bezpiecznym miejscu i nikomu jej nie udostępniaj.
- Przytrzymaj, aby odsłonić
- Prawie skończyłeś! 80%Zabezpiecz swoje konto, zapisując frazę odzyskiwaniaStuknij i przytrzymaj zredagowane słowa, aby odsłonić frazę odzyskiwania, a następnie przechowuj ją w bezpiecznym miejscu, aby zabezpieczyć identyfikator Session.Pamiętaj, aby przechowywać frazę odzyskiwania w bezpiecznym miejscu
@@ -593,7 +585,7 @@
Dowiedz się więcejŁadowanie…Nowa sesja
- Wpisz identyfikator Session
+ Wpisz identyfikator SessionSkanowania QR codeZeskanuj kod QR użytkownika, aby rozpocząć sesję. Kody QR można znaleźć, dotykając ikony kodu QR w ustawieniach konta.Wprowadź ID sesji lub nazwę ONS
@@ -625,7 +617,6 @@
UrządzeniaZaproś znajomegoFAQ
- Fraza odzyskiwaniaWyczyść daneWyczyść dane łącznie z sieciąPomóż nam w tłumaczeniu Session
@@ -638,8 +629,6 @@
Zostaniesz natychmiast powiadomiony o nowych wiadomościach w niezawodny sposób przy użyciu serwerów powiadomień Google.Zmień nazwęOdłącz urządzenie
- Twoja fraza odzyskiwania
- To jest twoja fraza odzyskiwania. Dzięki niej możesz przywrócić lub przenieść identyfikator Session na nowe urządzenie.Wyczyść wszystkie daneSpowoduje to trwałe usunięcie wiadomości, sesji i kontaktów.Czy chcesz wyczyścić tylko to urządzenie, czy usunąć całe swoje konto?
@@ -673,7 +662,7 @@
DzieńNocDomyślny dla systemu
- Skopiuj ID sesji
+ Skopiuj ID sesjiZałącznikWiadomość głosowaSzczegóły
@@ -683,7 +672,6 @@
Wybierz plik kopii zapasowej i wpisz hasło, z którym został utworzony.Hasło złożone z 30 znakówTo zajmuje chwilę, czy chcesz pominąć?
- Połącz urządzenieFraza odzyskiwaniaSkanuj kod QRPrzejdź do Ustawień → Fraza odzyskiwania na innym urządzeniu, aby wyświetlić kod QR.
@@ -694,7 +682,6 @@
Tryb wolnyZostaniesz natychmiast powiadomiony o nowych wiadomościach w niezawodny sposób przy użyciu serwerów powiadomień Google.Session będzie czasami sprawdzać w tle czy są nowe wiadomości.
- Fraza odzyskiwaniaSession jest zablokowanyDotknij by odblokowaćWpisz pseudonim
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index fa12b8b43b..3ece1fb158 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -525,27 +525,24 @@
Copiado para clipboardPróximoCompartilhar
- Session ID inválida
+ Account ID inválidaCancelar
- Sua Session ID
- Seu Session começa aqui...
- Criar Session ID
- Continuar Seu Session
+ Sua Account IDO que é Session?É um app de mensageria encriptada, descentralizadaEntão ele não coleta minha informação pessoal ou meus metadados de conversa? Como funciona?Usando uma combinação de tecnologias avançadas de roteamento anônimo e encriptação ponta-a-ponta.Amigas(os) não deixam amigas(os) usarem mensageiros comprometidos. De nada.
- Diga olá a sua Session ID
- Sua Session ID é o endereço exclusivo que pessoas podem usar para contactar você em Session. Com nenhuma conexão com sua identidade real, sua Session ID é totalmente anônima e privada por design.
+
+
Restaurar sua contaEntre a frase de recuperação que lhe foi dada quando você fez signup para restaurar sua conta.Entre sua frase de recuperação
- Escolha seu nome de display
- Este será o seu nome quando você usar Session. Pode ser seu nome verdadeiro, um alias, ou qualquer outra coisa que você quiser.
- Entre um nome de display
- Escolha um nome de display
- Escolha um nome de exibição mais curto
+ Escolha seu nome de display
+ Este será o seu nome quando você usar Session. Pode ser seu nome verdadeiro, um alias, ou qualquer outra coisa que você quiser.
+ Entre um nome de display
+ Escolha um nome de display
+ Escolha um nome de exibição mais curtoRecomendadoEscolha uma opçãoVocê ainda não possui contatos
@@ -554,11 +551,6 @@
"Não foi possível sair do grupo"Tem certeza de que deseja excluir esta conversa?Conversa excluída
- Sua frase de recuperação
- Revele sua frase de recuperação
- Sua frase de recuperação é a chave mestra do seu ID Session - você pode usá-la para restaurar seu ID Session se perder o acesso ao seu dispositivo. Armazene sua frase de recuperação em um local seguro e não a entregue a ninguém.
- Segure para revelar
- Você está quase terminando! 80%Proteja sua conta salvando sua frase de recuperaçãoToque e segure as palavras editadas para revelar sua frase de recuperação e armazene-a com segurança para proteger seu ID Session.Guarde sua frase de recuperação em um local seguro
@@ -571,7 +563,7 @@
Saber maisResolvendo…Nova Sessão
- Digite o ID Session
+ Digite o ID SessionEscanear código QREscaneie o código QR de um usuário para iniciar uma sessão. Os códigos QR podem ser encontrados tocando no ícone de código QR nas configurações da conta.Insira um ID Session ou nome ONS
@@ -603,7 +595,6 @@
DispositivosConvide um amigoPerguntas Frequentes
- Frase de RecuperaçãoLimpar DadosLimpar Dados Incluindo RedeAjude-nos a traduzir o Session
@@ -616,8 +607,6 @@
Você será notificado de forma confiável e imediata sobre novas mensagens usando os servidores de notificação da Google.Mudar nomeDeslinkar dispositivo
- Sua Frase de Recuperação
- Esta é sua frase de recuperação. Com ela, você pode restaurar ou migrar sua Session ID para um novo dispositivo.Limpar Todos os DadosIsso excluirá permanentemente suas mensagens, sessões e contatos.Você gostaria de limpar apenas este dispositivo, ou excluir toda sua conta?
@@ -651,7 +640,7 @@
DiaNoiteDefault de sistema
- Copiar Session ID
+ Copiar Account IDAnexoMensagem de VozDetalhes
@@ -661,7 +650,6 @@
Selecione uma cópia de segurança e coloque a senha frase que foi criada.Senha de 30 dígitosIsto está demorando um pouco, tu gostarias de pular?
- Vincular um DispositivoFrase de RecuperaçãoLer Código QRVá até as configurações → Frase de Recuperação em seu outro dispositivo para mostrar o seu código QR.
@@ -672,7 +660,6 @@
Modo LentoVocê será notificado de forma confiável e imediata sobre novas mensagens usando os servidores de notificação da Google.O session verificará ocasionalmente por novas mensagens em segundo plano.
- Frase de RecuperaçãoSession está TrancadoToque para destrancarDigite um apelido
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 1ffe4347bf..396dd7a465 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -520,27 +520,24 @@ foi recebida está corrompida!
Copiado para a área de transferênciaPróximoCompartilhar
- ID Session inválido
+ ID Session inválidoCancelar
- Seu ID Session
- O Session começa aqui...
- Criar ID Session
- Continuar com seu Session
+ Seu ID SessionO que é o Session?É um aplicativo de mensagens criptografado e descentralizadoEntão ele não coleta minhas informações pessoais ou meus metadados de conversa? Como funciona?Usando uma combinação de tecnologias avançadas de roteamento anônimo e criptografia de ponta a ponta.Amigos não deixam amigos usarem aplicativos de mensagem comprometidos. De nada.
- Diga olá ao seu ID Session
- Seu ID Session é o endereço exclusivo que as pessoas podem usar para entrar em contato com você no Session. Sem conexão com sua identidade real, seu ID Session é totalmente anônimo e privado por definição.
+
+
Restaurar sua contaDigite a frase de recuperação que lhe foi fornecida quando você se inscreveu para restaurar sua conta.Digite sua frase de recuperação
- Escolha seu nome de exibição
- Este será o seu nome quando usar o Session. Pode ser seu nome verdadeiro, um apelido ou qualquer outra coisa que você quiser.
- Digite um nome de exibição
- Escolha um nome de exibição
- Escolha um nome de exibição mais curto
+ Escolha seu nome de exibição
+ Este será o seu nome quando usar o Session. Pode ser seu nome verdadeiro, um apelido ou qualquer outra coisa que você quiser.
+ Digite um nome de exibição
+ Escolha um nome de exibição
+ Escolha um nome de exibição mais curtoRecomendadoEscolha uma opçãoVocê ainda não possui contatos
@@ -549,11 +546,6 @@ foi recebida está corrompida!
"Não foi possível sair do grupo"Tem certeza de que deseja excluir esta conversa?Conversa excluída
- Sua frase de recuperação
- Revele sua frase de recuperação
- Sua frase de recuperação é a chave mestra do seu ID Session - você pode usá-la para restaurar seu ID Session se perder o acesso ao seu dispositivo. Armazene sua frase de recuperação em um local seguro e não a entregue a ninguém.
- Segure para revelar
- Está quase a terminar! 80%Proteja sua conta salvando sua frase de recuperaçãoToque e segure as palavras editadas para revelar sua frase de recuperação e armazene-a com segurança para proteger seu ID Session.Guarde sua frase de recuperação em um local seguro
@@ -566,12 +558,12 @@ foi recebida está corrompida!
Saber maisA resolver…Nova Sessão
- Digite o ID Session
+ Digite o ID SessionEscanear código QREscaneie o código QR de um usuário para iniciar uma sessão. Os códigos QR podem ser encontrados tocando no ícone de código QR nas configurações da conta.
- Insira um Session ID ou um nome ONS
+ Insira um Account ID ou um nome ONSOs usuários podem compartilhar seus IDs Session acessando as configurações da conta e tocando em Compartilhar ID Session, ou compartilhando o código QR.
- Por favor, verifique o Session ID ou ONS e tente novamente.
+ Por favor, verifique o Account ID ou ONS e tente novamente.O Session precisa de acesso à câmera para escanear códigos QRConceder acesso à câmeraNovo grupo fechado
@@ -595,7 +587,6 @@ foi recebida está corrompida!
NotificaçõesBate-paposDispositivos
- Frase de recuperaçãoApagar os dadosNotificaçõesEstilo de notificação
@@ -604,8 +595,6 @@ foi recebida está corrompida!
Estratégia de notificaçãoMudar o nomeDessincronizar dispositivo
- Sua frase de recuperação
- Esta é sua frase de recuperação. Com ela, você pode restaurar ou migrar seu ID Session para um novo dispositivo.Limpar todos os dadosIsso excluirá permanentemente suas mensagens, sessões e contatos.Código QR
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index fa12b8b43b..3ece1fb158 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -525,27 +525,24 @@
Copiado para clipboardPróximoCompartilhar
- Session ID inválida
+ Account ID inválidaCancelar
- Sua Session ID
- Seu Session começa aqui...
- Criar Session ID
- Continuar Seu Session
+ Sua Account IDO que é Session?É um app de mensageria encriptada, descentralizadaEntão ele não coleta minha informação pessoal ou meus metadados de conversa? Como funciona?Usando uma combinação de tecnologias avançadas de roteamento anônimo e encriptação ponta-a-ponta.Amigas(os) não deixam amigas(os) usarem mensageiros comprometidos. De nada.
- Diga olá a sua Session ID
- Sua Session ID é o endereço exclusivo que pessoas podem usar para contactar você em Session. Com nenhuma conexão com sua identidade real, sua Session ID é totalmente anônima e privada por design.
+
+
Restaurar sua contaEntre a frase de recuperação que lhe foi dada quando você fez signup para restaurar sua conta.Entre sua frase de recuperação
- Escolha seu nome de display
- Este será o seu nome quando você usar Session. Pode ser seu nome verdadeiro, um alias, ou qualquer outra coisa que você quiser.
- Entre um nome de display
- Escolha um nome de display
- Escolha um nome de exibição mais curto
+ Escolha seu nome de display
+ Este será o seu nome quando você usar Session. Pode ser seu nome verdadeiro, um alias, ou qualquer outra coisa que você quiser.
+ Entre um nome de display
+ Escolha um nome de display
+ Escolha um nome de exibição mais curtoRecomendadoEscolha uma opçãoVocê ainda não possui contatos
@@ -554,11 +551,6 @@
"Não foi possível sair do grupo"Tem certeza de que deseja excluir esta conversa?Conversa excluída
- Sua frase de recuperação
- Revele sua frase de recuperação
- Sua frase de recuperação é a chave mestra do seu ID Session - você pode usá-la para restaurar seu ID Session se perder o acesso ao seu dispositivo. Armazene sua frase de recuperação em um local seguro e não a entregue a ninguém.
- Segure para revelar
- Você está quase terminando! 80%Proteja sua conta salvando sua frase de recuperaçãoToque e segure as palavras editadas para revelar sua frase de recuperação e armazene-a com segurança para proteger seu ID Session.Guarde sua frase de recuperação em um local seguro
@@ -571,7 +563,7 @@
Saber maisResolvendo…Nova Sessão
- Digite o ID Session
+ Digite o ID SessionEscanear código QREscaneie o código QR de um usuário para iniciar uma sessão. Os códigos QR podem ser encontrados tocando no ícone de código QR nas configurações da conta.Insira um ID Session ou nome ONS
@@ -603,7 +595,6 @@
DispositivosConvide um amigoPerguntas Frequentes
- Frase de RecuperaçãoLimpar DadosLimpar Dados Incluindo RedeAjude-nos a traduzir o Session
@@ -616,8 +607,6 @@
Você será notificado de forma confiável e imediata sobre novas mensagens usando os servidores de notificação da Google.Mudar nomeDeslinkar dispositivo
- Sua Frase de Recuperação
- Esta é sua frase de recuperação. Com ela, você pode restaurar ou migrar sua Session ID para um novo dispositivo.Limpar Todos os DadosIsso excluirá permanentemente suas mensagens, sessões e contatos.Você gostaria de limpar apenas este dispositivo, ou excluir toda sua conta?
@@ -651,7 +640,7 @@
DiaNoiteDefault de sistema
- Copiar Session ID
+ Copiar Account IDAnexoMensagem de VozDetalhes
@@ -661,7 +650,6 @@
Selecione uma cópia de segurança e coloque a senha frase que foi criada.Senha de 30 dígitosIsto está demorando um pouco, tu gostarias de pular?
- Vincular um DispositivoFrase de RecuperaçãoLer Código QRVá até as configurações → Frase de Recuperação em seu outro dispositivo para mostrar o seu código QR.
@@ -672,7 +660,6 @@
Modo LentoVocê será notificado de forma confiável e imediata sobre novas mensagens usando os servidores de notificação da Google.O session verificará ocasionalmente por novas mensagens em segundo plano.
- Frase de RecuperaçãoSession está TrancadoToque para destrancarDigite um apelido
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index fa5189d217..9d29835da6 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -539,33 +539,30 @@ schimbul de chei este corupt
Copiat în clipboardUrmătorulDistribuie
- ID sesiune nevalid
+ ID sesiune nevalidAnulare
- ID-ul sesiunii dvs
- Sesiunea dvs. începe aici...
- Creați ID sesiune
- Continuați sesiunea
+ ID-ul sesiunii dvsCe este Session?Este o aplicație de mesagerie descentralizată, criptatăDeci nu colectează informaţii personale sau metadatele conversaţiei? Cum funcţionează?Utilizarea unei combinații avansate de rutare anonimă și de tehnologii de criptare capăt-la-capăt.Prietenii nu-și lasă prietenii să folosească mesageri compromiși. Cu plăcere.
- Bun venit la noul tău ID Session
- ID-ul de sesiune este adresa ta unică pe care persoanele o pot folosi pentru a te contacta în Session. Neavând conexiune la identitatea ta reală, ID-ul tău Session este complet anonim și privat prin design.
+
+
Recuperează-ți contulIntroduceți fraza de recuperare care v-a fost dată atunci când v-ați înregistrat pentru a vă restaura contul.Introduceți fraza de recuperare
- Alegeți numele afișat
- Acesta va fi numele tău când folosești Session. Poate fi numele tău, un pseudonim, sau orice altceva dorești.
- Alege un nume de afișat
- Vă rugăm să alegeți un nume de afișare
+ Alegeți numele afișat
+ Acesta va fi numele tău când folosești Session. Poate fi numele tău, un pseudonim, sau orice altceva dorești.
+ Alege un nume de afișat
+ Vă rugăm să alegeți un nume de afișareNod de intrareNod serviciiDestinațieAflați mai multeSe rezolvă…Sesiune Nouă
- Introduceți ID-ul Session
+ Introduceți ID-ul SessionScanați codul QRScanați codul QR al unui utilizator pentru a începe o sesiune. Codurile QR pot fi găsite prin atingerea pictogramei de cod QR din setările contului.Introduceți ID-ul Session sau numele ONS
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index fa5189d217..9d29835da6 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -539,33 +539,30 @@ schimbul de chei este corupt
Copiat în clipboardUrmătorulDistribuie
- ID sesiune nevalid
+ ID sesiune nevalidAnulare
- ID-ul sesiunii dvs
- Sesiunea dvs. începe aici...
- Creați ID sesiune
- Continuați sesiunea
+ ID-ul sesiunii dvsCe este Session?Este o aplicație de mesagerie descentralizată, criptatăDeci nu colectează informaţii personale sau metadatele conversaţiei? Cum funcţionează?Utilizarea unei combinații avansate de rutare anonimă și de tehnologii de criptare capăt-la-capăt.Prietenii nu-și lasă prietenii să folosească mesageri compromiși. Cu plăcere.
- Bun venit la noul tău ID Session
- ID-ul de sesiune este adresa ta unică pe care persoanele o pot folosi pentru a te contacta în Session. Neavând conexiune la identitatea ta reală, ID-ul tău Session este complet anonim și privat prin design.
+
+
Recuperează-ți contulIntroduceți fraza de recuperare care v-a fost dată atunci când v-ați înregistrat pentru a vă restaura contul.Introduceți fraza de recuperare
- Alegeți numele afișat
- Acesta va fi numele tău când folosești Session. Poate fi numele tău, un pseudonim, sau orice altceva dorești.
- Alege un nume de afișat
- Vă rugăm să alegeți un nume de afișare
+ Alegeți numele afișat
+ Acesta va fi numele tău când folosești Session. Poate fi numele tău, un pseudonim, sau orice altceva dorești.
+ Alege un nume de afișat
+ Vă rugăm să alegeți un nume de afișareNod de intrareNod serviciiDestinațieAflați mai multeSe rezolvă…Sesiune Nouă
- Introduceți ID-ul Session
+ Introduceți ID-ul SessionScanați codul QRScanați codul QR al unui utilizator pentru a începe o sesiune. Codurile QR pot fi găsite prin atingerea pictogramei de cod QR din setările contului.Introduceți ID-ul Session sau numele ONS
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index 82d6c0a332..78a7c3512f 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -549,27 +549,24 @@
Скопировано в буфер обменаДалееПоделиться
- Неверный Session ID
+ Неверный Account IDОтмена
- Ваш Session ID
- Здесь начинается Session...
- Создать Session ID
- Восстановить Session ID
+ Ваш Account IDЧто такое Session?Это децентрализованное, зашифрованное приложение для обмена сообщениямиЗначит ли это, что оно не собирает мою личную информацию или метаданные моего разговора? Как оно работает?С использованием комбинации передовых технологий анонимной маршрутизации и сквозного шифрования.Друзья не позволят друзьям использовать ненадежные мессенджеры. Пользуйтесь на здоровье.
- Познакомьтесь со своим Session ID
- Ваш Session ID - это уникальный адрес, который другие пользователи могут использовать для связи с вами при помощи Session. Поскольку ваш Session ID никак не связан с вашей настоящей личностью, он по определению является полностью анонимным и конфиденциальным.
+
+
Восстановите свой аккаунтДля восстановления учетной записи введите секретную фразу, которая была предоставлена вам при регистрации.Введите секретную фразу
- Выберите ваше отображаемое имя
- Это имя будет отображаться, когда вы используете Session. Это может быть ваше настоящее имя, псевдоним или что угодно по вашему выбору.
- Введите отображаемое имя
- Пожалуйста, выберите отображаемое имя
- Пожалуйста, выберите более короткое отображаемое имя
+ Выберите ваше отображаемое имя
+ Это имя будет отображаться, когда вы используете Session. Это может быть ваше настоящее имя, псевдоним или что угодно по вашему выбору.
+ Введите отображаемое имя
+ Пожалуйста, выберите отображаемое имя
+ Пожалуйста, выберите более короткое отображаемое имяРекомендуетсяПожалуйста, выберите методУ вас еще нет контактов
@@ -578,13 +575,8 @@
"Не удалось покинуть группу"Вы уверены, что хотите удалить этот разговор?Разговор удален
- Ваша секретная фраза для восстановления
- А вот и ваша секретная фраза для восстановления
- Ваша секретная фраза является главным ключом к вашему Session ID. Вы можете использовать ее для восстановления Session ID, если потеряете доступ к своему устройству. Сохраните свою секретную фразу в безопасном месте, и никому ее не передавайте.
- Удерживайте, чтобы показать
- Вы почти закончили! 80%Защитите свой аккаунт, сохранив секретную фразу
- Нажмите и удерживайте сокращенные слова, чтобы открыть секретную фразу, а затем сохраните ее в надежном месте, чтобы защитить свой Session ID.
+ Нажмите и удерживайте сокращенные слова, чтобы открыть секретную фразу, а затем сохраните ее в надежном месте, чтобы защитить свой Account ID.Обязательно сохраните секретную фразу в надежном местеМаршрутSession скрывает ваш IP, перенаправляя ваши сообщения через несколько сервисных узлов своей децентрализованной сети. Вот страны, через которые в данный момент проходит ваш сеанс связи:
@@ -595,12 +587,12 @@
Узнать большеИдет определение…Новый Диалог
- Введите Session ID
+ Введите Account IDСканировать QR-кодСканируйте QR-код пользователя, чтобы начать сессию. QR-коды можно найти, нажав значок QR-кода в настройках учетной записи.
- Введите Session ID или ONS имя
- Пользователи могут поделиться своим Session ID, зайдя в настройки своей учетной записи и нажав «Отправить Session ID», или поделившись своим QR-кодом.
- Пожалуйста, проверьте Session ID или ONS имя и попробуйте снова.
+ Введите Account ID или ONS имя
+ Пользователи могут поделиться своим Account ID, зайдя в настройки своей учетной записи и нажав «Отправить Account ID», или поделившись своим QR-кодом.
+ Пожалуйста, проверьте Account ID или ONS имя и попробуйте снова.Session нужен доступ к камере для сканирования QR-кодовПредоставить доступ к камереНовая закрытая группа
@@ -627,7 +619,6 @@
УстройстваПригласить другаЧасто задаваемые вопросы
- Секретная фразаОчистить данныеОчистить данные включая учетную записьПомогите нам перевести Session
@@ -640,8 +631,6 @@
Вы будете получать уведомления о новых сообщениях надежно и сразу же с помощью серверов уведомлений Google.Сменить имяОтключить устройство
- Ваша секретная фраза
- Это ваша секретная фраза. С ее помощью вы можете восстановить или перенести свой Session ID на новое устройство.Очистить все данныеЭто навсегда удалит ваши сообщения, сессии и контакты.Вы хотите очистить только это устройство или полностью удалить ваш аккаунт?
@@ -675,7 +664,7 @@
ДеньНочьСистемные настройки
- Копировать Session ID
+ Копировать Account IDВложениеГолосовое сообщениеПодробности
@@ -685,7 +674,6 @@
Выберите файл резервной копии и введите парольную фразу, с которой он был создан.Фраза из 30 цифрЭто занимает некоторое время, хотите пропустить?
- Привязать устройствоФраза для восстановления доступаСканировать QR-кодПерейдите в Настройки → Фраза для восстановления доступа на другом устройстве, чтобы показать ваш QR код.
@@ -696,7 +684,6 @@
Медленный режимВы будете получать уведомления о новых сообщениях надежно и сразу же с помощью серверов уведомлений Google.Session время от времени в фоновом режиме будeт проверять и получать новые сообщения.
- Секретная фразаSession заблокированРазблокироватьВведите ник
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 82d6c0a332..78a7c3512f 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -549,27 +549,24 @@
Скопировано в буфер обменаДалееПоделиться
- Неверный Session ID
+ Неверный Account IDОтмена
- Ваш Session ID
- Здесь начинается Session...
- Создать Session ID
- Восстановить Session ID
+ Ваш Account IDЧто такое Session?Это децентрализованное, зашифрованное приложение для обмена сообщениямиЗначит ли это, что оно не собирает мою личную информацию или метаданные моего разговора? Как оно работает?С использованием комбинации передовых технологий анонимной маршрутизации и сквозного шифрования.Друзья не позволят друзьям использовать ненадежные мессенджеры. Пользуйтесь на здоровье.
- Познакомьтесь со своим Session ID
- Ваш Session ID - это уникальный адрес, который другие пользователи могут использовать для связи с вами при помощи Session. Поскольку ваш Session ID никак не связан с вашей настоящей личностью, он по определению является полностью анонимным и конфиденциальным.
+
+
Восстановите свой аккаунтДля восстановления учетной записи введите секретную фразу, которая была предоставлена вам при регистрации.Введите секретную фразу
- Выберите ваше отображаемое имя
- Это имя будет отображаться, когда вы используете Session. Это может быть ваше настоящее имя, псевдоним или что угодно по вашему выбору.
- Введите отображаемое имя
- Пожалуйста, выберите отображаемое имя
- Пожалуйста, выберите более короткое отображаемое имя
+ Выберите ваше отображаемое имя
+ Это имя будет отображаться, когда вы используете Session. Это может быть ваше настоящее имя, псевдоним или что угодно по вашему выбору.
+ Введите отображаемое имя
+ Пожалуйста, выберите отображаемое имя
+ Пожалуйста, выберите более короткое отображаемое имяРекомендуетсяПожалуйста, выберите методУ вас еще нет контактов
@@ -578,13 +575,8 @@
"Не удалось покинуть группу"Вы уверены, что хотите удалить этот разговор?Разговор удален
- Ваша секретная фраза для восстановления
- А вот и ваша секретная фраза для восстановления
- Ваша секретная фраза является главным ключом к вашему Session ID. Вы можете использовать ее для восстановления Session ID, если потеряете доступ к своему устройству. Сохраните свою секретную фразу в безопасном месте, и никому ее не передавайте.
- Удерживайте, чтобы показать
- Вы почти закончили! 80%Защитите свой аккаунт, сохранив секретную фразу
- Нажмите и удерживайте сокращенные слова, чтобы открыть секретную фразу, а затем сохраните ее в надежном месте, чтобы защитить свой Session ID.
+ Нажмите и удерживайте сокращенные слова, чтобы открыть секретную фразу, а затем сохраните ее в надежном месте, чтобы защитить свой Account ID.Обязательно сохраните секретную фразу в надежном местеМаршрутSession скрывает ваш IP, перенаправляя ваши сообщения через несколько сервисных узлов своей децентрализованной сети. Вот страны, через которые в данный момент проходит ваш сеанс связи:
@@ -595,12 +587,12 @@
Узнать большеИдет определение…Новый Диалог
- Введите Session ID
+ Введите Account IDСканировать QR-кодСканируйте QR-код пользователя, чтобы начать сессию. QR-коды можно найти, нажав значок QR-кода в настройках учетной записи.
- Введите Session ID или ONS имя
- Пользователи могут поделиться своим Session ID, зайдя в настройки своей учетной записи и нажав «Отправить Session ID», или поделившись своим QR-кодом.
- Пожалуйста, проверьте Session ID или ONS имя и попробуйте снова.
+ Введите Account ID или ONS имя
+ Пользователи могут поделиться своим Account ID, зайдя в настройки своей учетной записи и нажав «Отправить Account ID», или поделившись своим QR-кодом.
+ Пожалуйста, проверьте Account ID или ONS имя и попробуйте снова.Session нужен доступ к камере для сканирования QR-кодовПредоставить доступ к камереНовая закрытая группа
@@ -627,7 +619,6 @@
УстройстваПригласить другаЧасто задаваемые вопросы
- Секретная фразаОчистить данныеОчистить данные включая учетную записьПомогите нам перевести Session
@@ -640,8 +631,6 @@
Вы будете получать уведомления о новых сообщениях надежно и сразу же с помощью серверов уведомлений Google.Сменить имяОтключить устройство
- Ваша секретная фраза
- Это ваша секретная фраза. С ее помощью вы можете восстановить или перенести свой Session ID на новое устройство.Очистить все данныеЭто навсегда удалит ваши сообщения, сессии и контакты.Вы хотите очистить только это устройство или полностью удалить ваш аккаунт?
@@ -675,7 +664,7 @@
ДеньНочьСистемные настройки
- Копировать Session ID
+ Копировать Account IDВложениеГолосовое сообщениеПодробности
@@ -685,7 +674,6 @@
Выберите файл резервной копии и введите парольную фразу, с которой он был создан.Фраза из 30 цифрЭто занимает некоторое время, хотите пропустить?
- Привязать устройствоФраза для восстановления доступаСканировать QR-кодПерейдите в Настройки → Фраза для восстановления доступа на другом устройстве, чтобы показать ваш QR код.
@@ -696,7 +684,6 @@
Медленный режимВы будете получать уведомления о новых сообщениях надежно и сразу же с помощью серверов уведомлений Google.Session время от времени в фоновом режиме будeт проверять и получать новые сообщения.
- Секретная фразаSession заблокированРазблокироватьВведите ник
diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml
index a413e175e6..ab30427042 100644
--- a/app/src/main/res/values-sk-rSK/strings.xml
+++ b/app/src/main/res/values-sk-rSK/strings.xml
@@ -539,25 +539,24 @@ výmeny kľúčov.
Skopírované do schránkyĎalejZdieľať
- Neplatné Session ID
+ Neplatné Account IDZrušiť
- Vaše Session ID
- Vytvoriť Session ID
+ Vaše Account IDČo je Session?Je to decentralizovaná, šifrovaná aplikácia na posielanie správTakže nezbiera moje osobné informácie alebo metadáta mojich konverzácií? Ako to funguje?Použitím kombinácie pokročilých technológií anonymného smerovania a end-to-end šifrovania.Priatelia nedovolia priateľom používať skompromitované chatové aplikácie. Nieje za čo.
- Povedzte ahoj svojmu Session ID
- Vaše Session ID je jedinečná adresa, ktorú môžu ľudia použiť aby sa s vami skontaktovali v Session. Pretože Session ID nemá žiadne spojenie s vašou skutočnou identitou, je Session ID úplne anonymné a súkromé.
+
+
Obnoviť účetZadajte frázu na obnovenie, ktorá vám bola poskytnutá pri registrácii na obnovenie účtu.Zadajte vašu obnovovaciu frázu
- Vyberte svoje zobrazované meno
- Toto bude vaše meno pri používaní Session. Môže to byť vaše skutočné meno, prezývka alebo čokoľvek čo chcete.
- Zadajte zobrazované meno
- Zvoľte prosím zobrazované meno
- Zvoľte prosím kratšie zobrazované meno
+ Vyberte svoje zobrazované meno
+ Toto bude vaše meno pri používaní Session. Môže to byť vaše skutočné meno, prezývka alebo čokoľvek čo chcete.
+ Zadajte zobrazované meno
+ Zvoľte prosím zobrazované meno
+ Zvoľte prosím kratšie zobrazované menoOdporúčanéProsím, zvoľte možnosťZatiaľ nemáte žiadne kontakty
@@ -565,11 +564,6 @@ výmeny kľúčov.
"Skupinu sa nepodarilo opustiť"Naozaj chcete odstrániť túto konverzáciu?Konverzácia úspešne zmazaná
- Vaša fráza pre obnovenie
- Toto je vaša fráza pre obnovenie
- Vaša fráza na obnovenie je hlavným kľúčom k vášmu Session ID - môžete ju použiť na obnovenie svojho Session ID ak stratíte prístup k zariadeniu. Uložte frázu na obnovenie na bezpečnom mieste a nikomu ju nedávajte.
- Podržaním odhaľte
- Ste takmer hotoví! 80%Zabezpečte svoj účet uložením frázy obnoveniaUistite sa, že frázu na obnovenie máte uloženú na bezpečnom miesteCesta
@@ -579,10 +573,10 @@ výmeny kľúčov.
Servisný uzolCieľViac informácií
- Zadajte Session ID
+ Zadajte Account IDSkenovať QR kódZačnite stretnutie naskenovaním QR kódu iného používateľa. QR kód nájdete ťuknutím na ikonu QR kódu v nastaveniach účtu.
- Používatelia môžu zdieľať svoje Session ID tak, že prejdú do nastavení svojho účtu a klepnú na možnosť „Zdieľať Session ID“ alebo zdieľajú svoj QR kód.
+ Používatelia môžu zdieľať svoje Account ID tak, že prejdú do nastavení svojho účtu a klepnú na možnosť „Zdieľať Account ID“ alebo zdieľajú svoj QR kód.Session potrebuje prístup k fotoaparátu na skenovanie QR kódovUdeliť prístup k fotoaparátuNová uzatvorená skupina
@@ -605,7 +599,6 @@ výmeny kľúčov.
SúkromieUpozorneniaZariadenia
- Fráza pre obnovenieOdstrániť dátaPomôžte nám preložiť SessionUpozornenia
@@ -614,8 +607,6 @@ výmeny kľúčov.
SúkromieZmeniť menoOdpojenie zariadenia
- Vaša fráza pre obnovenie
- Toto je vaša fráza pre obnovenie. S jej pomocou môžete obnoviť alebo presunúť svoje Session ID na nové zariadenie.Odstrániť všetky dátaQR kódZobraziť môj QR kód
@@ -642,7 +633,7 @@ výmeny kľúčov.
DeňNočný režimPredvolené systémom
- Kopírovať Session ID
+ Kopírovať Account IDPrílohaHlasová správaPodrobnosti
@@ -651,7 +642,6 @@ výmeny kľúčov.
Vybrať súborVyberte súbor zálohy a zadajte prístupovú frázu, pomocou ktorej bol vytvorený.30-znaková prístupová fráza
- Pripojiť zariadenieAlebo sa pripojte k jednej z týchto…Upozornenia na správyRýchly režim
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index a413e175e6..ab30427042 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -539,25 +539,24 @@ výmeny kľúčov.
Skopírované do schránkyĎalejZdieľať
- Neplatné Session ID
+ Neplatné Account IDZrušiť
- Vaše Session ID
- Vytvoriť Session ID
+ Vaše Account IDČo je Session?Je to decentralizovaná, šifrovaná aplikácia na posielanie správTakže nezbiera moje osobné informácie alebo metadáta mojich konverzácií? Ako to funguje?Použitím kombinácie pokročilých technológií anonymného smerovania a end-to-end šifrovania.Priatelia nedovolia priateľom používať skompromitované chatové aplikácie. Nieje za čo.
- Povedzte ahoj svojmu Session ID
- Vaše Session ID je jedinečná adresa, ktorú môžu ľudia použiť aby sa s vami skontaktovali v Session. Pretože Session ID nemá žiadne spojenie s vašou skutočnou identitou, je Session ID úplne anonymné a súkromé.
+
+
Obnoviť účetZadajte frázu na obnovenie, ktorá vám bola poskytnutá pri registrácii na obnovenie účtu.Zadajte vašu obnovovaciu frázu
- Vyberte svoje zobrazované meno
- Toto bude vaše meno pri používaní Session. Môže to byť vaše skutočné meno, prezývka alebo čokoľvek čo chcete.
- Zadajte zobrazované meno
- Zvoľte prosím zobrazované meno
- Zvoľte prosím kratšie zobrazované meno
+ Vyberte svoje zobrazované meno
+ Toto bude vaše meno pri používaní Session. Môže to byť vaše skutočné meno, prezývka alebo čokoľvek čo chcete.
+ Zadajte zobrazované meno
+ Zvoľte prosím zobrazované meno
+ Zvoľte prosím kratšie zobrazované menoOdporúčanéProsím, zvoľte možnosťZatiaľ nemáte žiadne kontakty
@@ -565,11 +564,6 @@ výmeny kľúčov.
"Skupinu sa nepodarilo opustiť"Naozaj chcete odstrániť túto konverzáciu?Konverzácia úspešne zmazaná
- Vaša fráza pre obnovenie
- Toto je vaša fráza pre obnovenie
- Vaša fráza na obnovenie je hlavným kľúčom k vášmu Session ID - môžete ju použiť na obnovenie svojho Session ID ak stratíte prístup k zariadeniu. Uložte frázu na obnovenie na bezpečnom mieste a nikomu ju nedávajte.
- Podržaním odhaľte
- Ste takmer hotoví! 80%Zabezpečte svoj účet uložením frázy obnoveniaUistite sa, že frázu na obnovenie máte uloženú na bezpečnom miesteCesta
@@ -579,10 +573,10 @@ výmeny kľúčov.
Servisný uzolCieľViac informácií
- Zadajte Session ID
+ Zadajte Account IDSkenovať QR kódZačnite stretnutie naskenovaním QR kódu iného používateľa. QR kód nájdete ťuknutím na ikonu QR kódu v nastaveniach účtu.
- Používatelia môžu zdieľať svoje Session ID tak, že prejdú do nastavení svojho účtu a klepnú na možnosť „Zdieľať Session ID“ alebo zdieľajú svoj QR kód.
+ Používatelia môžu zdieľať svoje Account ID tak, že prejdú do nastavení svojho účtu a klepnú na možnosť „Zdieľať Account ID“ alebo zdieľajú svoj QR kód.Session potrebuje prístup k fotoaparátu na skenovanie QR kódovUdeliť prístup k fotoaparátuNová uzatvorená skupina
@@ -605,7 +599,6 @@ výmeny kľúčov.
SúkromieUpozorneniaZariadenia
- Fráza pre obnovenieOdstrániť dátaPomôžte nám preložiť SessionUpozornenia
@@ -614,8 +607,6 @@ výmeny kľúčov.
SúkromieZmeniť menoOdpojenie zariadenia
- Vaša fráza pre obnovenie
- Toto je vaša fráza pre obnovenie. S jej pomocou môžete obnoviť alebo presunúť svoje Session ID na nové zariadenie.Odstrániť všetky dátaQR kódZobraziť môj QR kód
@@ -642,7 +633,7 @@ výmeny kľúčov.
DeňNočný režimPredvolené systémom
- Kopírovať Session ID
+ Kopírovať Account IDPrílohaHlasová správaPodrobnosti
@@ -651,7 +642,6 @@ výmeny kľúčov.
Vybrať súborVyberte súbor zálohy a zadajte prístupovú frázu, pomocou ktorej bol vytvorený.30-znaková prístupová fráza
- Pripojiť zariadenieAlebo sa pripojte k jednej z týchto…Upozornenia na správyRýchly režim
diff --git a/app/src/main/res/values-sq-rAL/strings.xml b/app/src/main/res/values-sq-rAL/strings.xml
index 629a09651a..0db99225ad 100644
--- a/app/src/main/res/values-sq-rAL/strings.xml
+++ b/app/src/main/res/values-sq-rAL/strings.xml
@@ -523,17 +523,14 @@
Kopjo në klipbordTutjeShpërndaje
- Session ID e gabuar
+ Account ID e gabuarAnuloje
- Session ID e juaj
- Sessioni juaj fillon ketu...
- Krijo një Session ID
- Vazhdo tek Session-i juaj
+ Account ID e juajSi është Sessioni juaj?Është një app për mesazhe të koduara dhe decentralizuaraI bije që të dhënat personale dhe informacionet e mesazheve nuk do të grumbullohen? Si funksionon kjo?
- Thuaj Tungjatjeta Session-it tuaj
- Session ID juaj është një adresë unike që mund t\'ju kontaktojnë përmes Session. Pa ndonjë ndërlidhje me identitetin tuaj real, Session ID juaj është totalisht anonim dhe privat.
+
+
Rikthe llogarinë tuajShkruanj frazen e rikthimit qe iu është gjatë regjistrimit të llogarisë.
diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml
index 629a09651a..0db99225ad 100644
--- a/app/src/main/res/values-sq/strings.xml
+++ b/app/src/main/res/values-sq/strings.xml
@@ -523,17 +523,14 @@
Kopjo në klipbordTutjeShpërndaje
- Session ID e gabuar
+ Account ID e gabuarAnuloje
- Session ID e juaj
- Sessioni juaj fillon ketu...
- Krijo një Session ID
- Vazhdo tek Session-i juaj
+ Account ID e juajSi është Sessioni juaj?Është një app për mesazhe të koduara dhe decentralizuaraI bije që të dhënat personale dhe informacionet e mesazheve nuk do të grumbullohen? Si funksionon kjo?
- Thuaj Tungjatjeta Session-it tuaj
- Session ID juaj është një adresë unike që mund t\'ju kontaktojnë përmes Session. Pa ndonjë ndërlidhje me identitetin tuaj real, Session ID juaj është totalisht anonim dhe privat.
+
+
Rikthe llogarinë tuajShkruanj frazen e rikthimit qe iu është gjatë regjistrimit të llogarisë.
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index 5852d985e9..a36f5c5f19 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -507,7 +507,7 @@
Ништа
- Молимо вас да изаберете краће приказно име
+ Молимо вас да изаберете краће приказно имеПрепорученоМолимо Вас да одаберете опцијуЈош увек немате ниједан контакт
@@ -516,10 +516,6 @@
"Неуспешан излазак из групе"Да ли сте сигурни да желите да обришете овај разговор?Конверзација је избрисана
- Фраза за опоравак
- Сретни своју фразу за опоравак
- Држи да откријеш
- Скоро си завршио! 80%Ти
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 5852d985e9..a36f5c5f19 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -507,7 +507,7 @@
Ништа
- Молимо вас да изаберете краће приказно име
+ Молимо вас да изаберете краће приказно имеПрепорученоМолимо Вас да одаберете опцијуЈош увек немате ниједан контакт
@@ -516,10 +516,6 @@
"Неуспешан излазак из групе"Да ли сте сигурни да желите да обришете овај разговор?Конверзација је избрисана
- Фраза за опоравак
- Сретни своју фразу за опоравак
- Држи да откријеш
- Скоро си завршио! 80%Ти
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index 8dd28619df..bd53554428 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -524,27 +524,24 @@ för nyckelutbyte!
Kopierade till urklippNästaDela
- Ogiltigt Sessions-ID
+ Ogiltigt Sessions-IDAvbryt
- Ditt Session ID
- Din Session börjar här...
- Skapa Session-ID
- Fortsätt din Session
+ Ditt Account IDVad är Session?Det är en decentraliserad, krypterad meddelandeappSå det samlar inte in mina personuppgifter eller mina konversationers metadata? Hur fungerar det?Med hjälp av en kombination av avancerad anonym routing och end-to-end-krypteringsteknik.Vänner låter inte vänner använda osäkra meddelandeappar. Varsågod.
- Säg hej till ditt Session-ID
- Ditt Session-ID är den unika adress folk kan använda för att kontakta dig på Session. Ditt Session-ID är helt anonymt och privat rakt igenom, helt utan koppling till din riktiga identitet.
+
+
Återställ ditt kontoAnge den återställningsfras du fick när du skapade ditt konto för att kunna återställa ditt konto.Ange din återställningsfras
- Välj visningsnamn
- Detta blir ditt namn när du använder Session. Det kan vara ditt riktiga namn, ett alias eller något annat du gillar.
- Ange ett visningsnamn
- Vänligen välj ett visningsnamn
- Vänligen välj ett kortare visningsnamn
+ Välj visningsnamn
+ Detta blir ditt namn när du använder Session. Det kan vara ditt riktiga namn, ett alias eller något annat du gillar.
+ Ange ett visningsnamn
+ Vänligen välj ett visningsnamn
+ Vänligen välj ett kortare visningsnamnRekommenderatVälj ett alternativDu har inga kontakter än
@@ -553,13 +550,8 @@ för nyckelutbyte!
"Kunde inte lämna gruppen"Är du säker på att du vill ta bort denna konversation?Konversationen har raderats
- Din Återställningsfras
- Möt din återställningsfras
- Din återställningsfras är huvudnyckeln till ditt Session-ID – du kan använda den för att återställa ditt Session-ID om du förlorar åtkomst till enheten. Förvara din återställningsfras på en säker plats, och ge den inte till någon.
- Håll ned för att visa
- Du är nästan klar! 80%Säkra ditt konto genom att spara din återställningsfras
- Tryck på och håll ned de dolda orden för att avslöja din återställningsfras och lagra dem på ett säkert sätt för att säkra ditt Session-ID.
+ Tryck på och håll ned de dolda orden för att avslöja din återställningsfras och lagra dem på ett säkert sätt för att säkra ditt Account-ID.Se till att spara din återställningsfras på en säker platsSökvägSession döljer din IP-adress genom att dirigera dina meddelanden genom flera Tjänstnoder i Sessions decentraliserade nätverk. Detta är de länder som din anslutning för närvarande går igenom:
@@ -570,7 +562,7 @@ för nyckelutbyte!
Mer infoLaddar…Ny Session
- Ange Sessions-ID
+ Ange Sessions-IDSkanna QR-kodSkanna en användares QR-kod för att starta en session. QR-koder kan finnas genom att trycka på ikonen för QR-kod i kontoinställningarna.Ange sessions-ID eller ONS-namn
@@ -602,7 +594,6 @@ för nyckelutbyte!
EnheterBjud in en vänVanliga frågor
- ÅterställningsfrasRensa dataRensa data inklusive nätverkHjälp oss att översätta Session
@@ -615,8 +606,6 @@ för nyckelutbyte!
Du kommer att meddelas om nya meddelanden på ett tillförlitligt sätt och omedelbart genom att använda Googles aviseringsservrar.Byt NamnKopplar bort enhet
- Din Återställningsfras
- Detta är din återställningsfras. Med den kan du återställa eller migrera ditt Session-ID till en ny enhet.Rensa All DataDetta kommer att radera dina meddelanden, sessioner och kontakter permanent.Vill du rensa endast den här enheten eller ta bort hela ditt konto?
@@ -650,7 +639,7 @@ för nyckelutbyte!
DagNattSystemets inställning
- Kopiera Session-ID
+ Kopiera Account-IDBilagaRöstmeddelandeDetaljer
@@ -660,7 +649,6 @@ för nyckelutbyte!
Välj en säkerhetskopieringsfil och ange lösenfrasen som den skapades med.30-siffrig lösenfrasDetta tar ett tag, vill du hoppa över?
- Länka en enhetÅterställningsfrasSkanna QR-kodNavigera till Inställningar → Återställningsfras på din andra enhet för att visa din QR-kod.
@@ -671,7 +659,6 @@ för nyckelutbyte!
Långsamt lägeDu kommer att meddelas om nya meddelanden på ett tillförlitligt sätt och omedelbart genom att använda Googles aviseringsservrar.Session kommer då och då att leta efter nya meddelanden i bakgrunden.
- ÅterställningsfrasSession är låstTryck om du vill låsa uppAnge smeknamn
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 8dd28619df..bd53554428 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -524,27 +524,24 @@ för nyckelutbyte!
Kopierade till urklippNästaDela
- Ogiltigt Sessions-ID
+ Ogiltigt Sessions-IDAvbryt
- Ditt Session ID
- Din Session börjar här...
- Skapa Session-ID
- Fortsätt din Session
+ Ditt Account IDVad är Session?Det är en decentraliserad, krypterad meddelandeappSå det samlar inte in mina personuppgifter eller mina konversationers metadata? Hur fungerar det?Med hjälp av en kombination av avancerad anonym routing och end-to-end-krypteringsteknik.Vänner låter inte vänner använda osäkra meddelandeappar. Varsågod.
- Säg hej till ditt Session-ID
- Ditt Session-ID är den unika adress folk kan använda för att kontakta dig på Session. Ditt Session-ID är helt anonymt och privat rakt igenom, helt utan koppling till din riktiga identitet.
+
+
Återställ ditt kontoAnge den återställningsfras du fick när du skapade ditt konto för att kunna återställa ditt konto.Ange din återställningsfras
- Välj visningsnamn
- Detta blir ditt namn när du använder Session. Det kan vara ditt riktiga namn, ett alias eller något annat du gillar.
- Ange ett visningsnamn
- Vänligen välj ett visningsnamn
- Vänligen välj ett kortare visningsnamn
+ Välj visningsnamn
+ Detta blir ditt namn när du använder Session. Det kan vara ditt riktiga namn, ett alias eller något annat du gillar.
+ Ange ett visningsnamn
+ Vänligen välj ett visningsnamn
+ Vänligen välj ett kortare visningsnamnRekommenderatVälj ett alternativDu har inga kontakter än
@@ -553,13 +550,8 @@ för nyckelutbyte!
"Kunde inte lämna gruppen"Är du säker på att du vill ta bort denna konversation?Konversationen har raderats
- Din Återställningsfras
- Möt din återställningsfras
- Din återställningsfras är huvudnyckeln till ditt Session-ID – du kan använda den för att återställa ditt Session-ID om du förlorar åtkomst till enheten. Förvara din återställningsfras på en säker plats, och ge den inte till någon.
- Håll ned för att visa
- Du är nästan klar! 80%Säkra ditt konto genom att spara din återställningsfras
- Tryck på och håll ned de dolda orden för att avslöja din återställningsfras och lagra dem på ett säkert sätt för att säkra ditt Session-ID.
+ Tryck på och håll ned de dolda orden för att avslöja din återställningsfras och lagra dem på ett säkert sätt för att säkra ditt Account-ID.Se till att spara din återställningsfras på en säker platsSökvägSession döljer din IP-adress genom att dirigera dina meddelanden genom flera Tjänstnoder i Sessions decentraliserade nätverk. Detta är de länder som din anslutning för närvarande går igenom:
@@ -570,7 +562,7 @@ för nyckelutbyte!
Mer infoLaddar…Ny Session
- Ange Sessions-ID
+ Ange Sessions-IDSkanna QR-kodSkanna en användares QR-kod för att starta en session. QR-koder kan finnas genom att trycka på ikonen för QR-kod i kontoinställningarna.Ange sessions-ID eller ONS-namn
@@ -602,7 +594,6 @@ för nyckelutbyte!
EnheterBjud in en vänVanliga frågor
- ÅterställningsfrasRensa dataRensa data inklusive nätverkHjälp oss att översätta Session
@@ -615,8 +606,6 @@ för nyckelutbyte!
Du kommer att meddelas om nya meddelanden på ett tillförlitligt sätt och omedelbart genom att använda Googles aviseringsservrar.Byt NamnKopplar bort enhet
- Din Återställningsfras
- Detta är din återställningsfras. Med den kan du återställa eller migrera ditt Session-ID till en ny enhet.Rensa All DataDetta kommer att radera dina meddelanden, sessioner och kontakter permanent.Vill du rensa endast den här enheten eller ta bort hela ditt konto?
@@ -650,7 +639,7 @@ för nyckelutbyte!
DagNattSystemets inställning
- Kopiera Session-ID
+ Kopiera Account-IDBilagaRöstmeddelandeDetaljer
@@ -660,7 +649,6 @@ för nyckelutbyte!
Välj en säkerhetskopieringsfil och ange lösenfrasen som den skapades med.30-siffrig lösenfrasDetta tar ett tag, vill du hoppa över?
- Länka en enhetÅterställningsfrasSkanna QR-kodNavigera till Inställningar → Återställningsfras på din andra enhet för att visa din QR-kod.
@@ -671,7 +659,6 @@ för nyckelutbyte!
Långsamt lägeDu kommer att meddelas om nya meddelanden på ett tillförlitligt sätt och omedelbart genom att använda Googles aviseringsservrar.Session kommer då och då att leta efter nya meddelanden i bakgrunden.
- ÅterställningsfrasSession är låstTryck om du vill låsa uppAnge smeknamn
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index 356da9c9f0..f7fbd85e53 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -524,27 +524,24 @@ iletisi alındı!
Panoya kopyalandıİleriPaylaş
- Geçersiz Session ID\'si
+ Geçersiz Account ID\'siİptal
- Session ID\'niz
- Your Session begins here...
- Session Kimliği Oluştur
- Oturumunuza Devam Edin
+ Account ID\'nizSession Nedir?Merkezi olmayan, şifreli bir mesajlaşma uygulamasıdırYani kişisel bilgilerimi veya konuşma meta verilerimi toplamaz mı? Nasıl çalışır?Gelişmiş anonim yönlendirme ve uçtan uca şifreleme teknolojilerinin bir kombinasyonunu kullan.Arkadaşlar, arkadaşlarının güvenliği ihlal edilmiş mesajlaşma programlarını kullanmasına izin vermez. Rica ederim.
- Yeni Session kimliğinize merhaba deyin.
- Session Kimliğiniz, kişilerin Session\'da sizinle iletişim kurmak için kullanabileceği benzersiz adrestir. Gerçek kimliğinizle hiçbir bağlantısı olmadan, Session Kimliğiniz tasarım gereği tamamen anonim ve özeldir.
+
+
Hesabınızı geri yükleyinHesabınızı geri yüklemek için kaydolduğunuzda size verilen kurtarma ifadesini girin.Kurtarma ifadenizi girin
- Görünen adınızı seçin
- Bu, Session kullandığınızda adınız olacaktır. Gerçek adınız, takma adınız veya istediğiniz herhangi bir şey olabilir.
- Bir görünen ad girin
- Lütfen bir görünen ad seçin
- Lütfen daha kısa bir görünen ad seçin
+ Görünen adınızı seçin
+ Bu, Session kullandığınızda adınız olacaktır. Gerçek adınız, takma adınız veya istediğiniz herhangi bir şey olabilir.
+ Bir görünen ad girin
+ Lütfen bir görünen ad seçin
+ Lütfen daha kısa bir görünen ad seçinÖnerilenlerLütfen Bir Seçenek SeçinHenüz kayıtlı kişi yok
@@ -553,11 +550,6 @@ iletisi alındı!
"Gruptan ayrılamadı"Bu konuşmayı silmek istediğinden emin misin?Konuşma silindi
- Kurtarma İfadeniz
- Kurtarma ifadenizle tanışın
- Kurtarma ifadeniz Session kimliğinizin ana anahtarıdır; cihazınıza erişiminizi kaybederseniz Session kimliğinizi geri yüklemek için bunu kullanabilirsiniz. Kurtarma ifadenizi güvenli bir yerde saklayın ve kimseye vermeyin.
- Ortaya çıkarmak için basılı tutun
- Neredeyse bitirdiniz! %80Kurtarma ifadenizi kaydederek hesabınızı güvenceye alınKurtarma ifadenizi ortaya çıkarmak için düzeltilen kelimelere dokunun ve basılı tutun, ardından Session kimliğinizi korumak için güvenli bir şekilde saklayın.Kurtarma ifadenizi güvenli bir yerde sakladığınızdan emin olun
@@ -570,7 +562,7 @@ iletisi alındı!
Fazlasını ÖğreninÇözümleniyor…Yeni Oturum
- Session Kimliğini Girin
+ Session Kimliğini GirinQR Kodunu TaraBir oturumu başlatmak için bir kullanıcının QR kodunu tarayın. QR kodları, hesap ayarlarındaki QR kodu simgesine dokunarak bulunabilir.Session kimliğini veya ONS adını girin
@@ -602,7 +594,6 @@ iletisi alındı!
CihazlarBir arkadaş davet etSSS
- Kurtarma Sözcük GrubuVerileri TemizleAğ Dahil Verileri TemizleSession programını çevirmemize yardımcı olun
@@ -615,8 +606,6 @@ iletisi alındı!
Google\'ın bildirim sunucularını kullanarak yeni iletilerden güvenilir ve anında haberdar olacaksınız.Adı değiştirCihazın bağlantısını kaldır
- Kurtarma İfadeniz
- Bu sizin kurtarma ifadenizdir. Bununla, Session Kimliğinizi yeni bir cihaza geri yükleyebilir veya taşıyabilirsiniz.Tüm Verileri TemizleBu, mesajlarınızı, oturumlarınızı ve kişilerinizi kalıcı olarak siler.Yalnızca bu cihazı mı silmek istiyorsunuz yoksa hesabınızın tamamını mı silmek istiyorsunuz?
@@ -650,7 +639,7 @@ iletisi alındı!
GünGeceSistem varsayılanı
- Session Kimliğini Kopyala
+ Session Kimliğini KopyalaEkSesli mesajAyrıntılar
@@ -660,7 +649,6 @@ iletisi alındı!
Bir yedekleme dosyası seçin ve oluşturulduğu parolayı girin.30 basamaklı parolaBu biraz uzun sürüyor, atlamak ister misiniz?
- Bir Cihazı BağlaKurtarma Sözcük GrubuQR Kodunu TaraQR kodunuzu göstermek için diğer cihazınızda Ayarlar → Kurtarma İfadesi\'ne gidin.
@@ -671,7 +659,6 @@ iletisi alındı!
Yavaş ModGoogle\'ın bildirim sunucularını kullanarak yeni iletilerden güvenilir ve anında haberdar olacaksınız.Session ara sıra arka planda yeni mesajları kontrol eder.
- Kurtarma Sözcük GrubuSession kilitliAçmak için dokunBir kullanıcı adı girin
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 356da9c9f0..f7fbd85e53 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -524,27 +524,24 @@ iletisi alındı!
Panoya kopyalandıİleriPaylaş
- Geçersiz Session ID\'si
+ Geçersiz Account ID\'siİptal
- Session ID\'niz
- Your Session begins here...
- Session Kimliği Oluştur
- Oturumunuza Devam Edin
+ Account ID\'nizSession Nedir?Merkezi olmayan, şifreli bir mesajlaşma uygulamasıdırYani kişisel bilgilerimi veya konuşma meta verilerimi toplamaz mı? Nasıl çalışır?Gelişmiş anonim yönlendirme ve uçtan uca şifreleme teknolojilerinin bir kombinasyonunu kullan.Arkadaşlar, arkadaşlarının güvenliği ihlal edilmiş mesajlaşma programlarını kullanmasına izin vermez. Rica ederim.
- Yeni Session kimliğinize merhaba deyin.
- Session Kimliğiniz, kişilerin Session\'da sizinle iletişim kurmak için kullanabileceği benzersiz adrestir. Gerçek kimliğinizle hiçbir bağlantısı olmadan, Session Kimliğiniz tasarım gereği tamamen anonim ve özeldir.
+
+
Hesabınızı geri yükleyinHesabınızı geri yüklemek için kaydolduğunuzda size verilen kurtarma ifadesini girin.Kurtarma ifadenizi girin
- Görünen adınızı seçin
- Bu, Session kullandığınızda adınız olacaktır. Gerçek adınız, takma adınız veya istediğiniz herhangi bir şey olabilir.
- Bir görünen ad girin
- Lütfen bir görünen ad seçin
- Lütfen daha kısa bir görünen ad seçin
+ Görünen adınızı seçin
+ Bu, Session kullandığınızda adınız olacaktır. Gerçek adınız, takma adınız veya istediğiniz herhangi bir şey olabilir.
+ Bir görünen ad girin
+ Lütfen bir görünen ad seçin
+ Lütfen daha kısa bir görünen ad seçinÖnerilenlerLütfen Bir Seçenek SeçinHenüz kayıtlı kişi yok
@@ -553,11 +550,6 @@ iletisi alındı!
"Gruptan ayrılamadı"Bu konuşmayı silmek istediğinden emin misin?Konuşma silindi
- Kurtarma İfadeniz
- Kurtarma ifadenizle tanışın
- Kurtarma ifadeniz Session kimliğinizin ana anahtarıdır; cihazınıza erişiminizi kaybederseniz Session kimliğinizi geri yüklemek için bunu kullanabilirsiniz. Kurtarma ifadenizi güvenli bir yerde saklayın ve kimseye vermeyin.
- Ortaya çıkarmak için basılı tutun
- Neredeyse bitirdiniz! %80Kurtarma ifadenizi kaydederek hesabınızı güvenceye alınKurtarma ifadenizi ortaya çıkarmak için düzeltilen kelimelere dokunun ve basılı tutun, ardından Session kimliğinizi korumak için güvenli bir şekilde saklayın.Kurtarma ifadenizi güvenli bir yerde sakladığınızdan emin olun
@@ -570,7 +562,7 @@ iletisi alındı!
Fazlasını ÖğreninÇözümleniyor…Yeni Oturum
- Session Kimliğini Girin
+ Session Kimliğini GirinQR Kodunu TaraBir oturumu başlatmak için bir kullanıcının QR kodunu tarayın. QR kodları, hesap ayarlarındaki QR kodu simgesine dokunarak bulunabilir.Session kimliğini veya ONS adını girin
@@ -602,7 +594,6 @@ iletisi alındı!
CihazlarBir arkadaş davet etSSS
- Kurtarma Sözcük GrubuVerileri TemizleAğ Dahil Verileri TemizleSession programını çevirmemize yardımcı olun
@@ -615,8 +606,6 @@ iletisi alındı!
Google\'ın bildirim sunucularını kullanarak yeni iletilerden güvenilir ve anında haberdar olacaksınız.Adı değiştirCihazın bağlantısını kaldır
- Kurtarma İfadeniz
- Bu sizin kurtarma ifadenizdir. Bununla, Session Kimliğinizi yeni bir cihaza geri yükleyebilir veya taşıyabilirsiniz.Tüm Verileri TemizleBu, mesajlarınızı, oturumlarınızı ve kişilerinizi kalıcı olarak siler.Yalnızca bu cihazı mı silmek istiyorsunuz yoksa hesabınızın tamamını mı silmek istiyorsunuz?
@@ -650,7 +639,7 @@ iletisi alındı!
GünGeceSistem varsayılanı
- Session Kimliğini Kopyala
+ Session Kimliğini KopyalaEkSesli mesajAyrıntılar
@@ -660,7 +649,6 @@ iletisi alındı!
Bir yedekleme dosyası seçin ve oluşturulduğu parolayı girin.30 basamaklı parolaBu biraz uzun sürüyor, atlamak ister misiniz?
- Bir Cihazı BağlaKurtarma Sözcük GrubuQR Kodunu TaraQR kodunuzu göstermek için diğer cihazınızda Ayarlar → Kurtarma İfadesi\'ne gidin.
@@ -671,7 +659,6 @@ iletisi alındı!
Yavaş ModGoogle\'ın bildirim sunucularını kullanarak yeni iletilerden güvenilir ve anında haberdar olacaksınız.Session ara sıra arka planda yeni mesajları kontrol eder.
- Kurtarma Sözcük GrubuSession kilitliAçmak için dokunBir kullanıcı adı girin
diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml
index 97cf32b9c1..4d68467003 100644
--- a/app/src/main/res/values-uk-rUA/strings.xml
+++ b/app/src/main/res/values-uk-rUA/strings.xml
@@ -550,27 +550,24 @@
Скопійовано в буфер обмінуДаліПоділитися
- Невірна Session ID адресса
+ Невірна Account ID адрессаВідміна
- Ваша Session ID адресса
- Ваша сесія починається тут...
- Створити Session ID адрессу
- Продовжити вашу сесію
+ Ваша Account ID адрессаЩо таке Session?Це децентралізований, шифрований мессенджер обміну повідомленнямиОтже, він не збирає мою особисту інформацію чи мою метадані розмови? Як це працює?Він використовує комбінацію анонімної мережі та скрізного енд-ту-енд шифрування.Друзі не дозволяють друзям користуватися скомпромітованими мессенджерами. Ласкаво просимо.
- Привітайтесь з вашою Session ID адрессою
- Ваш Session ID є унікальною адресою, якою люди будуть зв’язуватимися з вами в Session. При відсутньому з\'єднанні з вашою реальною особистістю, Session ID є абсолютно анонімним та приватним, по дизайну.
+
+
Відновити обліковий записВведіть фразу відновлення, яку вам було сказано записати на папері під час реєстрації, для відновлення облікового запису.Введіть вашу фразу відновлення
- Виберіть ваш псевдонім для показу
- Це буде ваше ім\'я яке ви використовуєте в Session. Воно може бути вашим дійсним ім\'ям, альясом або чимусь іншим.
- Введіть відображуватинимий псевдонім
- Будь ласка, виберіть відображуватимий псевдонім
- Будь ласка, виберіть коротший псевдонім
+ Виберіть ваш псевдонім для показу
+ Це буде ваше ім\'я яке ви використовуєте в Session. Воно може бути вашим дійсним ім\'ям, альясом або чимусь іншим.
+ Введіть відображуватинимий псевдонім
+ Будь ласка, виберіть відображуватимий псевдонім
+ Будь ласка, виберіть коротший псевдонімРекомендованоБудь ласка виберіть варіантУ вас ще немає Session контактів
@@ -579,13 +576,8 @@
"Не вдалося покинути групу"Ви дійсно хочете видалити цю бесіду?Бесіду видалено
- Ваша фраза відновлення
- Знайомтесь з вашою фразою відновлення
- Ваша фраза відновлення - це головний ключ до вашогї Session ID адреси - ви можете використовувати її для відновлення вашої Session ID адреси якщо ви втратите доступ до пристрою. Запишіть на папері та зберігайте вашу фразу відновлення у безпечному місці і не дайте її нікому.
- Натисніть, щоб відобразити
- Ви майже закінчили! 80%Захистіть свій обліковий запис, записавши на папері відновлювальну фразу
- Натисніть і втримуйте приховані слова, щоб розкрити вашу фразу відновлення, запишіть її на папері, щоб безпечно захистити вашу Session ID адресу.
+ Натисніть і втримуйте приховані слова, щоб розкрити вашу фразу відновлення, запишіть її на папері, щоб безпечно захистити вашу Account ID адресу.Переконайтеся, що ви записали свою фразу відновлення на папері і поклали її в безпечне місцеШляхСесія приховує вашу IP-адресу, перенаправляючи ваші повідомлення через декілька сервісних вузлів в децентралізованій мережі Session. Це країни, через які зараз перенаправляєтся ваше з\'єднання:
@@ -596,12 +588,12 @@
Дізнатися більшеВизначаємо…Новий діалог
- Введіть Session ID адрессу
+ Введіть Account ID адрессуСканувати QR-кодПроскануйте QR-код користувача, аби почати сессію. QR-код можна знайти, натиснувши на значок QR-коду в налаштуваннях облікового запису.
- Введіть Session ID або ONS ім\'я
- Користувачі можуть поділитися своїм Session ID, увійшовши в налаштування свого облікового запису та натиснувши \"Поділитися Session ID\", або поділившись своїм QR-кодом.
- Будь ласка, перевірте Session ID або ONS ім\'я та спробуйте ще раз.
+ Введіть Account ID або ONS ім\'я
+ Користувачі можуть поділитися своїм Account ID, увійшовши в налаштування свого облікового запису та натиснувши \"Поділитися Account ID\", або поділившись своїм QR-кодом.
+ Будь ласка, перевірте Account ID або ONS ім\'я та спробуйте ще раз.Session потрібен дозвіл до камери, щоб сканувати QR-кодДозволити доступ до камериНова Закрита Група
@@ -628,7 +620,6 @@
ПристроїЗапросити другаЧасті питання
- Фраза відновленняВидалити даніВидалити дані та аккаунтДопоможіть нам перекласти Session
@@ -641,8 +632,6 @@
Вас надійно повідомлятимуть про нові сповіщення негайно, використовуючи сервери сповіщень Google.Змінити їм’яВідв’язати цей пристрій
- Ваша фраза відновлення
- Запишіть це на папері. Це ваша фраза відновлення. З нею ви можете відновити або перенести ваш Session ID на новий пристрій.Видалити всі даніЦе остаточно видалить ваші повідомлення, сеанси та контакти.Ви хочете видалити тільки цей пристрій або видалити весь обліковий запис?
@@ -676,7 +665,7 @@
ДеньНічЗа замовчуванням системи
- Скопіювати Session ID адрессу
+ Скопіювати Account ID адрессуВкладенняГолосове повідомленняПодробиці
@@ -686,7 +675,6 @@
Виберіть файл резервної копії та введіть секретну фразу, з якою він був створений.30-символьний парольЦе займає деякий час, ви б хотіли це пропустити?
- Зв\'язати пристрійФраза відновленняСканувати QR-кодПерейдіть до Налаштувань → Фраза відновлення на вашому іншому пристрої, щоб відобразити ваш QR-код.
@@ -697,7 +685,6 @@
Медленний режимВас надійно повідомлятимуть про нові сповіщщеня негайно, використовуючи сервери сповіщень Google.Session буде періодично перевіряти наявність нових повідомлень у фоновому режимі.
- Фраза відновленняВи заблоковали SessionТоркніться, щоб розблокуватиВведіть псевдонім
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 0d39b7b2e0..2cd6940060 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -550,27 +550,24 @@
Скопійовано в буфер обмінуДаліПоділитися
- Невірна Session ID адресса
+ Невірна Account ID адрессаВідміна
- Ваша Session ID адресса
- Ваша сесія починається тут...
- Створити Session ID адрессу
- Продовжити вашу сесію
+ Ваша Account ID адрессаЩо таке Session?Це децентралізований, шифрований мессенджер обміну повідомленнямиОтже, він не збирає мою особисту інформацію чи мою метадані розмови? Як це працює?Він використовує комбінацію анонімної мережі та скрізного енд-ту-енд шифрування.Друзі не дозволяють друзям користуватися скомпромітованими мессенджерами. Ласкаво просимо.
- Привітайтесь з вашою Session ID адрессою
- Ваш Session ID є унікальною адресою, якою люди будуть зв’язуватимися з вами в Session. При відсутньому з\'єднанні з вашою реальною особистістю, Session ID є абсолютно анонімним та приватним, по дизайну.
+
+
Відновити обліковий записВведіть фразу відновлення, яку вам було сказано записати на папері під час реєстрації, для відновлення облікового запису.Введіть вашу фразу відновлення
- Виберіть ваш псевдонім для показу
- Це буде ваше ім\'я яке ви використовуєте в Session. Воно може бути вашим дійсним ім\'ям, альясом або чимусь іншим.
- Введіть відображуватинимий псевдонім
- Будь ласка, виберіть відображуватимий псевдонім
- Будь ласка, виберіть коротший псевдонім
+ Виберіть ваш псевдонім для показу
+ Це буде ваше ім\'я яке ви використовуєте в Session. Воно може бути вашим дійсним ім\'ям, альясом або чимусь іншим.
+ Введіть відображуватинимий псевдонім
+ Будь ласка, виберіть відображуватимий псевдонім
+ Будь ласка, виберіть коротший псевдонімРекомендованоБудь ласка виберіть варіантУ вас ще немає Session контактів
@@ -579,13 +576,8 @@
"Не вдалося покинути групу"Ви дійсно хочете видалити цю бесіду?Бесіду видалено
- Ваша фраза відновлення
- Знайомтесь з вашою фразою відновлення
- Ваша фраза відновлення - це головний ключ до вашогї Session ID адреси - ви можете використовувати її для відновлення вашої Session ID адреси якщо ви втратите доступ до пристрою. Запишіть на папері та зберігайте вашу фразу відновлення у безпечному місці і не дайте її нікому.
- Натисніть, щоб відобразити
- Ви майже закінчили! 80%Захистіть свій обліковий запис, записавши на папері відновлювальну фразу
- Натисніть і втримуйте приховані слова, щоб розкрити вашу фразу відновлення, запишіть її на папері, щоб безпечно захистити вашу Session ID адресу.
+ Натисніть і втримуйте приховані слова, щоб розкрити вашу фразу відновлення, запишіть її на папері, щоб безпечно захистити вашу Account ID адресу.Переконайтеся, що ви записали свою фразу відновлення на папері і поклали її в безпечне місцеШляхСесія приховує вашу IP-адресу, перенаправляючи ваші повідомлення через декілька сервісних вузлів в децентралізованій мережі Session. Це країни, через які зараз перенаправляєтся ваше з\'єднання:
@@ -596,12 +588,12 @@
Дізнатися більшеВизначаємо…Новий діалог
- Введіть Session ID адрессу
+ Введіть Account ID адрессуСканувати QR-кодПроскануйте QR-код користувача, аби почати сессію. QR-код можна знайти, натиснувши на значок QR-коду в налаштуваннях облікового запису.
- Введіть Session ID або ONS ім\'я
- Користувачі можуть поділитися своїм Session ID, увійшовши в налаштування свого облікового запису та натиснувши \"Поділитися Session ID\", або поділившись своїм QR-кодом.
- Будь ласка, перевірте Session ID або ONS ім\'я та спробуйте ще раз.
+ Введіть Account ID або ONS ім\'я
+ Користувачі можуть поділитися своїм Account ID, увійшовши в налаштування свого облікового запису та натиснувши \"Поділитися Account ID\", або поділившись своїм QR-кодом.
+ Будь ласка, перевірте Account ID або ONS ім\'я та спробуйте ще раз.Session потрібен дозвіл до камери, щоб сканувати QR-кодДозволити доступ до камериНова Закрита Група
@@ -628,7 +620,6 @@
ПристроїЗапросити другаЧасті питання
- Фраза відновленняВидалити даніВидалити дані та аккаунтДопоможіть нам перекласти Session
@@ -641,8 +632,6 @@
Вас надійно повідомлятимуть про нові сповіщення негайно, використовуючи сервери сповіщень Google.Змінити їм’яВідв’язати цей пристрій
- Ваша фраза відновлення
- Запишіть це на папері. Це ваша фраза відновлення. З нею ви можете відновити або перенести ваш Session ID на новий пристрій.Видалити всі даніЦе остаточно видалить ваші повідомлення, сеанси та контакти.Ви хочете видалити тільки цей пристрій або видалити весь обліковий запис?
@@ -676,7 +665,7 @@
ДеньНічЗа замовчуванням системи
- Скопіювати Session ID адрессу
+ Скопіювати Account ID адрессуВкладенняГолосове повідомленняПодробиці
@@ -686,7 +675,6 @@
Виберіть файл резервної копії та введіть секретну фразу, з якою він був створений.30-символьний парольЦе займає деякий час, ви б хотіли це пропустити?
- Зв\'язати пристрійФраза відновленняСканувати QR-кодПерейдіть до Налаштувань → Фраза відновлення на вашому іншому пристрої, щоб відобразити ваш QR-код.
@@ -697,7 +685,6 @@
Медленний режимВас надійно повідомлятимуть про нові сповіщщеня негайно, використовуючи сервери сповіщень Google.Session буде періодично перевіряти наявність нових повідомлень у фоновому режимі.
- Фраза відновленняВи заблоковали SessionТоркніться, щоб розблокуватиВведіть псевдонім
diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml
index fb10dc98ee..d6a68a3e06 100644
--- a/app/src/main/res/values-vi-rVN/strings.xml
+++ b/app/src/main/res/values-vi-rVN/strings.xml
@@ -331,27 +331,24 @@ trao đổi chìa khóa bị hỏng!
Sao chép vào bộ nhớ tạmTiếpChia sẻ
- Session ID không hợp lệ
+ Account ID không hợp lệHuỷ
- Session ID của bạn
- Session của bạn bắt đầu từ đây...
- Tạo Session ID
- Tiếp tục Session của bạn
+ Account ID của bạnSession là gì?Đây là một ứng dụng nhắn tin phân cấp và mã hoáVậy ứng dụng có thu thập dữ liệu cá nhân của tôi hoặc siêu dữ liệu về cuộc hội thoại của tôi không? Ứng dụng hoạt động như thế nào?Sử dụng kết hợp công nghệ định tuyến ẩn danh nâng cao và công nghệ mã hoá đầu cuối.Đừng để bạn bè sử dụng những ứng dụng nhắn tin dễ bị tấn công.
- Bắt đầu với Session ID của bạn
- Session ID của bạn là địa chỉ duy nhất mà mọi người có thể dùng để liên lạc với bạn trên ứng dụng Session. Session ID của bạn được thiết kế đảm bảo tuyệt đối ẩn danh và riêng tư vì nó không liên kết với danh tính thật của bạn.
+
+
Khôi phục lại tài khoản của bạnNhập cụm từ khôi phục mà bạn nhận được khi đăng ký khôi phục tài khoản.Nhập cụm từ khôi phục của bạn.
- Chọn tên hiển thị của bạn
- Đây là tên của bạn khi sử dụng Session. Nó có thể là tên thật, tên gọi khác của bạn hoặc bất kì tên nào bạn thích.
- Nhập một tên hiển thị
- Vui lòng chọn một tên hiển thị
- Vui lòng chọn tên hiển thị ngắn hơn
+ Chọn tên hiển thị của bạn
+ Đây là tên của bạn khi sử dụng Session. Nó có thể là tên thật, tên gọi khác của bạn hoặc bất kì tên nào bạn thích.
+ Nhập một tên hiển thị
+ Vui lòng chọn một tên hiển thị
+ Vui lòng chọn tên hiển thị ngắn hơnKhuyến nghịVui lòng lựa chọn Bạn chưa có danh bạ
@@ -360,12 +357,8 @@ trao đổi chìa khóa bị hỏng!
"Không thể rời nhóm"Bạn có chắc chắn rằng bạn muốn xoá cuộc hội thoại này không?Cuộc hội thoại đã được xoá
- Cụm từ khôi phục của bạn
- Làm quen với cụm từ khôi phục của bạn
- Cụm từ khôi phục của bạn là chìa khoá chủ cho Session ID của bạn — bạn có thể sử dụng nó để khôi phục Session ID khi bị mất tiếp cận với thiết bị của bạn. Hãy lưu cụm từ khôi phục của bạn ở một nơi an toàn và không cung cấp cho bất kì ai.
- Giữ để hiển thị.Bảo vệ tài khoản của bạn bằng việc bảo vệ cụm từ khôi phục của bạn
- Chạm và giữ cụm từ bị che để hiển thị cụm từ khôi phục của bạn, sau đó lưu nó cẩn thận để bảo vệ Session ID của bạn.
+ Chạm và giữ cụm từ bị che để hiển thị cụm từ khôi phục của bạn, sau đó lưu nó cẩn thận để bảo vệ Account ID của bạn.Hãy lưu cụm từ khôi phục của bạn ở một nơi an toànĐường điSession ẩn IP của bạn bằng cách luân chuyển tin nhắn của bạn qua một số Nút Dịch vụ trong mạng lưới phân cấp của Session. Đây là các nước mà kết nối của bạn đang được luân chuyển:
@@ -375,10 +368,10 @@ trao đổi chìa khóa bị hỏng!
Điểm đếnTìm hiểu thêmSession mới
- Nhập Session ID
+ Nhập Account IDQuét mã QRQuét mã QR của người dùng để bắt đầu session. Tìm mã QR bằng cách chạm vào biểu tượng mã QR trong mục cài đặt tài khoản.
- Người dùng có thể chia sẻ Session ID của mình bằng cách tới mục cài đặt tài khoản và chạm vào “Chia sẻ Session ID”, hoặc bằng cách chia sẻ mã QR của họ.
+ Người dùng có thể chia sẻ Account ID của mình bằng cách tới mục cài đặt tài khoản và chạm vào “Chia sẻ Account ID”, hoặc bằng cách chia sẻ mã QR của họ.Session cần truy cập máy ảnh để quét mã QR Cho phép truy cập máy ảnhNhóm kín mới
@@ -402,7 +395,6 @@ trao đổi chìa khóa bị hỏng!
Thông báoTrò chuyệnThiết bị
- Cụm từ khôi phụcXóa dữ liệuThông báoKiểu thông báo
@@ -411,8 +403,6 @@ trao đổi chìa khóa bị hỏng!
Chiến lược thông báoĐổi tênHủy liên kết thiết bị
- Cụm từ khôi phục của bạn
- Đây là cụm từ khôi phục của bạn. Bạn có thể dùng nó để khôi phục hoặc chuyển Session ID của mình sang một thiết bị mới.Xóa tất cả dữ liệuThao tác này sẽ xóa vĩnh viễn các tin nhắn, sessions, và danh bạ của bạn.Mã QR
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index fb10dc98ee..d6a68a3e06 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -331,27 +331,24 @@ trao đổi chìa khóa bị hỏng!
Sao chép vào bộ nhớ tạmTiếpChia sẻ
- Session ID không hợp lệ
+ Account ID không hợp lệHuỷ
- Session ID của bạn
- Session của bạn bắt đầu từ đây...
- Tạo Session ID
- Tiếp tục Session của bạn
+ Account ID của bạnSession là gì?Đây là một ứng dụng nhắn tin phân cấp và mã hoáVậy ứng dụng có thu thập dữ liệu cá nhân của tôi hoặc siêu dữ liệu về cuộc hội thoại của tôi không? Ứng dụng hoạt động như thế nào?Sử dụng kết hợp công nghệ định tuyến ẩn danh nâng cao và công nghệ mã hoá đầu cuối.Đừng để bạn bè sử dụng những ứng dụng nhắn tin dễ bị tấn công.
- Bắt đầu với Session ID của bạn
- Session ID của bạn là địa chỉ duy nhất mà mọi người có thể dùng để liên lạc với bạn trên ứng dụng Session. Session ID của bạn được thiết kế đảm bảo tuyệt đối ẩn danh và riêng tư vì nó không liên kết với danh tính thật của bạn.
+
+
Khôi phục lại tài khoản của bạnNhập cụm từ khôi phục mà bạn nhận được khi đăng ký khôi phục tài khoản.Nhập cụm từ khôi phục của bạn.
- Chọn tên hiển thị của bạn
- Đây là tên của bạn khi sử dụng Session. Nó có thể là tên thật, tên gọi khác của bạn hoặc bất kì tên nào bạn thích.
- Nhập một tên hiển thị
- Vui lòng chọn một tên hiển thị
- Vui lòng chọn tên hiển thị ngắn hơn
+ Chọn tên hiển thị của bạn
+ Đây là tên của bạn khi sử dụng Session. Nó có thể là tên thật, tên gọi khác của bạn hoặc bất kì tên nào bạn thích.
+ Nhập một tên hiển thị
+ Vui lòng chọn một tên hiển thị
+ Vui lòng chọn tên hiển thị ngắn hơnKhuyến nghịVui lòng lựa chọn Bạn chưa có danh bạ
@@ -360,12 +357,8 @@ trao đổi chìa khóa bị hỏng!
"Không thể rời nhóm"Bạn có chắc chắn rằng bạn muốn xoá cuộc hội thoại này không?Cuộc hội thoại đã được xoá
- Cụm từ khôi phục của bạn
- Làm quen với cụm từ khôi phục của bạn
- Cụm từ khôi phục của bạn là chìa khoá chủ cho Session ID của bạn — bạn có thể sử dụng nó để khôi phục Session ID khi bị mất tiếp cận với thiết bị của bạn. Hãy lưu cụm từ khôi phục của bạn ở một nơi an toàn và không cung cấp cho bất kì ai.
- Giữ để hiển thị.Bảo vệ tài khoản của bạn bằng việc bảo vệ cụm từ khôi phục của bạn
- Chạm và giữ cụm từ bị che để hiển thị cụm từ khôi phục của bạn, sau đó lưu nó cẩn thận để bảo vệ Session ID của bạn.
+ Chạm và giữ cụm từ bị che để hiển thị cụm từ khôi phục của bạn, sau đó lưu nó cẩn thận để bảo vệ Account ID của bạn.Hãy lưu cụm từ khôi phục của bạn ở một nơi an toànĐường điSession ẩn IP của bạn bằng cách luân chuyển tin nhắn của bạn qua một số Nút Dịch vụ trong mạng lưới phân cấp của Session. Đây là các nước mà kết nối của bạn đang được luân chuyển:
@@ -375,10 +368,10 @@ trao đổi chìa khóa bị hỏng!
Điểm đếnTìm hiểu thêmSession mới
- Nhập Session ID
+ Nhập Account IDQuét mã QRQuét mã QR của người dùng để bắt đầu session. Tìm mã QR bằng cách chạm vào biểu tượng mã QR trong mục cài đặt tài khoản.
- Người dùng có thể chia sẻ Session ID của mình bằng cách tới mục cài đặt tài khoản và chạm vào “Chia sẻ Session ID”, hoặc bằng cách chia sẻ mã QR của họ.
+ Người dùng có thể chia sẻ Account ID của mình bằng cách tới mục cài đặt tài khoản và chạm vào “Chia sẻ Account ID”, hoặc bằng cách chia sẻ mã QR của họ.Session cần truy cập máy ảnh để quét mã QR Cho phép truy cập máy ảnhNhóm kín mới
@@ -402,7 +395,6 @@ trao đổi chìa khóa bị hỏng!
Thông báoTrò chuyệnThiết bị
- Cụm từ khôi phụcXóa dữ liệuThông báoKiểu thông báo
@@ -411,8 +403,6 @@ trao đổi chìa khóa bị hỏng!
Chiến lược thông báoĐổi tênHủy liên kết thiết bị
- Cụm từ khôi phục của bạn
- Đây là cụm từ khôi phục của bạn. Bạn có thể dùng nó để khôi phục hoặc chuyển Session ID của mình sang một thiết bị mới.Xóa tất cả dữ liệuThao tác này sẽ xóa vĩnh viễn các tin nhắn, sessions, và danh bạ của bạn.Mã QR
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index cd914646df..5785fbf8b6 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -512,27 +512,24 @@
复制到剪贴板下一步共享
- 无效的Session ID
+ 无效的Account ID取消
- 您的Session ID
- 您的Session从这里开始...
- 创建Session ID
- 继续使用您的Session ID
+ 您的Account ID什么是Session?Session是一个去中心化的加密消息应用所以Session不会收集我的个人信息或者对话元数据?怎么做到的?通过结合高效的匿名路由和端到端的加密技术。好朋友之间就要使用能够保证信息安全的聊天工具,不用谢啦!
- 向您的Session ID打个招呼吧
- 您的Session ID是其他用户在与您聊天时使用的独一无二的地址。Session ID与您的真实身份无关,它在设计上完全是匿名且私密的
+
+
恢复您的帐号在您重新登陆并需要恢复账户时,请输入您注册帐号时的恢复口令输入您的恢复口令
- 选择您想显示的名称
- 这就是您在使用Session时的名字。它可以是您的真实姓名,别名或您喜欢的其他任何名称
- 输入您想显示的名称
- 请设定一个名称
- 请设定一个较短的名称
+ 选择您想显示的名称
+ 这就是您在使用Session时的名字。它可以是您的真实姓名,别名或您喜欢的其他任何名称
+ 输入您想显示的名称
+ 请设定一个名称
+ 请设定一个较短的名称推荐的选项请选择一个选项您还没有任何联系人
@@ -541,13 +538,8 @@
"无法离开群组"您确定要删除此对话吗?对话已删除
- 您的恢复口令
- 这里是您的恢复口令
- 您的恢复口令是Session ID的主密钥 - 如果您无法访问您的现有设备,则可以使用它在其他设备上恢复您的Session ID。请将您的恢复口令存储在安全的地方,不要将其提供给任何人。
- 长按显示内容
- 就快完成了!80%保存恢复口令以保护您的帐号安全
- 点击并按住遮盖住的单词以显示您的恢复口令,请将它安全地存储以保护您的Session ID
+ 点击并按住遮盖住的单词以显示您的恢复口令,请将它安全地存储以保护您的Account ID请确保将恢复口令存储在安全的地方路径Session会通过其去中心化网络中的多个服务节点跳转消息以隐藏IP。以下国家是您目前的消息连接跳转服务节点所在地:
@@ -558,11 +550,11 @@
了解更多正在解决…新建私人聊天
- 输入Session ID
+ 输入Account ID扫描二维码扫描其他用户的二维码来发起对话。您可以在帐号设置中点击二维码图标找到二维码
- 输入Session ID或ONS名称
- 用户可以通过进入帐号设置并点击“共享Session ID”来分享自己的Session ID,或通过共享其二维码来分享其Session ID
+ 输入Account ID或ONS名称
+ 用户可以通过进入帐号设置并点击“共享Account ID”来分享自己的Account ID,或通过共享其二维码来分享其Account ID请检查会话 ID 或 ONS 名称,然后重试Session需要摄像头访问权限才能扫描二维码授予摄像头访问权限
@@ -590,7 +582,6 @@
设备邀请朋友常见问题
- 恢复口令清除数据清除包括网络在内的数据帮助我们翻译 Session
@@ -603,8 +594,6 @@
新消息将通过 Google 通知服务器即时可靠地发送更换名称断开设备关联
- 您的恢复口令
- 这是您的恢复口令。您可以通过该口令将Session ID还原或迁移到新设备上清除所有数据这将永久删除您的消息、对话和联系人你想只清除这个设备,还是删除你的整个账户?
@@ -638,7 +627,7 @@
白昼夜间系统默认
- 复制 Session ID
+ 复制 Account ID附件语音消息详细信息
@@ -648,7 +637,6 @@
选择一个备份文件,并输入创建该文件时使用的密码30位数的密码这需要一点时间,您想要跳过吗?
- 关联设备恢复口令扫描二维码在您的其他设备上导航到设置 -> 恢复口令以显示您的 QR 代码
@@ -659,7 +647,6 @@
慢速模式新消息将通过 Google 通知服务器即时可靠地发送Session 将不时在后台获取新消息
- 恢复口令Session 已锁定点击解锁输入昵称
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index d300cc841c..722f23a252 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -518,27 +518,24 @@
已複製到剪貼簿下一步分享
- 無效的 Session ID
+ 無效的 Account ID取消
- 您的 Session ID
- 您的 Session 將從此開始⋯
- 創建 Session ID
- 繼續使用 Session
+ 您的 Account IDSession 是什麼?這是一個去中心化並且加密的訊息 app所以牠不會收集我的個人資訊或我的對話元數據? 它是如何工作的?我們結合了進階匿名連線與端對端加密技術。我們不會讓自己的朋友使用不夠好的聊天 app,不客氣。
- 與您的 Session ID 打個招呼
- 您的 Session ID 是人們可以用來在 Session 上聯繫您的唯一地址。 並且與您的真實身份毫無關聯,因此您的 Session ID 在設計上是完全匿名和私密的。
+
+
恢復您的帳號輸入您註冊時提供的恢復短語以恢復您的帳號。請輸入您的回復用字句
- 請輸入您的名稱
- 當您使用 Session 時,這將是您的名字。 它可以是您的真實姓名、別名或您喜歡的任何名稱。
- 輸入您的名稱
- 請選擇一個名稱
- 請選擇一個較短的名稱
+ 請輸入您的名稱
+ 當您使用 Session 時,這將是您的名字。 它可以是您的真實姓名、別名或您喜歡的任何名稱。
+ 輸入您的名稱
+ 請選擇一個名稱
+ 請選擇一個較短的名稱建議請選擇其中一個選項您尚未添加聯絡人
@@ -547,13 +544,8 @@
"無法離開群組"您確定要刪除此對話嗎?對話已刪除
- 你的恢復密語
- 查看您的恢復短語
- 您的恢復短語是您的 Session ID 的主金鑰——如果您無法存取您的裝置,您可以使用它來恢復您的Session ID。 將您的恢復短語存放在安全的地方,不要將其提供給任何人。
- 按住以解除隱藏
- 安裝快完成囉!80%透過儲存您的恢復短語來保護您的帳戶
- 點擊並按住已編輯的字詞以顯示您的恢復短語,然後將其妥善保管以保護您的 Session ID。
+ 點擊並按住已編輯的字詞以顯示您的恢復短語,然後將其妥善保管以保護您的 Account ID。請確保將您的恢復短語存儲在安全的地方路徑Session 通過 Session 去中心化網絡中的多個服務節點傳輸您的訊息以隱藏您的 IP。 這些是您傳送的訊息當前正在經過的國家/地區:
@@ -564,12 +556,12 @@
瞭解更多解決中...新的 Session
- 輸入 Session ID
+ 輸入 Account ID掃描 QR Code掃描 QR Code 以開始一個 Session,您可以在帳戶設定中找到您的 QR Code。請輸入您的 ID 或 ONS 的名稱
- 使用者可以進入帳戶設定中,點擊分享 Session ID 或直接分享其 QR Code。
- 請檢查 Session ID 或 ONS,然後再試一次。
+ 使用者可以進入帳戶設定中,點擊分享 Account ID 或直接分享其 QR Code。
+ 請檢查 Account ID 或 ONS,然後再試一次。Session 需要使用相機存取權來掃描 QR Codes授與相機權限新的私密群組
@@ -596,7 +588,6 @@
裝置邀請好友常見問題
- 回復用字句清除資料清除包括網路在內的資料協助我們翻譯 Session
@@ -609,8 +600,6 @@
您將會透過 Google 的通知服務可靠且迅速的收到通知。變更名稱取消連結裝置
- 您的恢復短語
- 這是您的恢復短語。 有了它,您可以將 Session ID 恢復或轉移到新裝置。清除所有數據這將永久刪除您的訊息、帳號和聯絡人。您想僅清除此裝置的資料,還是刪除您整個帳戶的資料?
@@ -644,7 +633,7 @@
日夜間模式系統默認
- 複製 Session ID
+ 複製 Account ID附件語音訊息詳細資料
@@ -654,7 +643,6 @@
選擇一個備份檔案,並輸入建立時的密碼。30 位數密碼這可能需要一些時間,要跳過嗎?
- 連結裝置回復用字句掃描 QR Code請使用您其他的裝置並前往「設定」→「回復用字句」來顯示您的QR Code。
@@ -665,7 +653,6 @@
慢速模式您將會透過 Google 的通知服務可靠且迅速的收到通知。Session 會偶爾在背景執行時檢查新訊息。
- 回復用字句Session 已被鎖定輕觸即可解鎖輸入暱稱
@@ -708,7 +695,7 @@
全部標示為已讀聯絡人群組訊息
- 直接傳訊
- 已關閉的群組
- 開啟群組
+ 直接傳訊
+ 已關閉的群組
+ 開啟群組
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 159efbf105..0d222ad5b7 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -512,27 +512,24 @@
复制到剪贴板下一步共享
- 无效的Session ID
+ 无效的Account ID取消
- 您的Session ID
- 您的Session从这里开始...
- 创建Session ID
- 继续使用您的Session ID
+ 您的Account ID什么是Session?Session是一个去中心化的加密消息应用。所以Session不会收集我的个人信息或者对话元数据?怎么做到的?通过结合高效的匿名路由和端到端的加密技术。好朋友之间就要使用能够保证信息安全的聊天工具,不用谢啦!
- 向您的Session ID打个招呼吧
- 您的Session ID是其他用户在与您聊天时使用的独一无二的地址。Session ID与您的真实身份无关,它在设计上完全是匿名且私密的。
+
+
恢复您的帐号在您重新登陆并需要恢复账户时,请输入您注册帐号时的恢复口令。输入您的恢复口令
- 选择您想显示的名称
- 这就是您在使用Session时的名字。它可以是您的真实姓名,别名或您喜欢的其他任何名称。
- 输入您想显示的名称
- 请设定一个名称
- 请设定一个较短的名称
+ 选择您想显示的名称
+ 这就是您在使用Session时的名字。它可以是您的真实姓名,别名或您喜欢的其他任何名称。
+ 输入您想显示的名称
+ 请设定一个名称
+ 请设定一个较短的名称推荐的选项请选择一个选项您还没有任何联系人
@@ -541,13 +538,8 @@
"无法离开群组"您确定要删除此对话吗?对话已删除
- 您的恢复口令
- 这里是您的恢复口令
- 您的恢复口令是Session ID的主密钥 - 如果您无法访问您的现有设备,则可以使用它在其他设备上恢复您的Session ID。请将您的恢复口令存储在安全的地方,不要将其提供给任何人。
- 长按显示内容
- 就快完成了!80%保存恢复口令以保护您的帐号安全
- 点击并按住遮盖住的单词以显示您的恢复口令,请将它安全地存储以保护您的Session ID。
+ 点击并按住遮盖住的单词以显示您的恢复口令,请将它安全地存储以保护您的Account ID。请确保将恢复口令存储在安全的地方路径Session会通过其去中心化网络中的多个服务节点跳转消息以隐藏IP。以下国家是您目前的消息连接跳转服务节点所在地:
@@ -558,11 +550,11 @@
了解更多正在解决…新建私人聊天
- 输入Session ID
+ 输入Account ID扫描二维码扫描其他用户的二维码来发起对话。您可以在帐号设置中点击二维码图标找到二维码。
- 输入Session ID或ONS名称
- 用户可以通过进入帐号设置并点击“共享Session ID”来分享自己的Session ID,或通过共享其二维码来分享其Session ID。
+ 输入Account ID或ONS名称
+ 用户可以通过进入帐号设置并点击“共享Account ID”来分享自己的Account ID,或通过共享其二维码来分享其Account ID。请检查会话 ID 或 ONS 名称,然后重试。Session需要摄像头访问权限才能扫描二维码授予摄像头访问权限
@@ -590,7 +582,6 @@
设备邀请朋友常见问题
- 恢复口令清除数据清除包括网络在内的数据帮助我们翻译 Session
@@ -603,8 +594,6 @@
新消息将通过 Google 通知服务器即时可靠地发送。更换名称断开设备关联
- 您的恢复口令
- 这是您的恢复口令。您可以通过该口令将Session ID还原或迁移到新设备上。清除所有数据这将永久删除您的消息、对话和联系人。你想只清除这个设备,还是删除你的整个账户?
@@ -638,7 +627,7 @@
白昼夜间系统默认
- 复制 Session ID
+ 复制 Account ID附件语音消息详细信息
@@ -648,7 +637,6 @@
选择一个备份文件,并输入创建该文件时使用的密码。30位数的密码这需要一点时间,您想要跳过吗?
- 关联设备恢复口令扫描二维码在您的其他设备上导航到设置 -> 恢复口令以显示您的 QR 代码。
@@ -659,7 +647,6 @@
慢速模式新消息将通过 Google 通知服务器即时可靠地发送。Session 将不时在后台获取新消息。
- 恢复口令Session 已锁定点击解锁输入昵称
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index aa356619fe..1131fbafba 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -28,6 +28,9 @@
+
+
+
diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml
index bb3cd8a804..c61cc3c843 100644
--- a/app/src/main/res/values/integers.xml
+++ b/app/src/main/res/values/integers.xml
@@ -7,6 +7,5 @@
15010
- 3535
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index debca16db8..f00717c57c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -15,17 +15,13 @@
Expand
- Create session ID
- Restore Your Session
- Link a deviceLink Device
-
- Session ID
- Recovery phrase reminder
+
+ Account IDContinue
- Copy Session ID
+ Copy Account IDEnter your recovery phrase
@@ -35,9 +31,6 @@
Fast mode notifications optionSlow mode notifications optionContinue with settings
-
- Recovery Phrase
- Copy Recovery PhraseUser settingsSearch icon
@@ -56,7 +49,7 @@
New conversation buttonNew direct messageCreate group
- Join community button
+ Join communityCommunity inputJoin community button
@@ -96,7 +89,7 @@
Blocked bannerBlocked banner text
- Session id input box
+ Account id input boxNextGroup name input
@@ -137,7 +130,8 @@
User settingsUsernamePrivacy
- Show recovery phrase
+ Recovery password menu item
+ Recovery passwordEdit user nicknameApplyCancel
@@ -244,7 +238,7 @@
%1$d of %2$dCall Permissions RequiredYou can enable the \'Voice and video calls\' permission in the Privacy Settings.
- You will be able to send voice messages and attachments once the recipient has approved this message request
+ You will be able to send voice messages and attachments once the recipient has approved this message request.Delete selected message?
@@ -396,7 +390,7 @@
Touch to open.Session is unlocked
- Lock Session
+ Lock AppYouUnsupported media type
@@ -715,7 +709,7 @@
Creating backup...%d messages so farNever
- Lock Session
+ Lock AppRequire fingerprint, PIN, pattern or password to unlock Session.Screen lock inactivity timeoutNone
@@ -724,32 +718,26 @@
ContinueCopy
+ CopiedCloseInvalid URLCopied to clipboardNextShare
- Invalid Session ID
+ Invalid Account IDCancel
- Your Session ID
- Your Session begins here...
- Create Session ID
- Continue Your Session
- What\'s Session?
- It\'s a decentralized, encrypted messaging app
- So it doesn\'t collect my personal information or my conversation metadata? How does it work?
- Using a combination of advanced anonymous routing and end-to-end encryption technologies.
- Friends don\'t let friends use compromised messengers. You\'re welcome.
- Say hello to your Session ID
- Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.
- Restore your account
- Enter the recovery phrase that was given to you when you signed up to restore your account.
- Enter your recovery phrase
- Pick your display name
- This will be your name when you use Session. It can be your real name, an alias, or anything else you like.
- Enter a display name
- Please pick a display name
- Please pick a shorter display name
+ Your Account ID
+ Open URL
+ This will open in your browser.
+ Terms of Service
+ Privacy Policy
+ Pick your display name
+ Pick a new display name
+ It can be your real name, an alias, or anything else you like — and you can change it any time.
+ We were unable to load your display name. Please enter a new display name to continue.
+ Enter a display name
+ Please enter a display name.
+ Please enter a shorter display name.RecommendedPlease Pick an OptionYou don\'t have any contacts yet
@@ -758,13 +746,8 @@
"Couldn\'t leave group"Are you sure you want to delete this conversation?Conversation deleted
- Your Recovery Phrase
- Meet your recovery phrase
- Your recovery phrase is the master key to your Session ID — you can use it to restore your Session ID if you lose access to your device. Store your recovery phrase in a safe place, and don\'t give it to anyone.
- Hold to reveal
- You\'re almost finished! 80%Secure your account by saving your recovery phrase
- Tap and hold the redacted words to reveal your recovery phrase, then store it safely to secure your Session ID.
+ Tap and hold the redacted words to reveal your recovery phrase, then store it safely to secure your Account ID.Make sure to store your recovery phrase in a safe placePathSession hides your IP by bouncing your messages through several Service Nodes in Session\'s decentralized network. These are the countries your connection is currently being bounced through:
@@ -775,12 +758,12 @@
Learn MoreResolving…New Session
- Enter Session ID
+ Enter Account IDScan QR CodeScan a user\'s QR code to start a session. QR codes can be found by tapping the QR code icon in account settings.
- Enter Session ID or ONS name
- Users can share their Session ID by going into their account settings and tapping "Share Session ID", or by sharing their QR code.
- Please check the Session ID or ONS name and try again.
+ Enter Account ID or ONS name
+ Users can share their Account ID by going into their account settings and tapping "Share Account ID", or by sharing their QR code.
+ Please check the Account ID or ONS name and try again.Session needs camera access to scan QR codesGrant Camera AccessNew Closed Group
@@ -811,7 +794,6 @@
DevicesInvite a FriendFAQ
- Recovery PhraseClear DataClear Data Including NetworkHelp us Translate Session
@@ -833,8 +815,6 @@
You\'ll be notified of new messages reliably and immediately using Google\'s notification servers.Change nameUnlink device
- Your Recovery Phrase
- You can use your recovery phrase to restore your account or link a device.Clear All DataThis will permanently delete your messages, sessions, and contacts.Would you like to clear only this device, or delete your entire account?
@@ -871,7 +851,7 @@
DayNightSystem default
- Copy Session ID
+ Copy Account IDAttachmentVoice MessageDetails
@@ -880,19 +860,13 @@
Select a fileSelect a backup file and enter the passphrase it was created with.30-digit passphrase
- This is taking a while, would you like to skip?
- Link a Device
- Recovery Phrase
- Scan QR Code
+ Scan QR CodeNavigate to Settings → Recovery Phrase on your other device to show your QR code.Or join one of these…
- Message Notifications
- There are two ways Session can notify you of new messages.Fast ModeSlow ModeYou’ll be notified of new messages reliably and immediately using Google’s notification servers.Session will occasionally check for new messages in the background.
- Recovery PhraseSession is LockedTap to UnlockEnter a nickname
@@ -942,7 +916,7 @@
Contacts and GroupsMessagesMessage Requests
- Sending a message to this user will automatically accept their message request and reveal your Session ID.
+ Sending a message to this user will automatically accept their message request and reveal your Account ID.AcceptDeclineClear All
@@ -954,9 +928,9 @@
Your message request has been accepted.Your message request is currently pending.No pending message requests
- Direct Message
- Closed Group
- Open Group
+ Direct Message
+ Closed Group
+ Open GroupYou have a new message requestConnecting…Incoming call
@@ -1028,13 +1002,13 @@
And %1$d other has reacted %2$s to this messageAnd %1$d others have reacted %2$s to this message
- New Conversation
+ Start ConversationNew MessageCreate GroupJoin CommunityContactsUnknown
- Start a new conversation by entering someone\'s Session ID or share your Session ID with them.
+ Start a new conversation by entering someone\'s Account ID or share your Account ID with them.CreateSearch contactsCommunity URL
@@ -1077,4 +1051,92 @@
Unread MessagesAuto-deletes in %1$s
+ Privacy in your pocket.
+ Welcome to Session 👋
+ Welcome to Session
+ Session is engineered to protect your privacy.
+ "You don’t even need a phone number to sign up. "
+ Creating an account is \ninstant, free, and \nanonymous 👇
+ Create account
+ I have an account
+ By using this service, you agree to our Terms of Service and Privacy Policy
+
+ This QR code does not contain a Recovery Password.
+
+ The Recovery Password you entered is not long enough. Please check and try again.
+ Some of the words in your Recovery Password are incorrect. Please check and try again.
+ Please check your Recovery Password and try again.
+
+ Grant Camera Access
+ Recovery Password
+ Enter your recovery password
+
+ Settings
+
+ Load Account
+ Camera Permission permanently denied. Configure in settings.
+ Enter your recovery password to load your account. If you haven\'t saved it, you can find it in your app settings.
+ One moment please..
+ Loading your account
+ Message notifications
+ There are two ways Session can notify you of new messages.
+ Hide Recovery Password Permanently
+ We strongly recommend you save your recovery password in a safe and secure place before continuing.]]>
+ Are you sure you want to permanently hide your recovery password on this device? This cannot be undone.
+ Use your recovery password to load your account on new devices.\n\nYour account cannot be recovered without your recovery password. Make sure it\'s stored somewhere safe and secure — and don\'t share it with anyone.
+ Hide
+ Hide Recovery Password
+ View QR
+ View
+ Scan
+ View Password
+ Permanently hide your recovery password on this device.
+ You don\'t have any conversations yet
+ Hit the plus button to start a chat, create a group, or join an official communitiy!
+ Because you are the creator of this group it will be deleted for everyone. This cannot be undone.
+ Hide message requests?
+ Save your recovery password
+ Save your recovery password to make sure you don\'t lose access to your account.
+ Account Created
+ Fast mode notifications button
+ Slow mode notifications button
+ Reveal recovery phrase button
+ Create account button
+ Restore your session button
+ Privacy policy link
+ Terms of service button
+ Privacy policy button
+ Loading animation
+ Recovery phrase input
+ Error message
+ Hide recovery password button
+ Recovery password container
+ Confirm button
+ Open URL
+ This Account ID is invalid. Please check and try again.
+ Enter Account ID
+ Enter Account ID or ONS
+ Start a new conversation by entering your friend\'s Account ID, ONS or scanning their QR code.
+ New Message
+ Unknown
+ Contacts
+ Conversations
+ Invite your friend to chat with you on Session by sharing your Account ID with them.
+ Invite a Friend
+ Your Account ID
+ Friends can message you by scanning your QR code.
+ We couldn’t recognize this ONS. Please check and try again.
+ We were unable to search for this ONS. Please try again later.
+ This is your Account ID. Other users can scan it to start a conversation with you.
+ Hey, I\'ve been using Session to chat with complete privacy and security. Come join me! My Account ID is \n\n%1$s\n\nDownload it at https://getsession.org/
+ This QR code does not contain an Account ID.
+ Invite friend button
+ Help desk link
+ Copy button
+ View QR code
+ QR code
+ Warning
+ You cannot go back further. In order to stop loading your account, Session needs to quit.
+ You cannot go back further. In order to cancel your account creation, Session needs to quit.
+ Quit
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 77140251ec..a45a6e8495 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -157,8 +157,8 @@
@layout/preference_category_session
-
-
-
-
-
-
@@ -339,6 +340,9 @@
?colorAccent@color/classic_dark_3
+ @color/white
+ @color/black
+
false
@@ -417,6 +421,9 @@
?android:textColorPrimary@color/classic_light_3
+ @color/classic_light_5
+ @color/black
+
light?colorPrimary
@@ -505,6 +512,9 @@
?colorAccent@color/ocean_dark_4
+ @color/white
+ @color/ocean_dark_2
+
false
@@ -588,6 +598,9 @@
?android:textColorPrimary@color/ocean_light_3
+ @color/ocean_light_6
+ @color/ocean_light_1
+
light?colorPrimary
diff --git a/app/src/test/java/org/thoughtcrime/securesms/conversation/v2/MentionViewModelTest.kt b/app/src/test/java/org/thoughtcrime/securesms/conversation/v2/MentionViewModelTest.kt
index 3b3dd53e1c..ea27128205 100644
--- a/app/src/test/java/org/thoughtcrime/securesms/conversation/v2/MentionViewModelTest.kt
+++ b/app/src/test/java/org/thoughtcrime/securesms/conversation/v2/MentionViewModelTest.kt
@@ -5,7 +5,6 @@ import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Rule
@@ -92,14 +91,14 @@ class MentionViewModelTest {
contactDatabase = mock {
on { getContacts(any()) } doAnswer {
val ids = it.arguments[0] as Collection
- memberContacts.filter { contact -> contact.sessionID in ids }
+ memberContacts.filter { it.accountID in ids }
}
},
memberDatabase = mock {
on { getGroupMembersRoles(eq(openGroup.id), any()) } doAnswer {
val memberIDs = it.arguments[1] as Collection
memberIDs.associateWith { id ->
- threadMembers.first { m -> m.pubKey == id }.roles
+ threadMembers.first { it.pubKey == id }.roles
}
}
},
diff --git a/build.gradle b/build.gradle
index 9ac76c9d07..70d1f63fa4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,6 +12,7 @@ buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$gradlePluginVersion"
+ classpath files('libs/gradle-witness.jar')
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion"
classpath "com.google.gms:google-services:$googleServicesVersion"
diff --git a/gradle.properties b/gradle.properties
index 3558a57e32..6154652583 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -13,15 +13,16 @@
#Mon Jun 26 09:56:43 AEST 2023
android.enableJetifier=true
-gradlePluginVersion=7.3.1
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
org.gradle.unsafe.configuration-cache=true
+gradlePluginVersion=7.3.1
googleServicesVersion=4.3.12
kotlinVersion=1.8.21
android.useAndroidX=true
appcompatVersion=1.6.1
coreVersion=1.13.1
+composeVersion=1.6.4
coroutinesVersion=1.6.4
curve25519Version=0.6.0
daggerVersion=2.46.1
@@ -30,7 +31,7 @@ jacksonDatabindVersion=2.9.8
junitVersion=4.13.2
kotlinxJsonVersion=1.3.3
kovenantVersion=3.3.0
-lifecycleVersion=2.5.1
+lifecycleVersion=2.7.0
materialVersion=1.8.0
mockitoKotlinVersion=4.1.0
okhttpVersion=4.12.0
diff --git a/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt b/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt
index 952c357851..2c75de50ce 100644
--- a/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt
+++ b/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt
@@ -368,7 +368,7 @@ class InstrumentedTests {
assertEquals(2, convos.sizeOneToOnes())
val numErased = convos.eraseAll { convo ->
- convo is Conversation.OneToOne && convo.sessionId == definitelyRealId
+ convo is Conversation.OneToOne && convo.accountId == definitelyRealId
}
assertEquals(1, numErased)
assertEquals(1, convos.sizeOneToOnes())
@@ -453,7 +453,7 @@ class InstrumentedTests {
val c = convos.getOrConstructOneToOne(definitelyRealId)
- assertEquals(definitelyRealId, c.sessionId)
+ assertEquals(definitelyRealId, c.accountId)
assertEquals(0, c.lastRead)
assertFalse(convos.needsPush())
@@ -504,7 +504,7 @@ class InstrumentedTests {
val x1 = convos2.getOneToOne(definitelyRealId)!!
assertEquals(nowMs, x1.lastRead)
- assertEquals(definitelyRealId, x1.sessionId)
+ assertEquals(definitelyRealId, x1.accountId)
assertEquals(false, x1.unread)
val x2 = convos2.getCommunity("http://EXAMPLE.org:5678", "sudokuRoom")!!
@@ -548,7 +548,7 @@ class InstrumentedTests {
val allConvos = conv.all()
for (convo in allConvos) {
when (convo) {
- is Conversation.OneToOne -> seen.add("1-to-1: ${convo.sessionId}")
+ is Conversation.OneToOne -> seen.add("1-to-1: ${convo.accountId}")
is Conversation.Community -> seen.add("og: ${convo.baseCommunityInfo.baseUrl}/r/${convo.baseCommunityInfo.room}")
is Conversation.LegacyGroup -> seen.add("cl: ${convo.groupId}")
}
@@ -569,7 +569,7 @@ class InstrumentedTests {
assertEquals(1, convos.allOneToOnes().size)
assertEquals("051111111111111111111111111111111111111111111111111111111111111111",
- convos.allOneToOnes().map(Conversation.OneToOne::sessionId).first()
+ convos.allOneToOnes().map(Conversation.OneToOne::accountId).first()
)
assertEquals(1, convos.allCommunities().size)
assertEquals("http://example.org:5678",
diff --git a/libsession-util/src/main/cpp/contacts.cpp b/libsession-util/src/main/cpp/contacts.cpp
index 324d0f0ea8..d064ccd683 100644
--- a/libsession-util/src/main/cpp/contacts.cpp
+++ b/libsession-util/src/main/cpp/contacts.cpp
@@ -5,15 +5,15 @@
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_Contacts_get(JNIEnv *env, jobject thiz,
- jstring session_id) {
+ jstring account_id) {
// If an exception is thrown, return nullptr
return jni_utils::run_catching_cxx_exception_or(
[=]() -> jobject {
std::lock_guard lock{util::util_mutex_};
auto contacts = ptrToContacts(env, thiz);
- auto session_id_chars = env->GetStringUTFChars(session_id, nullptr);
- auto contact = contacts->get(session_id_chars);
- env->ReleaseStringUTFChars(session_id, session_id_chars);
+ auto account_id_chars = env->GetStringUTFChars(account_id, nullptr);
+ auto contact = contacts->get(account_id_chars);
+ env->ReleaseStringUTFChars(account_id, account_id_chars);
if (!contact) return nullptr;
jobject j_contact = serialize_contact(env, contact.value());
return j_contact;
@@ -25,13 +25,13 @@ Java_network_loki_messenger_libsession_1util_Contacts_get(JNIEnv *env, jobject t
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_Contacts_getOrConstruct(JNIEnv *env, jobject thiz,
- jstring session_id) {
+ jstring account_id) {
return jni_utils::run_catching_cxx_exception_or_throws(env, [=] {
std::lock_guard lock{util::util_mutex_};
auto contacts = ptrToContacts(env, thiz);
- auto session_id_chars = env->GetStringUTFChars(session_id, nullptr);
- auto contact = contacts->get_or_construct(session_id_chars);
- env->ReleaseStringUTFChars(session_id, session_id_chars);
+ auto account_id_chars = env->GetStringUTFChars(account_id, nullptr);
+ auto contact = contacts->get_or_construct(account_id_chars);
+ env->ReleaseStringUTFChars(account_id, account_id_chars);
return serialize_contact(env, contact);
});
}
@@ -51,14 +51,14 @@ Java_network_loki_messenger_libsession_1util_Contacts_set(JNIEnv *env, jobject t
extern "C"
JNIEXPORT jboolean JNICALL
Java_network_loki_messenger_libsession_1util_Contacts_erase(JNIEnv *env, jobject thiz,
- jstring session_id) {
+ jstring account_id) {
return jni_utils::run_catching_cxx_exception_or_throws(env, [=] {
std::lock_guard lock{util::util_mutex_};
auto contacts = ptrToContacts(env, thiz);
- auto session_id_chars = env->GetStringUTFChars(session_id, nullptr);
+ auto account_id_chars = env->GetStringUTFChars(account_id, nullptr);
- bool result = contacts->erase(session_id_chars);
- env->ReleaseStringUTFChars(session_id, session_id_chars);
+ bool result = contacts->erase(account_id_chars);
+ env->ReleaseStringUTFChars(account_id, account_id_chars);
return result;
});
}
diff --git a/libsession-util/src/main/cpp/contacts.h b/libsession-util/src/main/cpp/contacts.h
index ecb2cb3749..5db6837190 100644
--- a/libsession-util/src/main/cpp/contacts.h
+++ b/libsession-util/src/main/cpp/contacts.h
@@ -43,8 +43,8 @@ inline session::config::contact_info deserialize_contact(JNIEnv *env, jobject in
"Lnetwork/loki/messenger/libsession_util/util/UserPic;");
getPriority = env->GetFieldID(contactClass, "priority", "I");
getExpiry = env->GetFieldID(contactClass, "expiryMode", "Lnetwork/loki/messenger/libsession_util/util/ExpiryMode;");
- jstring name, nickname, session_id;
- session_id = static_cast(env->GetObjectField(info, getId));
+ jstring name, nickname, account_id;
+ account_id = static_cast(env->GetObjectField(info, getId));
name = static_cast(env->GetObjectField(info, getName));
nickname = static_cast(env->GetObjectField(info, getNick));
bool approved, approvedMe, blocked, hidden;
@@ -69,11 +69,11 @@ inline session::config::contact_info deserialize_contact(JNIEnv *env, jobject in
key = util::ustring_from_bytes(env, deserialized_pic.second);
}
- auto session_id_bytes = env->GetStringUTFChars(session_id, nullptr);
+ auto account_id_bytes = env->GetStringUTFChars(account_id, nullptr);
auto name_bytes = name ? env->GetStringUTFChars(name, nullptr) : nullptr;
auto nickname_bytes = nickname ? env->GetStringUTFChars(nickname, nullptr) : nullptr;
- auto contact_info = conf->get_or_construct(session_id_bytes);
+ auto contact_info = conf->get_or_construct(account_id_bytes);
if (name_bytes) {
contact_info.name = name_bytes;
}
@@ -89,7 +89,7 @@ inline session::config::contact_info deserialize_contact(JNIEnv *env, jobject in
contact_info.profile_picture = session::config::profile_pic();
}
- env->ReleaseStringUTFChars(session_id, session_id_bytes);
+ env->ReleaseStringUTFChars(account_id, account_id_bytes);
if (name_bytes) {
env->ReleaseStringUTFChars(name, name_bytes);
}
diff --git a/libsession-util/src/main/cpp/conversation.h b/libsession-util/src/main/cpp/conversation.h
index 45e453a595..eaf96dc840 100644
--- a/libsession-util/src/main/cpp/conversation.h
+++ b/libsession-util/src/main/cpp/conversation.h
@@ -14,10 +14,10 @@ inline session::config::ConvoInfoVolatile *ptrToConvoInfo(JNIEnv *env, jobject o
inline jobject serialize_one_to_one(JNIEnv *env, session::config::convo::one_to_one one_to_one) {
jclass clazz = env->FindClass("network/loki/messenger/libsession_util/util/Conversation$OneToOne");
jmethodID constructor = env->GetMethodID(clazz, "", "(Ljava/lang/String;JZ)V");
- auto session_id = env->NewStringUTF(one_to_one.session_id.data());
+ auto account_id = env->NewStringUTF(one_to_one.session_id.data());
auto last_read = one_to_one.last_read;
auto unread = one_to_one.unread;
- jobject serialized = env->NewObject(clazz, constructor, session_id, last_read, unread);
+ jobject serialized = env->NewObject(clazz, constructor, account_id, last_read, unread);
return serialized;
}
@@ -55,7 +55,7 @@ inline jobject serialize_any(JNIEnv *env, session::config::convo::any any) {
inline session::config::convo::one_to_one deserialize_one_to_one(JNIEnv *env, jobject info, session::config::ConvoInfoVolatile *conf) {
auto clazz = env->FindClass("network/loki/messenger/libsession_util/util/Conversation$OneToOne");
- auto id_getter = env->GetFieldID(clazz, "sessionId", "Ljava/lang/String;");
+ auto id_getter = env->GetFieldID(clazz, "accountId", "Ljava/lang/String;");
auto last_read_getter = env->GetFieldID(clazz, "lastRead", "J");
auto unread_getter = env->GetFieldID(clazz, "unread", "Z");
jstring id = static_cast(env->GetObjectField(info, id_getter));
diff --git a/libsession-util/src/main/cpp/user_groups.cpp b/libsession-util/src/main/cpp/user_groups.cpp
index 9754b40891..81a3e664b5 100644
--- a/libsession-util/src/main/cpp/user_groups.cpp
+++ b/libsession-util/src/main/cpp/user_groups.cpp
@@ -74,16 +74,16 @@ extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_UserGroupsConfig_getLegacyGroupInfo(JNIEnv *env,
jobject thiz,
- jstring session_id) {
+ jstring account_id) {
std::lock_guard lock{util::util_mutex_};
auto conf = ptrToUserGroups(env, thiz);
- auto id_bytes = env->GetStringUTFChars(session_id, nullptr);
+ auto id_bytes = env->GetStringUTFChars(account_id, nullptr);
auto legacy_group = conf->get_legacy_group(id_bytes);
jobject return_group = nullptr;
if (legacy_group) {
return_group = serialize_legacy_group_info(env, *legacy_group);
}
- env->ReleaseStringUTFChars(session_id, id_bytes);
+ env->ReleaseStringUTFChars(account_id, id_bytes);
return return_group;
}
@@ -108,12 +108,12 @@ Java_network_loki_messenger_libsession_1util_UserGroupsConfig_getOrConstructComm
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_UserGroupsConfig_getOrConstructLegacyGroupInfo(
- JNIEnv *env, jobject thiz, jstring session_id) {
+ JNIEnv *env, jobject thiz, jstring account_id) {
std::lock_guard lock{util::util_mutex_};
auto conf = ptrToUserGroups(env, thiz);
- auto id_bytes = env->GetStringUTFChars(session_id, nullptr);
+ auto id_bytes = env->GetStringUTFChars(account_id, nullptr);
auto group = conf->get_or_construct_legacy_group(id_bytes);
- env->ReleaseStringUTFChars(session_id, id_bytes);
+ env->ReleaseStringUTFChars(account_id, id_bytes);
return serialize_legacy_group_info(env, group);
}
@@ -264,11 +264,11 @@ extern "C"
JNIEXPORT jboolean JNICALL
Java_network_loki_messenger_libsession_1util_UserGroupsConfig_eraseLegacyGroup(JNIEnv *env,
jobject thiz,
- jstring session_id) {
+ jstring account_id) {
std::lock_guard lock{util::util_mutex_};
auto conf = ptrToUserGroups(env, thiz);
- auto session_id_bytes = env->GetStringUTFChars(session_id, nullptr);
- bool return_bool = conf->erase_legacy_group(session_id_bytes);
- env->ReleaseStringUTFChars(session_id, session_id_bytes);
+ auto account_id_bytes = env->GetStringUTFChars(account_id, nullptr);
+ bool return_bool = conf->erase_legacy_group(account_id_bytes);
+ env->ReleaseStringUTFChars(account_id, account_id_bytes);
return return_bool;
}
\ No newline at end of file
diff --git a/libsession-util/src/main/cpp/user_groups.h b/libsession-util/src/main/cpp/user_groups.h
index c4754fe113..6e52bf7fe1 100644
--- a/libsession-util/src/main/cpp/user_groups.h
+++ b/libsession-util/src/main/cpp/user_groups.h
@@ -44,7 +44,7 @@ inline void deserialize_members_into(JNIEnv *env, jobject members_map, session::
inline session::config::legacy_group_info deserialize_legacy_group_info(JNIEnv *env, jobject info, session::config::UserGroups* conf) {
auto clazz = env->FindClass("network/loki/messenger/libsession_util/util/GroupInfo$LegacyGroupInfo");
- auto id_field = env->GetFieldID(clazz, "sessionId", "Ljava/lang/String;");
+ auto id_field = env->GetFieldID(clazz, "accountId", "Ljava/lang/String;");
auto name_field = env->GetFieldID(clazz, "name", "Ljava/lang/String;");
auto members_field = env->GetFieldID(clazz, "members", "Ljava/util/Map;");
auto enc_pub_key_field = env->GetFieldID(clazz, "encPubKey", "[B");
@@ -104,16 +104,16 @@ inline jobject serialize_members(JNIEnv *env, std::map member
jobject new_map = env->NewObject(map_class, map_constructor);
for (auto it = members_map.begin(); it != members_map.end(); it++) {
- auto session_id = env->NewStringUTF(it->first.data());
+ auto account_id = env->NewStringUTF(it->first.data());
bool is_admin = it->second;
auto jbool = env->NewObject(boxed_bool, new_bool, is_admin);
- env->CallObjectMethod(new_map, insert, session_id, jbool);
+ env->CallObjectMethod(new_map, insert, account_id, jbool);
}
return new_map;
}
inline jobject serialize_legacy_group_info(JNIEnv *env, session::config::legacy_group_info info) {
- jstring session_id = env->NewStringUTF(info.session_id.data());
+ jstring account_id = env->NewStringUTF(info.session_id.data());
jstring name = env->NewStringUTF(info.name.data());
jobject members = serialize_members(env, info.members());
jbyteArray enc_pubkey = util::bytes_from_ustring(env, info.enc_pubkey);
@@ -123,7 +123,7 @@ inline jobject serialize_legacy_group_info(JNIEnv *env, session::config::legacy_
jclass legacy_group_class = env->FindClass("network/loki/messenger/libsession_util/util/GroupInfo$LegacyGroupInfo");
jmethodID constructor = env->GetMethodID(legacy_group_class, "", "(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;[B[BIJJ)V");
- jobject serialized = env->NewObject(legacy_group_class, constructor, session_id, name, members, enc_pubkey, enc_seckey, priority, (jlong) info.disappearing_timer.count(), joined_at);
+ jobject serialized = env->NewObject(legacy_group_class, constructor, account_id, name, members, enc_pubkey, enc_seckey, priority, (jlong) info.disappearing_timer.count(), joined_at);
return serialized;
}
diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt
index 03af4a3968..ccdda282fe 100644
--- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt
+++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt
@@ -61,49 +61,41 @@ class Contacts(pointer: Long) : ConfigBase(pointer) {
external fun newInstance(ed25519SecretKey: ByteArray, initialDump: ByteArray): Contacts
}
- external fun get(sessionId: String): Contact?
- external fun getOrConstruct(sessionId: String): Contact
+ external fun get(accountId: String): Contact?
+ external fun getOrConstruct(accountId: String): Contact
external fun all(): List
external fun set(contact: Contact)
- external fun erase(sessionId: String): Boolean
+ external fun erase(accountId: String): Boolean
/**
* Similar to [updateIfExists], but will create the underlying contact if it doesn't exist before passing to [updateFunction]
*/
- fun upsertContact(sessionId: String, updateFunction: Contact.()->Unit = {}) {
- if (sessionId.startsWith(IdPrefix.BLINDED.value)) {
- Log.w("Loki", "Trying to create a contact with a blinded ID prefix")
- return
- } else if (sessionId.startsWith(IdPrefix.UN_BLINDED.value)) {
- Log.w("Loki", "Trying to create a contact with an un-blinded ID prefix")
- return
- } else if (sessionId.startsWith(IdPrefix.BLINDEDV2.value)) {
- Log.w("Loki", "Trying to create a contact with a blindedv2 ID prefix")
- return
+ fun upsertContact(accountId: String, updateFunction: Contact.()->Unit = {}) {
+ when {
+ accountId.startsWith(IdPrefix.BLINDED.value) -> Log.w("Loki", "Trying to create a contact with a blinded ID prefix")
+ accountId.startsWith(IdPrefix.UN_BLINDED.value) -> Log.w("Loki", "Trying to create a contact with an un-blinded ID prefix")
+ accountId.startsWith(IdPrefix.BLINDEDV2.value) -> Log.w("Loki", "Trying to create a contact with a blindedv2 ID prefix")
+ else -> getOrConstruct(accountId).let {
+ updateFunction(it)
+ set(it)
+ }
}
- val contact = getOrConstruct(sessionId)
- updateFunction(contact)
- set(contact)
}
/**
- * Updates the contact by sessionId with a given [updateFunction], and applies to the underlying config.
+ * Updates the contact by accountId with a given [updateFunction], and applies to the underlying config.
* the [updateFunction] doesn't run if there is no contact
*/
- fun updateIfExists(sessionId: String, updateFunction: Contact.()->Unit) {
- if (sessionId.startsWith(IdPrefix.BLINDED.value)) {
- Log.w("Loki", "Trying to create a contact with a blinded ID prefix")
- return
- } else if (sessionId.startsWith(IdPrefix.UN_BLINDED.value)) {
- Log.w("Loki", "Trying to create a contact with an un-blinded ID prefix")
- return
- } else if (sessionId.startsWith(IdPrefix.BLINDEDV2.value)) {
- Log.w("Loki", "Trying to create a contact with a blindedv2 ID prefix")
- return
+ private fun updateIfExists(accountId: String, updateFunction: Contact.()->Unit) {
+ when {
+ accountId.startsWith(IdPrefix.BLINDED.value) -> Log.w("Loki", "Trying to create a contact with a blinded ID prefix")
+ accountId.startsWith(IdPrefix.UN_BLINDED.value) -> Log.w("Loki", "Trying to create a contact with an un-blinded ID prefix")
+ accountId.startsWith(IdPrefix.BLINDEDV2.value) -> Log.w("Loki", "Trying to create a contact with a blindedv2 ID prefix")
+ else -> get(accountId)?.let {
+ updateFunction(it)
+ set(it)
+ }
}
- val contact = get(sessionId) ?: return
- updateFunction(contact)
- set(contact)
}
}
@@ -184,14 +176,14 @@ class UserGroupsConfig(pointer: Long): ConfigBase(pointer) {
}
external fun getCommunityInfo(baseUrl: String, room: String): GroupInfo.CommunityGroupInfo?
- external fun getLegacyGroupInfo(sessionId: String): GroupInfo.LegacyGroupInfo?
+ external fun getLegacyGroupInfo(accountId: String): GroupInfo.LegacyGroupInfo?
external fun getOrConstructCommunityInfo(baseUrl: String, room: String, pubKeyHex: String): GroupInfo.CommunityGroupInfo
- external fun getOrConstructLegacyGroupInfo(sessionId: String): GroupInfo.LegacyGroupInfo
+ external fun getOrConstructLegacyGroupInfo(accountId: String): GroupInfo.LegacyGroupInfo
external fun set(groupInfo: GroupInfo)
external fun erase(communityInfo: GroupInfo)
external fun eraseCommunity(baseCommunityInfo: BaseCommunityInfo): Boolean
external fun eraseCommunity(server: String, room: String): Boolean
- external fun eraseLegacyGroup(sessionId: String): Boolean
+ external fun eraseLegacyGroup(accountId: String): Boolean
external fun sizeCommunityInfo(): Int
external fun sizeLegacyGroupInfo(): Int
external fun size(): Int
diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Conversation.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Conversation.kt
index 97930e8b40..5f96df6dad 100644
--- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Conversation.kt
+++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/Conversation.kt
@@ -6,7 +6,7 @@ sealed class Conversation {
abstract var unread: Boolean
data class OneToOne(
- val sessionId: String,
+ val accountId: String,
override var lastRead: Long,
override var unread: Boolean
): Conversation()
diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt
index c8ace0a9a7..752c8be0f3 100644
--- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt
+++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/util/GroupInfo.kt
@@ -5,7 +5,7 @@ sealed class GroupInfo {
data class CommunityGroupInfo(val community: BaseCommunityInfo, val priority: Int) : GroupInfo()
data class LegacyGroupInfo(
- val sessionId: String,
+ val accountId: String,
val name: String,
val members: Map,
val encPubKey: ByteArray,
@@ -25,7 +25,7 @@ sealed class GroupInfo {
other as LegacyGroupInfo
- if (sessionId != other.sessionId) return false
+ if (accountId != other.accountId) return false
if (name != other.name) return false
if (members != other.members) return false
if (!encPubKey.contentEquals(other.encPubKey)) return false
@@ -38,7 +38,7 @@ sealed class GroupInfo {
}
override fun hashCode(): Int {
- var result = sessionId.hashCode()
+ var result = accountId.hashCode()
result = 31 * result + name.hashCode()
result = 31 * result + members.hashCode()
result = 31 * result + encPubKey.contentHashCode()
diff --git a/libsession-util/src/test/java/org/session/libsignal/crypto/MnemonicCodecTest.kt b/libsession-util/src/test/java/org/session/libsignal/crypto/MnemonicCodecTest.kt
new file mode 100644
index 0000000000..cbf3458f0d
--- /dev/null
+++ b/libsession-util/src/test/java/org/session/libsignal/crypto/MnemonicCodecTest.kt
@@ -0,0 +1,116 @@
+package org.session.libsignal.crypto
+
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertThrows
+import org.junit.Before
+import org.junit.Test
+import org.session.libsignal.crypto.MnemonicCodec.DecodingError.InputTooShort
+import org.session.libsignal.crypto.MnemonicCodec.DecodingError.InvalidWord
+import org.session.libsignal.crypto.MnemonicCodec.DecodingError.VerificationFailed
+import org.session.libsignal.utilities.Hex
+
+private val WORD_SET = "abbey,abducts,ability,ablaze,abnormal,abort,abrasive,absorb,abyss,academy,aces,aching,acidic,acoustic,acquire,across,actress,acumen,adapt,addicted,adept,adhesive,adjust,adopt,adrenalin,adult,adventure,aerial,afar,affair,afield,afloat,afoot,afraid,after,against,agenda,aggravate,agile,aglow,agnostic,agony,agreed,ahead,aided,ailments,aimless,airport,aisle,ajar,akin,alarms,album,alchemy,alerts,algebra,alkaline,alley,almost,aloof,alpine,already,also,altitude,alumni,always,amaze,ambush,amended,amidst,ammo,amnesty,among,amply,amused,anchor,android,anecdote,angled,ankle,annoyed,answers,antics,anvil,anxiety,anybody,apart,apex,aphid,aplomb,apology,apply,apricot,aptitude,aquarium,arbitrary,archer,ardent,arena,argue,arises,army,around,arrow,arsenic,artistic,ascend,ashtray,aside,asked,asleep,aspire,assorted,asylum,athlete,atlas,atom,atrium,attire,auburn,auctions,audio,august,aunt,austere,autumn,avatar,avidly,avoid,awakened,awesome,awful,awkward,awning,awoken,axes,axis,axle,aztec,azure,baby,bacon,badge,baffles,bagpipe,bailed,bakery,balding,bamboo,banjo,baptism,basin,batch,bawled,bays,because,beer,befit,begun,behind,being,below,bemused,benches,berries,bested,betting,bevel,beware,beyond,bias,bicycle,bids,bifocals,biggest,bikini,bimonthly,binocular,biology,biplane,birth,biscuit,bite,biweekly,blender,blip,bluntly,boat,bobsled,bodies,bogeys,boil,boldly,bomb,border,boss,both,bounced,bovine,bowling,boxes,boyfriend,broken,brunt,bubble,buckets,budget,buffet,bugs,building,bulb,bumper,bunch,business,butter,buying,buzzer,bygones,byline,bypass,cabin,cactus,cadets,cafe,cage,cajun,cake,calamity,camp,candy,casket,catch,cause,cavernous,cease,cedar,ceiling,cell,cement,cent,certain,chlorine,chrome,cider,cigar,cinema,circle,cistern,citadel,civilian,claim,click,clue,coal,cobra,cocoa,code,coexist,coffee,cogs,cohesive,coils,colony,comb,cool,copy,corrode,costume,cottage,cousin,cowl,criminal,cube,cucumber,cuddled,cuffs,cuisine,cunning,cupcake,custom,cycling,cylinder,cynical,dabbing,dads,daft,dagger,daily,damp,dangerous,dapper,darted,dash,dating,dauntless,dawn,daytime,dazed,debut,decay,dedicated,deepest,deftly,degrees,dehydrate,deity,dejected,delayed,demonstrate,dented,deodorant,depth,desk,devoid,dewdrop,dexterity,dialect,dice,diet,different,digit,dilute,dime,dinner,diode,diplomat,directed,distance,ditch,divers,dizzy,doctor,dodge,does,dogs,doing,dolphin,domestic,donuts,doorway,dormant,dosage,dotted,double,dove,down,dozen,dreams,drinks,drowning,drunk,drying,dual,dubbed,duckling,dude,duets,duke,dullness,dummy,dunes,duplex,duration,dusted,duties,dwarf,dwelt,dwindling,dying,dynamite,dyslexic,each,eagle,earth,easy,eating,eavesdrop,eccentric,echo,eclipse,economics,ecstatic,eden,edgy,edited,educated,eels,efficient,eggs,egotistic,eight,either,eject,elapse,elbow,eldest,eleven,elite,elope,else,eluded,emails,ember,emerge,emit,emotion,empty,emulate,energy,enforce,enhanced,enigma,enjoy,enlist,enmity,enough,enraged,ensign,entrance,envy,epoxy,equip,erase,erected,erosion,error,eskimos,espionage,essential,estate,etched,eternal,ethics,etiquette,evaluate,evenings,evicted,evolved,examine,excess,exhale,exit,exotic,exquisite,extra,exult,fabrics,factual,fading,fainted,faked,fall,family,fancy,farming,fatal,faulty,fawns,faxed,fazed,feast,february,federal,feel,feline,females,fences,ferry,festival,fetches,fever,fewest,fiat,fibula,fictional,fidget,fierce,fifteen,fight,films,firm,fishing,fitting,five,fixate,fizzle,fleet,flippant,flying,foamy,focus,foes,foggy,foiled,folding,fonts,foolish,fossil,fountain,fowls,foxes,foyer,framed,friendly,frown,fruit,frying,fudge,fuel,fugitive,fully,fuming,fungal,furnished,fuselage,future,fuzzy,gables,gadget,gags,gained,galaxy,gambit,gang,gasp,gather,gauze,gave,gawk,gaze,gearbox,gecko,geek,gels,gemstone,general,geometry,germs,gesture,getting,geyser,ghetto,ghost,giant,giddy,gifts,gigantic,gills,gimmick,ginger,girth,giving,glass,gleeful,glide,gnaw,gnome,goat,goblet,godfather,goes,goggles,going,goldfish,gone,goodbye,gopher,gorilla,gossip,gotten,gourmet,governing,gown,greater,grunt,guarded,guest,guide,gulp,gumball,guru,gusts,gutter,guys,gymnast,gypsy,gyrate,habitat,hacksaw,haggled,hairy,hamburger,happens,hashing,hatchet,haunted,having,hawk,haystack,hazard,hectare,hedgehog,heels,hefty,height,hemlock,hence,heron,hesitate,hexagon,hickory,hiding,highway,hijack,hiker,hills,himself,hinder,hippo,hire,history,hitched,hive,hoax,hobby,hockey,hoisting,hold,honked,hookup,hope,hornet,hospital,hotel,hounded,hover,howls,hubcaps,huddle,huge,hull,humid,hunter,hurried,husband,huts,hybrid,hydrogen,hyper,iceberg,icing,icon,identity,idiom,idled,idols,igloo,ignore,iguana,illness,imagine,imbalance,imitate,impel,inactive,inbound,incur,industrial,inexact,inflamed,ingested,initiate,injury,inkling,inline,inmate,innocent,inorganic,input,inquest,inroads,insult,intended,inundate,invoke,inwardly,ionic,irate,iris,irony,irritate,island,isolated,issued,italics,itches,items,itinerary,itself,ivory,jabbed,jackets,jaded,jagged,jailed,jamming,january,jargon,jaunt,javelin,jaws,jazz,jeans,jeers,jellyfish,jeopardy,jerseys,jester,jetting,jewels,jigsaw,jingle,jittery,jive,jobs,jockey,jogger,joining,joking,jolted,jostle,journal,joyous,jubilee,judge,juggled,juicy,jukebox,july,jump,junk,jury,justice,juvenile,kangaroo,karate,keep,kennel,kept,kernels,kettle,keyboard,kickoff,kidneys,king,kiosk,kisses,kitchens,kiwi,knapsack,knee,knife,knowledge,knuckle,koala,laboratory,ladder,lagoon,lair,lakes,lamb,language,laptop,large,last,later,launching,lava,lawsuit,layout,lazy,lectures,ledge,leech,left,legion,leisure,lemon,lending,leopard,lesson,lettuce,lexicon,liar,library,licks,lids,lied,lifestyle,light,likewise,lilac,limits,linen,lion,lipstick,liquid,listen,lively,loaded,lobster,locker,lodge,lofty,logic,loincloth,long,looking,lopped,lordship,losing,lottery,loudly,love,lower,loyal,lucky,luggage,lukewarm,lullaby,lumber,lunar,lurk,lush,luxury,lymph,lynx,lyrics,macro,madness,magically,mailed,major,makeup,malady,mammal,maps,masterful,match,maul,maverick,maximum,mayor,maze,meant,mechanic,medicate,meeting,megabyte,melting,memoir,menu,merger,mesh,metro,mews,mice,midst,mighty,mime,mirror,misery,mittens,mixture,moat,mobile,mocked,mohawk,moisture,molten,moment,money,moon,mops,morsel,mostly,motherly,mouth,movement,mowing,much,muddy,muffin,mugged,mullet,mumble,mundane,muppet,mural,musical,muzzle,myriad,mystery,myth,nabbing,nagged,nail,names,nanny,napkin,narrate,nasty,natural,nautical,navy,nearby,necklace,needed,negative,neither,neon,nephew,nerves,nestle,network,neutral,never,newt,nexus,nibs,niche,niece,nifty,nightly,nimbly,nineteen,nirvana,nitrogen,nobody,nocturnal,nodes,noises,nomad,noodles,northern,nostril,noted,nouns,novelty,nowhere,nozzle,nuance,nucleus,nudged,nugget,nuisance,null,number,nuns,nurse,nutshell,nylon,oaks,oars,oasis,oatmeal,obedient,object,obliged,obnoxious,observant,obtains,obvious,occur,ocean,october,odds,odometer,offend,often,oilfield,ointment,okay,older,olive,olympics,omega,omission,omnibus,onboard,oncoming,oneself,ongoing,onion,online,onslaught,onto,onward,oozed,opacity,opened,opposite,optical,opus,orange,orbit,orchid,orders,organs,origin,ornament,orphans,oscar,ostrich,otherwise,otter,ouch,ought,ounce,ourselves,oust,outbreak,oval,oven,owed,owls,owner,oxidant,oxygen,oyster,ozone,pact,paddles,pager,pairing,palace,pamphlet,pancakes,paper,paradise,pastry,patio,pause,pavements,pawnshop,payment,peaches,pebbles,peculiar,pedantic,peeled,pegs,pelican,pencil,people,pepper,perfect,pests,petals,phase,pheasants,phone,phrases,physics,piano,picked,pierce,pigment,piloted,pimple,pinched,pioneer,pipeline,pirate,pistons,pitched,pivot,pixels,pizza,playful,pledge,pliers,plotting,plus,plywood,poaching,pockets,podcast,poetry,point,poker,polar,ponies,pool,popular,portents,possible,potato,pouch,poverty,powder,pram,present,pride,problems,pruned,prying,psychic,public,puck,puddle,puffin,pulp,pumpkins,punch,puppy,purged,push,putty,puzzled,pylons,pyramid,python,queen,quick,quote,rabbits,racetrack,radar,rafts,rage,railway,raking,rally,ramped,randomly,rapid,rarest,rash,rated,ravine,rays,razor,react,rebel,recipe,reduce,reef,refer,regular,reheat,reinvest,rejoices,rekindle,relic,remedy,renting,reorder,repent,request,reruns,rest,return,reunion,revamp,rewind,rhino,rhythm,ribbon,richly,ridges,rift,rigid,rims,ringing,riots,ripped,rising,ritual,river,roared,robot,rockets,rodent,rogue,roles,romance,roomy,roped,roster,rotate,rounded,rover,rowboat,royal,ruby,rudely,ruffled,rugged,ruined,ruling,rumble,runway,rural,rustled,ruthless,sabotage,sack,sadness,safety,saga,sailor,sake,salads,sample,sanity,sapling,sarcasm,sash,satin,saucepan,saved,sawmill,saxophone,sayings,scamper,scenic,school,science,scoop,scrub,scuba,seasons,second,sedan,seeded,segments,seismic,selfish,semifinal,sensible,september,sequence,serving,session,setup,seventh,sewage,shackles,shelter,shipped,shocking,shrugged,shuffled,shyness,siblings,sickness,sidekick,sieve,sifting,sighting,silk,simplest,sincerely,sipped,siren,situated,sixteen,sizes,skater,skew,skirting,skulls,skydive,slackens,sleepless,slid,slower,slug,smash,smelting,smidgen,smog,smuggled,snake,sneeze,sniff,snout,snug,soapy,sober,soccer,soda,software,soggy,soil,solved,somewhere,sonic,soothe,soprano,sorry,southern,sovereign,sowed,soya,space,speedy,sphere,spiders,splendid,spout,sprig,spud,spying,square,stacking,stellar,stick,stockpile,strained,stunning,stylishly,subtly,succeed,suddenly,suede,suffice,sugar,suitcase,sulking,summon,sunken,superior,surfer,sushi,suture,swagger,swept,swiftly,sword,swung,syllabus,symptoms,syndrome,syringe,system,taboo,tacit,tadpoles,tagged,tail,taken,talent,tamper,tanks,tapestry,tarnished,tasked,tattoo,taunts,tavern,tawny,taxi,teardrop,technical,tedious,teeming,tell,template,tender,tepid,tequila,terminal,testing,tether,textbook,thaw,theatrics,thirsty,thorn,threaten,thumbs,thwart,ticket,tidy,tiers,tiger,tilt,timber,tinted,tipsy,tirade,tissue,titans,toaster,tobacco,today,toenail,toffee,together,toilet,token,tolerant,tomorrow,tonic,toolbox,topic,torch,tossed,total,touchy,towel,toxic,toyed,trash,trendy,tribal,trolling,truth,trying,tsunami,tubes,tucks,tudor,tuesday,tufts,tugs,tuition,tulips,tumbling,tunnel,turnip,tusks,tutor,tuxedo,twang,tweezers,twice,twofold,tycoon,typist,tyrant,ugly,ulcers,ultimate,umbrella,umpire,unafraid,unbending,uncle,under,uneven,unfit,ungainly,unhappy,union,unjustly,unknown,unlikely,unmask,unnoticed,unopened,unplugs,unquoted,unrest,unsafe,until,unusual,unveil,unwind,unzip,upbeat,upcoming,update,upgrade,uphill,upkeep,upload,upon,upper,upright,upstairs,uptight,upwards,urban,urchins,urgent,usage,useful,usher,using,usual,utensils,utility,utmost,utopia,uttered,vacation,vague,vain,value,vampire,vane,vapidly,vary,vastness,vats,vaults,vector,veered,vegan,vehicle,vein,velvet,venomous,verification,vessel,veteran,vexed,vials,vibrate,victim,video,viewpoint,vigilant,viking,village,vinegar,violin,vipers,virtual,visited,vitals,vivid,vixen,vocal,vogue,voice,volcano,vortex,voted,voucher,vowels,voyage,vulture,wade,waffle,wagtail,waist,waking,wallets,wanted,warped,washing,water,waveform,waxing,wayside,weavers,website,wedge,weekday,weird,welders,went,wept,were,western,wetsuit,whale,when,whipped,whole,wickets,width,wield,wife,wiggle,wildly,winter,wipeout,wiring,wise,withdrawn,wives,wizard,wobbly,woes,woken,wolf,womanly,wonders,woozy,worry,wounded,woven,wrap,wrist,wrong,yacht,yahoo,yanks,yard,yawning,yearbook,yellow,yesterday,yeti,yields,yodel,yoga,younger,yoyo,zapped,zeal,zebra,zero,zesty,zigzags,zinger,zippers,zodiac,zombie,zones,zoom"
+
+class MnemonicCodecTest {
+ lateinit var codec: MnemonicCodec
+
+ @Before
+ fun setup() {
+ codec = MnemonicCodec { WORD_SET }
+ }
+
+ @Test
+ fun `encode works`() {
+ val result = codec.encode("e37315dd45b0b0454dbb04dce662772a")
+
+ assertEquals("sewage railway names rift wagtail duties rowboat until seismic radar custom gimmick until", result)
+ }
+
+ @Test
+ fun `decode empty`() {
+ assertThrows(InputTooShort::class.java) {
+ codec.decode("")
+ }
+ }
+
+ @Test
+ fun `decode one invalid word that is too short`() {
+ assertThrows(InputTooShort::class.java) {
+ codec.decode("a")
+ }
+ }
+
+ @Test
+ fun `decode one invalid word`() {
+ assertThrows(InputTooShort::class.java) {
+ codec.decode("abcd")
+ }
+ }
+
+ @Test
+ fun `decode one valid word`() {
+ assertThrows(InputTooShort::class.java) {
+ codec.decode("abbey")
+ }
+ }
+
+
+ @Test
+ fun `decode password with the word organism which is not on the list but organs is - ses-2202`() {
+ assertThrows(VerificationFailed::class.java) {
+ codec.decode("dotted bikini vexed vane orbit dabbing diet amidst geek goldfish ceiling organism orbit")
+ }
+ }
+
+ @Test
+ fun `decode works`() {
+ val result = codec.decode("sewage railway names rift wagtail duties rowboat until seismic radar custom gimmick until")
+
+ assertEquals("e37315dd45b0b0454dbb04dce662772a", result)
+ }
+
+ @Test
+ fun `decodeMnemonicOrHexAsByteArray with mnemonic`() {
+ val result = codec.decodeMnemonicOrHexAsByteArray("fuming nearby kennel husband dejected pepper jaded because dads goggles tufts tomorrow dejected").let(Hex::toStringCondensed)
+
+ assertEquals("0f2ccde528622876b8f16e14db97dafc", result)
+ }
+
+ @Test
+ fun `sanitizeAndDecodeAsByteArray with mnemonic with unnecessary spaces`() {
+ val result = codec.sanitizeAndDecodeAsByteArray(" fuming nearby kennel husband dejected pepper jaded because dads goggles tufts tomorrow dejected ").let(Hex::toStringCondensed)
+
+ assertEquals("0f2ccde528622876b8f16e14db97dafc", result)
+ }
+
+ @Test
+ fun `sanitizeAndDecodeAsByteArray with mnemonic with special characters`() {
+ val result = codec.sanitizeAndDecodeAsByteArray("...fuming nearby.kennel.husband . dejected pepper jaded because dads goggles tufts tomorrow dejected@").let(Hex::toStringCondensed)
+
+ assertEquals("0f2ccde528622876b8f16e14db97dafc", result)
+ }
+
+ @Test
+ fun `decodeMnemonicOrHexAsByteArray with hex`() {
+ val result = codec.decodeMnemonicOrHexAsByteArray("0f2ccde528622876b8f16e14db97dafc").let(Hex::toStringCondensed)
+
+ assertEquals("0f2ccde528622876b8f16e14db97dafc", result)
+ }
+
+ @Test
+ fun `decodeMnemonicOrHexAsByteArray with account id throws`() {
+ assertThrows(InputTooShort::class.java) {
+ codec.decodeMnemonicOrHexAsByteArray("0582e1421da6f584a4795d30b654b4f25fed860afdf081075cb26a2b997e492f14").let(Hex::toStringCondensed)
+ }
+ }
+
+ @Test
+ fun `decodeMnemonicOrHexAsByteArray with bad hex`() {
+ // throws InvalidWord as 0f2ccde528622876b8f16e14db97dafcg is not a valid word on the english wordlist.
+ // It is also not a valid hex string, but we assume that a non-hex string is a recovery password.
+
+ assertThrows(InputTooShort::class.java) {
+ codec.decodeMnemonicOrHexAsByteArray("0f2ccde528622876b8f16e14db97dafcg").let(Hex::toStringCondensed)
+ }
+ }
+}
diff --git a/libsession/src/main/java/org/session/libsession/database/StorageProtocol.kt b/libsession/src/main/java/org/session/libsession/database/StorageProtocol.kt
index c984594bcc..581cc51570 100644
--- a/libsession/src/main/java/org/session/libsession/database/StorageProtocol.kt
+++ b/libsession/src/main/java/org/session/libsession/database/StorageProtocol.kt
@@ -181,7 +181,7 @@ interface StorageProtocol {
fun setLastLegacyRecipient(threadRecipient: String, senderRecipient: String?)
// Contacts
- fun getContactWithSessionID(sessionID: String): Contact?
+ fun getContactWithAccountID(accountID: String): Contact?
fun getAllContacts(): Set
fun setContact(contact: Contact)
fun getRecipientForThread(threadId: Long): Recipient?
diff --git a/libsession/src/main/java/org/session/libsession/messaging/BlindedIdMapping.kt b/libsession/src/main/java/org/session/libsession/messaging/BlindedIdMapping.kt
index 3b4af098ad..d00abd28c3 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/BlindedIdMapping.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/BlindedIdMapping.kt
@@ -2,7 +2,7 @@ package org.session.libsession.messaging
data class BlindedIdMapping(
val blindedId: String,
- val sessionId: String?,
+ val accountId: String?,
val serverUrl: String,
val serverId: String
)
\ No newline at end of file
diff --git a/libsession/src/main/java/org/session/libsession/messaging/contacts/Contact.kt b/libsession/src/main/java/org/session/libsession/messaging/contacts/Contact.kt
index 7161d070aa..fd737251e5 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/contacts/Contact.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/contacts/Contact.kt
@@ -2,7 +2,7 @@ package org.session.libsession.messaging.contacts
import org.session.libsession.utilities.recipients.Recipient
-class Contact(val sessionID: String) {
+class Contact(val accountID: String) {
/**
* The URL from which to fetch the contact's profile picture.
*/
@@ -36,21 +36,12 @@ class Contact(val sessionID: String) {
/**
* The name to display in the UI. For local use only.
*/
- fun displayName(context: ContactContext): String? {
- nickname?.let { return it }
- return when (context) {
- ContactContext.REGULAR -> name
- ContactContext.OPEN_GROUP -> {
- // In open groups, where it's more likely that multiple users have the same name,
- // we display a bit of the Session ID after a user's display name for added context.
- name?.let {
- return "$name (${sessionID.take(4)}...${sessionID.takeLast(4)})"
- }
- return null
- }
- }
+ fun displayName(context: ContactContext): String? = nickname ?: when (context) {
+ ContactContext.REGULAR -> name
+ // In open groups, where it's more likely that multiple users have the same name,
+ // we display a bit of the Account ID after a user's display name for added context.
+ ContactContext.OPEN_GROUP -> name?.let { "$it (${accountID.take(4)}...${accountID.takeLast(4)})" }
}
- // endregion
enum class ContactContext {
REGULAR, OPEN_GROUP
@@ -63,19 +54,18 @@ class Contact(val sessionID: String) {
}
override fun equals(other: Any?): Boolean {
- return this.sessionID == (other as? Contact)?.sessionID
+ return this.accountID == (other as? Contact)?.accountID
}
override fun hashCode(): Int {
- return sessionID.hashCode()
+ return accountID.hashCode()
}
override fun toString(): String {
- return nickname ?: name ?: sessionID
+ return nickname ?: name ?: accountID
}
companion object {
-
fun contextForRecipient(recipient: Recipient): ContactContext {
return if (recipient.isCommunityRecipient) ContactContext.OPEN_GROUP else ContactContext.REGULAR
}
diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt
index 0da398dff2..0d057e81f1 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt
@@ -68,7 +68,7 @@ class AttachmentDownloadJob(val attachmentID: Long, val databaseMessageID: Long)
?: return false
// you can't be eligible without a contact entry
- val contact = storage.getContactWithSessionID(sender) ?: return false
+ val contact = storage.getContactWithAccountID(sender) ?: return false
// we are eligible if we are receiving a group message or the contact is trusted
return threadRecipient.isGroupRecipient || contact.isTrusted
diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt
index 02297399b1..7747f7bdbb 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/BatchMessageReceiveJob.kt
@@ -28,7 +28,7 @@ import org.session.libsession.messaging.sending_receiving.handleOpenGroupReactio
import org.session.libsession.messaging.sending_receiving.handleUnsendRequest
import org.session.libsession.messaging.sending_receiving.handleVisibleMessage
import org.session.libsession.messaging.utilities.Data
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.utilities.SSKEnvironment
import org.session.libsignal.protos.UtilProtos
@@ -159,7 +159,7 @@ class BatchMessageReceiveJob(
MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!
)
}?.let {
- SessionId(
+ AccountId(
IdPrefix.BLINDED, it.publicKey.asBytes
).hexString
}
diff --git a/libsession/src/main/java/org/session/libsession/messaging/mentions/MentionsManager.kt b/libsession/src/main/java/org/session/libsession/messaging/mentions/MentionsManager.kt
index c3537a334a..a60b4fd5b5 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/mentions/MentionsManager.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/mentions/MentionsManager.kt
@@ -24,7 +24,7 @@ object MentionsManager {
val userPublicKey = storage.getUserPublicKey()
// Gather candidates
var candidates: List = cache.mapNotNull { publicKey ->
- val contact = storage.getContactWithSessionID(publicKey)
+ val contact = storage.getContactWithAccountID(publicKey)
val displayName = contact?.displayName(context) ?: return@mapNotNull null
Mention(publicKey, displayName)
}
diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/Endpoint.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/Endpoint.kt
index d7472bb797..e50fe293e1 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/Endpoint.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/Endpoint.kt
@@ -30,8 +30,8 @@ sealed class Endpoint(val value: String) {
data class RoomMessagesSince(val roomToken: String, val seqNo: Long) :
Endpoint("room/$roomToken/messages/since/$seqNo")
- data class RoomDeleteMessages(val roomToken: String, val sessionId: String) :
- Endpoint("room/$roomToken/all/$sessionId")
+ data class RoomDeleteMessages(val roomToken: String, val accountId: String) :
+ Endpoint("room/$roomToken/all/$accountId")
data class Reactors(val roomToken: String, val messageId: Long, val emoji: String):
Endpoint("room/$roomToken/reactors/$messageId/$emoji")
@@ -67,15 +67,15 @@ sealed class Endpoint(val value: String) {
object Inbox : Endpoint("inbox")
data class InboxSince(val id: Long) : Endpoint("inbox/since/$id")
- data class InboxFor(val sessionId: String) : Endpoint("inbox/$sessionId")
+ data class InboxFor(val accountId: String) : Endpoint("inbox/$accountId")
object Outbox : Endpoint("outbox")
data class OutboxSince(val id: Long) : Endpoint("outbox/since/$id")
// Users
- data class UserBan(val sessionId: String) : Endpoint("user/$sessionId/ban")
- data class UserUnban(val sessionId: String) : Endpoint("user/$sessionId/unban")
- data class UserModerator(val sessionId: String) : Endpoint("user/$sessionId/moderator")
+ data class UserBan(val accountId: String) : Endpoint("user/$accountId/ban")
+ data class UserUnban(val accountId: String) : Endpoint("user/$accountId/unban")
+ data class UserModerator(val accountId: String) : Endpoint("user/$accountId/moderator")
}
diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt
index 50eb7be7b0..e988b579f1 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt
@@ -6,23 +6,18 @@ import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.PropertyNamingStrategy
import com.fasterxml.jackson.databind.annotation.JsonNaming
import com.fasterxml.jackson.databind.type.TypeFactory
-import com.goterl.lazysodium.LazySodiumAndroid
-import com.goterl.lazysodium.SodiumAndroid
import com.goterl.lazysodium.interfaces.GenericHash
import com.goterl.lazysodium.interfaces.Sign
import kotlinx.coroutines.flow.MutableSharedFlow
import nl.komponents.kovenant.Promise
import nl.komponents.kovenant.functional.map
-import okhttp3.Headers
import okhttp3.Headers.Companion.toHeaders
-import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody
import org.session.libsession.messaging.MessagingModuleConfiguration
import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPoller.Companion.maxInactivityPeriod
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.messaging.utilities.SodiumUtilities.sodium
import org.session.libsession.snode.OnionRequestAPI
@@ -359,7 +354,7 @@ object OpenGroupApi {
.plus(bodyHash)
if (serverCapabilities.isEmpty() || serverCapabilities.contains(Capability.BLIND.name.lowercase())) {
SodiumUtilities.blindedKeyPair(publicKey, ed25519KeyPair)?.let { keyPair ->
- pubKey = SessionId(
+ pubKey = AccountId(
IdPrefix.BLINDED,
keyPair.publicKey.asBytes
).hexString
@@ -372,7 +367,7 @@ object OpenGroupApi {
) ?: return Promise.ofFail(Error.SigningFailed)
} ?: return Promise.ofFail(Error.SigningFailed)
} else {
- pubKey = SessionId(
+ pubKey = AccountId(
IdPrefix.UN_BLINDED,
ed25519KeyPair.publicKey.asBytes
).hexString
@@ -963,12 +958,12 @@ object OpenGroupApi {
}
}
- fun sendDirectMessage(message: String, blindedSessionId: String, server: String): Promise {
+ fun sendDirectMessage(message: String, blindedAccountId: String, server: String): Promise {
val request = Request(
verb = POST,
room = null,
server = server,
- endpoint = Endpoint.InboxFor(blindedSessionId),
+ endpoint = Endpoint.InboxFor(blindedAccountId),
parameters = mapOf("message" to message)
)
return getResponseBody(request).map { response ->
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt
index 8043da4b74..19c3b2b531 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageDecrypter.kt
@@ -6,7 +6,7 @@ import com.goterl.lazysodium.interfaces.Box
import com.goterl.lazysodium.interfaces.Sign
import org.session.libsession.messaging.MessagingModuleConfiguration
import org.session.libsession.messaging.sending_receiving.MessageReceiver.Error
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.messaging.utilities.SodiumUtilities.sodium
import org.session.libsignal.crypto.ecc.ECKeyPair
@@ -58,7 +58,7 @@ object MessageDecrypter {
val senderX25519PublicKey = ByteArray(Sign.CURVE25519_PUBLICKEYBYTES)
sodium.convertPublicKeyEd25519ToCurve25519(senderX25519PublicKey, senderED25519PublicKey)
- val id = SessionId(IdPrefix.STANDARD, senderX25519PublicKey)
+ val id = AccountId(IdPrefix.STANDARD, senderX25519PublicKey)
return Pair(plaintext, id.hexString)
}
@@ -104,7 +104,7 @@ object MessageDecrypter {
// Get the sender's X25519 public key
val senderX25519PublicKey = SodiumUtilities.toX25519(senderEdPublicKey) ?: throw Error.InvalidSignature
- val id = SessionId(IdPrefix.STANDARD, senderX25519PublicKey)
+ val id = AccountId(IdPrefix.STANDARD, senderX25519PublicKey)
return Pair(plaintext, id.hexString)
}
}
\ No newline at end of file
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageEncrypter.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageEncrypter.kt
index 361feff9e8..23d6d89e2a 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageEncrypter.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageEncrypter.kt
@@ -19,7 +19,7 @@ object MessageEncrypter {
* Encrypts `plaintext` using the Session protocol for `hexEncodedX25519PublicKey`.
*
* @param plaintext the plaintext to encrypt. Must already be padded.
- * @param recipientHexEncodedX25519PublicKey the X25519 public key to encrypt for. Could be the Session ID of a user, or the public key of a closed group.
+ * @param recipientHexEncodedX25519PublicKey the X25519 public key to encrypt for. Could be the Account ID of a user, or the public key of a closed group.
*
* @return the encrypted message.
*/
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt
index 8d9d69fb82..59755cf3c7 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt
@@ -13,7 +13,7 @@ import org.session.libsession.messaging.messages.control.SharedConfigurationMess
import org.session.libsession.messaging.messages.control.TypingIndicator
import org.session.libsession.messaging.messages.control.UnsendRequest
import org.session.libsession.messaging.messages.visible.VisibleMessage
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.snode.SnodeAPI
import org.session.libsignal.crypto.PushTransportDetails
@@ -147,7 +147,7 @@ object MessageReceiver {
SharedConfigurationMessage.fromProto(proto) ?:
VisibleMessage.fromProto(proto) ?: throw Error.UnknownMessage
- val isUserBlindedSender = sender == openGroupPublicKey?.let { SodiumUtilities.blindedKeyPair(it, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) }?.let { SessionId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString }
+ val isUserBlindedSender = sender == openGroupPublicKey?.let { SodiumUtilities.blindedKeyPair(it, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) }?.let { AccountId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString }
val isUserSender = sender == userPublicKey
if (isUserSender || isUserBlindedSender) {
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt
index 8081fe1d92..301648f97b 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt
@@ -24,7 +24,7 @@ import org.session.libsession.messaging.open_groups.OpenGroupApi
import org.session.libsession.messaging.open_groups.OpenGroupApi.Capability
import org.session.libsession.messaging.open_groups.OpenGroupMessage
import org.session.libsession.messaging.utilities.MessageWrapper
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.snode.RawResponsePromise
import org.session.libsession.snode.SnodeAPI
@@ -312,9 +312,9 @@ object MessageSender {
else -> {}
}
val messageSender = if (serverCapabilities.contains(Capability.BLIND.name.lowercase()) && blindedPublicKey != null) {
- SessionId(IdPrefix.BLINDED, blindedPublicKey!!).hexString
+ AccountId(IdPrefix.BLINDED, blindedPublicKey!!).hexString
} else {
- SessionId(IdPrefix.UN_BLINDED, userEdKeyPair.publicKey.asBytes).hexString
+ AccountId(IdPrefix.UN_BLINDED, userEdKeyPair.publicKey.asBytes).hexString
}
message.sender = messageSender
// Set the failure handler (need it here already for precondition failure handling)
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt
index dfd40f5025..7bc47931d6 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt
@@ -29,7 +29,7 @@ import org.session.libsession.messaging.sending_receiving.link_preview.LinkPrevi
import org.session.libsession.messaging.sending_receiving.notifications.PushRegistryV1
import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPollerV2
import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.messaging.utilities.WebRtcUtils
import org.session.libsession.snode.SnodeAPI
@@ -305,7 +305,7 @@ fun MessageReceiver.handleVisibleMessage(
val userBlindedKey = openGroupID?.let {
val openGroup = storage.getOpenGroup(threadID) ?: return@let null
val blindedKey = SodiumUtilities.blindedKeyPair(openGroup.publicKey, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!) ?: return@let null
- SessionId(
+ AccountId(
IdPrefix.BLINDED, blindedKey.publicKey.asBytes
).hexString
}
@@ -438,7 +438,7 @@ fun MessageReceiver.handleOpenGroupReactions(
val openGroup = storage.getOpenGroup(threadId)
val blindedPublicKey = openGroup?.publicKey?.let { serverPublicKey ->
SodiumUtilities.blindedKeyPair(serverPublicKey, MessagingModuleConfiguration.shared.getUserED25519KeyPair()!!)
- ?.let { SessionId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString }
+ ?.let { AccountId(IdPrefix.BLINDED, it.publicKey.asBytes).hexString }
}
for ((emoji, reaction) in reactions) {
val pendingUserReaction = OpenGroupApi.pendingReactions
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/SessionServiceAttachmentStream.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/SessionServiceAttachmentStream.kt
index 72966f908c..3da1161cb0 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/SessionServiceAttachmentStream.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/SessionServiceAttachmentStream.kt
@@ -72,4 +72,4 @@ class SessionServiceAttachmentStream(val inputStream: InputStream?, contentType:
return null
}
}
-}
\ No newline at end of file
+}
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/Models.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/Models.kt
index ea2492d5af..0efed74a13 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/Models.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/Models.kt
@@ -13,9 +13,9 @@ import kotlinx.serialization.Serializable
@Serializable
data class SubscriptionRequest(
- /** the 33-byte account being subscribed to; typically a session ID */
+ /** the 33-byte account being subscribed to; typically an account ID */
val pubkey: String,
- /** when the pubkey starts with 05 (i.e. a session ID) this is the ed25519 32-byte pubkey associated with the session ID */
+ /** when the pubkey starts with 05 (i.e. an account ID) this is the ed25519 32-byte pubkey associated with the account ID */
val session_ed25519: String?,
/** 32-byte swarm authentication subkey; omitted (or null) when not using subkey auth (new closed groups) */
val subkey_tag: String? = null,
@@ -38,9 +38,9 @@ data class SubscriptionRequest(
@Serializable
data class UnsubscriptionRequest(
- /** the 33-byte account being subscribed to; typically a session ID */
+ /** the 33-byte account being subscribed to; typically a account ID */
val pubkey: String,
- /** when the pubkey starts with 05 (i.e. a session ID) this is the ed25519 32-byte pubkey associated with the session ID */
+ /** when the pubkey starts with 05 (i.e. an account ID) this is the ed25519 32-byte pubkey associated with the account ID */
val session_ed25519: String?,
/** 32-byte swarm authentication subkey; omitted (or null) when not using subkey auth (new closed groups) */
val subkey_tag: String? = null,
@@ -90,7 +90,7 @@ interface Response {
@Serializable
data class PushNotificationMetadata(
- /** Account ID (such as Session ID or closed group ID) where the message arrived **/
+ /** Account ID (such as Account ID or closed group ID) where the message arrived **/
@SerialName("@")
val account: String,
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt
index b9baadcaba..c90623784f 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt
@@ -272,7 +272,7 @@ class OpenGroupPoller(private val server: String, private val executorService: S
serverPublicKey,
true
)
- val syncTarget = mapping.sessionId ?: it.recipient
+ val syncTarget = mapping.accountId ?: it.recipient
if (message is VisibleMessage) {
message.syncTarget = syncTarget
} else if (message is ExpirationTimerUpdate) {
diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt
index d05290a5fd..2b7c8159ea 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt
@@ -34,6 +34,8 @@ import java.util.Timer
import java.util.TimerTask
import kotlin.time.Duration.Companion.days
+private const val TAG = "Poller"
+
private class PromiseCanceledException : Exception("Promise canceled.")
class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Timer) {
@@ -52,16 +54,26 @@ class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Ti
// region Public API
fun startIfNeeded() {
if (hasStarted) { return }
- Log.d("Loki", "Started polling.")
+ Log.d(TAG, "Started polling.")
hasStarted = true
setUpPolling(retryInterval)
}
fun stopIfNeeded() {
- Log.d("Loki", "Stopped polling.")
+ Log.d(TAG, "Stopped polling.")
hasStarted = false
usedSnodes.clear()
}
+
+ fun retrieveUserProfile() {
+ Log.d(TAG, "Retrieving user profile.")
+ SnodeAPI.getSwarm(userPublicKey).bind {
+ usedSnodes.clear()
+ deferred().also {
+ pollNextSnode(userProfileOnly = true, it)
+ }.promise
+ }
+ }
// endregion
// region Private API
@@ -71,7 +83,7 @@ class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Ti
SnodeAPI.getSwarm(userPublicKey).bind {
usedSnodes.clear()
val deferred = deferred()
- pollNextSnode(deferred)
+ pollNextSnode(deferred = deferred)
deferred.promise
}.success {
val nextDelay = if (isCaughtUp) retryInterval else 0
@@ -90,21 +102,21 @@ class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Ti
}
}
- private fun pollNextSnode(deferred: Deferred) {
+ private fun pollNextSnode(userProfileOnly: Boolean = false, deferred: Deferred) {
val swarm = SnodeModule.shared.storage.getSwarm(userPublicKey) ?: setOf()
val unusedSnodes = swarm.subtract(usedSnodes)
if (unusedSnodes.isNotEmpty()) {
val index = SecureRandom().nextInt(unusedSnodes.size)
val nextSnode = unusedSnodes.elementAt(index)
usedSnodes.add(nextSnode)
- Log.d("Loki", "Polling $nextSnode.")
- poll(nextSnode, deferred).fail { exception ->
+ Log.d(TAG, "Polling $nextSnode.")
+ poll(userProfileOnly, nextSnode, deferred).fail { exception ->
if (exception is PromiseCanceledException) {
- Log.d("Loki", "Polling $nextSnode canceled.")
+ Log.d(TAG, "Polling $nextSnode canceled.")
} else {
- Log.d("Loki", "Polling $nextSnode failed; dropping it and switching to next snode.")
+ Log.d(TAG, "Polling $nextSnode failed; dropping it and switching to next snode.")
SnodeAPI.dropSnodeFromSwarmIfNeeded(nextSnode, userPublicKey)
- pollNextSnode(deferred)
+ pollNextSnode(userProfileOnly, deferred)
}
}
} else {
@@ -148,7 +160,7 @@ class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Ti
forConfigObject.merge(hash to body)
latestMessageTimestamp = if (timestamp > (latestMessageTimestamp ?: 0L)) { timestamp } else { latestMessageTimestamp }
} catch (e: Exception) {
- Log.e("Loki", e)
+ Log.e(TAG, e)
}
}
// process new results
@@ -158,6 +170,65 @@ class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Ti
}
}
+ private fun poll(userProfileOnly: Boolean, snode: Snode, deferred: Deferred): Promise {
+ if (userProfileOnly) {
+ return pollUserProfile(snode, deferred)
+ }
+ return poll(snode, deferred)
+ }
+
+ private fun pollUserProfile(snode: Snode, deferred: Deferred): Promise = task {
+ runBlocking(Dispatchers.IO) {
+ val requests = mutableListOf()
+ val hashesToExtend = mutableSetOf()
+ configFactory.user?.let { config ->
+ hashesToExtend += config.currentHashes()
+ SnodeAPI.buildAuthenticatedRetrieveBatchRequest(
+ snode, userPublicKey,
+ config.configNamespace(),
+ maxSize = -8
+ )
+ }?.let { request ->
+ requests += request
+ }
+
+ if (hashesToExtend.isNotEmpty()) {
+ SnodeAPI.buildAuthenticatedAlterTtlBatchRequest(
+ messageHashes = hashesToExtend.toList(),
+ publicKey = userPublicKey,
+ newExpiry = SnodeAPI.nowWithOffset + 14.days.inWholeMilliseconds,
+ extend = true
+ )?.let { extensionRequest ->
+ requests += extensionRequest
+ }
+ }
+
+ if (requests.isNotEmpty()) {
+ SnodeAPI.getRawBatchResponse(snode, userPublicKey, requests).bind { rawResponses ->
+ isCaughtUp = true
+ if (!deferred.promise.isDone()) {
+ val responseList = (rawResponses["results"] as List)
+ responseList.getOrNull(0)?.let { rawResponse ->
+ if (rawResponse["code"] as? Int != 200) {
+ Log.e(TAG, "Batch sub-request had non-200 response code, returned code ${(rawResponse["code"] as? Int) ?: "[unknown]"}")
+ } else {
+ val body = rawResponse["body"] as? RawResponse
+ if (body == null) {
+ Log.e(TAG, "Batch sub-request didn't contain a body")
+ } else {
+ processConfig(snode, body, configFactory.user!!.configNamespace(), configFactory.user)
+ }
+ }
+ }
+ }
+ Promise.ofSuccess(Unit)
+ }.fail {
+ Log.e(TAG, "Failed to get raw batch response", it)
+ }
+ }
+ }
+ }
+
private fun poll(snode: Snode, deferred: Deferred): Promise {
if (!hasStarted) { return Promise.ofFail(PromiseCanceledException()) }
return task {
@@ -196,67 +267,73 @@ class Poller(private val configFactory: ConfigFactoryProtocol, debounceTimer: Ti
}
}
- SnodeAPI.getRawBatchResponse(snode, userPublicKey, requests).bind { rawResponses ->
- isCaughtUp = true
- if (deferred.promise.isDone()) {
- return@bind Promise.ofSuccess(Unit)
- } else {
- val responseList = (rawResponses["results"] as List)
- // in case we had null configs, the array won't be fully populated
- // index of the sparse array key iterator should be the request index, with the key being the namespace
- listOfNotNull(
- configFactory.user?.configNamespace(),
- configFactory.contacts?.configNamespace(),
- configFactory.userGroups?.configNamespace(),
- configFactory.convoVolatile?.configNamespace()
- ).map {
- it to requestSparseArray.indexOfKey(it)
- }.filter { (_, i) -> i >= 0 }.forEach { (key, requestIndex) ->
- responseList.getOrNull(requestIndex)?.let { rawResponse ->
- if (rawResponse["code"] as? Int != 200) {
- Log.e("Loki", "Batch sub-request had non-200 response code, returned code ${(rawResponse["code"] as? Int) ?: "[unknown]"}")
- return@forEach
- }
- val body = rawResponse["body"] as? RawResponse
- if (body == null) {
- Log.e("Loki", "Batch sub-request didn't contain a body")
- return@forEach
- }
- if (key == Namespace.DEFAULT) {
- return@forEach // continue, skip default namespace
- } else {
- when (ConfigBase.kindFor(key)) {
- UserProfile::class.java -> processConfig(snode, body, key, configFactory.user)
- Contacts::class.java -> processConfig(snode, body, key, configFactory.contacts)
- ConversationVolatileConfig::class.java -> processConfig(snode, body, key, configFactory.convoVolatile)
- UserGroupsConfig::class.java -> processConfig(snode, body, key, configFactory.userGroups)
+ if (requests.isNotEmpty()) {
+ SnodeAPI.getRawBatchResponse(snode, userPublicKey, requests).bind { rawResponses ->
+ isCaughtUp = true
+ if (deferred.promise.isDone()) {
+ return@bind Promise.ofSuccess(Unit)
+ } else {
+ val responseList = (rawResponses["results"] as List)
+ // in case we had null configs, the array won't be fully populated
+ // index of the sparse array key iterator should be the request index, with the key being the namespace
+ listOfNotNull(
+ configFactory.user?.configNamespace(),
+ configFactory.contacts?.configNamespace(),
+ configFactory.userGroups?.configNamespace(),
+ configFactory.convoVolatile?.configNamespace()
+ ).map {
+ it to requestSparseArray.indexOfKey(it)
+ }.filter { (_, i) -> i >= 0 }.forEach { (key, requestIndex) ->
+ responseList.getOrNull(requestIndex)?.let { rawResponse ->
+ if (rawResponse["code"] as? Int != 200) {
+ Log.e(TAG, "Batch sub-request had non-200 response code, returned code ${(rawResponse["code"] as? Int) ?: "[unknown]"}")
+ return@forEach
}
- }
- }
- }
-
- // the first response will be the personal messages (we want these to be processed after config messages)
- val personalResponseIndex = requestSparseArray.indexOfKey(Namespace.DEFAULT)
- if (personalResponseIndex >= 0) {
- responseList.getOrNull(personalResponseIndex)?.let { rawResponse ->
- if (rawResponse["code"] as? Int != 200) {
- Log.e("Loki", "Batch sub-request for personal messages had non-200 response code, returned code ${(rawResponse["code"] as? Int) ?: "[unknown]"}")
- } else {
val body = rawResponse["body"] as? RawResponse
if (body == null) {
- Log.e("Loki", "Batch sub-request for personal messages didn't contain a body")
+ Log.e(TAG, "Batch sub-request didn't contain a body")
+ return@forEach
+ }
+ if (key == Namespace.DEFAULT) {
+ return@forEach // continue, skip default namespace
} else {
- processPersonalMessages(snode, body)
+ when (ConfigBase.kindFor(key)) {
+ UserProfile::class.java -> processConfig(snode, body, key, configFactory.user)
+ Contacts::class.java -> processConfig(snode, body, key, configFactory.contacts)
+ ConversationVolatileConfig::class.java -> processConfig(snode, body, key, configFactory.convoVolatile)
+ UserGroupsConfig::class.java -> processConfig(snode, body, key, configFactory.userGroups)
+ }
}
}
}
- }
+ // the first response will be the personal messages (we want these to be processed after config messages)
+ val personalResponseIndex = requestSparseArray.indexOfKey(Namespace.DEFAULT)
+ if (personalResponseIndex >= 0) {
+ responseList.getOrNull(personalResponseIndex)?.let { rawResponse ->
+ if (rawResponse["code"] as? Int != 200) {
+ Log.e(TAG, "Batch sub-request for personal messages had non-200 response code, returned code ${(rawResponse["code"] as? Int) ?: "[unknown]"}")
+ // If we got a non-success response then the snode might be bad so we should try rotate
+ // to a different one just in case
+ pollNextSnode(deferred = deferred)
+ return@bind Promise.ofSuccess(Unit)
+ } else {
+ val body = rawResponse["body"] as? RawResponse
+ if (body == null) {
+ Log.e(TAG, "Batch sub-request for personal messages didn't contain a body")
+ } else {
+ processPersonalMessages(snode, body)
+ }
+ }
+ }
+ }
+
+ poll(snode, deferred)
+ }
+ }.fail {
+ Log.e(TAG, "Failed to get raw batch response", it)
poll(snode, deferred)
}
- }.fail {
- Log.e("Loki", "Failed to get raw batch response", it)
- poll(snode, deferred)
}
}
}
diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/SodiumUtilities.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/SodiumUtilities.kt
index 38e6080950..f31ab49e57 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/utilities/SodiumUtilities.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/SodiumUtilities.kt
@@ -159,22 +159,22 @@ object SodiumUtilities {
} else null
}
- /* This method should be used to check if a users standard sessionId matches a blinded one */
- fun sessionId(
- standardSessionId: String,
- blindedSessionId: String,
+ /* This method should be used to check if a users standard accountId matches a blinded one */
+ fun accountId(
+ standardAccountId: String,
+ blindedAccountId: String,
serverPublicKey: String
): Boolean {
- // Only support generating blinded keys for standard session ids
- val sessionId = SessionId(standardSessionId)
- if (sessionId.prefix != IdPrefix.STANDARD) return false
- val blindedId = SessionId(blindedSessionId)
+ // Only support generating blinded keys for standard account ids
+ val accountId = AccountId(standardAccountId)
+ if (accountId.prefix != IdPrefix.STANDARD) return false
+ val blindedId = AccountId(blindedAccountId)
if (blindedId.prefix != IdPrefix.BLINDED) return false
val k = generateBlindingFactor(serverPublicKey) ?: return false
- // From the session id (ignoring 05 prefix) we have two possible ed25519 pubkeys;
+ // From the account id (ignoring 05 prefix) we have two possible ed25519 pubkeys;
// the first is the positive (which is what Signal's XEd25519 conversion always uses)
- val xEd25519Key = curve.convertToEd25519PublicKey(Key.fromHexString(sessionId.publicKey).asBytes)
+ val xEd25519Key = curve.convertToEd25519PublicKey(Key.fromHexString(accountId.publicKey).asBytes)
// Blind the positive public key
val pk1 = combineKeys(k, xEd25519Key) ?: return false
@@ -182,8 +182,8 @@ object SodiumUtilities {
// For the negative, what we're going to get out of the above is simply the negative of pk1, so flip the sign bit to get pk2
// pk2 = pk1[0:31] + bytes([pk1[31] ^ 0b1000_0000])
val pk2 = pk1.take(31).toByteArray() + listOf(pk1.last().xor(128.toByte())).toByteArray()
- return SessionId(IdPrefix.BLINDED, pk1).publicKey == blindedId.publicKey ||
- SessionId(IdPrefix.BLINDED, pk2).publicKey == blindedId.publicKey
+ return AccountId(IdPrefix.BLINDED, pk1).publicKey == blindedId.publicKey ||
+ AccountId(IdPrefix.BLINDED, pk2).publicKey == blindedId.publicKey
}
fun encrypt(message: ByteArray, secretKey: ByteArray, nonce: ByteArray, additionalData: ByteArray? = null): ByteArray? {
@@ -232,7 +232,7 @@ object SodiumUtilities {
}
-class SessionId {
+class AccountId {
var prefix: IdPrefix?
var publicKey: String
diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt
index 5533b236ed..7ba96c29b2 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt
@@ -20,7 +20,7 @@ import org.session.libsession.utilities.truncateIdForDisplay
object UpdateMessageBuilder {
val storage = MessagingModuleConfiguration.shared.storage
- private fun getSenderName(senderId: String) = storage.getContactWithSessionID(senderId)
+ private fun getSenderName(senderId: String) = storage.getContactWithAccountID(senderId)
?.displayName(Contact.ContactContext.REGULAR)
?: truncateIdForDisplay(senderId)
@@ -106,6 +106,6 @@ object UpdateMessageBuilder {
CALL_OUTGOING -> R.string.MessageRecord_called_s
CALL_MISSED, CALL_FIRST_MISSED -> R.string.MessageRecord_missed_call_from
}.let {
- context.getString(it, storage.getContactWithSessionID(sender)?.displayName(Contact.ContactContext.REGULAR) ?: sender)
+ context.getString(it, storage.getContactWithAccountID(sender)?.displayName(Contact.ContactContext.REGULAR) ?: sender)
}
}
diff --git a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt
index d2cfa2de35..0713065b2a 100644
--- a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt
+++ b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt
@@ -89,7 +89,7 @@ object SnodeAPI {
const val useTestnet = false
// Error
- internal sealed class Error(val description: String) : Exception(description) {
+ sealed class Error(val description: String) : Exception(description) {
object Generic : Error("An error occurred.")
object ClockOutOfSync : Error("Your clock is out of sync with the Service Node network.")
object NoKeyPair : Error("Missing user key pair.")
@@ -220,11 +220,11 @@ object SnodeAPI {
}
// Public API
- fun getSessionID(onsName: String): Promise {
+ fun getAccountID(onsName: String): Promise {
val deferred = deferred()
val promise = deferred.promise
val validationCount = 3
- val sessionIDByteCount = 33
+ val accountIDByteCount = 33
// Hash the ONS name using BLAKE2b
val onsName = onsName.toLowerCase(Locale.US)
val nameAsData = onsName.toByteArray()
@@ -234,7 +234,7 @@ object SnodeAPI {
return promise
}
val base64EncodedNameHash = Base64.encodeBytes(nameHash)
- // Ask 3 different snodes for the Session ID associated with the given name hash
+ // Ask 3 different snodes for the Account ID associated with the given name hash
val parameters = mapOf(
"endpoint" to "ons_resolve",
"params" to mapOf( "type" to 0, "name_hash" to base64EncodedNameHash )
@@ -247,7 +247,7 @@ object SnodeAPI {
}
}
all(promises).success { results ->
- val sessionIDs = mutableListOf()
+ val accountIDs = mutableListOf()
for (json in results) {
val intermediate = json["result"] as? Map<*, *>
val hexEncodedCiphertext = intermediate?.get("encrypted_value") as? String
@@ -259,18 +259,18 @@ object SnodeAPI {
val salt = ByteArray(PwHash.SALTBYTES)
val key: ByteArray
val nonce = ByteArray(SecretBox.NONCEBYTES)
- val sessionIDAsData = ByteArray(sessionIDByteCount)
+ val accountIDAsData = ByteArray(accountIDByteCount)
try {
key = Key.fromHexString(sodium.cryptoPwHash(onsName, SecretBox.KEYBYTES, salt, PwHash.OPSLIMIT_MODERATE, PwHash.MEMLIMIT_MODERATE, PwHash.Alg.PWHASH_ALG_ARGON2ID13)).asBytes
} catch (e: SodiumException) {
deferred.reject(Error.HashingFailed)
return@success
}
- if (!sodium.cryptoSecretBoxOpenEasy(sessionIDAsData, ciphertext, ciphertext.size.toLong(), nonce, key)) {
+ if (!sodium.cryptoSecretBoxOpenEasy(accountIDAsData, ciphertext, ciphertext.size.toLong(), nonce, key)) {
deferred.reject(Error.DecryptionFailed)
return@success
}
- sessionIDs.add(Hex.toStringCondensed(sessionIDAsData))
+ accountIDs.add(Hex.toStringCondensed(accountIDAsData))
} else {
val hexEncodedNonce = intermediate["nonce"] as? String
if (hexEncodedNonce == null) {
@@ -283,20 +283,20 @@ object SnodeAPI {
deferred.reject(Error.HashingFailed)
return@success
}
- val sessionIDAsData = ByteArray(sessionIDByteCount)
- if (!sodium.cryptoAeadXChaCha20Poly1305IetfDecrypt(sessionIDAsData, null, null, ciphertext, ciphertext.size.toLong(), null, 0, nonce, key)) {
+ val accountIDAsData = ByteArray(accountIDByteCount)
+ if (!sodium.cryptoAeadXChaCha20Poly1305IetfDecrypt(accountIDAsData, null, null, ciphertext, ciphertext.size.toLong(), null, 0, nonce, key)) {
deferred.reject(Error.DecryptionFailed)
return@success
}
- sessionIDs.add(Hex.toStringCondensed(sessionIDAsData))
+ accountIDs.add(Hex.toStringCondensed(accountIDAsData))
}
} else {
deferred.reject(Error.Generic)
return@success
}
}
- if (sessionIDs.size == validationCount && sessionIDs.toSet().size == 1) {
- deferred.resolve(sessionIDs.first())
+ if (accountIDs.size == validationCount && accountIDs.toSet().size == 1) {
+ deferred.resolve(accountIDs.first())
} else {
deferred.reject(Error.ValidationFailed)
}
@@ -520,7 +520,7 @@ object SnodeAPI {
Log.w("Loki", "response code was not 200")
handleSnodeError(
response["code"] as? Int ?: 0,
- response,
+ response["body"] as? Map<*, *>,
snode,
publicKey
)
diff --git a/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt b/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt
index 9c30aeb249..a4a762c54b 100644
--- a/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt
+++ b/libsession/src/main/java/org/session/libsession/utilities/GroupUtil.kt
@@ -1,7 +1,7 @@
package org.session.libsession.utilities
import org.session.libsession.messaging.open_groups.OpenGroup
-import org.session.libsession.messaging.utilities.SessionId
+import org.session.libsession.messaging.utilities.AccountId
import org.session.libsignal.messages.SignalServiceGroup
import org.session.libsignal.utilities.Hex
import java.io.IOException
@@ -17,9 +17,9 @@ object GroupUtil {
}
@JvmStatic
- fun getEncodedOpenGroupInboxID(openGroup: OpenGroup, sessionId: SessionId): Address {
+ fun getEncodedOpenGroupInboxID(openGroup: OpenGroup, accountId: AccountId): Address {
val openGroupInboxId =
- "${openGroup.server}!${openGroup.publicKey}!${sessionId.hexString}".toByteArray()
+ "${openGroup.server}!${openGroup.publicKey}!${accountId.hexString}".toByteArray()
return getEncodedOpenGroupInboxID(openGroupInboxId)
}
@@ -60,7 +60,7 @@ object GroupUtil {
}
@JvmStatic
- fun getDecodedOpenGroupInboxSessionId(groupID: String): String {
+ fun getDecodedOpenGroupInboxAccountId(groupID: String): String {
val decodedGroupId = getDecodedGroupID(groupID)
if (decodedGroupId.split("!").count() > 2) {
return decodedGroupId.split("!", limit = 3)[2]
@@ -112,7 +112,7 @@ object GroupUtil {
Hex.toStringCondensed(getDecodedGroupIDAsData(getDecodedGroupID(groupID)))
@JvmStatic
- fun addressToGroupSessionId(address: Address): String =
+ fun addressToGroupAccountId(address: Address): String =
doubleDecodeGroupId(address.toGroupString())
fun createConfigMemberMap(
diff --git a/libsession/src/main/java/org/session/libsession/utilities/SSKEnvironment.kt b/libsession/src/main/java/org/session/libsession/utilities/SSKEnvironment.kt
index 5915d5c4ee..488437b25c 100644
--- a/libsession/src/main/java/org/session/libsession/utilities/SSKEnvironment.kt
+++ b/libsession/src/main/java/org/session/libsession/utilities/SSKEnvironment.kt
@@ -32,7 +32,7 @@ class SSKEnvironment(
interface ProfileManagerProtocol {
companion object {
- const val NAME_PADDED_LENGTH = 64
+ const val NAME_PADDED_LENGTH = 100
}
fun setNickname(context: Context, recipient: Recipient, nickname: String?)
diff --git a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt
index af16d93f5a..12fdd4ceaf 100644
--- a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt
+++ b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt
@@ -18,10 +18,12 @@ import org.session.libsession.utilities.TextSecurePreferences.Companion.CALL_NOT
import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK
import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_LIGHT
import org.session.libsession.utilities.TextSecurePreferences.Companion.FOLLOW_SYSTEM_SETTINGS
+import org.session.libsession.utilities.TextSecurePreferences.Companion.HIDE_PASSWORD
import org.session.libsession.utilities.TextSecurePreferences.Companion.LAST_VACUUM_TIME
import org.session.libsession.utilities.TextSecurePreferences.Companion.LEGACY_PREF_KEY_SELECTED_UI_MODE
import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_DARK
import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_LIGHT
+import org.session.libsession.utilities.TextSecurePreferences.Companion.SELECTED_ACCENT_COLOR
import org.session.libsession.utilities.TextSecurePreferences.Companion.SELECTED_STYLE
import org.session.libsession.utilities.TextSecurePreferences.Companion.SHOWN_CALL_NOTIFICATION
import org.session.libsession.utilities.TextSecurePreferences.Companion.SHOWN_CALL_WARNING
@@ -30,6 +32,7 @@ import java.io.IOException
import java.util.Arrays
import java.util.Date
import javax.inject.Inject
+import javax.inject.Singleton
interface TextSecurePreferences {
@@ -115,8 +118,6 @@ interface TextSecurePreferences {
fun isPassphraseTimeoutEnabled(): Boolean
fun getPassphraseTimeoutInterval(): Int
fun getLanguage(): String?
- fun hasSeenWelcomeScreen(): Boolean
- fun setHasSeenWelcomeScreen(value: Boolean)
fun isNotificationsEnabled(): Boolean
fun getNotificationRingtone(): Uri
fun removeNotificationRingtone()
@@ -172,6 +173,7 @@ interface TextSecurePreferences {
fun setLastVacuumNow()
fun getFingerprintKeyGenerated(): Boolean
fun setFingerprintKeyGenerated()
+ fun getSelectedAccentColor(): String?
@StyleRes fun getAccentColorStyle(): Int?
fun setAccentColorStyle(@StyleRes newColorStyle: Int?)
fun getThemeStyle(): String
@@ -182,6 +184,8 @@ interface TextSecurePreferences {
fun hasForcedNewConfig(): Boolean
fun hasPreference(key: String): Boolean
fun clearAll()
+ fun getHidePassword(): Boolean
+ fun setHidePassword(value: Boolean)
companion object {
val TAG = TextSecurePreferences::class.simpleName
@@ -210,7 +214,6 @@ interface TextSecurePreferences {
const val THREAD_TRIM_ENABLED = "pref_trim_threads"
const val LOCAL_NUMBER_PREF = "pref_local_number"
const val REGISTERED_GCM_PREF = "pref_gcm_registered"
- const val SEEN_WELCOME_SCREEN_PREF = "pref_seen_welcome_screen"
const val UPDATE_APK_REFRESH_TIME_PREF = "pref_update_apk_refresh_time"
const val UPDATE_APK_DOWNLOAD_ID = "pref_update_apk_download_id"
const val UPDATE_APK_DIGEST = "pref_update_apk_digest"
@@ -283,6 +286,7 @@ interface TextSecurePreferences {
const val SELECTED_STYLE = "pref_selected_style" // classic_dark/light, ocean_dark/light
const val FOLLOW_SYSTEM_SETTINGS = "pref_follow_system" // follow system day/night
+ const val HIDE_PASSWORD = "pref_hide_password"
const val LEGACY_PREF_KEY_SELECTED_UI_MODE = "SELECTED_UI_MODE" // this will be cleared upon launching app, for users migrating to theming build
const val CLASSIC_DARK = "classic.dark"
@@ -700,15 +704,6 @@ interface TextSecurePreferences {
return getStringPreference(context, LANGUAGE_PREF, "zz")
}
- @JvmStatic
- fun hasSeenWelcomeScreen(context: Context): Boolean {
- return getBooleanPreference(context, SEEN_WELCOME_SCREEN_PREF, false)
- }
-
- fun setHasSeenWelcomeScreen(context: Context, value: Boolean) {
- setBooleanPreference(context, SEEN_WELCOME_SCREEN_PREF, value)
- }
-
@JvmStatic
fun isNotificationsEnabled(context: Context): Boolean {
return getBooleanPreference(context, NOTIFICATION_PREF, true)
@@ -981,34 +976,6 @@ interface TextSecurePreferences {
setBooleanPreference(context, FINGERPRINT_KEY_GENERATED, true)
}
- @JvmStatic @StyleRes
- fun getAccentColorStyle(context: Context): Int? {
- return when (getStringPreference(context, SELECTED_ACCENT_COLOR, ORANGE_ACCENT)) {
- GREEN_ACCENT -> R.style.PrimaryGreen
- BLUE_ACCENT -> R.style.PrimaryBlue
- PURPLE_ACCENT -> R.style.PrimaryPurple
- PINK_ACCENT -> R.style.PrimaryPink
- RED_ACCENT -> R.style.PrimaryRed
- ORANGE_ACCENT -> R.style.PrimaryOrange
- YELLOW_ACCENT -> R.style.PrimaryYellow
- else -> null
- }
- }
-
- @JvmStatic
- fun setAccentColorStyle(context: Context, @StyleRes newColor: Int?) {
- setStringPreference(context, SELECTED_ACCENT_COLOR, when (newColor) {
- R.style.PrimaryGreen -> GREEN_ACCENT
- R.style.PrimaryBlue -> BLUE_ACCENT
- R.style.PrimaryPurple -> PURPLE_ACCENT
- R.style.PrimaryPink -> PINK_ACCENT
- R.style.PrimaryRed -> RED_ACCENT
- R.style.PrimaryOrange -> ORANGE_ACCENT
- R.style.PrimaryYellow -> YELLOW_ACCENT
- else -> null
- })
- }
-
@JvmStatic
fun clearAll(context: Context) {
getDefaultSharedPreferences(context).edit().clear().commit()
@@ -1016,6 +983,7 @@ interface TextSecurePreferences {
}
}
+@Singleton
class AppTextSecurePreferences @Inject constructor(
@ApplicationContext private val context: Context
): TextSecurePreferences {
@@ -1361,14 +1329,6 @@ class AppTextSecurePreferences @Inject constructor(
return getStringPreference(TextSecurePreferences.LANGUAGE_PREF, "zz")
}
- override fun hasSeenWelcomeScreen(): Boolean {
- return getBooleanPreference(TextSecurePreferences.SEEN_WELCOME_SCREEN_PREF, false)
- }
-
- override fun setHasSeenWelcomeScreen(value: Boolean) {
- setBooleanPreference(TextSecurePreferences.SEEN_WELCOME_SCREEN_PREF, value)
- }
-
override fun isNotificationsEnabled(): Boolean {
return getBooleanPreference(TextSecurePreferences.NOTIFICATION_PREF, true)
}
@@ -1620,13 +1580,12 @@ class AppTextSecurePreferences @Inject constructor(
setBooleanPreference(TextSecurePreferences.FINGERPRINT_KEY_GENERATED, true)
}
+ override fun getSelectedAccentColor(): String? =
+ getStringPreference(SELECTED_ACCENT_COLOR, null)
+
@StyleRes
override fun getAccentColorStyle(): Int? {
- val prefColor = getStringPreference(
- TextSecurePreferences.SELECTED_ACCENT_COLOR,
- null
- )
- return when (prefColor) {
+ return when (getSelectedAccentColor()) {
TextSecurePreferences.GREEN_ACCENT -> R.style.PrimaryGreen
TextSecurePreferences.BLUE_ACCENT -> R.style.PrimaryBlue
TextSecurePreferences.PURPLE_ACCENT -> R.style.PrimaryPurple
@@ -1711,4 +1670,9 @@ class AppTextSecurePreferences @Inject constructor(
getDefaultSharedPreferences(context).edit().clear().commit()
}
-}
\ No newline at end of file
+ override fun getHidePassword() = getBooleanPreference(HIDE_PASSWORD, false)
+
+ override fun setHidePassword(value: Boolean) {
+ setBooleanPreference(HIDE_PASSWORD, value)
+ }
+}
diff --git a/libsession/src/main/java/org/session/libsession/utilities/Util.kt b/libsession/src/main/java/org/session/libsession/utilities/Util.kt
index 17009caa7d..6e254b9fab 100644
--- a/libsession/src/main/java/org/session/libsession/utilities/Util.kt
+++ b/libsession/src/main/java/org/session/libsession/utilities/Util.kt
@@ -22,6 +22,7 @@ import java.util.concurrent.CountDownLatch
import java.util.concurrent.ExecutorService
import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
+import kotlin.collections.LinkedHashMap
import kotlin.math.min
object Util {
@@ -369,17 +370,45 @@ object Util {
fun T.runIf(condition: Boolean, block: T.() -> R): R where T: R = if (condition) block() else this
+/**
+ * Returns a [Map] containing the elements from the given array indexed by the key
+ * returned from [keySelector] function applied to each element.
+ *
+ * If any two elements would have the same key returned by [keySelector] the last one gets added to the map.
+ *
+ * If any element is null or the key is null, it will not be added to the [Map].
+ *
+ * @see associateBy
+ */
fun Iterable.associateByNotNull(
keySelector: (T) -> K?
) = associateByNotNull(keySelector) { it }
-fun Iterable.associateByNotNull(
- keySelector: (T) -> K?,
- valueTransform: (T) -> V?,
-): Map = buildMap {
- for (item in this@associateByNotNull) {
- val key = keySelector(item) ?: continue
- val value = valueTransform(item) ?: continue
- this[key] = value
- }
+/**
+ * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector]
+ * functions applied to elements of the given collection.
+ *
+ * If any two elements would have the same key returned by [keySelector] the last one gets added to
+ * the map.
+ *
+ * If any element produces a null key or value it will not be added to the [Map].
+ *
+ * @see associateBy
+ */
+fun Iterable.associateByNotNull(
+ keySelector: (E) -> K?,
+ valueTransform: (E) -> V?,
+): Map = mutableMapOf().also {
+ for(e in this) { it[keySelector(e) ?: continue] = valueTransform(e) ?: continue }
+}
+
+/**
+ * Groups elements of the original collection by the key returned by the given [keySelector] function
+ * applied to each element and returns a map where each group key is associated with a list of
+ * corresponding elements, omitting elements with a null key.
+ *
+ * @see groupBy
+ */
+inline fun Iterable.groupByNotNull(keySelector: (E) -> K?): Map> = LinkedHashMap>().also {
+ forEach { e -> keySelector(e)?.let { k -> it.getOrPut(k) { mutableListOf() } += e } }
}
diff --git a/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java b/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java
index 0601f3c1e9..0aef158387 100644
--- a/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java
+++ b/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java
@@ -317,7 +317,7 @@ public class Recipient implements RecipientModifiedListener {
public synchronized @Nullable String getName() {
StorageProtocol storage = MessagingModuleConfiguration.getShared().getStorage();
- String sessionID = this.address.toString();
+ String accountID = this.address.toString();
if (isGroupRecipient()) {
if (this.name == null) {
List names = new LinkedList<>();
@@ -329,13 +329,13 @@ public class Recipient implements RecipientModifiedListener {
return this.name;
}
} else if (isOpenGroupInboxRecipient()){
- String inboxID = GroupUtil.getDecodedOpenGroupInboxSessionId(sessionID);
- Contact contact = storage.getContactWithSessionID(inboxID);
- if (contact == null) { return sessionID; }
+ String inboxID = GroupUtil.getDecodedOpenGroupInboxAccountId(accountID);
+ Contact contact = storage.getContactWithAccountID(inboxID);
+ if (contact == null) return accountID;
return contact.displayName(Contact.ContactContext.REGULAR);
} else {
- Contact contact = storage.getContactWithSessionID(sessionID);
- if (contact == null) { return null; }
+ Contact contact = storage.getContactWithAccountID(accountID);
+ if (contact == null) return null;
return contact.displayName(Contact.ContactContext.REGULAR);
}
}
@@ -511,11 +511,11 @@ public class Recipient implements RecipientModifiedListener {
public synchronized String toShortString() {
String name = getName();
if (name != null) return name;
- String sessionId = address.serialize();
- if (sessionId.length() < 4) return sessionId; // so substrings don't throw out of bounds exceptions
+ String accountId = address.serialize();
+ if (accountId.length() < 4) return accountId; // so substrings don't throw out of bounds exceptions
int takeAmount = 4;
- String start = sessionId.substring(0, takeAmount);
- String end = sessionId.substring(sessionId.length()-takeAmount);
+ String start = accountId.substring(0, takeAmount);
+ String end = accountId.substring(accountId.length()-takeAmount);
return start+"..."+end;
}
diff --git a/libsignal/src/main/java/org/session/libsignal/crypto/MnemonicCodec.kt b/libsignal/src/main/java/org/session/libsignal/crypto/MnemonicCodec.kt
index 73c86f321e..19a3207b3c 100644
--- a/libsignal/src/main/java/org/session/libsignal/crypto/MnemonicCodec.kt
+++ b/libsignal/src/main/java/org/session/libsignal/crypto/MnemonicCodec.kt
@@ -1,5 +1,7 @@
package org.session.libsignal.crypto
+import org.session.libsignal.utilities.Hex
+import org.session.libsignal.utilities.isHex
import java.util.zip.CRC32
/**
@@ -21,48 +23,34 @@ class MnemonicCodec(private val loadFileContents: (String) -> String) {
companion object {
internal val wordSetCache = mutableMapOf>()
- internal val truncatedWordSetCache = mutableMapOf>()
}
- internal fun loadWordSet(): List {
- val cachedResult = wordSetCache[this]
- if (cachedResult != null) {
- return cachedResult
- } else {
- val contents = loadFileContents(configuration.filename)
- val result = contents.split(",")
- wordSetCache[this] = result
- return result
- }
+ internal fun loadWordSet(): List = wordSetCache.getOrPut(this) {
+ loadFileContents(configuration.filename).split(",")
}
- internal fun loadTruncatedWordSet(): List {
- val cachedResult = wordSetCache[this]
- if (cachedResult != null) {
- return cachedResult
- } else {
- val prefixLength = configuration.prefixLength
- val result = loadWordSet().map { it.substring(0 until prefixLength) }
- truncatedWordSetCache[this] = result
- return result
- }
+ internal fun loadTruncatedWordSet(): List = wordSetCache.getOrPut(this) {
+ val prefixLength = configuration.prefixLength
+ loadWordSet().map { it.substring(0 until prefixLength) }
}
}
sealed class DecodingError(val description: String) : Exception(description) {
object Generic : DecodingError("Something went wrong. Please check your mnemonic and try again.")
object InputTooShort : DecodingError("Looks like you didn't enter enough words. Please check your mnemonic and try again.")
- object MissingLastWord : DecodingError("You seem to be missing the last word of your mnemonic. Please check what you entered and try again.")
object InvalidWord : DecodingError("There appears to be an invalid word in your mnemonic. Please check what you entered and try again.")
object VerificationFailed : DecodingError("Your mnemonic couldn't be verified. Please check what you entered and try again.")
}
+ /**
+ * Accepts a [hexEncodedString] and return s a mnemonic.
+ */
fun encode(hexEncodedString: String, languageConfiguration: Language.Configuration = Language.Configuration.english): String {
var string = hexEncodedString
val language = Language(loadFileContents, languageConfiguration)
val wordSet = language.loadWordSet()
val prefixLength = languageConfiguration.prefixLength
- val result = mutableListOf()
+
val n = wordSet.size.toLong()
val characterCount = string.length
for (chunkStartIndex in 0..(characterCount - 8) step 8) {
@@ -72,71 +60,90 @@ class MnemonicCodec(private val loadFileContents: (String) -> String) {
val p3 = string.substring(chunkEndIndex until characterCount)
string = p1 + p2 + p3
}
- for (chunkStartIndex in 0..(characterCount - 8) step 8) {
- val chunkEndIndex = chunkStartIndex + 8
- val x = string.substring(chunkStartIndex until chunkEndIndex).toLong(16)
+
+ return string.windowed(8, 8).map {
+ val x = it.toLong(16)
val w1 = x % n
val w2 = ((x / n) + w1) % n
val w3 = (((x / n) / n) + w2) % n
- result += listOf( wordSet[w1.toInt()], wordSet[w2.toInt()], wordSet[w3.toInt()] )
- }
- val checksumIndex = determineChecksumIndex(result, prefixLength)
- val checksumWord = result[checksumIndex]
- result.add(checksumWord)
- return result.joinToString(" ")
+ listOf(w1, w2, w3).map(Long::toInt).map { wordSet[it] }
+ }.flatten().let {
+ val checksumIndex = determineChecksumIndex(it, prefixLength)
+ it + it[checksumIndex]
+ }.joinToString(" ")
}
+ /**
+ * Accepts a [mnemonic] and returns a hexEncodedString
+ */
fun decode(mnemonic: String, languageConfiguration: Language.Configuration = Language.Configuration.english): String {
- val words = mnemonic.split(" ").toMutableList()
+ val words = mnemonic.split(" ")
val language = Language(loadFileContents, languageConfiguration)
val truncatedWordSet = language.loadTruncatedWordSet()
val prefixLength = languageConfiguration.prefixLength
- var result = ""
val n = truncatedWordSet.size.toLong()
+
// Check preconditions
- if (words.size < 12) { throw DecodingError.InputTooShort
- }
- if (words.size % 3 == 0) { throw DecodingError.MissingLastWord
- }
- // Get checksum word
- val checksumWord = words.removeAt(words.lastIndex)
- // Decode
- for (chunkStartIndex in 0..(words.size - 3) step 3) {
- try {
- val w1 = truncatedWordSet.indexOf(words[chunkStartIndex].substring(0 until prefixLength))
- val w2 = truncatedWordSet.indexOf(words[chunkStartIndex + 1].substring(0 until prefixLength))
- val w3 = truncatedWordSet.indexOf(words[chunkStartIndex + 2].substring(0 until prefixLength))
- val x = w1 + n * ((n - w1 + w2) % n) + n * n * ((n - w2 + w3) % n)
- if (x % n != w1.toLong()) { throw DecodingError.Generic
- }
- val string = "0000000" + x.toString(16)
- result += swap(string.substring(string.length - 8 until string.length))
- } catch (e: Exception) {
- throw DecodingError.InvalidWord
- }
- }
+ if (words.size < 13) throw DecodingError.InputTooShort
+
+ fun String.prefix() = substring(0 until prefixLength)
+
+ // Throw on invalid words, as this is the most difficult issue for a user to solve, do this first.
+ val wordPrefixes = words
+ .onEach { if (it.length < prefixLength) throw DecodingError.InvalidWord }
+ .map { it.prefix() }
+
+ val wordIndexes = wordPrefixes.map { truncatedWordSet.indexOf(it) }
+ .onEach { if (it < 0) throw DecodingError.InvalidWord }
+
// Verify checksum
- val checksumIndex = determineChecksumIndex(words, prefixLength)
+ val checksumIndex = determineChecksumIndex(words.dropLast(1), prefixLength)
val expectedChecksumWord = words[checksumIndex]
- if (expectedChecksumWord.substring(0 until prefixLength) != checksumWord.substring(0 until prefixLength)) { throw DecodingError.VerificationFailed
+ if (expectedChecksumWord.prefix() != wordPrefixes.last()) {
+ throw DecodingError.VerificationFailed
}
- // Return
- return result
+
+ // Decode
+ return wordIndexes.windowed(3, 3) { (w1, w2, w3) ->
+ val x = w1 + n * ((n - w1 + w2) % n) + n * n * ((n - w2 + w3) % n)
+ if (x % n != w1.toLong()) throw DecodingError.Generic
+ val string = "0000000" + x.toString(16)
+ swap(string.substring(string.length - 8 until string.length))
+ }.joinToString(separator = "") { it }
}
- private fun swap(x: String): String {
- val p1 = x.substring(6 until 8)
- val p2 = x.substring(4 until 6)
- val p3 = x.substring(2 until 4)
- val p4 = x.substring(0 until 2)
- return p1 + p2 + p3 + p4
- }
+ fun sanitizeAndDecodeAsByteArray(mnemonic: String): ByteArray = sanitizeRecoveryPhrase(mnemonic).let(::decode).let(Hex::fromStringCondensed)
- private fun determineChecksumIndex(x: List, prefixLength: Int): Int {
- val bytes = x.joinToString("") { it.substring(0 until prefixLength) }.toByteArray()
- val crc32 = CRC32()
- crc32.update(bytes)
- val checksum = crc32.value
- return (checksum % x.size.toLong()).toInt()
+ private fun sanitizeRecoveryPhrase(rawMnemonic: String): String = rawMnemonic
+ .replace("[^\\w]+".toRegex(), " ") // replace any sequence of non-word characters with a space
+ .trim() // remove leading and trailing whitespace (which may have been from prior special chars)
+ .split("\\s+".toRegex()) // split on the now properly positioned spaces
+ .joinToString(" ") // reassemble
+
+ fun decodeMnemonicOrHexAsByteArray(mnemonicOrHex: String): ByteArray = try {
+ // Try to use decode mnemonicOrHex as a mnemonic
+ decode(mnemonic = mnemonicOrHex).let(Hex::fromStringCondensed)
+ } catch (decodeException: Exception) {
+ // It's not a valid mnemonic, if it's pure-hexadecimal then we'll interpret it as a
+ // hexadecimal-byte encoded mnemonic... unless it's 66 chars or longer, then it could be
+ // an account id.
+ mnemonicOrHex.takeIf { it.length < 66 && it.isHex() }
+ .runCatching { Hex.fromStringCondensed(this) }
+ .getOrNull()
+ ?: throw decodeException
}
}
+
+private fun swap(x: String): String {
+ val p1 = x.substring(6 until 8)
+ val p2 = x.substring(4 until 6)
+ val p3 = x.substring(2 until 4)
+ val p4 = x.substring(0 until 2)
+ return p1 + p2 + p3 + p4
+}
+
+private fun determineChecksumIndex(x: List, prefixLength: Int): Int {
+ val bytes = x.joinToString("") { it.substring(0 until prefixLength) }.toByteArray()
+ val checksum = CRC32().apply { update(bytes) }.value
+ return (checksum % x.size.toLong()).toInt()
+}
diff --git a/libsignal/src/main/java/org/session/libsignal/utilities/Hex.kt b/libsignal/src/main/java/org/session/libsignal/utilities/Hex.kt
new file mode 100644
index 0000000000..661f089068
--- /dev/null
+++ b/libsignal/src/main/java/org/session/libsignal/utilities/Hex.kt
@@ -0,0 +1,9 @@
+package org.session.libsignal.utilities
+
+private val HEX_CHARS = buildSet {
+ addAll('0'..'9')
+ addAll('a'..'f')
+ addAll('A'..'F')
+}
+
+fun String.isHex() = all { it in HEX_CHARS }
diff --git a/libsignal/src/main/java/org/session/libsignal/utilities/IdPrefix.kt b/libsignal/src/main/java/org/session/libsignal/utilities/IdPrefix.kt
index 26c62ba50d..a5665cd4fc 100644
--- a/libsignal/src/main/java/org/session/libsignal/utilities/IdPrefix.kt
+++ b/libsignal/src/main/java/org/session/libsignal/utilities/IdPrefix.kt
@@ -1,7 +1,7 @@
package org.session.libsignal.utilities
enum class IdPrefix(val value: String) {
- STANDARD("05"), BLINDED("15"), UN_BLINDED("00"), BLINDEDV2("25");
+ STANDARD("05"), BLINDED("15"), UN_BLINDED("00"), BLINDEDV2("25"), GROUP("03");
fun isBlinded() = value == BLINDED.value || value == BLINDEDV2.value
@@ -11,6 +11,7 @@ enum class IdPrefix(val value: String) {
BLINDED.value -> BLINDED
BLINDEDV2.value -> BLINDEDV2
UN_BLINDED.value -> UN_BLINDED
+ GROUP.value -> GROUP
else -> null
}
}
diff --git a/libsignal/src/main/java/org/session/libsignal/utilities/Validation.kt b/libsignal/src/main/java/org/session/libsignal/utilities/Validation.kt
index a9d38956bb..fdf9bd386f 100644
--- a/libsignal/src/main/java/org/session/libsignal/utilities/Validation.kt
+++ b/libsignal/src/main/java/org/session/libsignal/utilities/Validation.kt
@@ -1,18 +1,11 @@
package org.session.libsignal.utilities
object PublicKeyValidation {
+ private val HEX_CHARACTERS = "0123456789ABCDEFabcdef".toSet()
+ private val INVALID_PREFIXES = setOf(IdPrefix.GROUP, IdPrefix.BLINDED, IdPrefix.BLINDEDV2)
- @JvmStatic
- fun isValid(candidate: String): Boolean {
- return isValid(candidate, 66, true)
- }
-
- @JvmStatic
- fun isValid(candidate: String, expectedLength: Int, isPrefixRequired: Boolean): Boolean {
- val hexCharacters = "0123456789ABCDEF".toSet()
- val isValidHexEncoding = hexCharacters.containsAll(candidate.uppercase().toSet())
- val hasValidLength = candidate.length == expectedLength
- val hasValidPrefix = if (isPrefixRequired) IdPrefix.fromValue(candidate) != null else true
- return isValidHexEncoding && hasValidLength && hasValidPrefix
- }
+ fun isValid(candidate: String, isPrefixRequired: Boolean = true): Boolean = hasValidLength(candidate) && isValidHexEncoding(candidate) && (!isPrefixRequired || IdPrefix.fromValue(candidate) != null)
+ fun hasValidPrefix(candidate: String) = IdPrefix.fromValue(candidate) !in INVALID_PREFIXES
+ private fun hasValidLength(candidate: String) = candidate.length == 66
+ private fun isValidHexEncoding(candidate: String) = HEX_CHARACTERS.containsAll(candidate.toSet())
}