Compare commits
13 Commits
v5.0.0-bet
...
_archived-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
061d2c25ed | ||
|
|
4d700d113d | ||
|
|
17bdd2a1d2 | ||
|
|
80a68012a2 | ||
|
|
3742906f75 | ||
|
|
ae90edcdb5 | ||
|
|
9e76aadb0f | ||
|
|
043544d7ec | ||
|
|
2bf7d1dddc | ||
|
|
e1741118ce | ||
|
|
58fb3f7f2d | ||
|
|
48e92a7e9b | ||
|
|
5bf16da09d |
@@ -48,7 +48,7 @@
|
||||
|
||||
## Join user groups
|
||||
|
||||
You can join an English-speaking users group if you want to ask any questions: [#SimpleX-Group-2](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FQP8zaGjjmlXV-ix_Er4JgJ0lNPYGS1KX%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEApAgBkRZ3x12ayZ7sHrjHQWNMvqzZpWUgM_fFCUdLXwo%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22xWpPXEZZsQp_F7vwAcAYDw%3D%3D%22%7D)
|
||||
You can join an English-speaking users group if you want to ask any questions: [#SimpleX-Group-3](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FeDEgekVhh0zIBYvUupGWZ96kiBEMbXwK%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAS7Z3zQyOhZ9o1qzI9OTZRySpkFTagdLMa6Rc7opuNh4%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22cG3W1qxZGzyrvHTugx16bg%3D%3D%22%7D)
|
||||
|
||||
There are groups in other languages, that we have the apps interface translated into. These groups are for testing, and asking questions to other SimpleX Chat users:
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package chat.simplex.app
|
||||
|
||||
import SectionItemView
|
||||
import android.app.Application
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
@@ -21,7 +20,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
@@ -584,14 +582,23 @@ fun processExternalIntent(intent: Intent?, chatModel: ChatModel) {
|
||||
chatModel.chatId.value = null
|
||||
chatModel.clearOverlays.value = true
|
||||
when {
|
||||
"text/plain" == intent.type -> intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
|
||||
chatModel.sharedContent.value = SharedContent.Text(it)
|
||||
intent.type == "text/plain" -> {
|
||||
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
|
||||
if (text != null) {
|
||||
chatModel.sharedContent.value = SharedContent.Text(text)
|
||||
}
|
||||
}
|
||||
intent.type?.startsWith("image/") == true -> (intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri)?.let {
|
||||
chatModel.sharedContent.value = SharedContent.Images(intent.getStringExtra(Intent.EXTRA_TEXT) ?: "", listOf(it))
|
||||
} // All other mime types
|
||||
else -> (intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri)?.let {
|
||||
chatModel.sharedContent.value = SharedContent.File(intent.getStringExtra(Intent.EXTRA_TEXT) ?: "", it)
|
||||
isMediaIntent(intent) -> {
|
||||
val uri = intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri
|
||||
if (uri != null) {
|
||||
chatModel.sharedContent.value = SharedContent.Media(intent.getStringExtra(Intent.EXTRA_TEXT) ?: "", listOf(uri))
|
||||
} // All other mime types
|
||||
}
|
||||
else -> {
|
||||
val uri = intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri
|
||||
if (uri != null) {
|
||||
chatModel.sharedContent.value = SharedContent.File(intent.getStringExtra(Intent.EXTRA_TEXT) ?: "", uri)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -599,16 +606,23 @@ fun processExternalIntent(intent: Intent?, chatModel: ChatModel) {
|
||||
// Close active chat and show a list of chats
|
||||
chatModel.chatId.value = null
|
||||
chatModel.clearOverlays.value = true
|
||||
Log.e(TAG, "ACTION_SEND_MULTIPLE ${intent.type}")
|
||||
when {
|
||||
intent.type?.startsWith("image/") == true -> (intent.getParcelableArrayListExtra<Parcelable>(Intent.EXTRA_STREAM) as? List<Uri>)?.let {
|
||||
chatModel.sharedContent.value = SharedContent.Images(intent.getStringExtra(Intent.EXTRA_TEXT) ?: "", it)
|
||||
} // All other mime types
|
||||
isMediaIntent(intent) -> {
|
||||
val uris = intent.getParcelableArrayListExtra<Parcelable>(Intent.EXTRA_STREAM) as? List<Uri>
|
||||
if (uris != null) {
|
||||
chatModel.sharedContent.value = SharedContent.Media(intent.getStringExtra(Intent.EXTRA_TEXT) ?: "", uris)
|
||||
} // All other mime types
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun isMediaIntent(intent: Intent): Boolean =
|
||||
intent.type?.startsWith("image/") == true || intent.type?.startsWith("video/") == true
|
||||
|
||||
fun connectIfOpenedViaUri(uri: Uri, chatModel: ChatModel) {
|
||||
Log.d(TAG, "connectIfOpenedViaUri: opened via link")
|
||||
if (chatModel.currentUser.value == null) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package chat.simplex.app.views
|
||||
import androidx.compose.foundation.*
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.BasicTextField
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material.MaterialTheme.colors
|
||||
@@ -15,6 +16,7 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.focus.*
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.SolidColor
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
@@ -33,7 +35,6 @@ import chat.simplex.app.views.onboarding.ReadableText
|
||||
import com.google.accompanist.insets.navigationBarsWithImePadding
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
fun isValidDisplayName(name: String) : Boolean {
|
||||
return (name.firstOrNull { it.isWhitespace() }) == null && !name.startsWith("@") && !name.startsWith("#")
|
||||
@@ -90,7 +91,7 @@ fun CreateProfilePanel(chatModel: ChatModel, close: () -> Unit) {
|
||||
text = stringResource(R.string.about_simplex),
|
||||
icon = Icons.Outlined.ArrowBackIosNew,
|
||||
textDecoration = TextDecoration.None,
|
||||
fontWeight = FontWeight.Bold
|
||||
fontWeight = FontWeight.Medium
|
||||
) { chatModel.onboardingStage.value = OnboardingStage.Step1_SimpleXInfo }
|
||||
}
|
||||
Spacer(Modifier.fillMaxWidth().weight(1f))
|
||||
@@ -157,33 +158,29 @@ fun ProfileNameField(name: MutableState<String>, placeholder: String = "", isVal
|
||||
}
|
||||
val modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(55.dp)
|
||||
.border(border = BorderStroke(1.dp, strokeColor), shape = RoundedCornerShape(50))
|
||||
.padding(horizontal = 8.dp)
|
||||
.padding(horizontal = DEFAULT_PADDING)
|
||||
.navigationBarsWithImePadding()
|
||||
.onFocusChanged { focused = it.isFocused }
|
||||
TextField(
|
||||
value = name.value,
|
||||
onValueChange = { name.value = it },
|
||||
modifier = if (focusRequester == null) modifier else modifier.focusRequester(focusRequester),
|
||||
textStyle = TextStyle(fontSize = 18.sp, color = colors.onBackground),
|
||||
keyboardOptions = KeyboardOptions(
|
||||
capitalization = KeyboardCapitalization.None,
|
||||
autoCorrect = false
|
||||
),
|
||||
singleLine = true,
|
||||
isError = !valid,
|
||||
placeholder = { Text(placeholder, fontSize = 18.sp, color = HighOrLowlight.copy(alpha = 0.3f)) },
|
||||
shape = RoundedCornerShape(50),
|
||||
colors = TextFieldDefaults.textFieldColors(
|
||||
backgroundColor = Color.Unspecified,
|
||||
textColor = MaterialTheme.colors.onBackground,
|
||||
focusedIndicatorColor = Color.Unspecified,
|
||||
unfocusedIndicatorColor = Color.Unspecified,
|
||||
cursorColor = HighOrLowlight,
|
||||
errorIndicatorColor = Color.Unspecified
|
||||
)
|
||||
Box(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.height(52.dp)
|
||||
.border(border = BorderStroke(1.dp, strokeColor), shape = RoundedCornerShape(50)),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
BasicTextField(
|
||||
value = name.value,
|
||||
onValueChange = { name.value = it },
|
||||
modifier = if (focusRequester == null) modifier else modifier.focusRequester(focusRequester),
|
||||
textStyle = TextStyle(fontSize = 18.sp, color = colors.onBackground),
|
||||
keyboardOptions = KeyboardOptions(
|
||||
capitalization = KeyboardCapitalization.None,
|
||||
autoCorrect = false
|
||||
),
|
||||
singleLine = true,
|
||||
cursorBrush = SolidColor(HighOrLowlight)
|
||||
)
|
||||
}
|
||||
LaunchedEffect(Unit) {
|
||||
snapshotFlow { name.value }
|
||||
.distinctUntilChanged()
|
||||
|
||||
@@ -667,7 +667,7 @@ fun ComposeView(
|
||||
|
||||
when (val shared = chatModel.sharedContent.value) {
|
||||
is SharedContent.Text -> onMessageChange(shared.text)
|
||||
is SharedContent.Images -> processPickedMedia(shared.uris, shared.text)
|
||||
is SharedContent.Media -> processPickedMedia(shared.uris, shared.text)
|
||||
is SharedContent.File -> processPickedFile(shared.uri, shared.text)
|
||||
null -> {}
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ private fun NativeKeyboard(
|
||||
} catch (e: Exception) {
|
||||
return@OnCommitContentListener false
|
||||
}
|
||||
SimplexApp.context.chatModel.sharedContent.value = SharedContent.Images("", listOf(inputContentInfo.contentUri))
|
||||
SimplexApp.context.chatModel.sharedContent.value = SharedContent.Media("", listOf(inputContentInfo.contentUri))
|
||||
true
|
||||
}
|
||||
return InputConnectionCompat.createWrapper(connection, editorInfo, onCommit)
|
||||
|
||||
@@ -114,7 +114,7 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState
|
||||
Text(
|
||||
when (chatModel.sharedContent.value) {
|
||||
is SharedContent.Text -> stringResource(R.string.share_message)
|
||||
is SharedContent.Images -> stringResource(R.string.share_image)
|
||||
is SharedContent.Media -> stringResource(R.string.share_image)
|
||||
is SharedContent.File -> stringResource(R.string.share_file)
|
||||
else -> stringResource(R.string.share_message)
|
||||
},
|
||||
|
||||
@@ -160,7 +160,7 @@ fun DatabaseLayout(
|
||||
AppBarTitle(stringResource(R.string.your_chat_database))
|
||||
|
||||
SectionView(stringResource(R.string.messages_section_title).uppercase()) {
|
||||
SectionItemView { TtlOptions(chatItemTTL, enabled = rememberUpdatedState(!progressIndicator && !chatDbChanged), onChatItemTTLSelected) }
|
||||
SectionItemView { TtlOptions(chatItemTTL, enabled = rememberUpdatedState(!stopped && !progressIndicator), onChatItemTTLSelected) }
|
||||
}
|
||||
SectionTextFooter(
|
||||
remember(currentUser?.displayName) {
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package chat.simplex.app.views.helpers
|
||||
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.outlined.*
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.focus.onFocusChanged
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.simplex.app.R
|
||||
@@ -38,19 +42,19 @@ fun ChooseAttachmentView(
|
||||
.padding(horizontal = 8.dp, vertical = 30.dp),
|
||||
horizontalArrangement = Arrangement.SpaceEvenly
|
||||
) {
|
||||
ActionButton(null, stringResource(R.string.use_camera_button), icon = Icons.Outlined.PhotoCamera) {
|
||||
ActionButton(Modifier.fillMaxWidth(0.25f), null, stringResource(R.string.use_camera_button), icon = painterResource(R.drawable.ic_camera_enhance)) {
|
||||
attachmentOption.value = AttachmentOption.CameraPhoto
|
||||
hide()
|
||||
}
|
||||
ActionButton(null, stringResource(R.string.gallery_image_button), icon = Icons.Outlined.Image) {
|
||||
ActionButton(Modifier.fillMaxWidth(0.33f), null, stringResource(R.string.gallery_image_button), icon = painterResource(R.drawable.ic_add_photo)) {
|
||||
attachmentOption.value = AttachmentOption.GalleryImage
|
||||
hide()
|
||||
}
|
||||
ActionButton(null, stringResource(R.string.gallery_video_button), icon = Icons.Outlined.SmartDisplay) {
|
||||
ActionButton(Modifier.fillMaxWidth(0.50f), null, stringResource(R.string.gallery_video_button), icon = painterResource(R.drawable.ic_smart_display)) {
|
||||
attachmentOption.value = AttachmentOption.GalleryVideo
|
||||
hide()
|
||||
}
|
||||
ActionButton(null, stringResource(R.string.choose_file), icon = Icons.Outlined.InsertDriveFile) {
|
||||
ActionButton(Modifier.fillMaxWidth(1f), null, stringResource(R.string.choose_file), icon = painterResource(R.drawable.ic_note_add)) {
|
||||
attachmentOption.value = AttachmentOption.File
|
||||
hide()
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
sealed class SharedContent {
|
||||
data class Text(val text: String): SharedContent()
|
||||
data class Images(val text: String, val uris: List<Uri>): SharedContent()
|
||||
data class Media(val text: String, val uris: List<Uri>): SharedContent()
|
||||
data class File(val text: String, val uri: Uri): SharedContent()
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.drawBehind
|
||||
import androidx.compose.ui.graphics.*
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.platform.*
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@@ -211,6 +212,52 @@ fun ActionButton(
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ActionButton(
|
||||
modifier: Modifier,
|
||||
text: String?,
|
||||
comment: String?,
|
||||
icon: Painter,
|
||||
tint: Color = MaterialTheme.colors.primary,
|
||||
disabled: Boolean = false,
|
||||
click: () -> Unit = {}
|
||||
) {
|
||||
Surface(modifier, shape = RoundedCornerShape(18.dp)) {
|
||||
Column(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.clickable(onClick = click)
|
||||
.padding(8.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
val tint = if (disabled) HighOrLowlight else tint
|
||||
Icon(
|
||||
icon, text,
|
||||
tint = tint,
|
||||
modifier = Modifier
|
||||
.size(40.dp)
|
||||
.padding(bottom = 8.dp)
|
||||
)
|
||||
if (text != null) {
|
||||
Text(
|
||||
text,
|
||||
textAlign = TextAlign.Center,
|
||||
fontWeight = FontWeight.Bold,
|
||||
color = tint,
|
||||
modifier = Modifier.padding(bottom = 4.dp)
|
||||
)
|
||||
}
|
||||
if (comment != null) {
|
||||
Text(
|
||||
comment,
|
||||
textAlign = TextAlign.Center,
|
||||
style = MaterialTheme.typography.body2
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewNewChatSheet() {
|
||||
|
||||
@@ -26,7 +26,10 @@ import chat.simplex.app.views.usersettings.changeNotificationsMode
|
||||
@Composable
|
||||
fun SetNotificationsMode(m: ChatModel) {
|
||||
Column(
|
||||
modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.verticalScroll(rememberScrollState())
|
||||
.padding(vertical = 14.dp)
|
||||
) {
|
||||
//CloseSheetBar(null)
|
||||
AppBarTitleCentered(stringResource(R.string.onboarding_notifications_mode_title))
|
||||
@@ -55,13 +58,13 @@ private fun NotificationButton(currentMode: MutableState<NotificationsMode>, mod
|
||||
border = BorderStroke(1.dp, color = if (currentMode.value == mode) MaterialTheme.colors.primary else HighOrLowlight.copy(alpha = 0.5f)),
|
||||
shape = RoundedCornerShape(35.dp),
|
||||
) {
|
||||
Column(Modifier.padding(14.dp)) {
|
||||
Column(Modifier.padding(horizontal = 14.dp).padding(top = 4.dp, bottom = 8.dp)) {
|
||||
Text(
|
||||
stringResource(title),
|
||||
style = MaterialTheme.typography.h2,
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = if (currentMode.value == mode) MaterialTheme.colors.primary else HighOrLowlight,
|
||||
modifier = Modifier.padding(bottom = 14.dp).align(Alignment.CenterHorizontally),
|
||||
modifier = Modifier.padding(bottom = 8.dp).align(Alignment.CenterHorizontally),
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
Text(annotatedStringResource(description),
|
||||
|
||||
@@ -103,13 +103,7 @@ fun UserProfileLayout(
|
||||
horizontalAlignment = Alignment.Start
|
||||
) {
|
||||
AppBarTitleCentered(stringResource(R.string.your_current_profile))
|
||||
val text = remember {
|
||||
var t = generalGetString(R.string.your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it)
|
||||
val index = t.indexOfFirst { it == '\n' }
|
||||
if (index != -1) t = t.removeRange(index..index + 2)
|
||||
t
|
||||
}
|
||||
ReadableText(text, TextAlign.Center)
|
||||
ReadableText(generalGetString(R.string.your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it), TextAlign.Center)
|
||||
Column(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
|
||||
@@ -45,6 +45,7 @@ fun UserProfilesView(m: ChatModel, search: MutableState<String>, profileHidden:
|
||||
searchTextOrPassword = searchTextOrPassword,
|
||||
showHiddenProfilesNotice = m.controller.appPrefs.showHiddenProfilesNotice,
|
||||
visibleUsersCount = visibleUsersCount(m),
|
||||
prefPerformLA = m.controller.appPrefs.performLA.get(),
|
||||
addUser = {
|
||||
ModalManager.shared.showModalCloseable { close ->
|
||||
CreateProfile(m, close)
|
||||
@@ -142,6 +143,7 @@ private fun UserProfilesView(
|
||||
searchTextOrPassword: MutableState<String>,
|
||||
profileHidden: MutableState<Boolean>,
|
||||
visibleUsersCount: Int,
|
||||
prefPerformLA: Boolean,
|
||||
showHiddenProfilesNotice: SharedPreference<Boolean>,
|
||||
addUser: () -> Unit,
|
||||
activateUser: (User) -> Unit,
|
||||
@@ -170,7 +172,7 @@ private fun UserProfilesView(
|
||||
|
||||
SectionView {
|
||||
for (user in filteredUsers) {
|
||||
UserView(user, users, visibleUsersCount, activateUser, removeUser, unhideUser, muteUser, unmuteUser, showHiddenProfile)
|
||||
UserView(user, users, visibleUsersCount, prefPerformLA, activateUser, removeUser, unhideUser, muteUser, unmuteUser, showHiddenProfile)
|
||||
SectionDivider()
|
||||
}
|
||||
if (searchTextOrPassword.value.trim().isEmpty()) {
|
||||
@@ -203,6 +205,7 @@ private fun UserView(
|
||||
user: User,
|
||||
users: List<User>,
|
||||
visibleUsersCount: Int,
|
||||
prefPerformLA: Boolean,
|
||||
activateUser: (User) -> Unit,
|
||||
removeUser: (User) -> Unit,
|
||||
unhideUser: (User) -> Unit,
|
||||
@@ -222,7 +225,7 @@ private fun UserView(
|
||||
unhideUser(user)
|
||||
})
|
||||
} else {
|
||||
if (visibleUsersCount > 1) {
|
||||
if (visibleUsersCount > 1 && prefPerformLA) {
|
||||
ItemAction(stringResource(R.string.user_hide), Icons.Outlined.Lock, onClick = {
|
||||
showMenu.value = false
|
||||
showHiddenProfile(user)
|
||||
|
||||
9
apps/android/app/src/main/res/drawable/ic_add_photo.xml
Normal file
9
apps/android/app/src/main/res/drawable/ic_add_photo.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M181.5,835q-22.97,0 -40.23,-17.27Q124,800.47 124,777.5L124,182q0,-22.97 17.27,-40.23Q158.53,124.5 181.5,124.5L561,124.5q12.25,0 20.63,8.46T590,153.18q0,12.32 -8.38,20.58T561,182L181.5,182v595.5L777,777.5L777,399q0,-12.25 8.43,-20.63 8.43,-8.38 20.5,-8.38 12.07,0 20.33,8.38T834.5,399v378.5q0,22.97 -17.27,40.23Q799.97,835 777,835L181.5,835ZM727.83,341.5q-12.32,0 -20.58,-8.38T699,312.5L699,261h-51.5q-12.25,0 -20.63,-8.43 -8.38,-8.43 -8.38,-20.5 0,-12.07 8.38,-20.33t20.63,-8.25L699,203.5v-52q0,-11.68 8.43,-20.09 8.43,-8.41 20.5,-8.41 12.07,0 20.33,8.41 8.25,8.41 8.25,20.09v52h52q11.68,0 20.09,8.46Q837,220.43 837,232.17q0,12.32 -8.41,20.58Q820.17,261 808.5,261h-52v51.5q0,12.25 -8.46,20.63t-20.21,8.38ZM273,676.5h413.17q9.82,0 13.82,-7.75T698,653L585.58,503.6q-4.7,-6.1 -11.46,-6.1 -6.76,0 -11.61,6L448,653.5l-81.46,-106.39q-4.69,-5.61 -11.5,-5.61 -6.81,0 -11.72,5.58L261.57,653.02q-5.07,7.98 -0.95,15.73T273,676.5ZM181.5,399v378.5L181.5,182v217Z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M480.03,697Q551,697 602.75,645.94t51.75,-122.5Q654.5,452 602.72,400q-51.78,-52 -122.75,-52Q408,348 356.75,400.06t-51.25,123.5Q305.5,595 356.78,646q51.28,51 123.25,51ZM435.5,482.5l31,-71.42Q470,402.5 480,403t13.5,9.08l30.16,70.42 65.92,27.58q9.42,4.16 9.42,13.79t-9.42,13.05L523.5,564l-30,69.92Q490,643 480,643.5t-13.5,-8.58L435.5,564l-65.58,-27.08Q360,533.5 360,523.87t9.92,-13.79L435.5,482.5ZM142.5,835.5q-22.97,0 -40.23,-17.27Q85,800.97 85,778L85,268.5q0,-21.97 17.27,-39.73Q119.53,211 142.5,211h147l54.91,-66.5q7.59,-10 19.11,-15 11.52,-5 24.98,-5h183q13.47,0 24.98,5 11.52,5 19.52,15l54.5,66.5h147q21.97,0 39.73,17.77Q875,246.53 875,268.5L875,778q0,22.97 -17.77,40.23Q839.47,835.5 817.5,835.5h-675ZM817.5,778L817.5,268.5h-675L142.5,778h675ZM480,522.5Z"/>
|
||||
</vector>
|
||||
9
apps/android/app/src/main/res/drawable/ic_draft.xml
Normal file
9
apps/android/app/src/main/res/drawable/ic_draft.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M255.69,838.85q-22.26,0 -38.46,-16.2 -16.2,-16.2 -16.2,-38.44L201.04,175.79q0,-22.24 16.2,-38.44 16.2,-16.2 38.61,-16.2h333.61l169.5,169v493.89q0,22.41 -16.2,38.61 -16.2,16.2 -38.46,16.2L255.69,838.85ZM574.42,304.23L574.42,151.35L255.85,151.35q-9.23,0 -16.92,7.69 -7.69,7.69 -7.69,16.92v608.08q0,9.23 7.69,16.92 7.69,7.69 16.92,7.69h448.31q9.23,0 16.92,-7.69 7.69,-7.69 7.69,-16.92L728.77,304.23L574.42,304.23ZM231.23,151.35v152.88,-152.88 657.31,-657.31Z"/>
|
||||
</vector>
|
||||
9
apps/android/app/src/main/res/drawable/ic_note_add.xml
Normal file
9
apps/android/app/src/main/res/drawable/ic_note_add.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M451.5,595v99q0,12.25 8.43,20.63 8.43,8.38 20.5,8.38 12.07,0 20.33,-8.38T509,694v-99h100.5q11.68,0 20.09,-8.43 8.41,-8.43 8.41,-20.5 0,-12.07 -8.41,-20.33 -8.41,-8.25 -20.09,-8.25L509,537.5L509,437q0,-11.68 -8.46,-20.09 -8.46,-8.41 -20.21,-8.41 -12.32,0 -20.58,8.41 -8.25,8.41 -8.25,20.09v100.5h-100q-12.25,0 -20.63,8.46t-8.38,20.21q0,12.32 8.38,20.58T351.5,595h100ZM222,875q-22.97,0 -40.23,-17.27Q164.5,840.47 164.5,817.5v-675q0,-22.97 17.27,-40.23Q199.03,85 222,85h335q11.91,0 22.71,4.75 10.79,4.75 18.91,12.34l179.26,179.31Q786,289.5 790.75,300.29q4.75,10.8 4.75,22.71v494.5q0,22.97 -17.27,40.23Q760.97,875 738,875L222,875ZM552.5,296L552.5,142.5L222,142.5v675h516L738,325L581.5,325q-12.25,0 -20.63,-8.38T552.5,296ZM222,142.5L222,325 222,142.5v675,-675Z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="m436.5,615.5 l175.5,-114q13,-8.5 13,-23.51T612,454L436.5,340q-14.5,-9.5 -29,-1.27Q393,346.96 393,364v227.5q0,17.76 14.5,25.88 14.5,8.12 29,-1.88ZM142.5,795.5q-22.97,0 -40.23,-17.27Q85,760.97 85,738L85,222q0,-22.97 17.27,-40.23Q119.53,164.5 142.5,164.5h675q23.72,0 40.61,17.27Q875,199.03 875,222v516q0,22.97 -16.89,40.23Q841.22,795.5 817.5,795.5h-675ZM142.5,738L142.5,222v516ZM142.5,738h675L817.5,222h-675v516Z"/>
|
||||
</vector>
|
||||
@@ -11,7 +11,7 @@
|
||||
<string name="smp_servers_add">Přidat server…</string>
|
||||
<string name="network_enable_socks_info">Přistupovat k serverům přes SOCKS proxy na portu 9050\? Před povolením této možnosti musí být spuštěna proxy.</string>
|
||||
<string name="accept_feature">Přijmout</string>
|
||||
<string name="allow_your_contacts_to_send_disappearing_messages">Umožněte svým kontaktům odesílat mizící zprávy.</string>
|
||||
<string name="allow_your_contacts_to_send_disappearing_messages">Povolte svým kontaktům odesílat mizící zprávy.</string>
|
||||
<string name="about_simplex_chat">O <xliff:g id="appNameFull">SimpleX Chat</xliff:g></string>
|
||||
<string name="smp_servers_add_to_another_device">Přidat do jiného zařízení</string>
|
||||
<string name="accept_requests">Přijímat žádosti</string>
|
||||
@@ -661,9 +661,7 @@
|
||||
<string name="all_your_contacts_will_remain_connected">Všechny vaše kontakty zůstanou připojeny.</string>
|
||||
<string name="contact_requests">Žádosti o kontakt</string>
|
||||
<string name="display_name__field">Zobrazované jméno:</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Váš profil je uložen v zařízení a je sdílen pouze s vašimi kontakty.
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g> servery váš profil vidět nemohou.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Váš profil je uložen v zařízení a je sdílen pouze s vašimi kontakty. <xliff:g id="appName">SimpleX</xliff:g> servery váš profil vidět nemohou.</string>
|
||||
<string name="save_preferences_question">Uložit předvolby\?</string>
|
||||
<string name="save_and_notify_contact">Uložit a upozornit kontakt</string>
|
||||
<string name="save_and_notify_contacts">Uložit a upozornit kontakty</string>
|
||||
@@ -1114,4 +1112,31 @@
|
||||
<string name="alert_text_fragment_please_report_to_developers">Nahlaste to prosím vývojářům.</string>
|
||||
<string name="alert_text_fragment_permanent_error_reconnect">Tato chyba je pro toto připojení trvalá, připojte se znovu.</string>
|
||||
<string name="alert_text_fragment_encryption_out_of_sync_old_database">Může se to stát, když vy nebo vaše připojení použijete starou zálohu databáze.</string>
|
||||
<string name="no_spaces">Žádné mezery!</string>
|
||||
<string name="revoke_file__message">Soubor bude smazán ze serverů.</string>
|
||||
<string name="stop_rcv_file__message">Příjem souboru bude zastaven.</string>
|
||||
<string name="allow_calls_only_if">Povolte hovory, pouze pokud je váš kontakt povolí.</string>
|
||||
<string name="allow_your_contacts_to_call">Povolte svým kontaktům vám volat.</string>
|
||||
<string name="audio_video_calls">Audio/video hovory</string>
|
||||
<string name="available_in_v51">"
|
||||
\nDostupné ve verzi 5.1"</string>
|
||||
<string name="both_you_and_your_contact_can_make_calls">Volat můžete vy i váš kontakt.</string>
|
||||
<string name="only_you_can_make_calls">Volat můžete pouze vy.</string>
|
||||
<string name="prohibit_calls">Zákaz audio/video hovorů.</string>
|
||||
<string name="calls_prohibited_with_this_contact">Audio/video hovory jsou zakázány.</string>
|
||||
<string name="only_your_contact_can_make_calls">Volat může pouze váš kontakt.</string>
|
||||
<string name="v5_0_app_passcode">Heslo aplikace</string>
|
||||
<string name="v5_0_large_files_support_descr">Rychle a bez čekání, než bude odesílatel online!</string>
|
||||
<string name="v5_0_polish_interface">Polské rozhraní</string>
|
||||
<string name="v5_0_app_passcode_descr">Nastavte jej namísto ověřování systému.</string>
|
||||
<string name="v5_0_large_files_support">Videa a soubory až do velikosti 1 gb</string>
|
||||
<string name="v5_0_polish_interface_descr">Díky uživatelům - překládejte prostřednictvím Weblate!</string>
|
||||
<string name="revoke_file__title">Odvolat soubor\?</string>
|
||||
<string name="revoke_file__confirm">Odvolat</string>
|
||||
<string name="revoke_file__action">Odvolat soubor</string>
|
||||
<string name="stop_snd_file__message">Odesílání souboru bude zastaveno.</string>
|
||||
<string name="stop_file__confirm">Zastavit</string>
|
||||
<string name="stop_file__action">Zastavit soubor</string>
|
||||
<string name="stop_snd_file__title">Zastavit odesílání souboru\?</string>
|
||||
<string name="stop_rcv_file__title">Zastavit příjem souboru\?</string>
|
||||
</resources>
|
||||
@@ -180,7 +180,7 @@
|
||||
<string name="you_have_no_chats">Sie haben keine Chats</string>
|
||||
<!-- ShareListView.kt -->
|
||||
<string name="share_message">Nachricht teilen…</string>
|
||||
<string name="share_image">Bild teilen…</string>
|
||||
<string name="share_image">Medien teilen…</string>
|
||||
<string name="share_file">Datei teilen…</string>
|
||||
<!-- ComposeView.kt, helpers -->
|
||||
<string name="attach">Anhängen</string>
|
||||
@@ -430,7 +430,7 @@
|
||||
<string name="display_name__field">Angezeigter Name:</string>
|
||||
<string name="full_name__field">"Vollständiger Name:</string>
|
||||
<string name="your_current_profile">Mein aktuelles Chat-Profil</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Ihr Profil wird auf Ihrem Gerät gespeichert und nur mit Ihren Kontakten geteilt.\n\n<xliff:g id="appName">SimpleX</xliff:g>-Server können Ihr Profil nicht sehen.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Ihr Profil wird auf Ihrem Gerät gespeichert und nur mit Ihren Kontakten geteilt. <xliff:g id="appName">SimpleX</xliff:g>-Server können Ihr Profil nicht sehen.</string>
|
||||
<string name="edit_image">Bild bearbeiten</string>
|
||||
<string name="delete_image">Bild löschen</string>
|
||||
<string name="save_preferences_question">Präferenzen speichern?</string>
|
||||
@@ -1196,4 +1196,29 @@
|
||||
<string name="alert_text_decryption_error_too_many_skipped"><xliff:g id="message count" example="1">%1$d</xliff:g> Nachrichten übersprungen.</string>
|
||||
<string name="allow_calls_only_if">Anrufe sind nur erlaubt, wenn Ihr Kontakt das ebenfalls erlaubt.</string>
|
||||
<string name="allow_your_contacts_to_call">Erlaubt Ihren Kontakten Sie anzurufen.</string>
|
||||
<string name="audio_video_calls">Audio/Video Anrufe</string>
|
||||
<string name="available_in_v51">"
|
||||
\nVerfügbar in v5.1"</string>
|
||||
<string name="both_you_and_your_contact_can_make_calls">Sowohl Sie, als auch Ihr Kontakt können Anrufe tätigen.</string>
|
||||
<string name="only_you_can_make_calls">Nur Sie können Anrufe tätigen.</string>
|
||||
<string name="prohibit_calls">Audio/Video Anrufe nicht erlauben.</string>
|
||||
<string name="stop_rcv_file__title">Den Empfang der Datei beenden\?</string>
|
||||
<string name="stop_snd_file__title">Das Senden der Datei beenden\?</string>
|
||||
<string name="stop_rcv_file__message">Der Empfang der Datei wird beendet.</string>
|
||||
<string name="stop_snd_file__message">Das Senden der Datei wird beendet.</string>
|
||||
<string name="stop_file__action">Datei beenden</string>
|
||||
<string name="revoke_file__message">Die Datei wird von den Servern gelöscht.</string>
|
||||
<string name="no_spaces">Keine Leerzeichen!</string>
|
||||
<string name="revoke_file__confirm">Widerrufen</string>
|
||||
<string name="revoke_file__action">Datei widerrufen</string>
|
||||
<string name="revoke_file__title">Datei widerrufen\?</string>
|
||||
<string name="stop_file__confirm">Beenden</string>
|
||||
<string name="v5_0_large_files_support">Videos und Dateien bis zu 1GB</string>
|
||||
<string name="v5_0_large_files_support_descr">Schnell und ohne warten auf den Absender, bis er online ist!</string>
|
||||
<string name="v5_0_polish_interface">Polnische Bedienoberfläche</string>
|
||||
<string name="v5_0_app_passcode_descr">Anstelle der System-Authentifizierung festlegen.</string>
|
||||
<string name="v5_0_polish_interface_descr">Dank der Nutzer - Tragen Sie per Weblate bei!</string>
|
||||
<string name="only_your_contact_can_make_calls">Nur Ihr Kontakt kann Anrufe tätigen.</string>
|
||||
<string name="v5_0_app_passcode">App Passwort</string>
|
||||
<string name="calls_prohibited_with_this_contact">Audio/Video Anrufe sind nicht erlaubt.</string>
|
||||
</resources>
|
||||
@@ -811,7 +811,7 @@
|
||||
<string name="is_not_verified">%s no está verificado</string>
|
||||
<string name="smp_servers_test_server">Probar servidor</string>
|
||||
<string name="smp_servers_test_servers">Probar servidores</string>
|
||||
<string name="star_on_github">Dar Estrella en GitHub</string>
|
||||
<string name="star_on_github">Estrella en GitHub</string>
|
||||
<string name="smp_servers_per_user">Los servidores para nuevas conexiones de tu perfil de Chat actual</string>
|
||||
<string name="network_disable_socks">¿Usar conexión directa a Internet\?</string>
|
||||
<string name="update_onion_hosts_settings_question">¿Actualizar la configuración de los hosts .onion\?</string>
|
||||
@@ -841,7 +841,7 @@
|
||||
<string name="error_smp_test_failed_at_step">Prueba fallida en el paso %s.</string>
|
||||
<string name="tap_to_start_new_chat">Pulsa para iniciar chat nuevo</string>
|
||||
<string name="share_message">Compartir mensaje…</string>
|
||||
<string name="share_image">Compartir imagen…</string>
|
||||
<string name="share_image">Compartir medios…</string>
|
||||
<string name="show_call_on_lock_screen">Mostrar</string>
|
||||
<string name="unknown_database_error_with_info">Error desconocido en la base de datos: %s</string>
|
||||
<string name="database_backup_can_be_restored">El intento de cambiar la contraseña de la base de datos no se ha completado.</string>
|
||||
@@ -974,9 +974,7 @@
|
||||
<string name="smp_servers_your_server_address">Dirección de tu servidor</string>
|
||||
<string name="section_title_welcome_message">MENSAJE DE BIENVENIDA</string>
|
||||
<string name="your_current_profile">Tu perfil actual</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Tu perfil se almacena en tu dispositivo y sólo se comparte con tus contactos.
|
||||
\n
|
||||
\nLos servidores <xliff:g id="appName">SimpleX</xliff:g> no pueden ver tu perfil.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Tu perfil se almacena en tu dispositivo y sólo se comparte con tus contactos. Los servidores <xliff:g id="appName">SimpleX</xliff:g> no pueden ver tu perfil.</string>
|
||||
<string name="language_system">Sistema</string>
|
||||
<string name="button_add_welcome_message">Agregar mensaje de bienvenida</string>
|
||||
<string name="v4_6_audio_video_calls">Llamadas y videollamadas</string>
|
||||
@@ -1115,4 +1113,31 @@
|
||||
<string name="alert_text_msg_bad_hash">El hash del mensaje anterior es diferente.</string>
|
||||
<string name="alert_text_fragment_permanent_error_reconnect">El error es permanente para esta conexión, por favor vuelve a conectarte.</string>
|
||||
<string name="alert_text_decryption_error_header"><xliff:g id="message count" example="1">%1$d</xliff:g> mensajes no pudieron ser descifrados.</string>
|
||||
<string name="no_spaces">¡Sin espacios!</string>
|
||||
<string name="stop_file__action">Detener archivo</string>
|
||||
<string name="revoke_file__message">El archivo será eliminado de los servidores.</string>
|
||||
<string name="stop_rcv_file__message">Se detendrá la recepción del archivo.</string>
|
||||
<string name="revoke_file__confirm">Revocar</string>
|
||||
<string name="revoke_file__action">Revocar archivo</string>
|
||||
<string name="revoke_file__title">¿Revocar archivo\?</string>
|
||||
<string name="stop_snd_file__message">Se detendrá el envío del archivo.</string>
|
||||
<string name="stop_file__confirm">Detener</string>
|
||||
<string name="stop_rcv_file__title">¿Dejar de recibir el archivo\?</string>
|
||||
<string name="stop_snd_file__title">¿Dejar de enviar el archivo\?</string>
|
||||
<string name="allow_calls_only_if">Se permiten llamadas sólo si tu contacto también las permite.</string>
|
||||
<string name="allow_your_contacts_to_call">Permites que tus contactos puedan llamarte.</string>
|
||||
<string name="audio_video_calls">Llamadas/Videollamadas</string>
|
||||
<string name="calls_prohibited_with_this_contact">Las llamadas/videollamadas no están permitidas.</string>
|
||||
<string name="available_in_v51">"
|
||||
\nDisponible en v5.1"</string>
|
||||
<string name="both_you_and_your_contact_can_make_calls">Tanto tú como tu contacto podéis realizar llamadas.</string>
|
||||
<string name="only_you_can_make_calls">Solo tú puedes realizar llamadas.</string>
|
||||
<string name="only_your_contact_can_make_calls">Sólo tu contacto puede realizar llamadas.</string>
|
||||
<string name="prohibit_calls">Prohibir las llamadas/videollamadas.</string>
|
||||
<string name="v5_0_app_passcode">Código de acceso a la aplicación</string>
|
||||
<string name="v5_0_polish_interface">Interfaz polaco</string>
|
||||
<string name="v5_0_app_passcode_descr">Úsalo en lugar de la autenticación del sistema.</string>
|
||||
<string name="v5_0_polish_interface_descr">Agradecimientos a los usuarios. ¡Contribuye a través de Weblate!</string>
|
||||
<string name="v5_0_large_files_support">Vídeos y archivos de hasta 1Gb</string>
|
||||
<string name="v5_0_large_files_support_descr">¡Rápido y sin tener que esperar a que el remitente esté en línea!</string>
|
||||
</resources>
|
||||
@@ -156,7 +156,7 @@
|
||||
<string name="contact_connection_pending">connexion…</string>
|
||||
<string name="group_connection_pending">connexion…</string>
|
||||
<string name="share_message">Partager le message…</string>
|
||||
<string name="share_image">Partager l’image…</string>
|
||||
<string name="share_image">Partager le média…</string>
|
||||
<string name="images_limit_desc">Envoi de 10 images en même temps maximum</string>
|
||||
<string name="personal_welcome">Bienvenue <xliff:g>%1$s</xliff:g> !</string>
|
||||
<string name="notifications_mode_periodic_desc">Vérifie les nouveaux messages toutes les 10 minutes pendant 1 minute au maximum.</string>
|
||||
@@ -439,9 +439,7 @@
|
||||
<string name="section_title_welcome_message">MESSAGE DE BIENVENUE</string>
|
||||
<string name="display_name__field">Nom affiché :</string>
|
||||
<string name="full_name__field">Nom complet :</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Votre profil est stocké sur votre appareil et partagé uniquement avec vos contacts.
|
||||
\n
|
||||
\nLes serveurs <xliff:g id="appName">SimpleX</xliff:g> ne peuvent pas voir votre profil.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Votre profil est stocké sur votre appareil et partagé uniquement avec vos contacts. Les serveurs <xliff:g id="appName">SimpleX</xliff:g> ne peuvent pas voir votre profil.</string>
|
||||
<string name="delete_image">Supprimer l\'image</string>
|
||||
<string name="save_preferences_question">Sauvegarder les préférences \?</string>
|
||||
<string name="you_control_your_chat">Vous maîtrisez vos discussions !</string>
|
||||
@@ -1135,4 +1133,10 @@
|
||||
<string name="alert_text_decryption_error_header"><xliff:g id="message count" example="1">%1$d</xliff:g> messages n\'ont pas pu être déchiffrés.</string>
|
||||
<string name="alert_text_decryption_error_too_many_skipped"><xliff:g id="message count" example="1">%1$d</xliff:g> messages sautés.</string>
|
||||
<string name="you_can_turn_on_lock">Vous pouvez activer SimpleX Lock dans les Paramètres.</string>
|
||||
<string name="v5_0_polish_interface_descr">Merci aux utilisateurs - contribuez via Weblate !</string>
|
||||
<string name="v5_0_large_files_support">Vidéos et fichiers jusqu\'à 1Go</string>
|
||||
<string name="v5_0_app_passcode">Code d\'accès à l\'app</string>
|
||||
<string name="v5_0_large_files_support_descr">Rapide et ne nécessitant pas d\'attendre que l\'expéditeur soit en ligne !</string>
|
||||
<string name="v5_0_polish_interface">Interface en polonais</string>
|
||||
<string name="v5_0_app_passcode_descr">Il permet de remplacer l\'authentification du système.</string>
|
||||
</resources>
|
||||
@@ -152,7 +152,7 @@
|
||||
<string name="tap_to_start_new_chat">Tocca per iniziare una conversazione</string>
|
||||
<string name="chat_with_developers">Scrivi agli sviluppatori</string>
|
||||
<string name="you_have_no_chats">Non hai chat</string>
|
||||
<string name="share_image">Condividi immagine…</string>
|
||||
<string name="share_image">Condividi multimediale…</string>
|
||||
<string name="share_file">Condividi file…</string>
|
||||
<string name="icon_descr_context">Icona contestuale</string>
|
||||
<string name="icon_descr_cancel_file_preview">Annulla anteprima file</string>
|
||||
@@ -667,9 +667,7 @@
|
||||
<string name="you_control_your_chat">Sei tu a controllare la tua chat!</string>
|
||||
<string name="your_current_profile">Il tuo profilo attuale</string>
|
||||
<string name="your_profile_is_stored_on_your_device">Il tuo profilo, i contatti e i messaggi recapitati sono memorizzati sul tuo dispositivo.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Il tuo profilo è memorizzato sul tuo dispositivo e condiviso solo con i tuoi contatti.
|
||||
\n
|
||||
\nI server di <xliff:g id="appName">SimpleX</xliff:g> non possono vedere il tuo profilo.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Il tuo profilo è memorizzato sul tuo dispositivo e condiviso solo con i tuoi contatti. I server di <xliff:g id="appName">SimpleX</xliff:g> non possono vedere il tuo profilo.</string>
|
||||
<string name="ignore">Ignora</string>
|
||||
<string name="immune_to_spam_and_abuse">Immune a spam e abusi</string>
|
||||
<string name="incoming_audio_call">Chiamata in arrivo</string>
|
||||
@@ -1135,4 +1133,10 @@
|
||||
<string name="available_in_v51">"
|
||||
\nDisponibile nella v5.1"</string>
|
||||
<string name="allow_your_contacts_to_call">Consenti ai tuoi contatti di chiamarti.</string>
|
||||
<string name="v5_0_app_passcode">Codice di accesso dell\'app</string>
|
||||
<string name="v5_0_large_files_support_descr">Veloce e senza aspettare che il mittente sia in linea!</string>
|
||||
<string name="v5_0_polish_interface">Interfaccia polacca</string>
|
||||
<string name="v5_0_app_passcode_descr">Impostala al posto dell\'autenticazione di sistema.</string>
|
||||
<string name="v5_0_polish_interface_descr">Grazie agli utenti – contribuite via Weblate!</string>
|
||||
<string name="v5_0_large_files_support">Video e file fino a 1 GB</string>
|
||||
</resources>
|
||||
@@ -842,9 +842,7 @@
|
||||
<string name="this_string_is_not_a_connection_link">このストリングは接続リンクではありません!</string>
|
||||
<string name="chat_with_the_founder">質問やアイデアを送る</string>
|
||||
<string name="star_on_github">GithubでStar</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">あなたのプロフィールはご自分の端末に保存され、あなたの連絡先のみに共有されます。
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g>のサーバには開示されません。</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">あなたのプロフィールはご自分の端末に保存され、あなたの連絡先のみに共有されます。 <xliff:g id="appName">SimpleX</xliff:g>のサーバには開示されません。</string>
|
||||
<string name="your_calls">あなたの通話</string>
|
||||
<string name="integrity_msg_skipped"><xliff:g id="connection ID" example="1">%1$d</xliff:g>飛ばしたメッセージ</string>
|
||||
<string name="send_link_previews">リンクのプレビューを送信</string>
|
||||
|
||||
@@ -331,9 +331,7 @@
|
||||
<string name="using_simplex_chat_servers">Naudojami <xliff:g id="appNameFull">SimpleX Chat</xliff:g> serveriai.</string>
|
||||
<string name="network_settings">Išplėstiniai tinklo nustatymai</string>
|
||||
<string name="your_current_profile">Jūsų dabartinis profilis</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Jūsų profilis yra saugomas jūsų įrenginyje ir bendrinamas tik su jūsų adresatais.
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g> serveriai negali matyti jūsų profilio.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Jūsų profilis yra saugomas jūsų įrenginyje ir bendrinamas tik su jūsų adresatais. <xliff:g id="appName">SimpleX</xliff:g> serveriai negali matyti jūsų profilio.</string>
|
||||
<string name="icon_descr_video_call">vaizdo skambutis</string>
|
||||
<string name="your_calls">Jūsų skambučiai</string>
|
||||
<string name="webrtc_ice_servers">WebRTC ICE serveriai</string>
|
||||
|
||||
@@ -935,9 +935,7 @@
|
||||
<string name="your_current_chat_database_will_be_deleted_and_replaced_with_the_imported_one">Uw huidige chatdatabase wordt VERWIJDERD en VERVANGEN door de geïmporteerde.
|
||||
\nDeze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</string>
|
||||
<string name="invite_prohibited_description">Je probeert een contact met wie je een incognito profiel hebt gedeeld, uit te nodigen voor de groep waarin je je hoofdprofiel gebruikt</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Uw profiel wordt op uw apparaat opgeslagen en alleen gedeeld met uw contacten.
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g> servers kunnen uw profiel niet zien.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Uw profiel wordt op uw apparaat opgeslagen en alleen gedeeld met uw contacten. <xliff:g id="appName">SimpleX</xliff:g> servers kunnen uw profiel niet zien.</string>
|
||||
<string name="auth_you_will_be_required_to_authenticate_when_you_start_or_resume">U moet zich authenticeren wanneer u de app na 30 seconden op de achtergrond start of hervat.</string>
|
||||
<string name="images_limit_title">Te veel afbeeldingen!</string>
|
||||
<string name="icon_descr_speaker_off">Luidspreker uit</string>
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
<string name="icon_descr_sent_msg_status_send_failed">wysyłanie nie powiodło się</string>
|
||||
<string name="icon_descr_sent_msg_status_sent">wyślij</string>
|
||||
<string name="share_file">Udostępnij plik…</string>
|
||||
<string name="share_image">Udostępnij obraz…</string>
|
||||
<string name="share_image">Udostępnij media…</string>
|
||||
<string name="tap_to_start_new_chat">Dotknij, aby rozpocząć nowy czat</string>
|
||||
<string name="moderate_message_will_be_deleted_warning">Wiadomość zostanie usunięta dla wszystkich członków.</string>
|
||||
<string name="this_text_is_available_in_settings">Ten tekst jest dostępny w ustawieniach</string>
|
||||
@@ -1048,9 +1048,7 @@
|
||||
\nTej czynności nie można cofnąć - Twój profil, kontakty, wiadomości i pliki zostaną nieodwracalnie utracone.</string>
|
||||
<string name="contact_sent_large_file">Twój kontakt wysłał plik, który jest większy niż obecnie obsługiwany maksymalny rozmiar (<xliff:g id="maxFileSize">%1$s</xliff:g>).</string>
|
||||
<string name="snd_group_event_member_deleted">usunąłeś <xliff:g id="member profile" example="alice (Alice)">%1$s</xliff:g></string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Twój profil jest przechowywany na Twoim urządzeniu i udostępniany tylko Twoim kontaktom.
|
||||
\n
|
||||
\nSerwery <xliff:g id="appName">SimpleX</xliff:g> nie widzą Twojego profilu.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Twój profil jest przechowywany na Twoim urządzeniu i udostępniany tylko Twoim kontaktom. Serwery <xliff:g id="appName">SimpleX</xliff:g> nie widzą Twojego profilu.</string>
|
||||
<string name="description_you_shared_one_time_link_incognito">udostępniłeś jednorazowy link incognito</string>
|
||||
<string name="you_will_join_group">Dołączysz do grupy, do której odnosi się ten link i połączysz się z jej członkami.</string>
|
||||
<string name="your_SMP_servers">Twoje serwery SMP</string>
|
||||
|
||||
@@ -833,9 +833,7 @@
|
||||
<string name="network_use_onion_hosts_no">Não</string>
|
||||
<string name="network_disable_socks">Usar conexão direta com a internet\?</string>
|
||||
<string name="hide_dev_options">Ocultar:</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Seu perfil é guardado no seu diapositivo e é compartilhado somente com seus contatos.
|
||||
\n
|
||||
\n<xliff:g id="appName">Servidores</xliff:g> SimpleX não podem ver seu perfil.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Seu perfil é guardado no seu diapositivo e é compartilhado somente com seus contatos. <xliff:g id="appName">Servidores</xliff:g> SimpleX não podem ver seu perfil.</string>
|
||||
<string name="save_preferences_question">Salvar preferências\?</string>
|
||||
<string name="save_and_notify_group_members">Salvar e notificar membros do grupo</string>
|
||||
<string name="error_saving_user_password">Erro ao salvar a senha do usuário</string>
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
<string name="toast_permission_denied">Разрешение не получено!</string>
|
||||
<string name="use_camera_button">Камера</string>
|
||||
<string name="from_gallery_button">Галерея</string>
|
||||
<string name="gallery_image_button">Изображение</string>
|
||||
<string name="gallery_image_button">Фото</string>
|
||||
<string name="gallery_video_button">Видео</string>
|
||||
<string name="choose_file">Файл</string>
|
||||
<!-- help - ChatHelpView.kt -->
|
||||
@@ -429,9 +429,7 @@
|
||||
<string name="display_name__field">Имя профиля:</string>
|
||||
<string name="full_name__field">"Полное имя:</string>
|
||||
<string name="your_current_profile">Ваш активный профиль</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Ваш профиль хранится на Вашем устройстве и отправляется только Вашим контактам.
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g> серверы не могут получить доступ к Вашему профилю.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Ваш профиль хранится на Вашем устройстве и отправляется только Вашим контактам. <xliff:g id="appName">SimpleX</xliff:g> серверы не могут получить доступ к Вашему профилю.</string>
|
||||
<string name="edit_image">Поменять аватар</string>
|
||||
<string name="delete_image">Удалить аватар</string>
|
||||
<string name="save_preferences_question">Сохранить предпочтения?</string>
|
||||
|
||||
@@ -501,7 +501,7 @@
|
||||
\n在启用此功能之前,系统将提示您完成身份验证。</string>
|
||||
<string name="your_chats">您的聊天</string>
|
||||
<string name="share_file">分享文件……</string>
|
||||
<string name="share_image">分享图片……</string>
|
||||
<string name="share_image">分享媒体……</string>
|
||||
<string name="share_message">分享消息……</string>
|
||||
<string name="text_field_set_contact_placeholder">设置联系人姓名……</string>
|
||||
<string name="callstate_received_answer">已收到回复……</string>
|
||||
@@ -621,9 +621,7 @@
|
||||
<string name="icon_descr_profile_image_placeholder">资料图片占位符</string>
|
||||
<string name="smp_servers_per_user">您当前聊天资料的新连接服务器</string>
|
||||
<string name="your_current_profile">您当前的资料</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">您的资料存储在您的设备上并且仅与您的联系人共享。
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g> 服务器无法看见您的资料。</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">您的资料存储在您的设备上并且仅与您的联系人共享。<xliff:g id="appName">SimpleX</xliff:g> 服务器无法看见您的资料。</string>
|
||||
<string name="your_profile_is_stored_on_your_device">您的资料、联系人和发送的消息存储在您的设备上。</string>
|
||||
<string name="profile_is_only_shared_with_your_contacts">该资料仅与您的联系人共享。</string>
|
||||
<string name="chat_preferences_on">开启</string>
|
||||
@@ -1117,4 +1115,30 @@
|
||||
\n它可能是由于某些错误或连接被破坏才发生。</string>
|
||||
<string name="alert_text_decryption_error_earlier"><xliff:g id="message count" example="1">%1$d</xliff:g> 消息解密失败并且不会显示。</string>
|
||||
<string name="no_spaces">没有空格!</string>
|
||||
<string name="stop_file__action">停止文件</string>
|
||||
<string name="stop_snd_file__title">停止发送文件?</string>
|
||||
<string name="stop_snd_file__message">即将停止发送文件。</string>
|
||||
<string name="stop_rcv_file__title">停止接收文件?</string>
|
||||
<string name="stop_rcv_file__message">即将停止接收文件。</string>
|
||||
<string name="stop_file__confirm">Stop</string>
|
||||
<string name="revoke_file__action">撤销文件</string>
|
||||
<string name="revoke_file__title">撤销文件?</string>
|
||||
<string name="revoke_file__message">文件将从服务器中删除。</string>
|
||||
<string name="revoke_file__confirm">撤销</string>
|
||||
<string name="audio_video_calls">音频/视频通话</string>
|
||||
<string name="available_in_v51">"
|
||||
\n在 v5.1 中可用"</string>
|
||||
<string name="v5_0_app_passcode">应用程序密码</string>
|
||||
<string name="v5_0_polish_interface">波兰语界面</string>
|
||||
<string name="v5_0_polish_interface_descr">感谢用户——通过 Weblate 做出贡献!</string>
|
||||
<string name="v5_0_app_passcode_descr">设置它以代替系统身份验证。</string>
|
||||
<string name="v5_0_large_files_support">最大 1gb 的视频和文件</string>
|
||||
<string name="v5_0_large_files_support_descr">快速且无需等待发件人在线!</string>
|
||||
<string name="prohibit_calls">禁止音频/视频通话。</string>
|
||||
<string name="both_you_and_your_contact_can_make_calls">您和您的联系人都可以拨打电话。</string>
|
||||
<string name="only_you_can_make_calls">只有您可以拨打电话。</string>
|
||||
<string name="only_your_contact_can_make_calls">只有您的联系人可以拨打电话。</string>
|
||||
<string name="allow_your_contacts_to_call">允许您的联系人给您打电话。</string>
|
||||
<string name="allow_calls_only_if">仅当您的联系人允许时才允许呼叫。</string>
|
||||
<string name="calls_prohibited_with_this_contact">禁止音频/视频通话。</string>
|
||||
</resources>
|
||||
@@ -512,9 +512,7 @@
|
||||
<string name="network_use_onion_hosts_required_desc_in_alert">連接時將需要 Onion 主機</string>
|
||||
<string name="delete_address__question">刪除地址?</string>
|
||||
<string name="you_can_share_your_address_anybody_will_be_able_to_connect">你可以使用連結或二維碼分享你的地址 - 任何人也可以和你連線。如果你不主動刪除你的聯絡人,你並不會遺失你的聯絡人</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">你的個人檔案只會儲存於你的裝置和只會分享給你的聯絡人。
|
||||
\n
|
||||
\n<xliff:g id="appName">SimpleX</xliff:g> 伺服器並不會看到你的個人檔案。</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">你的個人檔案只會儲存於你的裝置和只會分享給你的聯絡人。 <xliff:g id="appName">SimpleX</xliff:g> 伺服器並不會看到你的個人檔案。</string>
|
||||
<string name="save_and_notify_contact">儲存並通知你的聯絡人</string>
|
||||
<string name="save_and_notify_contacts">儲存並通知你的多個聯絡人</string>
|
||||
<string name="your_profile_is_stored_on_your_device">你的個人檔案,聯絡人和傳送的訊息只會儲存於你的個人裝置內。</string>
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
|
||||
<!-- ShareListView.kt -->
|
||||
<string name="share_message">Share message…</string>
|
||||
<string name="share_image">Share image…</string>
|
||||
<string name="share_image">Share media…</string>
|
||||
<string name="share_file">Share file…</string>
|
||||
|
||||
<!-- ComposeView.kt, helpers -->
|
||||
@@ -591,7 +591,7 @@
|
||||
<string name="display_name__field">Display name:</string>
|
||||
<string name="full_name__field">"Full name:</string>
|
||||
<string name="your_current_profile">Your current profile</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Your profile is stored on your device and shared only with your contacts.\n\n<xliff:g id="appName">SimpleX</xliff:g> servers cannot see your profile.</string>
|
||||
<string name="your_profile_is_stored_on_device_and_shared_only_with_contacts_simplex_cannot_see_it">Your profile is stored on your device and shared only with your contacts. <xliff:g id="appName">SimpleX</xliff:g> servers cannot see your profile.</string>
|
||||
<string name="edit_image">Edit image</string>
|
||||
<string name="delete_image">Delete image</string>
|
||||
<string name="save_preferences_question">Save preferences?</string>
|
||||
@@ -600,7 +600,6 @@
|
||||
<string name="save_and_notify_group_members">Save and notify group members</string>
|
||||
<string name="exit_without_saving">Exit without saving</string>
|
||||
|
||||
|
||||
<!-- HiddenProfileView.kt -->
|
||||
<string name="hide_profile">Hide profile</string>
|
||||
<string name="password_to_show">Password to show</string>
|
||||
|
||||
@@ -1324,6 +1324,8 @@ func processReceivedMsg(_ res: ChatResponse) async {
|
||||
if active(user) {
|
||||
m.updateGroup(groupInfo)
|
||||
}
|
||||
case let .rcvFileAccepted(user, aChatItem): // usually rcvFileAccepted is a response, but it's also an event for XFTP files auto-accepted from NSE
|
||||
chatItemSimpleUpdate(user, aChatItem)
|
||||
case let .rcvFileStart(user, aChatItem):
|
||||
chatItemSimpleUpdate(user, aChatItem)
|
||||
case let .rcvFileComplete(user, aChatItem):
|
||||
|
||||
@@ -77,7 +77,7 @@ struct DatabaseView: View {
|
||||
}
|
||||
}
|
||||
.frame(height: 36)
|
||||
.disabled(m.chatDbChanged || progressIndicator)
|
||||
.disabled(stopped || progressIndicator)
|
||||
} header: {
|
||||
Text("Messages")
|
||||
} footer: {
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<trans-unit id=" Available in v5.1" xml:space="preserve">
|
||||
<source>
|
||||
Available in v5.1</source>
|
||||
<target>
|
||||
Dostupné ve verzi 5.1</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id=" " xml:space="preserve">
|
||||
@@ -199,10 +201,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
|
||||
<source>%u messages failed to decrypt.</source>
|
||||
<target>%u zpráv se nepodařilo dešifrovat.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages skipped." xml:space="preserve">
|
||||
<source>%u messages skipped.</source>
|
||||
<target>%u zpráv přeskočeno.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="(" xml:space="preserve">
|
||||
@@ -455,6 +459,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow calls only if your contact allows them." xml:space="preserve">
|
||||
<source>Allow calls only if your contact allows them.</source>
|
||||
<target>Povolte hovory, pouze pokud je váš kontakt povolí.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
|
||||
@@ -499,6 +504,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to call you." xml:space="preserve">
|
||||
<source>Allow your contacts to call you.</source>
|
||||
<target>Povolte svým kontaktům vám volat.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to irreversibly delete sent messages." xml:space="preserve">
|
||||
@@ -543,6 +549,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="App passcode" xml:space="preserve">
|
||||
<source>App passcode</source>
|
||||
<target>Heslo aplikace</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -577,10 +584,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls" xml:space="preserve">
|
||||
<source>Audio/video calls</source>
|
||||
<target>Audio/video hovory</target>
|
||||
<note>chat feature</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
|
||||
<source>Audio/video calls are prohibited.</source>
|
||||
<target>Audio/video hovory jsou zakázány.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Authentication cancelled" xml:space="preserve">
|
||||
@@ -640,6 +649,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can make calls." xml:space="preserve">
|
||||
<source>Both you and your contact can make calls.</source>
|
||||
<target>Volat můžete vy i váš kontakt.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -1837,10 +1847,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Fast and no wait until the sender is online!" xml:space="preserve">
|
||||
<source>Fast and no wait until the sender is online!</source>
|
||||
<target>Rychle a bez čekání, než bude odesílatel online!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be deleted from servers." xml:space="preserve">
|
||||
<source>File will be deleted from servers.</source>
|
||||
<target>Soubor bude smazán ze serverů.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be received when your contact completes uploading it." xml:space="preserve">
|
||||
@@ -2722,6 +2734,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can make calls." xml:space="preserve">
|
||||
<source>Only you can make calls.</source>
|
||||
<target>Volat můžete pouze vy.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can send disappearing messages." xml:space="preserve">
|
||||
@@ -2741,6 +2754,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can make calls." xml:space="preserve">
|
||||
<source>Only your contact can make calls.</source>
|
||||
<target>Volat může pouze váš kontakt.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -2920,6 +2934,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Polish interface" xml:space="preserve">
|
||||
<source>Polish interface</source>
|
||||
<target>Polské rozhraní</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Possibly, certificate fingerprint in server address is incorrect" xml:space="preserve">
|
||||
@@ -2974,6 +2989,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit audio/video calls." xml:space="preserve">
|
||||
<source>Prohibit audio/video calls.</source>
|
||||
<target>Zákaz audio/video hovorů.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit irreversible message deletion." xml:space="preserve">
|
||||
@@ -3043,6 +3059,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving file will be stopped." xml:space="preserve">
|
||||
<source>Receiving file will be stopped.</source>
|
||||
<target>Příjem souboru bude zastaven.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving via" xml:space="preserve">
|
||||
@@ -3172,14 +3189,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke" xml:space="preserve">
|
||||
<source>Revoke</source>
|
||||
<target>Odvolat</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file" xml:space="preserve">
|
||||
<source>Revoke file</source>
|
||||
<target>Odvolat soubor</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file?" xml:space="preserve">
|
||||
<source>Revoke file?</source>
|
||||
<target>Odvolat soubor?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Role" xml:space="preserve">
|
||||
@@ -3369,6 +3389,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending file will be stopped." xml:space="preserve">
|
||||
<source>Sending file will be stopped.</source>
|
||||
<target>Odesílání souboru bude zastaveno.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending via" xml:space="preserve">
|
||||
@@ -3423,6 +3444,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set it instead of system authentication." xml:space="preserve">
|
||||
<source>Set it instead of system authentication.</source>
|
||||
<target>Nastavte jej namísto ověřování systému.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set passphrase to export" xml:space="preserve">
|
||||
@@ -3597,14 +3619,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop file" xml:space="preserve">
|
||||
<source>Stop file</source>
|
||||
<target>Zastavit soubor</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop receiving file?" xml:space="preserve">
|
||||
<source>Stop receiving file?</source>
|
||||
<target>Zastavit příjem souboru?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop sending file?" xml:space="preserve">
|
||||
<source>Stop sending file?</source>
|
||||
<target>Zastavit odesílání souboru?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Submit" xml:space="preserve">
|
||||
@@ -4125,6 +4150,7 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
|
||||
</trans-unit>
|
||||
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
|
||||
<source>Videos and files up to 1gb</source>
|
||||
<target>Videa a soubory až do velikosti 1 gb</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="View security code" xml:space="preserve">
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<trans-unit id=" Available in v5.1" xml:space="preserve">
|
||||
<source>
|
||||
Available in v5.1</source>
|
||||
<target>
|
||||
Verfügbar ab v5.1</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id=" " xml:space="preserve">
|
||||
@@ -199,10 +201,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
|
||||
<source>%u messages failed to decrypt.</source>
|
||||
<target>%u Nachrichten konnten nicht entschlüsselt werden.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages skipped." xml:space="preserve">
|
||||
<source>%u messages skipped.</source>
|
||||
<target>%u übersprungene Nachrichten.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="(" xml:space="preserve">
|
||||
@@ -455,6 +459,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow calls only if your contact allows them." xml:space="preserve">
|
||||
<source>Allow calls only if your contact allows them.</source>
|
||||
<target>Anrufe sind nur erlaubt, wenn Ihr Kontakt das ebenfalls erlaubt.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
|
||||
@@ -499,6 +504,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to call you." xml:space="preserve">
|
||||
<source>Allow your contacts to call you.</source>
|
||||
<target>Erlaubt Ihren Kontakten Sie anzurufen.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to irreversibly delete sent messages." xml:space="preserve">
|
||||
@@ -543,6 +549,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="App passcode" xml:space="preserve">
|
||||
<source>App passcode</source>
|
||||
<target>App Passwort</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -577,10 +584,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls" xml:space="preserve">
|
||||
<source>Audio/video calls</source>
|
||||
<target>Audio/Video Anrufe</target>
|
||||
<note>chat feature</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
|
||||
<source>Audio/video calls are prohibited.</source>
|
||||
<target>Audio/Video Anrufe sind nicht erlaubt.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Authentication cancelled" xml:space="preserve">
|
||||
@@ -640,6 +649,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can make calls." xml:space="preserve">
|
||||
<source>Both you and your contact can make calls.</source>
|
||||
<target>Sowohl Sie, als auch Ihr Kontakt können Anrufe tätigen.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -1837,10 +1847,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Fast and no wait until the sender is online!" xml:space="preserve">
|
||||
<source>Fast and no wait until the sender is online!</source>
|
||||
<target>Schnell und ohne warten auf den Absender, bis er online ist!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be deleted from servers." xml:space="preserve">
|
||||
<source>File will be deleted from servers.</source>
|
||||
<target>Die Datei wird von den Servern gelöscht.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be received when your contact completes uploading it." xml:space="preserve">
|
||||
@@ -2722,6 +2734,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can make calls." xml:space="preserve">
|
||||
<source>Only you can make calls.</source>
|
||||
<target>Nur Sie können Anrufe tätigen.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can send disappearing messages." xml:space="preserve">
|
||||
@@ -2741,6 +2754,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can make calls." xml:space="preserve">
|
||||
<source>Only your contact can make calls.</source>
|
||||
<target>Nur Ihr Kontakt kann Anrufe tätigen.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -2920,6 +2934,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Polish interface" xml:space="preserve">
|
||||
<source>Polish interface</source>
|
||||
<target>Polnische Bedienoberfläche</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Possibly, certificate fingerprint in server address is incorrect" xml:space="preserve">
|
||||
@@ -2974,6 +2989,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit audio/video calls." xml:space="preserve">
|
||||
<source>Prohibit audio/video calls.</source>
|
||||
<target>Audio/Video Anrufe nicht erlauben.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit irreversible message deletion." xml:space="preserve">
|
||||
@@ -3043,6 +3059,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving file will be stopped." xml:space="preserve">
|
||||
<source>Receiving file will be stopped.</source>
|
||||
<target>Der Empfang der Datei wird beendet.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving via" xml:space="preserve">
|
||||
@@ -3172,14 +3189,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke" xml:space="preserve">
|
||||
<source>Revoke</source>
|
||||
<target>Widerrufen</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file" xml:space="preserve">
|
||||
<source>Revoke file</source>
|
||||
<target>Datei widerrufen</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file?" xml:space="preserve">
|
||||
<source>Revoke file?</source>
|
||||
<target>Datei widerrufen?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Role" xml:space="preserve">
|
||||
@@ -3369,6 +3389,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending file will be stopped." xml:space="preserve">
|
||||
<source>Sending file will be stopped.</source>
|
||||
<target>Das Senden der Datei wird beendet.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending via" xml:space="preserve">
|
||||
@@ -3423,6 +3444,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set it instead of system authentication." xml:space="preserve">
|
||||
<source>Set it instead of system authentication.</source>
|
||||
<target>Anstelle der System-Authentifizierung festlegen.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set passphrase to export" xml:space="preserve">
|
||||
@@ -3597,14 +3619,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop file" xml:space="preserve">
|
||||
<source>Stop file</source>
|
||||
<target>Datei beenden</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop receiving file?" xml:space="preserve">
|
||||
<source>Stop receiving file?</source>
|
||||
<target>Den Empfang der Datei beenden?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop sending file?" xml:space="preserve">
|
||||
<source>Stop sending file?</source>
|
||||
<target>Das Senden der Datei beenden?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Submit" xml:space="preserve">
|
||||
@@ -4125,6 +4150,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
|
||||
</trans-unit>
|
||||
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
|
||||
<source>Videos and files up to 1gb</source>
|
||||
<target>Videos und Dateien bis zu 1GB</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="View security code" xml:space="preserve">
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<trans-unit id=" Available in v5.1" xml:space="preserve">
|
||||
<source>
|
||||
Available in v5.1</source>
|
||||
<target>
|
||||
Disponible en v5.1</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id=" " xml:space="preserve">
|
||||
@@ -199,10 +201,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
|
||||
<source>%u messages failed to decrypt.</source>
|
||||
<target>%u mensajes no pudieron ser descifrados.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages skipped." xml:space="preserve">
|
||||
<source>%u messages skipped.</source>
|
||||
<target>%u mensajes omitidos.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="(" xml:space="preserve">
|
||||
@@ -455,6 +459,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow calls only if your contact allows them." xml:space="preserve">
|
||||
<source>Allow calls only if your contact allows them.</source>
|
||||
<target>Se permiten llamadas sólo si tu contacto también las permite.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
|
||||
@@ -499,6 +504,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to call you." xml:space="preserve">
|
||||
<source>Allow your contacts to call you.</source>
|
||||
<target>Permites que tus contactos puedan llamarte.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to irreversibly delete sent messages." xml:space="preserve">
|
||||
@@ -543,6 +549,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="App passcode" xml:space="preserve">
|
||||
<source>App passcode</source>
|
||||
<target>Código de acceso a la aplicación</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -577,10 +584,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls" xml:space="preserve">
|
||||
<source>Audio/video calls</source>
|
||||
<target>Llamadas/Videollamadas</target>
|
||||
<note>chat feature</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
|
||||
<source>Audio/video calls are prohibited.</source>
|
||||
<target>Las llamadas/videollamadas no están permitidas.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Authentication cancelled" xml:space="preserve">
|
||||
@@ -640,6 +649,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can make calls." xml:space="preserve">
|
||||
<source>Both you and your contact can make calls.</source>
|
||||
<target>Tanto tú como tu contacto podéis realizar llamadas.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -1837,10 +1847,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Fast and no wait until the sender is online!" xml:space="preserve">
|
||||
<source>Fast and no wait until the sender is online!</source>
|
||||
<target>¡Rápido y sin tener que esperar a que el remitente esté en línea!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be deleted from servers." xml:space="preserve">
|
||||
<source>File will be deleted from servers.</source>
|
||||
<target>El archivo será eliminado de los servidores.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be received when your contact completes uploading it." xml:space="preserve">
|
||||
@@ -2722,6 +2734,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can make calls." xml:space="preserve">
|
||||
<source>Only you can make calls.</source>
|
||||
<target>Solo tú puedes realizar llamadas.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can send disappearing messages." xml:space="preserve">
|
||||
@@ -2741,6 +2754,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can make calls." xml:space="preserve">
|
||||
<source>Only your contact can make calls.</source>
|
||||
<target>Sólo tu contacto puede realizar llamadas.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -2920,6 +2934,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Polish interface" xml:space="preserve">
|
||||
<source>Polish interface</source>
|
||||
<target>Interfaz en polaco</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Possibly, certificate fingerprint in server address is incorrect" xml:space="preserve">
|
||||
@@ -2974,6 +2989,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit audio/video calls." xml:space="preserve">
|
||||
<source>Prohibit audio/video calls.</source>
|
||||
<target>Prohibir las llamadas/videollamadas.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit irreversible message deletion." xml:space="preserve">
|
||||
@@ -3043,6 +3059,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving file will be stopped." xml:space="preserve">
|
||||
<source>Receiving file will be stopped.</source>
|
||||
<target>Se detendrá la recepción del archivo.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving via" xml:space="preserve">
|
||||
@@ -3172,14 +3189,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke" xml:space="preserve">
|
||||
<source>Revoke</source>
|
||||
<target>Revocar</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file" xml:space="preserve">
|
||||
<source>Revoke file</source>
|
||||
<target>Revocar archivo</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file?" xml:space="preserve">
|
||||
<source>Revoke file?</source>
|
||||
<target>¿Revocar archivo?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Role" xml:space="preserve">
|
||||
@@ -3369,6 +3389,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending file will be stopped." xml:space="preserve">
|
||||
<source>Sending file will be stopped.</source>
|
||||
<target>Se detendrá el envío del archivo.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending via" xml:space="preserve">
|
||||
@@ -3423,6 +3444,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set it instead of system authentication." xml:space="preserve">
|
||||
<source>Set it instead of system authentication.</source>
|
||||
<target>Úsalo en lugar de la autenticación del sistema.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set passphrase to export" xml:space="preserve">
|
||||
@@ -3597,14 +3619,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop file" xml:space="preserve">
|
||||
<source>Stop file</source>
|
||||
<target>Detener archivo</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop receiving file?" xml:space="preserve">
|
||||
<source>Stop receiving file?</source>
|
||||
<target>¿Dejar de recibir el archivo?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop sending file?" xml:space="preserve">
|
||||
<source>Stop sending file?</source>
|
||||
<target>¿Dejar de enviar el archivo?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Submit" xml:space="preserve">
|
||||
@@ -4126,6 +4151,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb
|
||||
</trans-unit>
|
||||
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
|
||||
<source>Videos and files up to 1gb</source>
|
||||
<target>Vídeos y archivos de hasta 1Gb</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="View security code" xml:space="preserve">
|
||||
@@ -4576,7 +4602,7 @@ Los servidores de SimpleX no pueden ver tu perfil.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" xml:space="preserve">
|
||||
<source>[Star on GitHub](https://github.com/simplex-chat/simplex-chat)</source>
|
||||
<target>[Dar Estrella en GitHub] (https://github.com/simplex-chat/simplex-chat)</target>
|
||||
<target>[Estrella en GitHub] (https://github.com/simplex-chat/simplex-chat)</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="_italic_" xml:space="preserve">
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<trans-unit id=" Available in v5.1" xml:space="preserve">
|
||||
<source>
|
||||
Available in v5.1</source>
|
||||
<target>
|
||||
Disponible dans la v5.1</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id=" " xml:space="preserve">
|
||||
@@ -199,10 +201,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
|
||||
<source>%u messages failed to decrypt.</source>
|
||||
<target>%u messages n'ont pas pu être déchiffrés.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages skipped." xml:space="preserve">
|
||||
<source>%u messages skipped.</source>
|
||||
<target>%u messages sautés.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="(" xml:space="preserve">
|
||||
@@ -545,6 +549,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="App passcode" xml:space="preserve">
|
||||
<source>App passcode</source>
|
||||
<target>Code d'accès à l'app</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -1842,6 +1847,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Fast and no wait until the sender is online!" xml:space="preserve">
|
||||
<source>Fast and no wait until the sender is online!</source>
|
||||
<target>Rapide et ne nécessitant pas d'attendre que l'expéditeur soit en ligne !</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be deleted from servers." xml:space="preserve">
|
||||
@@ -2928,6 +2934,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Polish interface" xml:space="preserve">
|
||||
<source>Polish interface</source>
|
||||
<target>Interface en polonais</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Possibly, certificate fingerprint in server address is incorrect" xml:space="preserve">
|
||||
@@ -3437,6 +3444,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set it instead of system authentication." xml:space="preserve">
|
||||
<source>Set it instead of system authentication.</source>
|
||||
<target>Il permet de remplacer l'authentification du système.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set passphrase to export" xml:space="preserve">
|
||||
@@ -4142,6 +4150,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
|
||||
</trans-unit>
|
||||
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
|
||||
<source>Videos and files up to 1gb</source>
|
||||
<target>Vidéos et fichiers jusqu'à 1Go</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="View security code" xml:space="preserve">
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<trans-unit id=" Available in v5.1" xml:space="preserve">
|
||||
<source>
|
||||
Available in v5.1</source>
|
||||
<target>
|
||||
Disponibile nella v5.1</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id=" " xml:space="preserve">
|
||||
@@ -199,10 +201,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
|
||||
<source>%u messages failed to decrypt.</source>
|
||||
<target>%u messaggi non sono stati decifrati.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages skipped." xml:space="preserve">
|
||||
<source>%u messages skipped.</source>
|
||||
<target>%u messaggi saltati.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="(" xml:space="preserve">
|
||||
@@ -545,6 +549,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="App passcode" xml:space="preserve">
|
||||
<source>App passcode</source>
|
||||
<target>Codice di accesso dell'app</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -1842,6 +1847,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Fast and no wait until the sender is online!" xml:space="preserve">
|
||||
<source>Fast and no wait until the sender is online!</source>
|
||||
<target>Veloce e senza aspettare che il mittente sia in linea!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be deleted from servers." xml:space="preserve">
|
||||
@@ -2928,6 +2934,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Polish interface" xml:space="preserve">
|
||||
<source>Polish interface</source>
|
||||
<target>Interfaccia polacca</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Possibly, certificate fingerprint in server address is incorrect" xml:space="preserve">
|
||||
@@ -3437,6 +3444,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set it instead of system authentication." xml:space="preserve">
|
||||
<source>Set it instead of system authentication.</source>
|
||||
<target>Impostala al posto dell'autenticazione di sistema.</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set passphrase to export" xml:space="preserve">
|
||||
@@ -4142,6 +4150,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
|
||||
</trans-unit>
|
||||
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
|
||||
<source>Videos and files up to 1gb</source>
|
||||
<target>Video e file fino a 1 GB</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="View security code" xml:space="preserve">
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<trans-unit id=" Available in v5.1" xml:space="preserve">
|
||||
<source>
|
||||
Available in v5.1</source>
|
||||
<target>
|
||||
在 v5.1 中可用</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id=" " xml:space="preserve">
|
||||
@@ -199,10 +201,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
|
||||
<source>%u messages failed to decrypt.</source>
|
||||
<target>%u 消息解密失败。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="%u messages skipped." xml:space="preserve">
|
||||
<source>%u messages skipped.</source>
|
||||
<target>已跳过 %u 条消息。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="(" xml:space="preserve">
|
||||
@@ -455,6 +459,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow calls only if your contact allows them." xml:space="preserve">
|
||||
<source>Allow calls only if your contact allows them.</source>
|
||||
<target>仅当您的联系人允许时才允许呼叫。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
|
||||
@@ -499,6 +504,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to call you." xml:space="preserve">
|
||||
<source>Allow your contacts to call you.</source>
|
||||
<target>允许您的联系人给您打电话。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Allow your contacts to irreversibly delete sent messages." xml:space="preserve">
|
||||
@@ -543,6 +549,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="App passcode" xml:space="preserve">
|
||||
<source>App passcode</source>
|
||||
<target>应用程序密码</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="App version" xml:space="preserve">
|
||||
@@ -577,10 +584,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls" xml:space="preserve">
|
||||
<source>Audio/video calls</source>
|
||||
<target>音频/视频通话</target>
|
||||
<note>chat feature</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
|
||||
<source>Audio/video calls are prohibited.</source>
|
||||
<target>禁止音频/视频通话。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Authentication cancelled" xml:space="preserve">
|
||||
@@ -640,6 +649,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can make calls." xml:space="preserve">
|
||||
<source>Both you and your contact can make calls.</source>
|
||||
<target>您和您的联系人都可以拨打电话。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Both you and your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -1837,10 +1847,12 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Fast and no wait until the sender is online!" xml:space="preserve">
|
||||
<source>Fast and no wait until the sender is online!</source>
|
||||
<target>快速且无需等待发件人在线!</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be deleted from servers." xml:space="preserve">
|
||||
<source>File will be deleted from servers.</source>
|
||||
<target>文件将从服务器中删除。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="File will be received when your contact completes uploading it." xml:space="preserve">
|
||||
@@ -2722,6 +2734,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can make calls." xml:space="preserve">
|
||||
<source>Only you can make calls.</source>
|
||||
<target>只有您可以拨打电话。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only you can send disappearing messages." xml:space="preserve">
|
||||
@@ -2741,6 +2754,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can make calls." xml:space="preserve">
|
||||
<source>Only your contact can make calls.</source>
|
||||
<target>只有您的联系人可以拨打电话。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Only your contact can send disappearing messages." xml:space="preserve">
|
||||
@@ -2920,6 +2934,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Polish interface" xml:space="preserve">
|
||||
<source>Polish interface</source>
|
||||
<target>波兰语界面</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Possibly, certificate fingerprint in server address is incorrect" xml:space="preserve">
|
||||
@@ -2974,6 +2989,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit audio/video calls." xml:space="preserve">
|
||||
<source>Prohibit audio/video calls.</source>
|
||||
<target>禁止音频/视频通话。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Prohibit irreversible message deletion." xml:space="preserve">
|
||||
@@ -3043,6 +3059,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving file will be stopped." xml:space="preserve">
|
||||
<source>Receiving file will be stopped.</source>
|
||||
<target>即将停止接收文件。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Receiving via" xml:space="preserve">
|
||||
@@ -3172,14 +3189,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke" xml:space="preserve">
|
||||
<source>Revoke</source>
|
||||
<target>撤销</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file" xml:space="preserve">
|
||||
<source>Revoke file</source>
|
||||
<target>撤销文件</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Revoke file?" xml:space="preserve">
|
||||
<source>Revoke file?</source>
|
||||
<target>撤销文件?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Role" xml:space="preserve">
|
||||
@@ -3369,6 +3389,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending file will be stopped." xml:space="preserve">
|
||||
<source>Sending file will be stopped.</source>
|
||||
<target>即将停止发送文件。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Sending via" xml:space="preserve">
|
||||
@@ -3423,6 +3444,7 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set it instead of system authentication." xml:space="preserve">
|
||||
<source>Set it instead of system authentication.</source>
|
||||
<target>设置它以代替系统身份验证。</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Set passphrase to export" xml:space="preserve">
|
||||
@@ -3597,14 +3619,17 @@ Available in v5.1</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop file" xml:space="preserve">
|
||||
<source>Stop file</source>
|
||||
<target>停止文件</target>
|
||||
<note>cancel file action</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop receiving file?" xml:space="preserve">
|
||||
<source>Stop receiving file?</source>
|
||||
<target>停止接收文件?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Stop sending file?" xml:space="preserve">
|
||||
<source>Stop sending file?</source>
|
||||
<target>停止发送文件?</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="Submit" xml:space="preserve">
|
||||
@@ -4125,6 +4150,7 @@ To connect, please ask your contact to create another connection link and check
|
||||
</trans-unit>
|
||||
<trans-unit id="Videos and files up to 1gb" xml:space="preserve">
|
||||
<source>Videos and files up to 1gb</source>
|
||||
<target>最大 1gb 的视频和文件</target>
|
||||
<note>No comment provided by engineer.</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="View security code" xml:space="preserve">
|
||||
|
||||
@@ -272,28 +272,25 @@ func receivedMsgNtf(_ res: ChatResponse) async -> (String, NSENotification)? {
|
||||
ntfBadgeCountGroupDefault.set(max(0, ntfBadgeCountGroupDefault.get() - 1))
|
||||
}
|
||||
if case .image = cItem.content.msgContent {
|
||||
if let file = cItem.file,
|
||||
file.fileProtocol == .smp,
|
||||
file.fileSize <= MAX_IMAGE_SIZE_AUTO_RCV,
|
||||
privacyAcceptImagesGroupDefault.get() {
|
||||
cItem = apiReceiveFile(fileId: file.fileId)?.chatItem ?? cItem
|
||||
}
|
||||
if let file = cItem.file,
|
||||
file.fileSize <= MAX_IMAGE_SIZE_AUTO_RCV,
|
||||
privacyAcceptImagesGroupDefault.get() {
|
||||
cItem = autoReceiveFile(file) ?? cItem
|
||||
}
|
||||
} else if case .video = cItem.content.msgContent {
|
||||
if let file = cItem.file,
|
||||
file.fileProtocol == .smp,
|
||||
file.fileSize <= MAX_VIDEO_SIZE_AUTO_RCV,
|
||||
privacyAcceptImagesGroupDefault.get() {
|
||||
cItem = apiReceiveFile(fileId: file.fileId)?.chatItem ?? cItem
|
||||
cItem = autoReceiveFile(file) ?? cItem
|
||||
}
|
||||
} else if case .voice = cItem.content.msgContent { // TODO check inlineFileMode != IFMSent
|
||||
if let file = cItem.file,
|
||||
file.fileProtocol == .smp,
|
||||
file.fileSize <= MAX_IMAGE_SIZE,
|
||||
file.fileSize > MAX_VOICE_MESSAGE_SIZE_INLINE_SEND,
|
||||
privacyAcceptImagesGroupDefault.get() {
|
||||
cItem = apiReceiveFile(fileId: file.fileId)?.chatItem ?? cItem
|
||||
cItem = autoReceiveFile(file) ?? cItem
|
||||
}
|
||||
}
|
||||
}
|
||||
let ntf: NSENotification = cInfo.ntfsEnabled ? .nse(notification: createMessageReceivedNtf(user, cInfo, cItem)) : .empty
|
||||
return cItem.showMutableNotification ? (aChatItem.chatId, ntf) : nil
|
||||
case let .rcvFileSndCancelled(_, aChatItem, _):
|
||||
@@ -401,6 +398,22 @@ func apiReceiveFile(fileId: Int64, inline: Bool? = nil) -> AChatItem? {
|
||||
return nil
|
||||
}
|
||||
|
||||
func apiSetFileToReceive(fileId: Int64) {
|
||||
let r = sendSimpleXCmd(.setFileToReceive(fileId: fileId))
|
||||
if case .cmdOk = r { return }
|
||||
logger.error("setFileToReceive error: \(responseError(r))")
|
||||
}
|
||||
|
||||
func autoReceiveFile(_ file: CIFile) -> ChatItem? {
|
||||
switch file.fileProtocol {
|
||||
case .smp:
|
||||
return apiReceiveFile(fileId: file.fileId)?.chatItem
|
||||
case .xftp:
|
||||
apiSetFileToReceive(fileId: file.fileId)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func setNetworkConfig(_ cfg: NetCfg) throws {
|
||||
let r = sendSimpleXCmd(.apiSetNetworkConfig(networkConfig: cfg))
|
||||
if case .cmdOk = r { return }
|
||||
|
||||
@@ -100,6 +100,7 @@ public enum ChatCommand {
|
||||
case apiChatRead(type: ChatType, id: Int64, itemRange: (Int64, Int64))
|
||||
case apiChatUnread(type: ChatType, id: Int64, unreadChat: Bool)
|
||||
case receiveFile(fileId: Int64, inline: Bool?)
|
||||
case setFileToReceive(fileId: Int64)
|
||||
case cancelFile(fileId: Int64)
|
||||
case showVersion
|
||||
case string(String)
|
||||
@@ -206,6 +207,7 @@ public enum ChatCommand {
|
||||
return "/freceive \(fileId) inline=\(onOff(inline))"
|
||||
}
|
||||
return "/freceive \(fileId)"
|
||||
case let .setFileToReceive(fileId): return "/_set_file_to_receive \(fileId)"
|
||||
case let .cancelFile(fileId): return "/fcancel \(fileId)"
|
||||
case .showVersion: return "/version"
|
||||
case let .string(str): return str
|
||||
@@ -302,6 +304,7 @@ public enum ChatCommand {
|
||||
case .apiChatRead: return "apiChatRead"
|
||||
case .apiChatUnread: return "apiChatUnread"
|
||||
case .receiveFile: return "receiveFile"
|
||||
case .setFileToReceive: return "setFileToReceive"
|
||||
case .cancelFile: return "cancelFile"
|
||||
case .showVersion: return "showVersion"
|
||||
case .string: return "console command"
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"\n" = "\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"\nAvailable in v5.1" = "\nDostupné ve verzi 5.1";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
" " = " ";
|
||||
|
||||
@@ -172,6 +175,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"%lldw" = "%lldw";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages failed to decrypt." = "%u zpráv se nepodařilo dešifrovat.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages skipped." = "%u zpráv přeskočeno.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"`a + b`" = "\\`a + b`";
|
||||
|
||||
@@ -284,6 +293,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow" = "Povolit";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow calls only if your contact allows them." = "Povolte hovory, pouze pokud je váš kontakt povolí.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow disappearing messages only if your contact allows it to you." = "Povolte mizící zprávy, pouze pokud vám to váš kontakt dovolí.";
|
||||
|
||||
@@ -308,6 +320,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow voice messages?" = "Povolit hlasové zprávy?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to call you." = "Povolte svým kontaktům vám volat.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to irreversibly delete sent messages." = "Umožněte svým kontaktům nevratně odstranit odeslané zprávy.";
|
||||
|
||||
@@ -335,6 +350,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"App icon" = "Ikona aplikace";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App passcode" = "Heslo aplikace";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App version" = "Verze aplikace";
|
||||
|
||||
@@ -356,6 +374,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"audio call (not e2e encrypted)" = "zvukový hovor (nešifrovaný e2e)";
|
||||
|
||||
/* chat feature */
|
||||
"Audio/video calls" = "Audio/video hovory";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Audio/video calls are prohibited." = "Audio/video hovory jsou zakázány.";
|
||||
|
||||
/* PIN entry */
|
||||
"Authentication cancelled" = "Ověření zrušeno";
|
||||
|
||||
@@ -398,6 +422,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can irreversibly delete sent messages." = "Vy i váš kontakt můžete nevratně mazat odeslané zprávy.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can make calls." = "Volat můžete vy i váš kontakt.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can send disappearing messages." = "Vy i váš kontakt můžete posílat mizící zprávy.";
|
||||
|
||||
@@ -1226,6 +1253,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Failed to remove passphrase" = "Přístupovou frázi se nepodařilo odstranit";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Fast and no wait until the sender is online!" = "Rychle a bez čekání, než bude odesílatel online!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be deleted from servers." = "Soubor bude smazán ze serverů.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be received when your contact completes uploading it." = "Soubor bude přijat, jakmile váš kontakt dokončí nahrávání.";
|
||||
|
||||
@@ -1851,6 +1884,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Nevratně mazat zprávy můžete pouze vy (váš kontakt je může označit ke smazání).";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can make calls." = "Volat můžete pouze vy.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can send disappearing messages." = "Mizící zprávy můžete odesílat pouze vy.";
|
||||
|
||||
@@ -1860,6 +1896,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Nevratně mazat zprávy může pouze váš kontakt (vy je můžete označit ke smazání).";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can make calls." = "Volat může pouze váš kontakt.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can send disappearing messages." = "Zmizelé zprávy může odesílat pouze váš kontakt.";
|
||||
|
||||
@@ -1974,6 +2013,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Heslo uložte bezpečně, v případě jeho ztráty jej NEBUDE možné změnit.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Polish interface" = "Polské rozhraní";
|
||||
|
||||
/* server test error */
|
||||
"Possibly, certificate fingerprint in server address is incorrect" = "Je možné, že otisk certifikátu v adrese serveru je nesprávný";
|
||||
|
||||
@@ -2004,6 +2046,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Profile password" = "Heslo profilu";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit audio/video calls." = "Zákaz audio/video hovorů.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit irreversible message deletion." = "Zakázat nevratné mazání zpráv.";
|
||||
|
||||
@@ -2049,6 +2094,9 @@
|
||||
/* notification */
|
||||
"Received file event" = "Událost přijatého souboru";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving file will be stopped." = "Příjem souboru bude zastaven.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving via" = "Příjem přes";
|
||||
|
||||
@@ -2136,6 +2184,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Revert" = "Vrátit";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke" = "Odvolat";
|
||||
|
||||
/* cancel file action */
|
||||
"Revoke file" = "Odvolat soubor";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke file?" = "Odvolat soubor?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Role" = "Role";
|
||||
|
||||
@@ -2250,6 +2307,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Sender may have deleted the connection request." = "Odesílatel možná smazal požadavek připojení.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending file will be stopped." = "Odesílání souboru bude zastaveno.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending via" = "Odesílání přes";
|
||||
|
||||
@@ -2280,6 +2340,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Set group preferences" = "Nastavení skupinových předvoleb";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set it instead of system authentication." = "Nastavte jej namísto ověřování systému.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set passphrase to export" = "Nastavení přístupové fráze pro export";
|
||||
|
||||
@@ -2385,6 +2448,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Stop chat?" = "Zastavit chat?";
|
||||
|
||||
/* cancel file action */
|
||||
"Stop file" = "Zastavit soubor";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop receiving file?" = "Zastavit příjem souboru?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop sending file?" = "Zastavit odesílání souboru?";
|
||||
|
||||
/* authentication reason */
|
||||
"Stop SimpleX" = "Zastavit SimpleX";
|
||||
|
||||
@@ -2724,6 +2796,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Video will be received when your contact is online, please wait or check later!" = "Video obdržíte, až bude váš kontakt online, vyčkejte prosím nebo zkontrolujte později!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Videos and files up to 1gb" = "Videa a soubory až do velikosti 1 gb";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"View security code" = "Zobrazení bezpečnostního kódu";
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"\n" = "\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"\nAvailable in v5.1" = "\nVerfügbar ab v5.1";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
" " = " ";
|
||||
|
||||
@@ -172,6 +175,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"%lldw" = "%lldW";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages failed to decrypt." = "%u Nachrichten konnten nicht entschlüsselt werden.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages skipped." = "%u übersprungene Nachrichten.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"`a + b`" = "\\`a + b`";
|
||||
|
||||
@@ -284,6 +293,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow" = "Erlauben";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow calls only if your contact allows them." = "Anrufe sind nur erlaubt, wenn Ihr Kontakt das ebenfalls erlaubt.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow disappearing messages only if your contact allows it to you." = "Verschwindende Nachrichten nur erlauben, wenn Ihr Kontakt das ebenfalls erlaubt.";
|
||||
|
||||
@@ -308,6 +320,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow voice messages?" = "Sprachnachricht erlauben?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to call you." = "Erlaubt Ihren Kontakten Sie anzurufen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to irreversibly delete sent messages." = "Erlauben Sie Ihren Kontakten gesendete Nachrichten unwiederbringlich zu löschen.";
|
||||
|
||||
@@ -335,6 +350,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"App icon" = "App Icon";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App passcode" = "App Passwort";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App version" = "App Version";
|
||||
|
||||
@@ -356,6 +374,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"audio call (not e2e encrypted)" = "Audioanruf (nicht E2E verschlüsselt)";
|
||||
|
||||
/* chat feature */
|
||||
"Audio/video calls" = "Audio/Video Anrufe";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Audio/video calls are prohibited." = "Audio/Video Anrufe sind nicht erlaubt.";
|
||||
|
||||
/* PIN entry */
|
||||
"Authentication cancelled" = "Authentifizierung abgebrochen";
|
||||
|
||||
@@ -398,6 +422,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can irreversibly delete sent messages." = "Sowohl Ihr Kontakt, als auch Sie können gesendete Nachrichten unwiederbringlich löschen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can make calls." = "Sowohl Sie, als auch Ihr Kontakt können Anrufe tätigen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can send disappearing messages." = "Ihr Kontakt und Sie können beide verschwindende Nachrichten senden.";
|
||||
|
||||
@@ -1226,6 +1253,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Failed to remove passphrase" = "Das Entfernen des Passworts ist fehlgeschlagen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Fast and no wait until the sender is online!" = "Schnell und ohne warten auf den Absender, bis er online ist!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be deleted from servers." = "Die Datei wird von den Servern gelöscht.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be received when your contact completes uploading it." = "Die Datei wird empfangen, sobald das Hochladen durch ihren Kontakt abgeschlossen ist.";
|
||||
|
||||
@@ -1851,6 +1884,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Nur Sie können Nachrichten unwiederbringlich löschen (Ihr Kontakt kann sie zum Löschen markieren).";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can make calls." = "Nur Sie können Anrufe tätigen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can send disappearing messages." = "Nur Sie können verschwindende Nachrichten senden.";
|
||||
|
||||
@@ -1860,6 +1896,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Nur Ihr Kontakt kann Nachrichten unwiederbringlich löschen (Sie können sie zum Löschen markieren).";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can make calls." = "Nur Ihr Kontakt kann Anrufe tätigen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can send disappearing messages." = "Nur Ihr Kontakt kann verschwindende Nachrichten senden.";
|
||||
|
||||
@@ -1974,6 +2013,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Bitte bewahren Sie das Passwort sicher auf, Sie können es NICHT mehr ändern, wenn Sie es vergessen haben oder verlieren.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Polish interface" = "Polnische Bedienoberfläche";
|
||||
|
||||
/* server test error */
|
||||
"Possibly, certificate fingerprint in server address is incorrect" = "Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig";
|
||||
|
||||
@@ -2004,6 +2046,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Profile password" = "Passwort für Profil";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit audio/video calls." = "Audio/Video Anrufe nicht erlauben.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit irreversible message deletion." = "Unwiederbringliches löschen von Nachrichten nicht erlauben.";
|
||||
|
||||
@@ -2049,6 +2094,9 @@
|
||||
/* notification */
|
||||
"Received file event" = "Datei-Ereignis empfangen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving file will be stopped." = "Der Empfang der Datei wird beendet.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving via" = "Empfangen über";
|
||||
|
||||
@@ -2136,6 +2184,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Revert" = "Zurückkehren";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke" = "Widerrufen";
|
||||
|
||||
/* cancel file action */
|
||||
"Revoke file" = "Datei widerrufen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke file?" = "Datei widerrufen?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Role" = "Rolle";
|
||||
|
||||
@@ -2250,6 +2307,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Sender may have deleted the connection request." = "Der Absender hat möglicherweise die Verbindungsanfrage gelöscht.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending file will be stopped." = "Das Senden der Datei wird beendet.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending via" = "Senden über";
|
||||
|
||||
@@ -2280,6 +2340,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Set group preferences" = "Gruppenpräferenzen einstellen";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set it instead of system authentication." = "Anstelle der System-Authentifizierung festlegen.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set passphrase to export" = "Passwort für den Export festlegen";
|
||||
|
||||
@@ -2385,6 +2448,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Stop chat?" = "Chat beenden?";
|
||||
|
||||
/* cancel file action */
|
||||
"Stop file" = "Datei beenden";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop receiving file?" = "Den Empfang der Datei beenden?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop sending file?" = "Das Senden der Datei beenden?";
|
||||
|
||||
/* authentication reason */
|
||||
"Stop SimpleX" = "Stoppen Sie SimpleX";
|
||||
|
||||
@@ -2724,6 +2796,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Video will be received when your contact is online, please wait or check later!" = "Das Video wird empfangen, wenn Ihr Kontakt online ist. Bitte warten oder überprüfen Sie es später!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Videos and files up to 1gb" = "Videos und Dateien bis zu 1GB";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"View security code" = "Schauen Sie sich den Sicherheitscode an";
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"\n" = "\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"\nAvailable in v5.1" = "\nDisponible en v5.1";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
" " = " ";
|
||||
|
||||
@@ -44,7 +47,7 @@
|
||||
"[Send us email](mailto:chat@simplex.chat)" = "[Contacta por email](mailto:chat@simplex.chat)";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Dar Estrella en GitHub] (https://github.com/simplex-chat/simplex-chat)";
|
||||
"[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Estrella en GitHub] (https://github.com/simplex-chat/simplex-chat)";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"**Add new contact**: to create your one-time QR Code for your contact." = "**Añadir nuevo contacto**: para crear tu código QR o enlace de un uso para tu contacto.";
|
||||
@@ -172,6 +175,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"%lldw" = "%lldw";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages failed to decrypt." = "%u mensajes no pudieron ser descifrados.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages skipped." = "%u mensajes omitidos.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"`a + b`" = "\\`a + b`";
|
||||
|
||||
@@ -284,6 +293,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow" = "Permitir";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow calls only if your contact allows them." = "Se permiten llamadas sólo si tu contacto también las permite.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow disappearing messages only if your contact allows it to you." = "Se permiten mensajes temporales sólo si tu contacto también los permite para tí.";
|
||||
|
||||
@@ -308,6 +320,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow voice messages?" = "¿Permites los mensajes de voz?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to call you." = "Permites que tus contactos puedan llamarte.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to irreversibly delete sent messages." = "Permites a tus contactos eliminar irreversiblemente los mensajes enviados.";
|
||||
|
||||
@@ -335,6 +350,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"App icon" = "Icono app";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App passcode" = "Código de acceso a la aplicación";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App version" = "Versión de la aplicación";
|
||||
|
||||
@@ -356,6 +374,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"audio call (not e2e encrypted)" = "llamada de audio (sin cifrado e2e)";
|
||||
|
||||
/* chat feature */
|
||||
"Audio/video calls" = "Llamadas/Videollamadas";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Audio/video calls are prohibited." = "Las llamadas/videollamadas no están permitidas.";
|
||||
|
||||
/* PIN entry */
|
||||
"Authentication cancelled" = "Autenticación cancelada";
|
||||
|
||||
@@ -398,6 +422,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can irreversibly delete sent messages." = "Tanto tú como tu contacto podéis eliminar de forma irreversible los mensajes enviados.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can make calls." = "Tanto tú como tu contacto podéis realizar llamadas.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can send disappearing messages." = "Tanto tú como tu contacto podéis enviar mensajes temporales.";
|
||||
|
||||
@@ -1226,6 +1253,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Failed to remove passphrase" = "Error eliminando la contraseña";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Fast and no wait until the sender is online!" = "¡Rápido y sin tener que esperar a que el remitente esté en línea!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be deleted from servers." = "El archivo será eliminado de los servidores.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be received when your contact completes uploading it." = "El archivo se recibirá cuando tu contacto termine de subirlo.";
|
||||
|
||||
@@ -1851,6 +1884,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can irreversibly delete messages (your contact can mark them for deletion)." = "Sólo tú puedes eliminar mensajes de forma irreversible (tu contacto puede marcarlos para eliminar).";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can make calls." = "Solo tú puedes realizar llamadas.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can send disappearing messages." = "Sólo tú puedes enviar mensajes temporales.";
|
||||
|
||||
@@ -1860,6 +1896,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can irreversibly delete messages (you can mark them for deletion)." = "Sólo tu contacto puede eliminar mensajes de forma irreversible (tu puedes marcarlos para eliminar).";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can make calls." = "Sólo tu contacto puede realizar llamadas.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can send disappearing messages." = "Sólo tu contacto puede enviar mensajes temporales.";
|
||||
|
||||
@@ -1974,6 +2013,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Guarda la contraseña de forma segura, NO podrás cambiarla si la pierdes.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Polish interface" = "Interfaz en polaco";
|
||||
|
||||
/* server test error */
|
||||
"Possibly, certificate fingerprint in server address is incorrect" = "Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta";
|
||||
|
||||
@@ -2004,6 +2046,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Profile password" = "Contraseña del perfil";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit audio/video calls." = "Prohibir las llamadas/videollamadas.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit irreversible message deletion." = "Prohibir la eliminación irreversible de mensajes.";
|
||||
|
||||
@@ -2049,6 +2094,9 @@
|
||||
/* notification */
|
||||
"Received file event" = "Evento de archivo recibido";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving file will be stopped." = "Se detendrá la recepción del archivo.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving via" = "Recibiendo mediante";
|
||||
|
||||
@@ -2136,6 +2184,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Revert" = "Revertir";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke" = "Revocar";
|
||||
|
||||
/* cancel file action */
|
||||
"Revoke file" = "Revocar archivo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke file?" = "¿Revocar archivo?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Role" = "Rol";
|
||||
|
||||
@@ -2250,6 +2307,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Sender may have deleted the connection request." = "El remitente puede haber eliminado la solicitud de conexión.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending file will be stopped." = "Se detendrá el envío del archivo.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending via" = "Envando mediante";
|
||||
|
||||
@@ -2280,6 +2340,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Set group preferences" = "Establecer preferencias de grupo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set it instead of system authentication." = "Úsalo en lugar de la autenticación del sistema.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set passphrase to export" = "Escribe la contraseña para exportar";
|
||||
|
||||
@@ -2385,6 +2448,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Stop chat?" = "¿Detener Chat?";
|
||||
|
||||
/* cancel file action */
|
||||
"Stop file" = "Detener archivo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop receiving file?" = "¿Dejar de recibir el archivo?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop sending file?" = "¿Dejar de enviar el archivo?";
|
||||
|
||||
/* authentication reason */
|
||||
"Stop SimpleX" = "Detener SimpleX";
|
||||
|
||||
@@ -2724,6 +2796,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Video will be received when your contact is online, please wait or check later!" = "El vídeo se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Videos and files up to 1gb" = "Vídeos y archivos de hasta 1Gb";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"View security code" = "Ver código de seguridad";
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"\n" = "\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"\nAvailable in v5.1" = "\nDisponible dans la v5.1";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
" " = " ";
|
||||
|
||||
@@ -172,6 +175,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"%lldw" = "%lldsmn";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages failed to decrypt." = "%u messages n'ont pas pu être déchiffrés.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages skipped." = "%u messages sautés.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"`a + b`" = "\\`a + b`";
|
||||
|
||||
@@ -341,6 +350,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"App icon" = "Icône de l'app";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App passcode" = "Code d'accès à l'app";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App version" = "Version de l'app";
|
||||
|
||||
@@ -1241,6 +1253,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Failed to remove passphrase" = "Échec de la suppression de la phrase secrète";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Fast and no wait until the sender is online!" = "Rapide et ne nécessitant pas d'attendre que l'expéditeur soit en ligne !";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be deleted from servers." = "Le fichier sera supprimé des serveurs.";
|
||||
|
||||
@@ -1998,6 +2013,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Veuillez conserver votre phrase secrète en lieu sûr, vous NE pourrez PAS la changer si vous la perdez.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Polish interface" = "Interface en polonais";
|
||||
|
||||
/* server test error */
|
||||
"Possibly, certificate fingerprint in server address is incorrect" = "Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte";
|
||||
|
||||
@@ -2322,6 +2340,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Set group preferences" = "Définir les préférences du groupe";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set it instead of system authentication." = "Il permet de remplacer l'authentification du système.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set passphrase to export" = "Définir la phrase secrète pour l'export";
|
||||
|
||||
@@ -2775,6 +2796,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Video will be received when your contact is online, please wait or check later!" = "La vidéo ne sera reçue que lorsque votre contact sera en ligne. Veuillez patienter ou vérifier plus tard !";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Videos and files up to 1gb" = "Vidéos et fichiers jusqu'à 1Go";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"View security code" = "Afficher le code de sécurité";
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"\n" = "\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"\nAvailable in v5.1" = "\nDisponibile nella v5.1";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
" " = " ";
|
||||
|
||||
@@ -172,6 +175,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"%lldw" = "%lldset";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages failed to decrypt." = "%u messaggi non sono stati decifrati.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages skipped." = "%u messaggi saltati.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"`a + b`" = "\\`a + b`";
|
||||
|
||||
@@ -341,6 +350,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"App icon" = "Icona app";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App passcode" = "Codice di accesso dell'app";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App version" = "Versione dell'app";
|
||||
|
||||
@@ -1241,6 +1253,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Failed to remove passphrase" = "Rimozione della password fallita";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Fast and no wait until the sender is online!" = "Veloce e senza aspettare che il mittente sia in linea!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be deleted from servers." = "Il file verrà eliminato dai server.";
|
||||
|
||||
@@ -1998,6 +2013,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Conserva la password in modo sicuro, NON potrai cambiarla se la perdi.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Polish interface" = "Interfaccia polacca";
|
||||
|
||||
/* server test error */
|
||||
"Possibly, certificate fingerprint in server address is incorrect" = "Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata";
|
||||
|
||||
@@ -2322,6 +2340,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Set group preferences" = "Imposta le preferenze del gruppo";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set it instead of system authentication." = "Impostala al posto dell'autenticazione di sistema.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set passphrase to export" = "Imposta la password per esportare";
|
||||
|
||||
@@ -2775,6 +2796,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Video will be received when your contact is online, please wait or check later!" = "Il video verrà ricevuto quando il tuo contatto sarà in linea, attendi o controlla più tardi!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Videos and files up to 1gb" = "Video e file fino a 1 GB";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"View security code" = "Vedi codice di sicurezza";
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"\n" = "\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"\nAvailable in v5.1" = "\n在 v5.1 中可用";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
" " = " ";
|
||||
|
||||
@@ -172,6 +175,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"%lldw" = "%lldw";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages failed to decrypt." = "%u 消息解密失败。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"%u messages skipped." = "已跳过 %u 条消息。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"`a + b`" = "\\`a + b`";
|
||||
|
||||
@@ -284,6 +293,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow" = "允许";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow calls only if your contact allows them." = "仅当您的联系人允许时才允许呼叫。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow disappearing messages only if your contact allows it to you." = "仅当您的联系人允许时才允许限时消息。";
|
||||
|
||||
@@ -308,6 +320,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Allow voice messages?" = "允许语音消息?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to call you." = "允许您的联系人给您打电话。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Allow your contacts to irreversibly delete sent messages." = "允许您的联系人不可撤回地删除已发送消息。";
|
||||
|
||||
@@ -335,6 +350,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"App icon" = "应用程序图标";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App passcode" = "应用程序密码";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"App version" = "应用程序版本";
|
||||
|
||||
@@ -356,6 +374,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"audio call (not e2e encrypted)" = "语音通话(非端到端加密)";
|
||||
|
||||
/* chat feature */
|
||||
"Audio/video calls" = "音频/视频通话";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Audio/video calls are prohibited." = "禁止音频/视频通话。";
|
||||
|
||||
/* PIN entry */
|
||||
"Authentication cancelled" = "身份验证已取消";
|
||||
|
||||
@@ -398,6 +422,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can irreversibly delete sent messages." = "您和您的联系人都可以不可逆转地删除已发送的消息。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can make calls." = "您和您的联系人都可以拨打电话。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Both you and your contact can send disappearing messages." = "您和您的联系人都可以发送限时消息。";
|
||||
|
||||
@@ -1226,6 +1253,12 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Failed to remove passphrase" = "移除密码失败";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Fast and no wait until the sender is online!" = "快速且无需等待发件人在线!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be deleted from servers." = "文件将从服务器中删除。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"File will be received when your contact completes uploading it." = "文件将在您的联系人完成上传后收到。";
|
||||
|
||||
@@ -1851,6 +1884,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can irreversibly delete messages (your contact can mark them for deletion)." = "只有您可以不可撤回地删除消息(您的联系人可以将它们标记为删除)。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can make calls." = "只有您可以拨打电话。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only you can send disappearing messages." = "只有您可以发送限时消息。";
|
||||
|
||||
@@ -1860,6 +1896,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can irreversibly delete messages (you can mark them for deletion)." = "只有您的联系人才能不可撤回地删除消息(您可以将它们标记为删除)。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can make calls." = "只有您的联系人可以拨打电话。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Only your contact can send disappearing messages." = "只有您的联系人才可以发送限时消息。";
|
||||
|
||||
@@ -1974,6 +2013,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Please store passphrase securely, you will NOT be able to change it if you lose it." = "请安全地保存密码,如果您丢失了密码,您将无法更改它。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Polish interface" = "波兰语界面";
|
||||
|
||||
/* server test error */
|
||||
"Possibly, certificate fingerprint in server address is incorrect" = "服务器地址中的证书指纹可能不正确";
|
||||
|
||||
@@ -2004,6 +2046,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Profile password" = "个人资料密码";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit audio/video calls." = "禁止音频/视频通话。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Prohibit irreversible message deletion." = "禁止不可撤回消息删除。";
|
||||
|
||||
@@ -2049,6 +2094,9 @@
|
||||
/* notification */
|
||||
"Received file event" = "收到文件项目";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving file will be stopped." = "即将停止接收文件。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Receiving via" = "接收通过";
|
||||
|
||||
@@ -2136,6 +2184,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Revert" = "恢复";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke" = "撤销";
|
||||
|
||||
/* cancel file action */
|
||||
"Revoke file" = "撤销文件";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Revoke file?" = "撤销文件?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Role" = "角色";
|
||||
|
||||
@@ -2250,6 +2307,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Sender may have deleted the connection request." = "发送人可能已删除连接请求。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending file will be stopped." = "即将停止发送文件。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Sending via" = "发送通过";
|
||||
|
||||
@@ -2280,6 +2340,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Set group preferences" = "设置群组偏好设置";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set it instead of system authentication." = "设置它以代替系统身份验证。";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Set passphrase to export" = "设置密码来导出";
|
||||
|
||||
@@ -2385,6 +2448,15 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Stop chat?" = "停止聊天程序?";
|
||||
|
||||
/* cancel file action */
|
||||
"Stop file" = "停止文件";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop receiving file?" = "停止接收文件?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop sending file?" = "停止发送文件?";
|
||||
|
||||
/* authentication reason */
|
||||
"Stop SimpleX" = "停止 SimpleX";
|
||||
|
||||
@@ -2724,6 +2796,9 @@
|
||||
/* No comment provided by engineer. */
|
||||
"Video will be received when your contact is online, please wait or check later!" = "视频将在您的联系人在线时收到,请稍等或稍后查看!";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Videos and files up to 1gb" = "最大 1gb 的视频和文件";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"View security code" = "查看安全码";
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
langs=( cs de es fr it nl pl ru zh-Hans )
|
||||
langs=( en cs de es fr it nl pl ru zh-Hans )
|
||||
|
||||
for lang in "${langs[@]}"; do
|
||||
echo "***"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
langs=( cs de es fr it nl pl ru zh-Hans )
|
||||
langs=( en cs de es fr it nl pl ru zh-Hans )
|
||||
|
||||
for lang in "${langs[@]}"; do
|
||||
echo "***"
|
||||
|
||||
@@ -91,6 +91,7 @@ library
|
||||
Simplex.Chat.Migrations.M20230328_files_protocol
|
||||
Simplex.Chat.Migrations.M20230402_protocol_servers
|
||||
Simplex.Chat.Migrations.M20230411_extra_xftp_file_descriptions
|
||||
Simplex.Chat.Migrations.M20230420_rcv_files_to_receive
|
||||
Simplex.Chat.Mobile
|
||||
Simplex.Chat.Mobile.WebRTC
|
||||
Simplex.Chat.Options
|
||||
|
||||
@@ -225,7 +225,9 @@ startChatController subConns enableExpireCIs startXFTPWorkers = do
|
||||
then Just <$> async (subscribeUsers users)
|
||||
else pure Nothing
|
||||
atomically . writeTVar s $ Just (a1, a2)
|
||||
when startXFTPWorkers startXFTP
|
||||
when startXFTPWorkers $ do
|
||||
startXFTP
|
||||
void $ forkIO $ startFilesToReceive users
|
||||
startCleanupManager
|
||||
when enableExpireCIs $ startExpireCIs users
|
||||
pure a1
|
||||
@@ -257,6 +259,22 @@ subscribeUsers users = do
|
||||
subscribe :: [User] -> m ()
|
||||
subscribe = mapM_ $ runExceptT . subscribeUserConnections Agent.subscribeConnections
|
||||
|
||||
startFilesToReceive :: forall m. ChatMonad' m => [User] -> m ()
|
||||
startFilesToReceive users = do
|
||||
let (us, us') = partition activeUser users
|
||||
startReceive us
|
||||
startReceive us'
|
||||
where
|
||||
startReceive :: [User] -> m ()
|
||||
startReceive = mapM_ $ runExceptT . startReceiveUserFiles
|
||||
|
||||
startReceiveUserFiles :: forall m. ChatMonad m => User -> m ()
|
||||
startReceiveUserFiles user = do
|
||||
filesToReceive <- withStore' (`getRcvFilesToReceive` user)
|
||||
forM_ filesToReceive $ \ft ->
|
||||
flip catchError (toView . CRChatError (Just user)) $
|
||||
toView =<< receiveFile' user ft Nothing Nothing
|
||||
|
||||
restoreCalls :: ChatMonad' m => m ()
|
||||
restoreCalls = do
|
||||
savedCalls <- fromRight [] <$> runExceptT (withStore' $ \db -> getCalls db)
|
||||
@@ -939,7 +957,7 @@ processChatCommand = \case
|
||||
CRServerTestResult user srv <$> withAgent (\a -> testProtocolServer a (aUserId user) server)
|
||||
TestProtoServer srv -> withUser $ \User {userId} ->
|
||||
processChatCommand $ APITestProtoServer userId srv
|
||||
APISetChatItemTTL userId newTTL_ -> withUser' $ \user -> do
|
||||
APISetChatItemTTL userId newTTL_ -> withUser $ \user -> do
|
||||
checkSameUser userId user
|
||||
checkStoreNotChanged $
|
||||
withChatLock "setChatItemTTL" $ do
|
||||
@@ -1385,13 +1403,11 @@ processChatCommand = \case
|
||||
ReceiveFile fileId rcvInline_ filePath_ -> withUser $ \_ ->
|
||||
withChatLock "receiveFile" . procCmd $ do
|
||||
(user, ft) <- withStore $ \db -> getRcvFileTransferById db fileId
|
||||
(CRRcvFileAccepted user <$> acceptFileReceive user ft rcvInline_ filePath_) `catchError` processError user ft
|
||||
where
|
||||
processError user ft = \case
|
||||
-- TODO AChatItem in Cancelled events
|
||||
ChatErrorAgent (SMP SMP.AUTH) _ -> pure $ CRRcvFileAcceptedSndCancelled user ft
|
||||
ChatErrorAgent (CONN DUPLICATE) _ -> pure $ CRRcvFileAcceptedSndCancelled user ft
|
||||
e -> throwError e
|
||||
receiveFile' user ft rcvInline_ filePath_
|
||||
SetFileToReceive fileId -> withUser $ \_ -> do
|
||||
withChatLock "setFileToReceive" . procCmd $ do
|
||||
withStore' (`setRcvFileToReceive` fileId)
|
||||
ok_
|
||||
CancelFile fileId -> withUser $ \user@User {userId} ->
|
||||
withChatLock "cancelFile" . procCmd $
|
||||
withStore (\db -> getFileTransfer db user fileId) >>= \case
|
||||
@@ -1904,6 +1920,16 @@ toFSFilePath :: ChatMonad m => FilePath -> m FilePath
|
||||
toFSFilePath f =
|
||||
maybe f (</> f) <$> (readTVarIO =<< asks filesFolder)
|
||||
|
||||
receiveFile' :: ChatMonad m => User -> RcvFileTransfer -> Maybe Bool -> Maybe FilePath -> m ChatResponse
|
||||
receiveFile' user ft rcvInline_ filePath_ = do
|
||||
(CRRcvFileAccepted user <$> acceptFileReceive user ft rcvInline_ filePath_) `catchError` processError
|
||||
where
|
||||
processError = \case
|
||||
-- TODO AChatItem in Cancelled events
|
||||
ChatErrorAgent (SMP SMP.AUTH) _ -> pure $ CRRcvFileAcceptedSndCancelled user ft
|
||||
ChatErrorAgent (CONN DUPLICATE) _ -> pure $ CRRcvFileAcceptedSndCancelled user ft
|
||||
e -> throwError e
|
||||
|
||||
acceptFileReceive :: forall m. ChatMonad m => User -> RcvFileTransfer -> Maybe Bool -> Maybe FilePath -> m AChatItem
|
||||
acceptFileReceive user@User {userId} RcvFileTransfer {fileId, xftpRcvFile, fileInvitation = FileInvitation {fileName = fName, fileConnReq, fileInline, fileSize}, fileStatus, grpMemberId} rcvInline_ filePath_ = do
|
||||
unless (fileStatus == RFSNew) $ case fileStatus of
|
||||
@@ -2212,13 +2238,16 @@ cleanupManager = do
|
||||
forM_ us' cleanupUser
|
||||
liftIO $ threadDelay' $ cleanupManagerInterval * 1000000
|
||||
where
|
||||
cleanupUser user =
|
||||
cleanupUser user = do
|
||||
cleanupTimedItems user `catchError` (toView . CRChatError (Just user))
|
||||
cleanupFileDescriptions user `catchError` (toView . CRChatError (Just user))
|
||||
cleanupTimedItems user = do
|
||||
ts <- liftIO getCurrentTime
|
||||
let startTimedThreadCutoff = addUTCTime (realToFrac cleanupManagerInterval) ts
|
||||
timedItems <- withStore' $ \db -> getTimedItems db user startTimedThreadCutoff
|
||||
forM_ timedItems $ uncurry (startTimedItemThread user)
|
||||
cleanupFileDescriptions user =
|
||||
withStore' (`cleanupXFTPFileDescrs` user)
|
||||
|
||||
startProximateTimedItemThread :: ChatMonad m => User -> (ChatRef, ChatItemId) -> UTCTime -> m ()
|
||||
startProximateTimedItemThread user itemRef deleteAt = do
|
||||
@@ -4668,6 +4697,7 @@ chatCommandP =
|
||||
("/image_forward " <|> "/imgf ") *> (ForwardImage <$> chatNameP' <* A.space <*> A.decimal),
|
||||
("/fdescription " <|> "/fd") *> (SendFileDescription <$> chatNameP' <* A.space <*> filePath),
|
||||
("/freceive " <|> "/fr ") *> (ReceiveFile <$> A.decimal <*> optional (" inline=" *> onOffP) <*> optional (A.space *> filePath)),
|
||||
"/_set_file_to_receive " *> (SetFileToReceive <$> A.decimal),
|
||||
("/fcancel " <|> "/fc ") *> (CancelFile <$> A.decimal),
|
||||
("/fstatus " <|> "/fs ") *> (FileStatus <$> A.decimal),
|
||||
"/simplex" $> ConnectSimplex,
|
||||
|
||||
@@ -346,6 +346,7 @@ data ChatCommand
|
||||
| ForwardImage ChatName FileTransferId
|
||||
| SendFileDescription ChatName FilePath
|
||||
| ReceiveFile {fileId :: FileTransferId, fileInline :: Maybe Bool, filePath :: Maybe FilePath}
|
||||
| SetFileToReceive FileTransferId
|
||||
| CancelFile FileTransferId
|
||||
| FileStatus FileTransferId
|
||||
| ShowProfile -- UserId (not used in UI)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
|
||||
module Simplex.Chat.Migrations.M20230420_rcv_files_to_receive where
|
||||
|
||||
import Database.SQLite.Simple (Query)
|
||||
import Database.SQLite.Simple.QQ (sql)
|
||||
|
||||
m20230420_rcv_files_to_receive :: Query
|
||||
m20230420_rcv_files_to_receive =
|
||||
[sql|
|
||||
ALTER TABLE rcv_files ADD COLUMN to_receive INTEGER;
|
||||
|]
|
||||
|
||||
down_m20230420_rcv_files_to_receive :: Query
|
||||
down_m20230420_rcv_files_to_receive =
|
||||
[sql|
|
||||
ALTER TABLE rcv_files DROP COLUMN to_receive;
|
||||
|]
|
||||
@@ -229,7 +229,8 @@ CREATE TABLE rcv_files(
|
||||
file_descr_id INTEGER NULL
|
||||
REFERENCES xftp_file_descriptions ON DELETE SET NULL,
|
||||
agent_rcv_file_id BLOB NULL,
|
||||
agent_rcv_file_deleted INTEGER DEFAULT 0 CHECK(agent_rcv_file_deleted NOT NULL)
|
||||
agent_rcv_file_deleted INTEGER DEFAULT 0 CHECK(agent_rcv_file_deleted NOT NULL),
|
||||
to_receive INTEGER
|
||||
);
|
||||
CREATE TABLE snd_file_chunks(
|
||||
file_id INTEGER NOT NULL,
|
||||
|
||||
@@ -182,6 +182,7 @@ module Simplex.Chat.Store
|
||||
createRcvGroupFileTransfer,
|
||||
appendRcvFD,
|
||||
getRcvFileDescrByFileId,
|
||||
cleanupXFTPFileDescrs,
|
||||
updateRcvFileAgentId,
|
||||
getRcvFileTransferById,
|
||||
getRcvFileTransfer,
|
||||
@@ -190,6 +191,8 @@ module Simplex.Chat.Store
|
||||
acceptRcvInlineFT,
|
||||
startRcvInlineFT,
|
||||
xftpAcceptRcvFT,
|
||||
setRcvFileToReceive,
|
||||
getRcvFilesToReceive,
|
||||
setRcvFTAgentDeleted,
|
||||
updateRcvFileStatus,
|
||||
createRcvFileChunk,
|
||||
@@ -302,7 +305,7 @@ import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Text.Encoding (decodeLatin1, encodeUtf8)
|
||||
import Data.Time (addUTCTime)
|
||||
import Data.Time.Clock (UTCTime (..), getCurrentTime)
|
||||
import Data.Time.Clock (UTCTime (..), getCurrentTime, nominalDay)
|
||||
import Data.Time.LocalTime (TimeZone, getCurrentTimeZone)
|
||||
import Data.Type.Equality
|
||||
import Database.SQLite.Simple (NamedParam (..), Only (..), Query (..), SQLError, (:.) (..))
|
||||
@@ -370,6 +373,7 @@ import Simplex.Chat.Migrations.M20230321_agent_file_deleted
|
||||
import Simplex.Chat.Migrations.M20230328_files_protocol
|
||||
import Simplex.Chat.Migrations.M20230402_protocol_servers
|
||||
import Simplex.Chat.Migrations.M20230411_extra_xftp_file_descriptions
|
||||
import Simplex.Chat.Migrations.M20230420_rcv_files_to_receive
|
||||
import Simplex.Chat.Protocol
|
||||
import Simplex.Chat.Types
|
||||
import Simplex.Chat.Util (week)
|
||||
@@ -443,7 +447,8 @@ schemaMigrations =
|
||||
("20230321_agent_file_deleted", m20230321_agent_file_deleted, Just down_m20230321_agent_file_deleted),
|
||||
("20230328_files_protocol", m20230328_files_protocol, Just down_m20230328_files_protocol),
|
||||
("20230402_protocol_servers", m20230402_protocol_servers, Just down_m20230402_protocol_servers),
|
||||
("20230411_extra_xftp_file_descriptions", m20230411_extra_xftp_file_descriptions, Just down_m20230411_extra_xftp_file_descriptions)
|
||||
("20230411_extra_xftp_file_descriptions", m20230411_extra_xftp_file_descriptions, Just down_m20230411_extra_xftp_file_descriptions),
|
||||
("20230420_rcv_files_to_receive", m20230420_rcv_files_to_receive, Just down_m20230420_rcv_files_to_receive)
|
||||
]
|
||||
|
||||
-- | The list of migrations in ascending order by date
|
||||
@@ -3114,6 +3119,13 @@ getRcvFileDescrByFileId_ db fileId =
|
||||
toRcvFileDescr (fileDescrId, fileDescrText, fileDescrPartNo, fileDescrComplete) =
|
||||
RcvFileDescr {fileDescrId, fileDescrText, fileDescrPartNo, fileDescrComplete}
|
||||
|
||||
cleanupXFTPFileDescrs :: DB.Connection -> User -> IO ()
|
||||
cleanupXFTPFileDescrs db User {userId} = do
|
||||
cutoffTs <- addUTCTime (- (2 * nominalDay)) <$> getCurrentTime
|
||||
-- TODO delete
|
||||
DB.execute db "UPDATE xftp_file_descriptions SET file_descr_text = '' WHERE user_id = ? AND created_at <= ?" (userId, cutoffTs)
|
||||
DB.execute db "DELETE FROM extra_xftp_file_descriptions WHERE user_id = ? AND created_at <= ?" (userId, cutoffTs)
|
||||
|
||||
updateRcvFileAgentId :: DB.Connection -> FileTransferId -> Maybe AgentRcvFileId -> IO ()
|
||||
updateRcvFileAgentId db fileId aFileId = do
|
||||
currentTs <- getCurrentTime
|
||||
@@ -3216,6 +3228,31 @@ acceptRcvFT_ db User {userId} fileId filePath rcvFileInline currentTs = do
|
||||
"UPDATE rcv_files SET rcv_file_inline = ?, file_status = ?, updated_at = ? WHERE file_id = ?"
|
||||
(rcvFileInline, FSAccepted, currentTs, fileId)
|
||||
|
||||
setRcvFileToReceive :: DB.Connection -> FileTransferId -> IO ()
|
||||
setRcvFileToReceive db fileId = do
|
||||
currentTs <- getCurrentTime
|
||||
DB.execute
|
||||
db
|
||||
"UPDATE rcv_files SET to_receive = 1, updated_at = ? WHERE file_id = ?"
|
||||
(currentTs, fileId)
|
||||
|
||||
getRcvFilesToReceive :: DB.Connection -> User -> IO [RcvFileTransfer]
|
||||
getRcvFilesToReceive db user@User {userId} = do
|
||||
cutoffTs <- addUTCTime (- (2 * nominalDay)) <$> getCurrentTime
|
||||
fileIds :: [Int64] <-
|
||||
map fromOnly
|
||||
<$> DB.query
|
||||
db
|
||||
[sql|
|
||||
SELECT r.file_id
|
||||
FROM rcv_files r
|
||||
JOIN files f ON f.file_id = r.file_id
|
||||
WHERE f.user_id = ? AND r.file_status = ?
|
||||
AND r.to_receive = 1 AND r.created_at > ?
|
||||
|]
|
||||
(userId, FSNew, cutoffTs)
|
||||
rights <$> mapM (runExceptT . getRcvFileTransfer db user) fileIds
|
||||
|
||||
setRcvFTAgentDeleted :: DB.Connection -> FileTransferId -> IO ()
|
||||
setRcvFTAgentDeleted db fileId = do
|
||||
currentTs <- getCurrentTime
|
||||
|
||||
@@ -65,6 +65,7 @@ chatFileTests = do
|
||||
it "with changed XFTP config: send and receive file" testXFTPWithChangedConfig
|
||||
it "with relative paths: send and receive file" testXFTPWithRelativePaths
|
||||
xit' "continue receiving file after restart" testXFTPContinueRcv
|
||||
it "receive file marked to receive on chat start" testXFTPMarkToReceive
|
||||
it "error receiving file" testXFTPRcvError
|
||||
it "cancel receiving file, repeat receive" testXFTPCancelRcvRepeat
|
||||
|
||||
@@ -1233,6 +1234,40 @@ testXFTPContinueRcv tmp = do
|
||||
where
|
||||
cfg = testCfg {xftpFileConfig = Just $ XFTPFileConfig {minFileSize = 0}, tempDir = Just "./tests/tmp"}
|
||||
|
||||
testXFTPMarkToReceive :: HasCallStack => FilePath -> IO ()
|
||||
testXFTPMarkToReceive = do
|
||||
testChatCfg2 cfg aliceProfile bobProfile $ \alice bob -> do
|
||||
withXFTPServer $ do
|
||||
connectUsers alice bob
|
||||
|
||||
alice #> "/f @bob ./tests/fixtures/test.pdf"
|
||||
alice <## "use /fc 1 to cancel sending"
|
||||
bob <# "alice> sends file test.pdf (266.0 KiB / 272376 bytes)"
|
||||
bob <## "use /fr 1 [<dir>/ | <path>] to receive it"
|
||||
-- alice <## "started sending file 1 (test.pdf) to bob" -- TODO "started uploading" ?
|
||||
alice <## "completed uploading file 1 (test.pdf) for bob"
|
||||
bob #$> ("/_set_file_to_receive 1", id, "ok")
|
||||
|
||||
bob ##> "/_stop"
|
||||
bob <## "chat stopped"
|
||||
bob #$> ("/_files_folder ./tests/tmp/bob_files", id, "ok")
|
||||
bob #$> ("/_temp_folder ./tests/tmp/bob_xftp", id, "ok")
|
||||
bob ##> "/_start"
|
||||
bob <## "chat started"
|
||||
|
||||
bob
|
||||
<### [ "1 contacts connected (use /cs for the list)",
|
||||
"started receiving file 1 (test.pdf) from alice",
|
||||
"saving file 1 from alice to test.pdf"
|
||||
]
|
||||
bob <## "completed receiving file 1 (test.pdf) from alice"
|
||||
|
||||
src <- B.readFile "./tests/fixtures/test.pdf"
|
||||
dest <- B.readFile "./tests/tmp/bob_files/test.pdf"
|
||||
dest `shouldBe` src
|
||||
where
|
||||
cfg = testCfg {xftpFileConfig = Just $ XFTPFileConfig {minFileSize = 0}}
|
||||
|
||||
testXFTPRcvError :: HasCallStack => FilePath -> IO ()
|
||||
testXFTPRcvError tmp = do
|
||||
withXFTPServer $ do
|
||||
|
||||
74
website/langs/pl.json
Normal file
74
website/langs/pl.json
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"reference": "Odnośnik",
|
||||
"blog": "Blog",
|
||||
"features": "Funkcje",
|
||||
"why-simplex": "Dlaczego SimpleX",
|
||||
"simplex-network": "Sieć SimpleX",
|
||||
"simplex-explained": "Wyjaśnienie SimpleX",
|
||||
"simplex-explained-tab-2-text": "2. Jak to działa",
|
||||
"simplex-explained-tab-3-text": "3. Co widzą serwery",
|
||||
"simplex-explained-tab-1-p-2": "Jak może to działać z jednokierunkowymi kolejkami i bez identyfikatorów profili użytkowników?",
|
||||
"simplex-explained-tab-2-p-1": "Dla każdego połączenia używasz dwóch oddzielnych kolejek komunikatów do wysyłania i odbierania wiadomości przez różne serwery.",
|
||||
"simplex-explained-tab-3-p-1": "Serwery mają osobne anonimowe poświadczenia dla każdej kolejki i nie wiedzą do jakich użytkowników one należą.",
|
||||
"simplex-privacy": "Prywatność w SimpleX",
|
||||
"chat-bot-example": "Przykładowy chat bot",
|
||||
"smp-protocol": "Protokół SMP",
|
||||
"chat-protocol": "Protokół czatu",
|
||||
"donate": "Darowizna",
|
||||
"copyright-label": "© 2020-2023 SimpleX | Projekt Open-Source",
|
||||
"simplex-chat-protocol": "Protokół SimpleX Chat",
|
||||
"terminal-cli": "Terminal CLI",
|
||||
"terms-and-privacy-policy": "Warunki i polityka prywatności",
|
||||
"hero-header": "Prywatność zdefiniowana na nowo",
|
||||
"hero-subheader": "Pierwszy komunikator<br>bez identyfikatorów użytkowników",
|
||||
"hero-overlay-1-textlink": "Dlaczego identyfikatory użytkowników są złe dla prywatności?",
|
||||
"hero-overlay-2-textlink": "Jak działa SimpleX?",
|
||||
"hero-2-header-desc": "Film pokazuje, jak połączyć się ze znajomym za pomocą jego jednorazowego kodu QR, osobiście lub przez łącze wideo. Możesz również połączyć się poprzez udostępnienie linku do zaproszenia.",
|
||||
"hero-overlay-1-title": "Jak działa SimpleX?",
|
||||
"hero-overlay-2-title": "Dlaczego identyfikatory użytkowników są złe dla prywatności?",
|
||||
"feature-1-title": "Wiadomości szyfrowane E2E ze składnią markdown i edycją",
|
||||
"feature-3-title": "Zdecentralizowane tajne grupy —<br>tylko użytkownicy wiedzą, że istnieją",
|
||||
"feature-4-title": "Wiadomości głosowe zaszyfrowane przez E2E",
|
||||
"feature-5-title": "Znikające wiadomości",
|
||||
"feature-6-title": "Szyfrowane metodą E2E<br>rozmowy audio i wideo",
|
||||
"feature-7-title": "Przenośna zaszyfrowana baza danych — przenieś swój profil na inne urządzenie",
|
||||
"simplex-private-4-title": "Opcjonalnie<br>dostęp przez Tor",
|
||||
"simplex-private-5-title": "Wielowarstwowe wyściełanie treścią",
|
||||
"simplex-private-6-title": "Wymiana kluczy<br>poza pasmem",
|
||||
"simplex-private-7-title": "Weryfikacja<br>integralności wiadomości",
|
||||
"simplex-private-card-9-point-1": "Każda kolejka komunikatów przekazuje wiadomości w jednym kierunku, z różnymi adresami wysyłania i odbierania.",
|
||||
"simplex-private-card-9-point-2": "Zmniejsza wektory ataku, w porównaniu do tradycyjnych brokerów wiadomości, oraz dostępne meta-dane.",
|
||||
"simplex-private-card-10-point-1": "SimpleX używa tymczasowych anonimowych adresów par i poświadczeń dla każdego kontaktu użytkownika lub członka grupy.",
|
||||
"simplex-private-card-10-point-2": "Pozwala na dostarczanie wiadomości bez identyfikatorów profilu użytkownika, zapewniając lepszą prywatność metadanych niż rozwiązania alternatywne.",
|
||||
"privacy-matters-1-overlay-1-title": "Prywatność to oszczędność pieniędzy",
|
||||
"privacy-matters-1-overlay-1-linkText": "Prywatność to oszczędność pieniędzy",
|
||||
"home": "Strona główna",
|
||||
"developers": "Deweloperzy",
|
||||
"simplex-explained-tab-1-text": "1. Czego doświadczają użytkownicy",
|
||||
"simplex-explained-tab-1-p-1": "Można tworzyć kontakty i grupy oraz prowadzić dwukierunkowe rozmowy, jak w każdym innym komunikatorze.",
|
||||
"simplex-explained-tab-2-p-2": "Serwery przekazują wiadomości tylko w jedną stronę, nie mając pełnego obrazu konwersacji i połączeń użytkownika.",
|
||||
"simplex-explained-tab-3-p-2": "Użytkownicy mogą jeszcze bardziej zwiększyć prywatność metadanych, używając Tor do uzyskania dostępu do serwerów, co zapobiega korelacji na podstawie adresu IP.",
|
||||
"hero-p-1": "Inne aplikacje mają identyfikatory użytkowników: Signal, Matrix, Session, Briar, Jami, Cwtch itp.<br> SimpleX nie, <strong>nie ma nawet losowych numerów</strong>.<br> To radykalnie poprawia Twoją prywatność.",
|
||||
"feature-2-title": "<br>Obrazy i pliki zaszyfrowane metodą E2E",
|
||||
"feature-8-title": "Tryb incognito —<br>unikalny dla SimpleX Chat",
|
||||
"simplex-network-overlay-1-title": "Porównanie z protokołami komunikacyjnymi P2P",
|
||||
"simplex-private-1-title": "2 warstwy<br>szyfrowania typu end-to-end",
|
||||
"simplex-private-2-title": "Dodatkowa warstwa<br>szyfrowania serwera",
|
||||
"simplex-private-3-title": "Bezpieczny uwierzytelniony<br>transport TLS",
|
||||
"simplex-private-card-3-point-1": "Do połączeń klient-serwer używany jest tylko TLS 1.2/1.3 z silnymi algorytmami.",
|
||||
"simplex-private-8-title": "Mieszanie wiadomości<br>w celu zmniejszenia korelacji",
|
||||
"simplex-private-9-title": "Jednokierunkowe<br>kolejki wiadomości",
|
||||
"simplex-private-card-1-point-2": "NaCL cryptobox w każdej kolejce, aby zapobiec korelacji ruchu między kolejkami wiadomości, jeśli TLS jest zagrożony.",
|
||||
"simplex-private-card-2-point-1": "NaCL cryptobox w każdej kolejce, aby zapobiec korelacji ruchu między kolejkami wiadomości, jeśli TLS jest skompromitowany.",
|
||||
"simplex-private-card-3-point-2": "Odcisk palca serwera i wiązanie kanałów zapobiegają atakom MITM i replay.",
|
||||
"simplex-private-card-3-point-3": "Wznowienie połączenia jest wyłączone, aby zapobiec atakom na sesje.",
|
||||
"simplex-private-card-4-point-1": "Aby chronić swój adres IP, możesz uzyskać dostęp do serwerów przez Tor lub inną sieć nakładki transportowej.",
|
||||
"simplex-private-card-6-point-1": "Wiele platform komunikacyjnych jest podatnych na ataki MITM ze strony serwerów lub dostawców sieci.",
|
||||
"simplex-private-card-6-point-2": "Aby temu zapobiec aplikacje SimpleX przekazują klucze jednorazowe poza pasmem, gdy udostępniasz adres jako link lub kod QR.",
|
||||
"simplex-private-card-7-point-1": "Aby zagwarantować integralność, wiadomości są kolejno numerowane i zawierają hash poprzedniej wiadomości.",
|
||||
"simplex-private-card-7-point-2": "Jeśli jakaś wiadomość zostanie dodana, usunięta lub zmieniona, odbiorca zostanie o tym powiadomiony.",
|
||||
"simplex-private-card-4-point-2": "Aby użyć SimpleX przez Tor zainstaluj <a href=\"https://guardianproject.info/apps/org.torproject.android/\" target=\"_blank\">aplikację Orbot</a> i włącz proxy SOCKS5 (lub VPN <a href=\"https://apps.apple.com/us/app/orbot/id1609461599?platform=iphone\" target=\"_blank\">na iOS</a>).",
|
||||
"simplex-private-card-5-point-1": "SimpleX używa paddingu treści dla każdej warstwy szyfrowania, aby udaremnić ataki na rozmiar wiadomości.",
|
||||
"simplex-private-card-5-point-2": "Dzięki temu wiadomości o różnych rozmiarach wyglądają tak samo dla serwerów i obserwatorów sieci.",
|
||||
"simplex-private-card-8-point-1": "Serwery SimpleX działają jak węzły mieszania o niskiej latencji — wiadomości przychodzące i wychodzące mają inną kolejność."
|
||||
}
|
||||
Reference in New Issue
Block a user