From b9706b740c9bec48114855ca0bfc1c15e4eaaba1 Mon Sep 17 00:00:00 2001 From: saber safavi Date: Thu, 24 Aug 2023 10:51:29 +0200 Subject: [PATCH] Add info dialog for device name --- .../compose/screen/AccountScreenTest.kt | 2 +- .../compose/dialog/DeviceNameInfoDialog.kt | 19 +++++++++ .../compose/screen/AccountScreen.kt | 42 +++++++++++++++---- .../compose/state/AccountUiState.kt | 9 ---- .../mullvadvpn/ui/fragment/AccountFragment.kt | 9 ++-- .../mullvadvpn/viewmodel/AccountUiState.kt | 28 +++++++++++++ .../mullvadvpn/viewmodel/AccountViewModel.kt | 40 +++++++++++------- .../src/main/res/values-da/strings.xml | 3 ++ .../src/main/res/values-de/strings.xml | 3 ++ .../src/main/res/values-es/strings.xml | 3 ++ .../src/main/res/values-fi/strings.xml | 3 ++ .../src/main/res/values-fr/strings.xml | 3 ++ .../src/main/res/values-it/strings.xml | 3 ++ .../src/main/res/values-ja/strings.xml | 3 ++ .../src/main/res/values-ko/strings.xml | 3 ++ .../src/main/res/values-my/strings.xml | 3 ++ .../src/main/res/values-nb/strings.xml | 3 ++ .../src/main/res/values-nl/strings.xml | 3 ++ .../src/main/res/values-pl/strings.xml | 3 ++ .../src/main/res/values-pt/strings.xml | 3 ++ .../src/main/res/values-ru/strings.xml | 3 ++ .../src/main/res/values-sv/strings.xml | 3 ++ .../src/main/res/values-th/strings.xml | 3 ++ .../src/main/res/values-tr/strings.xml | 3 ++ .../src/main/res/values-zh-rCN/strings.xml | 3 ++ .../src/main/res/values-zh-rTW/strings.xml | 3 ++ .../resource/src/main/res/values/strings.xml | 3 ++ 27 files changed, 171 insertions(+), 38 deletions(-) create mode 100644 android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DeviceNameInfoDialog.kt delete mode 100644 android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AccountUiState.kt create mode 100644 android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountUiState.kt diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreenTest.kt index 5d3e229a8ba6..c4d2fab62eda 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreenTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreenTest.kt @@ -9,7 +9,7 @@ import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.asSharedFlow -import net.mullvad.mullvadvpn.compose.state.AccountUiState +import net.mullvad.mullvadvpn.viewmodel.AccountUiState import net.mullvad.mullvadvpn.viewmodel.AccountViewModel import org.junit.Before import org.junit.Rule diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DeviceNameInfoDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DeviceNameInfoDialog.kt new file mode 100644 index 000000000000..179d14116053 --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DeviceNameInfoDialog.kt @@ -0,0 +1,19 @@ +package net.mullvad.mullvadvpn.compose.dialog + +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import net.mullvad.mullvadvpn.R + +@Composable +fun DeviceNameInfoDialog(onDismiss: () -> Unit) { + InfoDialog( + message = stringResource(id = R.string.local_network_sharing_info), + additionalInfo = + buildString { + appendLine(stringResource(id = R.string.device_name_info_part1)) + appendLine(stringResource(id = R.string.device_name_info_part2)) + appendLine(stringResource(id = R.string.device_name_info_part3)) + }, + onDismiss = onDismiss + ) +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt index c84804d95587..a0af9178536a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt @@ -2,8 +2,10 @@ package net.mullvad.mullvadvpn.compose.screen import androidx.compose.animation.animateContentSize import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding @@ -11,6 +13,7 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -18,6 +21,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.google.accompanist.systemuicontroller.rememberSystemUiController @@ -34,12 +38,14 @@ import net.mullvad.mullvadvpn.compose.component.CopyableObfuscationView import net.mullvad.mullvadvpn.compose.component.InformationView import net.mullvad.mullvadvpn.compose.component.MissingPolicy import net.mullvad.mullvadvpn.compose.component.drawVerticalScrollbar -import net.mullvad.mullvadvpn.compose.state.AccountUiState +import net.mullvad.mullvadvpn.compose.dialog.DeviceNameInfoDialog import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD import net.mullvad.mullvadvpn.lib.common.util.capitalizeFirstCharOfEachWord import net.mullvad.mullvadvpn.lib.common.util.openAccountPageInBrowser import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.util.toExpiryDateString +import net.mullvad.mullvadvpn.viewmodel.AccountScreenDialogState +import net.mullvad.mullvadvpn.viewmodel.AccountUiState import net.mullvad.mullvadvpn.viewmodel.AccountViewModel @OptIn(ExperimentalMaterial3Api::class) @@ -51,7 +57,8 @@ private fun PreviewAccountScreen() { AccountUiState( deviceName = "Test Name", accountNumber = "1234123412341234", - accountExpiry = null + accountExpiry = null, + dialogState = AccountScreenDialogState.NoDialog ), viewActions = MutableSharedFlow().asSharedFlow(), enterTransitionEndAction = MutableSharedFlow() @@ -63,6 +70,8 @@ private fun PreviewAccountScreen() { fun AccountScreen( uiState: AccountUiState, viewActions: SharedFlow, + onDeviceNameInfoClick: () -> Unit = {}, + onDismissInfoClick: () -> Unit = {}, enterTransitionEndAction: SharedFlow, onRedeemVoucherClick: () -> Unit = {}, onManageAccountClick: () -> Unit = {}, @@ -78,6 +87,10 @@ fun AccountScreen( LaunchedEffect(Unit) { enterTransitionEndAction.collect { systemUiController.setStatusBarColor(backgroundColor) } } + if (uiState.dialogState == AccountScreenDialogState.DeviceNameInfoDialog) { + DeviceNameInfoDialog(onDismissInfoClick) + } + CollapsingToolbarScaffold( backgroundColor = MaterialTheme.colorScheme.background, modifier = Modifier.fillMaxSize(), @@ -126,10 +139,21 @@ fun AccountScreen( modifier = Modifier.padding(start = Dimens.sideMargin, end = Dimens.sideMargin) ) - InformationView( - content = uiState.deviceName.capitalizeFirstCharOfEachWord(), - whenMissing = MissingPolicy.SHOW_SPINNER - ) + Row { + InformationView( + content = uiState.deviceName.capitalizeFirstCharOfEachWord(), + whenMissing = MissingPolicy.SHOW_SPINNER + ) + Icon( + modifier = + Modifier.clickable { onDeviceNameInfoClick() } + .padding(start = Dimens.mediumPadding, end = Dimens.mediumPadding) + .align(Alignment.CenterVertically), + painter = painterResource(id = R.drawable.icon_info), + contentDescription = null, + tint = MaterialTheme.colorScheme.inverseSurface + ) + } Text( style = MaterialTheme.typography.labelMedium, @@ -141,9 +165,9 @@ fun AccountScreen( top = Dimens.smallPadding ) ) - - CopyableObfuscationView(content = uiState.accountNumber) - + if (uiState.accountNumber != null) { + CopyableObfuscationView(content = uiState.accountNumber) + } Text( style = MaterialTheme.typography.labelMedium, text = stringResource(id = R.string.paid_until), diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AccountUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AccountUiState.kt deleted file mode 100644 index a9527955711f..000000000000 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AccountUiState.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.mullvad.mullvadvpn.compose.state - -import org.joda.time.DateTime - -data class AccountUiState( - val deviceName: String, - val accountNumber: String, - val accountExpiry: DateTime? -) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AccountFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AccountFragment.kt index 39013f11a868..0a1035732c49 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AccountFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AccountFragment.kt @@ -36,10 +36,11 @@ class AccountFragment : BaseFragment(), StatusBarPainter, NavigationBarPainter { enterTransitionEndAction = vm.enterTransitionEndAction, onRedeemVoucherClick = { openRedeemVoucherFragment() }, onManageAccountClick = vm::onManageAccountClick, - onLogoutClick = vm::onLogoutClick - ) { - activity?.onBackPressed() - } + onLogoutClick = vm::onLogoutClick, + onDeviceNameInfoClick = vm::onDeviceNameInfoClick, + onDismissInfoClick = vm::onDismissInfoClick, + onBackClick = { activity?.onBackPressedDispatcher?.onBackPressed() } + ) } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountUiState.kt new file mode 100644 index 000000000000..cd81a28f0789 --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountUiState.kt @@ -0,0 +1,28 @@ +package net.mullvad.mullvadvpn.viewmodel + +import net.mullvad.mullvadvpn.model.AccountExpiry +import net.mullvad.mullvadvpn.model.DeviceState +import org.joda.time.DateTime + +data class AccountUiState( + val deviceName: String, + val accountNumber: String?, + val accountExpiry: DateTime?, + val dialogState: AccountScreenDialogState = AccountScreenDialogState.NoDialog +) { + companion object { + fun default() = + AccountUiState( + deviceName = DeviceState.Unknown.deviceName() ?: "", + accountNumber = DeviceState.Unknown.token(), + accountExpiry = AccountExpiry.Missing.date(), + dialogState = AccountScreenDialogState.NoDialog + ) + } +} + +sealed class AccountScreenDialogState { + data object NoDialog : AccountScreenDialogState() + + data object DeviceNameInfoDialog : AccountScreenDialogState() +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt index e359deed2e3f..849072bd1152 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt @@ -3,13 +3,14 @@ package net.mullvad.mullvadvpn.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import net.mullvad.mullvadvpn.compose.state.AccountUiState import net.mullvad.mullvadvpn.repository.AccountRepository import net.mullvad.mullvadvpn.repository.DeviceRepository import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager @@ -25,27 +26,24 @@ class AccountViewModel( private val _enterTransitionEndAction = MutableSharedFlow() val viewActions = _viewActions.asSharedFlow() + private val dialogState = + MutableStateFlow(AccountScreenDialogState.NoDialog) + private val vmState: StateFlow = - combine(deviceRepository.deviceState, accountRepository.accountExpiryState) { + combine(deviceRepository.deviceState, accountRepository.accountExpiryState, dialogState) { deviceState, - accountExpiry -> + accountExpiry, + dialogState -> AccountUiState( deviceName = deviceState.deviceName() ?: "", - accountNumber = deviceState.token() ?: "", - accountExpiry = accountExpiry.date() + accountNumber = deviceState.token(), + accountExpiry = accountExpiry.date(), + dialogState = dialogState ) } - .stateIn( - viewModelScope, - SharingStarted.WhileSubscribed(), - AccountUiState(deviceName = "", accountNumber = "", accountExpiry = null) - ) + .stateIn(viewModelScope, SharingStarted.WhileSubscribed(), AccountUiState.default()) val uiState = - vmState.stateIn( - viewModelScope, - SharingStarted.WhileSubscribed(), - AccountUiState(deviceName = "", accountNumber = "", accountExpiry = null) - ) + vmState.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), AccountUiState.default()) val enterTransitionEndAction = _enterTransitionEndAction.asSharedFlow() @@ -63,6 +61,18 @@ class AccountViewModel( accountRepository.logout() } + fun onDeviceNameInfoClick() { + dialogState.update { AccountScreenDialogState.DeviceNameInfoDialog } + } + + fun onDismissInfoClick() { + hideDialog() + } + + private fun hideDialog() { + dialogState.update { AccountScreenDialogState.NoDialog } + } + fun onTransitionAnimationEnd() { viewModelScope.launch { _enterTransitionEndAction.emit(Unit) } } diff --git a/android/lib/resource/src/main/res/values-da/strings.xml b/android/lib/resource/src/main/res/values-da/strings.xml index cd447a7d6e9c..8e132e68b208 100644 --- a/android/lib/resource/src/main/res/values-da/strings.xml +++ b/android/lib/resource/src/main/res/values-da/strings.xml @@ -58,6 +58,9 @@ Enheden er inaktiv Hvis du logger på, ophæves blokeringen af internettet på denne enhed. Enhedsnavn + Dette er det navn, der er tildelt enheden. Hver enhed, der er logget på en Mullvad-konto, får et unikt navn, der hjælper dig med at identificere den, når du administrerer dine enheder i appen eller på webstedet. + Du kan have op til 5 enheder logget ind på én Mullvad-konto. + Hvis du logger ud, fjernes enheden og enhedsnavnet. Når du logger på igen, får enheden et nyt navn. Afbryd forbindelse Afbryder Afvis diff --git a/android/lib/resource/src/main/res/values-de/strings.xml b/android/lib/resource/src/main/res/values-de/strings.xml index 7b1f561ae56f..2c19c483a5f5 100644 --- a/android/lib/resource/src/main/res/values-de/strings.xml +++ b/android/lib/resource/src/main/res/values-de/strings.xml @@ -58,6 +58,9 @@ Gerät ist inaktiv Wenn Sie mit der Anmeldung fortfahren, wird die Internetsperre auf diesem Gerät aufgehoben. Gerätename + Dies ist der dem Gerät zugewiesene Name. Jedes Gerät, das in einem Mullvad-Konto angemeldet ist, erhält einen eindeutigen Namen, mit dem Sie es identifizieren können, wenn Sie Ihre Geräte in der App oder auf der Website verwalten. + Es sind pro Mullvad-Konto bis zu 5 angemeldete Geräte möglich. + Wenn Sie sich abmelden, werden das Gerät und der Gerätename entfernt. Wenn Sie sich wieder anmelden, erhält das Gerät einen neuen Namen. Verbindung trennen Verbindung wird getrennt Ausblenden diff --git a/android/lib/resource/src/main/res/values-es/strings.xml b/android/lib/resource/src/main/res/values-es/strings.xml index d6268b1d0346..389fc2a11020 100644 --- a/android/lib/resource/src/main/res/values-es/strings.xml +++ b/android/lib/resource/src/main/res/values-es/strings.xml @@ -58,6 +58,9 @@ El dispositivo está inactivo Al iniciar la sesión, se desbloqueará el acceso a Internet en este dispositivo. Nombre del dispositivo + Este es el nombre asignado al dispositivo. Cada dispositivo conectado a una cuenta de Mullvad recibe un nombre único que ayuda a identificarlo cuando gestiona sus dispositivos en la aplicación o en el sitio web. + Puede tener hasta 5 dispositivos conectados a una cuenta de Mullvad. + Si cierra sesión, se quita el dispositivo y el nombre del dispositivo. Cuando vuelve a iniciar sesión, el dispositivo recibirá un nombre nuevo. Desconectar Desconectando Descartar diff --git a/android/lib/resource/src/main/res/values-fi/strings.xml b/android/lib/resource/src/main/res/values-fi/strings.xml index 14928b989705..ca3b57d6ca18 100644 --- a/android/lib/resource/src/main/res/values-fi/strings.xml +++ b/android/lib/resource/src/main/res/values-fi/strings.xml @@ -58,6 +58,9 @@ Laite ei ole aktiivinen Kirjautumiseen siirtyminen purkaa internetin käytön eston tältä laitteelta. Laitteen nimi + Tämä on laitteelle annettu nimi. Jokainen Mullvad-tilille kirjautunut laite saa yksilöllisen nimen, jonka avulla sen voi tunnistaa laitteiden hallinnassa sovelluksessa tai verkkosivustolla. + Yhdelle Mullvad-tilille voi olla kirjautuneena enintään viisi laitetta. + Jos kirjaudut ulos, laite ja laitteen nimi poistetaan. Kun kirjaudut sisään uudelleen, laitteelle annetaan uusi nimi. Katkaise yhteys Katkaistaan yhteyttä Jätä huomiotta diff --git a/android/lib/resource/src/main/res/values-fr/strings.xml b/android/lib/resource/src/main/res/values-fr/strings.xml index f108d8cdc351..836bd45a39bc 100644 --- a/android/lib/resource/src/main/res/values-fr/strings.xml +++ b/android/lib/resource/src/main/res/values-fr/strings.xml @@ -58,6 +58,9 @@ L\'appareil est inactif Aller à la connexion débloquera la connexion Internet sur cet appareil. Nom de l\'appareil + Il s\'agit du nom attribué à l\'appareil. Chaque appareil connecté à un compte Mullvad reçoit un nom unique qui vous aide à l\'identifier lorsque vous gérez vos appareils dans l\'application ou sur le site Web. + Vous pouvez connecter jusqu\'à 5 appareils au même compte Mullvad. + Si vous vous déconnectez, l\'appareil et son nom sont supprimés. Lorsque vous vous reconnectez, l\'appareil reçoit un nouveau nom. Déconnexion Déconnexion en cours Ignorer diff --git a/android/lib/resource/src/main/res/values-it/strings.xml b/android/lib/resource/src/main/res/values-it/strings.xml index bdf4b244b58c..e061207c3a31 100644 --- a/android/lib/resource/src/main/res/values-it/strings.xml +++ b/android/lib/resource/src/main/res/values-it/strings.xml @@ -58,6 +58,9 @@ Il dispositivo è inattivo Andare al login sbloccherà Internet su questo dispositivo. Nome dispositivo + Questo è il nome assegnato al dispositivo. Ogni dispositivo connesso a un account Mullvad riceve un nome univoco che ti aiuta a identificarlo quando gestisci i tuoi dispositivi nell\'app o sul sito web. + Puoi avere fino a 5 dispositivi registrati su un account Mullvad. + Se ti disconnetti, il dispositivo e il relativo nome verranno rimossi. Quando accedi nuovamente, il dispositivo assumerà un nuovo nome. Disconnetti Disconnessione Ignora diff --git a/android/lib/resource/src/main/res/values-ja/strings.xml b/android/lib/resource/src/main/res/values-ja/strings.xml index c151d1d781f4..4ba137cd7702 100644 --- a/android/lib/resource/src/main/res/values-ja/strings.xml +++ b/android/lib/resource/src/main/res/values-ja/strings.xml @@ -58,6 +58,9 @@ デバイスが無効です ログインに進むと、このデバイスのインターネットのブロックが解除されます。 デバイス名 + これはデバイスに割り当てられる名前です。Mullvadアカウントにログインするデバイスごとに一意の名前が付けられるため、アプリまたはウェブサイトでデバイスを管理する際にデバイスを区別しやすくなります。 + 1つのMullvadアカウントで最大5台のデバイスにログインできます。 + ログアウトすると、デバイスとデバイス名が削除されます。もう一度ログインすると、デバイスに新しい名前が付けられます。 接続解除 接続解除中 閉じる diff --git a/android/lib/resource/src/main/res/values-ko/strings.xml b/android/lib/resource/src/main/res/values-ko/strings.xml index dc984ade867e..c43857cd571d 100644 --- a/android/lib/resource/src/main/res/values-ko/strings.xml +++ b/android/lib/resource/src/main/res/values-ko/strings.xml @@ -58,6 +58,9 @@ 장치가 비활성 상태입니다. 로그인하면 이 장치에서 인터넷 차단이 해제됩니다. 장치 이름 + 이것은 장치에 할당된 이름입니다. Mullvad 계정에 로그인된 각 장치에는 앱이나 웹사이트에서 장치를 관리할 때 장치를 보다 쉽게 식별할 수 있는 고유한 이름이 부여됩니다. + 최대 5개의 장치에서 하나의 Mullvad 계정에 로그인할 수 있습니다. + 로그아웃하면 해당 장치와 장치 이름이 제거됩니다. 다시 로그인하면 장치에 새 이름이 부여됩니다. 연결 끊기 연결 해제 중 해제 diff --git a/android/lib/resource/src/main/res/values-my/strings.xml b/android/lib/resource/src/main/res/values-my/strings.xml index a200e5842cde..d0df3a48f23f 100644 --- a/android/lib/resource/src/main/res/values-my/strings.xml +++ b/android/lib/resource/src/main/res/values-my/strings.xml @@ -58,6 +58,9 @@ စက်သည် သက်ဝင်လုပ်ဆောင်မှု မရှိပါ ဝင်ရောက်ရန်သွားခြင်းဖြင့် ဤစက်တွင် အင်တာနက်ကို ပိတ်ဆို့ထားမှုမှ ဖယ်ရှားပါလိမ့်မည်။ စက်အမည် + ဤအမည်မှာ စက်အတွက် သတ်မှတ်ထားသော အမည် ဖြစ်ပါသည်။ Mullvad အကောင့်တစ်ခုတွင် ဝင်ရောက်ထားသည့် စက်တစ်ခုစီသည် တစ်မူထူးခြားသည့် အမည်တစ်ခု ရရှိမည်ဖြစ်ပြီး အက်ပ် သို့မဟုတ် ဝက်ဘ်ဆိုက်ပေါ်တွင် သင့်စက်များကို စီမံသည့်အခါ သင်အနေဖြင့် ကွဲကွဲပြားပြားသိရှိအောင် ကူညီပေးပါသည်။ + Mullvad အကောင့်တစ်ခုတွင် စက် 5 ခုအထိ ဝင်ရောက်ထားနိုင်ပါသည်။ + ထွက်လိုက်ပါက စက်နှင့် စက်အမည်ကို ဖယ်ရှားပါသည်။ နောက်တစ်ကြိမ် ပြန်ဝင်ရောက်သည့်အခါ စက်သည် အမည်သစ်တစ်ခု ရရှိပါမည်။ ချိတ်ဆက်မှုဖြုတ်ရန် ချိတ်ဆက်မှုဖြုတ်နေပါသည် ဖယ်ပစ်ရန် diff --git a/android/lib/resource/src/main/res/values-nb/strings.xml b/android/lib/resource/src/main/res/values-nb/strings.xml index d3200074fb74..3e0549cfe389 100644 --- a/android/lib/resource/src/main/res/values-nb/strings.xml +++ b/android/lib/resource/src/main/res/values-nb/strings.xml @@ -58,6 +58,9 @@ Enheten er inaktiv Å gå til pålogging vil oppheve blokkeringen av internettet på denne enheten. Enhetsnavn + Dette er navnet som er tildelt enheten. Enhver enhet som er logget inn på en Mullvad-konto, får et unikt navn som gjør det enklere for deg å identifisere den når du administrerer enheten i appen eller på nettsiden. + Du kan ha opptil fem enheter logget inn på samme Mullvad-konto. + Hvis du logger ut, vil enheten og enhetsnavnet bli fjernet. Når du logger inn igjen, vil enheten få et nytt navn. Koble fra Kobler fra Ignorer diff --git a/android/lib/resource/src/main/res/values-nl/strings.xml b/android/lib/resource/src/main/res/values-nl/strings.xml index 8a6671088459..62ab679a3588 100644 --- a/android/lib/resource/src/main/res/values-nl/strings.xml +++ b/android/lib/resource/src/main/res/values-nl/strings.xml @@ -58,6 +58,9 @@ Apparaat is niet actief Als u naar aanmelden gaat, wordt het blokkeren van internet op dit apparaat opgeheven. Apparaatnaam + Dit is de naam die aan het apparaat is toegewezen. Elk apparaat dat is aangemeld op een Mullvad-account, krijgt een unieke naam waarmee u het kunt identificeren wanneer u uw apparaten beheert in de app of op de website. + U kunt maximaal 5 apparaten aangemeld hebben op één Mullvad-account. + Als u zich afmeldt, worden het apparaat en de apparaatnaam verwijderd. Wanneer u zich weer aanmeldt, krijgt het apparaat een nieuwe naam. Verbinding verbreken Verbinding wordt verbroken Negeren diff --git a/android/lib/resource/src/main/res/values-pl/strings.xml b/android/lib/resource/src/main/res/values-pl/strings.xml index 56a04979a8af..5f887d75d02e 100644 --- a/android/lib/resource/src/main/res/values-pl/strings.xml +++ b/android/lib/resource/src/main/res/values-pl/strings.xml @@ -58,6 +58,9 @@ Urządzenie nieaktywne Przejście do logowania odblokuje Internet na tym urządzeniu. Nazwa urządzenia + Jest to nazwa przypisana do urządzenia. Każde urządzenie zalogowane na koncie Mullvad otrzymuje unikalną nazwę, która pozwala zidentyfikować je podczas zarządzania urządzeniami w aplikacji lub za pośrednictwem witryny internetowej. + Na jednym koncie Mullvad może być zalogowanych maksymalnie 5 urządzeń. + Przy wylogowaniu urządzenie i jego nazwa zostają usunięte. Po ponownym zalogowaniu urządzenie otrzymuje nową nazwę. Rozłącz Rozłączanie Odrzuć diff --git a/android/lib/resource/src/main/res/values-pt/strings.xml b/android/lib/resource/src/main/res/values-pt/strings.xml index e740a8f77e27..76f97a5dbb14 100644 --- a/android/lib/resource/src/main/res/values-pt/strings.xml +++ b/android/lib/resource/src/main/res/values-pt/strings.xml @@ -58,6 +58,9 @@ O dispositivo está desativado Ir para a ligação irá desbloquear a Internet neste dispositivo. Nome do dispositivo + Este é o nome atribuído ao dispositivo. Cada dispositivo com sessão iniciada numa conta Mullvad recebe um nome único que lhe ajuda a identificá-lo quando gere os seus dispositivos na app ou no site. + Pode ter até 5 dispositivos com sessão iniciada numa só conta Mullvad. + Se terminar a sessão, o dispositivo e o nome do dispositivo são removidos. Quando voltar a iniciar sessão, o dispositivo recebe um novo nome. Desligar A desligar Dispensar diff --git a/android/lib/resource/src/main/res/values-ru/strings.xml b/android/lib/resource/src/main/res/values-ru/strings.xml index e9ae229ad6bd..0a0049bea1ba 100644 --- a/android/lib/resource/src/main/res/values-ru/strings.xml +++ b/android/lib/resource/src/main/res/values-ru/strings.xml @@ -58,6 +58,9 @@ Устройство неактивно Вход в профиль разблокирует Интернет на этом устройстве. Имя устройства + Это имя, присвоенное устройству. Каждое устройство, подключенное к учетной записи Mullvad, получает уникальное имя, которое помогает вам идентифицировать его при управлении устройствами в приложении или на сайте. + К одной учетной записи Mullvad можно подключить до 5 устройств. + Если вы выйдете, устройство и его имя удалятся. При повторном входе устройство получит новое имя. Отключить Отключение Закрыть diff --git a/android/lib/resource/src/main/res/values-sv/strings.xml b/android/lib/resource/src/main/res/values-sv/strings.xml index 588b7808849f..dc8cc3d138c8 100644 --- a/android/lib/resource/src/main/res/values-sv/strings.xml +++ b/android/lib/resource/src/main/res/values-sv/strings.xml @@ -58,6 +58,9 @@ Enheten är inaktiv Om du loggar in tas blockering av internet bort på den här enheten. Enhetens namn + Det här är namnet som tilldelas enheten. Varje enhet som är inloggad på ett Mullvad-konto får ett unikt namn som hjälper dig att identifiera den när du hanterar dina enheter i appen eller på webbplatsen. + Upp till fem enheter kan vara inloggade på ett Mullvad-konto. + Om du loggar ut tas enheten och enhetsnamnet bort. När du loggar in igen får enheten ett nytt namn. Koppla från Kopplar från Ignorera diff --git a/android/lib/resource/src/main/res/values-th/strings.xml b/android/lib/resource/src/main/res/values-th/strings.xml index 7df5dd717c00..c95a131b7c59 100644 --- a/android/lib/resource/src/main/res/values-th/strings.xml +++ b/android/lib/resource/src/main/res/values-th/strings.xml @@ -58,6 +58,9 @@ อุปกรณ์ไม่ได้ใช้งาน การไปที่ส่วนเข้าสู่ระบบจะปลดบล็อกอินเทอร์เน็ตบนอุปกรณ์เครื่องนี้ ชื่ออุปกรณ์ + นี่เป็นชื่อที่มอบหมายให้กับอุปกรณ์ อุปกรณ์แต่ละเครื่องที่ลงชื่อเข้าใช้บนบัญชี Mullvad จะได้รับชื่อเฉพาะ ที่จะช่วยคุณระบุอุปกรณ์ ในขณะที่คุณจัดการอุปกรณ์ของคุณในแอปหรือบนเว็บไซต์ + คุณสามารถลงชื่อเข้าใช้อุปกรณ์ได้สูงสุด 5 เครื่อง กับบัญชี Mullvad หนึ่งบัญชี + หากคุณออกจากระบบ อุปกรณ์และชื่ออุปกรณ์จะถูกลบออก และเมื่อคุณลงชื่อเข้าใช้อีกครั้ง อุปกรณ์จะได้รับชื่อใหม่ ตัดการเชื่อมต่อ กำลังตัดการเชื่อมต่อ ละทิ้ง diff --git a/android/lib/resource/src/main/res/values-tr/strings.xml b/android/lib/resource/src/main/res/values-tr/strings.xml index 1f8e1410bcdc..e51ff61a7f80 100644 --- a/android/lib/resource/src/main/res/values-tr/strings.xml +++ b/android/lib/resource/src/main/res/values-tr/strings.xml @@ -58,6 +58,9 @@ Cihaz etkin değil Giriş yapmak bu cihazdaki internet engelini kaldıracaktır. Cihaz adı + Bu, cihaza atanan addır. Mullvad hesabında oturum açan her cihaza, uygulamadaki veya web sitesindeki cihazlarınızı yönetirken tanımlamanıza yardımcı olacak benzersiz bir ad verilir. + Bir Mullvad hesabı ile en fazla 5 cihazda oturum açabilirsiniz. + Oturumu kapatırsanız cihaz ve cihaz adı kaldırılır. Tekrar oturum açtığınızda cihaza yeni bir ad verilir. Bağlantıyı Kes Bağlantı kesiliyor Reddet diff --git a/android/lib/resource/src/main/res/values-zh-rCN/strings.xml b/android/lib/resource/src/main/res/values-zh-rCN/strings.xml index 40c59bbf62e8..55a031731d46 100644 --- a/android/lib/resource/src/main/res/values-zh-rCN/strings.xml +++ b/android/lib/resource/src/main/res/values-zh-rCN/strings.xml @@ -58,6 +58,9 @@ 设备处于非活动状态 前往登录将在此设备上解除阻止互联网。 设备名称 + 这是为设备分配的名称。每台登录 Mulvad 帐户的设备都会获得一个唯一名称,有助于您在应用或网站上管理设备时识别各个设备。 + 一个 Mulvad 帐户最多可以登录 5 台设备。 + 如果您退出登录,设备和设备名称将被移除。当您再次登录时,设备将获得新名称。 断开连接 正在断开连接 关闭 diff --git a/android/lib/resource/src/main/res/values-zh-rTW/strings.xml b/android/lib/resource/src/main/res/values-zh-rTW/strings.xml index ab40b4291fdf..456dcb8955bb 100644 --- a/android/lib/resource/src/main/res/values-zh-rTW/strings.xml +++ b/android/lib/resource/src/main/res/values-zh-rTW/strings.xml @@ -58,6 +58,9 @@ 裝置處於非活動狀態 若前往登入,則會在此裝置上解除對網際網路的封鎖。 裝置名稱 + 這是系統指派給裝置的名稱。每台登入 Mulvad 帳戶的裝置都會獲得一個獨特名稱,有助於您在應用程式或網站上管理裝置時識別各台裝置。 + 一個 Mulvad 帳戶最多可以登入 5 台裝置。 + 如果您登出,則系統會移除裝置和裝置名稱。當您再次登入時,裝置則會獲得新名稱。 中斷連線 正在中斷連線 取消 diff --git a/android/lib/resource/src/main/res/values/strings.xml b/android/lib/resource/src/main/res/values/strings.xml index ac979ed2106c..62be0eefa56d 100644 --- a/android/lib/resource/src/main/res/values/strings.xml +++ b/android/lib/resource/src/main/res/values/strings.xml @@ -216,4 +216,7 @@ Remove custom port Valid ranges: %s Enter port + This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website. + You can have up to 5 devices logged in on one Mullvad account. + If you log out, the device and the device name is removed. When you log back in again, the device will get a new name.