Repo created

This commit is contained in:
Fr4nz D13trich 2025-11-22 13:56:56 +01:00
parent 75dc487a7a
commit 39c29d175b
6317 changed files with 388324 additions and 2 deletions

View file

@ -0,0 +1,15 @@
plugins {
id(ThunderbirdPlugins.Library.androidCompose)
}
android {
namespace = "app.k9mail.feature.onboarding.permissions"
resourcePrefix = "onboarding_permissions_"
}
dependencies {
implementation(projects.core.common)
implementation(projects.core.android.permissions)
implementation(projects.core.ui.compose.designsystem)
implementation(projects.feature.account.common)
}

View file

@ -0,0 +1,48 @@
package app.k9mail.feature.onboarding.permissions.ui
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme
import app.k9mail.core.ui.compose.designsystem.atom.icon.IconsWithBottomRightOverlay
@Composable
@Preview(showBackground = true)
internal fun PermissionBoxUnknownStatePreview() {
PreviewWithTheme {
PermissionBox(
icon = IconsWithBottomRightOverlay.person,
permissionState = PermissionsContract.UiPermissionState.Unknown,
title = "Contacts",
description = "Allow access to be able to display contact names and photos.",
onAllowClick = {},
)
}
}
@Composable
@Preview(showBackground = true)
internal fun PermissionBoxGrantedStatePreview() {
PreviewWithTheme {
PermissionBox(
icon = IconsWithBottomRightOverlay.person,
permissionState = PermissionsContract.UiPermissionState.Granted,
title = "Contacts",
description = "Allow access to be able to display contact names and photos.",
onAllowClick = {},
)
}
}
@Composable
@Preview(showBackground = true)
internal fun PermissionBoxDeniedStatePreview() {
PreviewWithTheme {
PermissionBox(
icon = IconsWithBottomRightOverlay.person,
permissionState = PermissionsContract.UiPermissionState.Denied,
title = "Contacts",
description = "Allow access to be able to display contact names and photos.",
onAllowClick = {},
)
}
}

View file

@ -0,0 +1,23 @@
package app.k9mail.feature.onboarding.permissions.ui
import androidx.compose.runtime.Composable
import app.k9mail.core.ui.compose.common.annotation.PreviewDevices
import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme
@Composable
@PreviewDevices
internal fun PermissionContentPreview() {
PreviewWithTheme {
PermissionsContent(
state = PermissionsContract.State(
isLoading = false,
contactsPermissionState = PermissionsContract.UiPermissionState.Granted,
notificationsPermissionState = PermissionsContract.UiPermissionState.Denied,
isNotificationsPermissionVisible = true,
isNextButtonVisible = false,
),
onEvent = {},
brandName = "BrandName",
)
}
}

View file

@ -0,0 +1,25 @@
package app.k9mail.feature.onboarding.permissions.ui
import androidx.compose.runtime.Composable
import app.k9mail.core.android.permissions.PermissionState
import app.k9mail.core.ui.compose.common.annotation.PreviewDevices
import app.k9mail.core.ui.compose.designsystem.PreviewWithTheme
import kotlinx.coroutines.Dispatchers
import net.thunderbird.core.common.provider.BrandNameProvider
@Composable
@PreviewDevices
internal fun PermissionScreenPreview() {
PreviewWithTheme {
PermissionsScreen(
viewModel = PermissionsViewModel(
checkPermission = { PermissionState.Denied },
backgroundDispatcher = Dispatchers.Main.immediate,
),
brandNameProvider = object : BrandNameProvider {
override val brandName: String = "BrandName"
},
onNext = {},
)
}
}

View file

@ -0,0 +1,23 @@
package app.k9mail.feature.onboarding.permissions
import app.k9mail.core.android.permissions.corePermissionsAndroidModule
import app.k9mail.feature.onboarding.permissions.domain.PermissionsDomainContract.UseCase
import app.k9mail.feature.onboarding.permissions.domain.usecase.CheckPermission
import app.k9mail.feature.onboarding.permissions.domain.usecase.HasRuntimePermissions
import app.k9mail.feature.onboarding.permissions.ui.PermissionsViewModel
import org.koin.core.module.Module
import org.koin.core.module.dsl.viewModel
import org.koin.dsl.module
val featureOnboardingPermissionsModule: Module = module {
includes(corePermissionsAndroidModule)
factory<UseCase.CheckPermission> { CheckPermission(permissionChecker = get()) }
factory<UseCase.HasRuntimePermissions> { HasRuntimePermissions(permissionsModelChecker = get()) }
viewModel {
PermissionsViewModel(
checkPermission = get(),
)
}
}

View file

@ -0,0 +1,18 @@
package app.k9mail.feature.onboarding.permissions.domain
import app.k9mail.core.android.permissions.Permission
import app.k9mail.core.android.permissions.PermissionState
interface PermissionsDomainContract {
interface UseCase {
fun interface CheckPermission {
operator fun invoke(permission: Permission): PermissionState
}
fun interface HasRuntimePermissions {
operator fun invoke(): Boolean
}
}
}

View file

@ -0,0 +1,18 @@
package app.k9mail.feature.onboarding.permissions.domain.usecase
import app.k9mail.core.android.permissions.Permission
import app.k9mail.core.android.permissions.PermissionChecker
import app.k9mail.core.android.permissions.PermissionState
import app.k9mail.feature.onboarding.permissions.domain.PermissionsDomainContract.UseCase
/**
* Checks if a [Permission] has been granted to the app.
*/
class CheckPermission(
private val permissionChecker: PermissionChecker,
) : UseCase.CheckPermission {
override fun invoke(permission: Permission): PermissionState {
return permissionChecker.checkPermission(permission)
}
}

View file

@ -0,0 +1,12 @@
package app.k9mail.feature.onboarding.permissions.domain.usecase
import app.k9mail.core.android.permissions.PermissionsModelChecker
import app.k9mail.feature.onboarding.permissions.domain.PermissionsDomainContract
class HasRuntimePermissions(
private val permissionsModelChecker: PermissionsModelChecker,
) : PermissionsDomainContract.UseCase.HasRuntimePermissions {
override fun invoke(): Boolean {
return permissionsModelChecker.hasRuntimePermissions()
}
}

View file

@ -0,0 +1,129 @@
package app.k9mail.feature.onboarding.permissions.ui
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import app.k9mail.core.ui.compose.common.image.ImageWithOverlayCoordinate
import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled
import app.k9mail.core.ui.compose.designsystem.atom.icon.Icon
import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons
import app.k9mail.core.ui.compose.designsystem.atom.text.TextBodyMedium
import app.k9mail.core.ui.compose.designsystem.atom.text.TextTitleLarge
import app.k9mail.core.ui.compose.theme2.MainTheme
import app.k9mail.feature.onboarding.permissions.R
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.UiPermissionState
private val MAX_WIDTH = 500.dp
@Composable
internal fun PermissionBox(
icon: ImageWithOverlayCoordinate,
permissionState: UiPermissionState,
title: String,
description: String,
onAllowClick: () -> Unit,
) {
Column(
modifier = Modifier
.width(MAX_WIDTH)
.padding(horizontal = MainTheme.spacings.double),
) {
Row {
Box(
modifier = Modifier.padding(
end = MainTheme.spacings.double,
top = MainTheme.spacings.default,
bottom = MainTheme.spacings.default,
),
) {
IconWithPermissionStateOverlay(icon, permissionState)
}
Column {
TextTitleLarge(text = title)
TextBodyMedium(text = description)
}
}
val buttonAlpha by animateFloatAsState(
targetValue = if (permissionState == UiPermissionState.Granted) 0f else 1f,
label = "AllowButtonAlpha",
)
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.End,
) {
Spacer(modifier = Modifier.height(MainTheme.spacings.default))
ButtonFilled(
text = stringResource(R.string.onboarding_permissions_allow_button),
onClick = onAllowClick,
modifier = Modifier.alpha(buttonAlpha),
)
}
}
}
@Composable
private fun IconWithPermissionStateOverlay(
icon: ImageWithOverlayCoordinate,
permissionState: UiPermissionState,
) {
Box {
val iconSize = MainTheme.sizes.iconLarge
val overlayIconSize = iconSize / 2
val overlayIconOffset = overlayIconSize / 2
val scalingFactor = iconSize / icon.image.defaultHeight
val overlayOffsetX = (icon.overlayOffsetX * scalingFactor) - overlayIconOffset
val overlayOffsetY = (icon.overlayOffsetY * scalingFactor) - overlayIconOffset
Icon(
imageVector = icon.image,
modifier = Modifier.size(iconSize),
)
when (permissionState) {
UiPermissionState.Unknown -> Unit
UiPermissionState.Granted -> {
Icon(
imageVector = Icons.Filled.CheckCircle,
tint = MainTheme.colors.success,
modifier = Modifier
.size(overlayIconSize)
.offset(
x = overlayOffsetX,
y = overlayOffsetY,
),
)
}
UiPermissionState.Denied -> {
Icon(
imageVector = Icons.Filled.Cancel,
tint = MainTheme.colors.warning,
modifier = Modifier
.size(overlayIconSize)
.offset(
x = overlayOffsetX,
y = overlayOffsetY,
),
)
}
}
}
}

View file

@ -0,0 +1,190 @@
package app.k9mail.feature.onboarding.permissions.ui
import androidx.compose.animation.Crossfade
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.ScrollState
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.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import app.k9mail.core.ui.compose.common.visibility.hide
import app.k9mail.core.ui.compose.designsystem.atom.DelayedCircularProgressIndicator
import app.k9mail.core.ui.compose.designsystem.atom.Surface
import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonFilled
import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonText
import app.k9mail.core.ui.compose.designsystem.atom.icon.IconsWithBottomRightOverlay
import app.k9mail.core.ui.compose.designsystem.atom.text.TextHeadlineSmall
import app.k9mail.core.ui.compose.designsystem.template.ResponsiveWidthContainer
import app.k9mail.core.ui.compose.designsystem.template.Scaffold
import app.k9mail.core.ui.compose.theme2.MainTheme
import app.k9mail.feature.account.common.ui.AppTitleTopHeader
import app.k9mail.feature.onboarding.permissions.R
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.Event
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.State
import net.thunderbird.core.ui.compose.common.modifier.testTagAsResourceId
import app.k9mail.feature.account.common.R as CommonR
@Composable
internal fun PermissionsContent(
state: State,
onEvent: (Event) -> Unit,
brandName: String,
) {
val scrollState = rememberScrollState()
Scaffold(
bottomBar = {
BottomBar(state, onEvent, scrollState)
},
) { innerPadding ->
ResponsiveWidthContainer(
modifier = Modifier
.fillMaxWidth()
.padding(innerPadding),
) { contentPadding ->
Column(
verticalArrangement = Arrangement.SpaceBetween,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.fillMaxHeight()
.verticalScroll(state = scrollState)
.padding(contentPadding),
) {
HeaderArea(brandName = brandName)
ContentArea(state, onEvent)
// This provides some bottom padding but is also necessary to make the vertical arrangement have the
// desired effect of putting ContentArea() in the middle.
Spacer(modifier = Modifier.height(MainTheme.spacings.double))
}
}
}
}
@Composable
private fun HeaderArea(
brandName: String,
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
) {
AppTitleTopHeader(
title = brandName,
)
TextHeadlineSmall(
text = stringResource(R.string.onboarding_permissions_screen_title),
modifier = Modifier.padding(horizontal = MainTheme.spacings.double),
)
Spacer(modifier = Modifier.height(MainTheme.spacings.double))
}
}
@Composable
private fun ContentArea(state: State, onEvent: (Event) -> Unit) {
Column(
verticalArrangement = Arrangement.Center,
modifier = Modifier
.fillMaxHeight()
.padding(MainTheme.spacings.double),
) {
if (state.isLoading) {
DelayedCircularProgressIndicator()
} else {
PermissionBoxes(state, onEvent)
}
}
}
@Composable
private fun PermissionBoxes(
state: State,
onEvent: (Event) -> Unit,
) {
PermissionBox(
icon = IconsWithBottomRightOverlay.person,
permissionState = state.contactsPermissionState,
title = stringResource(R.string.onboarding_permissions_contacts_title),
description = stringResource(R.string.onboarding_permissions_contacts_description),
onAllowClick = { onEvent(Event.AllowContactsPermissionClicked) },
)
if (state.isNotificationsPermissionVisible) {
Spacer(modifier = Modifier.height(MainTheme.spacings.quadruple))
PermissionBox(
icon = IconsWithBottomRightOverlay.notification,
permissionState = state.notificationsPermissionState,
title = stringResource(R.string.onboarding_permissions_notifications_title),
description = stringResource(R.string.onboarding_permissions_notifications_description),
onAllowClick = { onEvent(Event.AllowNotificationsPermissionClicked) },
)
}
}
@Composable
private fun BottomBar(
state: State,
onEvent: (Event) -> Unit,
scrollState: ScrollState,
) {
// Elevate the bottom bar when some scrollable content is "underneath" it
val elevation by animateDpAsState(
targetValue = if (scrollState.canScrollForward) 8.dp else 0.dp,
label = "BottomBarElevation",
)
Surface(
tonalElevation = elevation,
) {
ResponsiveWidthContainer(
modifier = Modifier.fillMaxWidth(),
) { contentPadding ->
Row(
modifier = Modifier
.padding(
start = MainTheme.spacings.quadruple,
end = MainTheme.spacings.quadruple,
top = MainTheme.spacings.default,
bottom = MainTheme.spacings.double,
)
.fillMaxWidth()
.padding(contentPadding),
horizontalArrangement = Arrangement.End,
) {
Crossfade(
targetState = state.isNextButtonVisible,
label = "NextButton",
) { isNextButtonVisible ->
ButtonFilled(
text = stringResource(CommonR.string.account_common_button_next),
onClick = { onEvent(Event.NextClicked) },
modifier = Modifier.hide(!isNextButtonVisible)
.testTagAsResourceId("onboarding_permissions_next_button"),
)
ButtonText(
text = stringResource(R.string.onboarding_permissions_skip_button),
onClick = { onEvent(Event.NextClicked) },
modifier = Modifier.hide(isNextButtonVisible)
.testTagAsResourceId("onboarding_permissions_skip_button"),
)
}
}
}
}
}

View file

@ -0,0 +1,40 @@
package app.k9mail.feature.onboarding.permissions.ui
import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel
interface PermissionsContract {
interface ViewModel : UnidirectionalViewModel<State, Event, Effect>
data class State(
val isLoading: Boolean = true,
val contactsPermissionState: UiPermissionState = UiPermissionState.Unknown,
val notificationsPermissionState: UiPermissionState = UiPermissionState.Unknown,
val isNotificationsPermissionVisible: Boolean = false,
val isNextButtonVisible: Boolean = false,
)
sealed interface Event {
data object LoadPermissionState : Event
data object AllowContactsPermissionClicked : Event
data object AllowNotificationsPermissionClicked : Event
data class ContactsPermissionResult(val success: Boolean) : Event
data class NotificationsPermissionResult(val success: Boolean) : Event
data object NextClicked : Event
}
sealed interface Effect {
data object RequestContactsPermission : Effect
data object RequestNotificationsPermission : Effect
data object NavigateNext : Effect
}
enum class UiPermissionState {
Unknown,
Granted,
Denied,
}
}

View file

@ -0,0 +1,63 @@
package app.k9mail.feature.onboarding.permissions.ui
import android.Manifest
import android.os.Build
import androidx.activity.compose.BackHandler
import androidx.activity.compose.ManagedActivityResultLauncher
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import app.k9mail.core.ui.compose.common.mvi.observe
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.Effect
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.Event
import net.thunderbird.core.common.provider.BrandNameProvider
import org.koin.androidx.compose.koinViewModel
import org.koin.compose.koinInject
@Composable
fun PermissionsScreen(
viewModel: PermissionsContract.ViewModel = koinViewModel<PermissionsViewModel>(),
brandNameProvider: BrandNameProvider = koinInject(),
onNext: () -> Unit,
) {
val contactsPermissionLauncher = rememberLauncherForActivityResult(RequestPermission()) { success ->
viewModel.event(Event.ContactsPermissionResult(success))
}
val notificationsPermissionLauncher = rememberLauncherForActivityResult(RequestPermission()) { success ->
viewModel.event(Event.NotificationsPermissionResult(success))
}
val (state, dispatch) = viewModel.observe { effect ->
when (effect) {
Effect.RequestContactsPermission -> contactsPermissionLauncher.requestContactsPermission()
Effect.RequestNotificationsPermission -> notificationsPermissionLauncher.requestNotificationsPermission()
Effect.NavigateNext -> onNext()
}
}
BackHandler {
// no back navigation
}
LaunchedEffect(key1 = Unit) {
dispatch(Event.LoadPermissionState)
}
PermissionsContent(
state = state.value,
onEvent = dispatch,
brandName = brandNameProvider.brandName,
)
}
private fun ManagedActivityResultLauncher<String, Boolean>.requestContactsPermission() {
launch(Manifest.permission.READ_CONTACTS)
}
private fun ManagedActivityResultLauncher<String, Boolean>.requestNotificationsPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
launch(Manifest.permission.POST_NOTIFICATIONS)
}
}

View file

@ -0,0 +1,108 @@
package app.k9mail.feature.onboarding.permissions.ui
import androidx.lifecycle.viewModelScope
import app.k9mail.core.android.permissions.Permission
import app.k9mail.core.android.permissions.PermissionState
import app.k9mail.core.ui.compose.common.mvi.BaseViewModel
import app.k9mail.feature.onboarding.permissions.domain.PermissionsDomainContract.UseCase
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.Effect
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.Event
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.State
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.UiPermissionState
import app.k9mail.feature.onboarding.permissions.ui.PermissionsContract.ViewModel
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class PermissionsViewModel(
private val checkPermission: UseCase.CheckPermission,
private val backgroundDispatcher: CoroutineDispatcher = Dispatchers.IO,
) : BaseViewModel<State, Event, Effect>(initialState = State(isLoading = true)), ViewModel {
override fun event(event: Event) {
when (event) {
Event.LoadPermissionState -> handleOneTimeEvent(event, ::loadPermissionState)
Event.AllowContactsPermissionClicked -> handleAllowContactsPermissionClicked()
Event.AllowNotificationsPermissionClicked -> handleAllowNotificationsPermissionClicked()
is Event.ContactsPermissionResult -> handleContactsPermissionResult(event.success)
is Event.NotificationsPermissionResult -> handleNotificationsPermissionResult(event.success)
Event.NextClicked -> handleNextClicked()
}
}
private fun loadPermissionState() {
viewModelScope.launch {
val (contactsPermissionState, notificationsPermissionState) = withContext(backgroundDispatcher) {
arrayOf(
checkPermission(Permission.Contacts),
checkPermission(Permission.Notifications),
)
}
val contactsUiPermissionState = when (contactsPermissionState) {
PermissionState.GrantedImplicitly -> error("Unexpected case")
PermissionState.Granted -> UiPermissionState.Granted
PermissionState.Denied -> UiPermissionState.Unknown
}
val notificationsUiPermissionState = when (notificationsPermissionState) {
PermissionState.GrantedImplicitly -> UiPermissionState.Unknown
PermissionState.Granted -> UiPermissionState.Granted
PermissionState.Denied -> UiPermissionState.Unknown
}
val isNotificationsPermissionVisible = notificationsPermissionState != PermissionState.GrantedImplicitly
updateState { state ->
state.copy(
isLoading = false,
contactsPermissionState = contactsUiPermissionState,
notificationsPermissionState = notificationsUiPermissionState,
isNotificationsPermissionVisible = isNotificationsPermissionVisible,
)
}
updateNextButtonState()
}
}
private fun handleAllowContactsPermissionClicked() {
emitEffect(Effect.RequestContactsPermission)
}
private fun handleAllowNotificationsPermissionClicked() {
emitEffect(Effect.RequestNotificationsPermission)
}
private fun handleContactsPermissionResult(success: Boolean) {
updateState { state ->
state.copy(
contactsPermissionState = if (success) UiPermissionState.Granted else UiPermissionState.Denied,
)
}
updateNextButtonState()
}
private fun handleNotificationsPermissionResult(success: Boolean) {
updateState { state ->
state.copy(
notificationsPermissionState = if (success) UiPermissionState.Granted else UiPermissionState.Denied,
)
}
updateNextButtonState()
}
private fun updateNextButtonState() {
updateState { state ->
val isContactsPermissionGranted = state.contactsPermissionState == UiPermissionState.Granted
val isNotificationsPermissionGrantedOrHidden = !state.isNotificationsPermissionVisible ||
state.notificationsPermissionState == UiPermissionState.Granted
state.copy(
isNextButtonVisible = isContactsPermissionGranted && isNotificationsPermissionGrantedOrHidden,
)
}
}
private fun handleNextClicked() {
emitEffect(Effect.NavigateNext)
}
}

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_allow_button">اسمح</string>
<string name="onboarding_permissions_contacts_title">جهات الاتصال</string>
<string name="onboarding_permissions_notifications_title">الإشعارات</string>
<string name="onboarding_permissions_notifications_description">قم بتفعيل الإشعارات حتى لا تفوتك أي رسالة.</string>
<string name="onboarding_permissions_skip_button">‌‌تخطي</string>
<string name="onboarding_permissions_screen_title">تحسين التجربة</string>
<string name="onboarding_permissions_contacts_description">قم بالسماح بالوصول لإمكانية تقديم اقتراحات جهات الاتصال وعرض أسماء جهات الاتصال وصورهم.</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_title">Кантакты</string>
<string name="onboarding_permissions_screen_title">Палепшыць досвед</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Предоставете достъп до контактите си, за да можем да покажем техните имена и снимки.</string>
<string name="onboarding_permissions_notifications_description">Включете известията, за да не пропускате съобщения.</string>
<string name="onboarding_permissions_notifications_title">Известия</string>
<string name="onboarding_permissions_screen_title">Подобрете изживяването</string>
<string name="onboarding_permissions_contacts_title">Контакти</string>
<string name="onboarding_permissions_allow_button">Разрешаване</string>
<string name="onboarding_permissions_skip_button">Пропускане</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Gwellaat ar vuhezad</string>
<string name="onboarding_permissions_contacts_title">Darempredoù</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_title">Kontakti</string>
<string name="onboarding_permissions_contacts_description">Dodijelite pristup kontaktima kako bi vam prikazivali predloge za kontakt, njihova imena i slike.</string>
<string name="onboarding_permissions_notifications_title">Obavještenja</string>
<string name="onboarding_permissions_notifications_description">Uključite obavještenja kako ne bi ste propustili nijedan mejl.</string>
<string name="onboarding_permissions_allow_button">Dozvolite</string>
<string name="onboarding_permissions_skip_button">Preskočite</string>
<string name="onboarding_permissions_screen_title">Poboljšajte iskustvo</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Permet l\'accés per poder proporcionar suggeriments dels contactes i mostrar-ne els noms i les fotografies.</string>
<string name="onboarding_permissions_notifications_description">Activi les notificacions per no perdre\'s cap correu electrònic.</string>
<string name="onboarding_permissions_notifications_title">Notificacions</string>
<string name="onboarding_permissions_screen_title">Millora l\'experiència</string>
<string name="onboarding_permissions_contacts_title">Contactes</string>
<string name="onboarding_permissions_allow_button">Permetre</string>
<string name="onboarding_permissions_skip_button">Ometre</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_title">Cuntatti</string>
<string name="onboarding_permissions_contacts_description">Permette laccessu per prupone suggestioni di cuntattu è per affissà nomi è fotò di i cuntatti.</string>
<string name="onboarding_permissions_notifications_description">Attivate e nutificazioni per ùn perde alcunu messaghju.</string>
<string name="onboarding_permissions_skip_button">Ignurà</string>
<string name="onboarding_permissions_screen_title">Amendà lesperienza</string>
<string name="onboarding_permissions_notifications_title">Nutificazioni</string>
<string name="onboarding_permissions_allow_button">Permette</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Povolte přístup pro poskytování návrhů kontaktů a zobrazení jmen a fotografií kontaktů.</string>
<string name="onboarding_permissions_notifications_description">Povolte oznámení, ať nezmeškáte žádné e-maily.</string>
<string name="onboarding_permissions_notifications_title">Oznámení</string>
<string name="onboarding_permissions_screen_title">Vylepšete používání aplikace</string>
<string name="onboarding_permissions_contacts_title">Kontakty</string>
<string name="onboarding_permissions_allow_button">Povolit</string>
<string name="onboarding_permissions_skip_button">Přeskočit</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Erlaube den Zugriff, um Kontaktvorschläge zu machen und Namen und Fotos von Kontakten anzuzeigen.</string>
<string name="onboarding_permissions_notifications_description">Aktiviere Benachrichtigungen, damit du keine E-Mails verpasst.</string>
<string name="onboarding_permissions_notifications_title">Benachrichtigungen</string>
<string name="onboarding_permissions_screen_title">Verbessere das Erlebnis</string>
<string name="onboarding_permissions_contacts_title">Kontakte</string>
<string name="onboarding_permissions_allow_button">Erlauben</string>
<string name="onboarding_permissions_skip_button">Überspringen</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_notifications_description">Ενεργοποιήστε τις ειδοποιήσεις για να μη χάσετε κανένα email.</string>
<string name="onboarding_permissions_notifications_title">Ειδοποιήσεις</string>
<string name="onboarding_permissions_screen_title">Βελτιώστε την εμπειρία</string>
<string name="onboarding_permissions_contacts_title">Επαφές</string>
<string name="onboarding_permissions_skip_button">Παράλειψη</string>
<string name="onboarding_permissions_contacts_description">Επιτρέψτε την πρόσβαση για να λαμβάνετε προτάσεις επαφών και για να εμφανίζονται τα ονόματα / φωτογραφίες.</string>
<string name="onboarding_permissions_allow_button">Αποδοχή</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Allow access to be able to provide contact suggestions and to display contact names and photos.</string>
<string name="onboarding_permissions_notifications_description">Turn on notifications so you don\'t miss any emails.</string>
<string name="onboarding_permissions_notifications_title">Notifications</string>
<string name="onboarding_permissions_screen_title">Improve the experience</string>
<string name="onboarding_permissions_contacts_title">Contacts</string>
<string name="onboarding_permissions_allow_button">Allow</string>
<string name="onboarding_permissions_skip_button">Skip</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_allow_button">Permesi</string>
<string name="onboarding_permissions_skip_button">Preterpasi</string>
<string name="onboarding_permissions_notifications_title">Sciigoj</string>
<string name="onboarding_permissions_contacts_title">Kontaktoj</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Concede el permiso para poder buscar destinatarios entre los contactos y que aparezcan sus nombres y fotos de perfil.</string>
<string name="onboarding_permissions_notifications_description">Activa las notificaciones para no perderte ningún correo electrónico.</string>
<string name="onboarding_permissions_notifications_title">Notificaciones</string>
<string name="onboarding_permissions_screen_title">Mejorar la experiencia</string>
<string name="onboarding_permissions_contacts_title">Contactos</string>
<string name="onboarding_permissions_allow_button">Permitir</string>
<string name="onboarding_permissions_skip_button">Omitir</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Luba ligipääs nutiseadme kontaktidele ja kasuta seal leiduvaid kirjeid soovitustena koos nimede ja fotodega.</string>
<string name="onboarding_permissions_notifications_description">Lülita sisse teavitused ning ainsamgi kiri ei jää sul märkamata.</string>
<string name="onboarding_permissions_notifications_title">Teavitused</string>
<string name="onboarding_permissions_screen_title">Kasuta rakendust tõhusamalt</string>
<string name="onboarding_permissions_contacts_title">Kontaktid</string>
<string name="onboarding_permissions_allow_button">Luba</string>
<string name="onboarding_permissions_skip_button">Jäta vahele</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Onartu baimena kontaktuen iradokizunak emateko eta kontaktuen izenak eta argazkiak bistaratzeko.</string>
<string name="onboarding_permissions_notifications_description">Gaitu jakinarazpenak mezurik ez galtzeko.</string>
<string name="onboarding_permissions_notifications_title">Jakinarazpenak</string>
<string name="onboarding_permissions_screen_title">Hobetu esperientzia</string>
<string name="onboarding_permissions_contacts_title">Kontaktuak</string>
<string name="onboarding_permissions_allow_button">Onartu</string>
<string name="onboarding_permissions_skip_button">Saltatu</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">اجازهٔ دسترسی برای دادن پیشنهاد مخاطب و نمایش نام و عکس آشنایان.</string>
<string name="onboarding_permissions_notifications_description">روشن کردن آگاهی‌ها برای از دست ندادن هیچ رایانامه‌ای.</string>
<string name="onboarding_permissions_notifications_title">آگاهی‌ها</string>
<string name="onboarding_permissions_screen_title">بهبود تجربه</string>
<string name="onboarding_permissions_contacts_title">آشنایان</string>
<string name="onboarding_permissions_allow_button">اجازه</string>
<string name="onboarding_permissions_skip_button">پرش</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_notifications_description">Ota ilmoitukset käyttöön, niin saapuvat viestit eivät jää huomiotta.</string>
<string name="onboarding_permissions_notifications_title">Ilmoitukset</string>
<string name="onboarding_permissions_screen_title">Paranna kokemusta</string>
<string name="onboarding_permissions_contacts_title">Yhteystiedot</string>
<string name="onboarding_permissions_allow_button">Salli</string>
<string name="onboarding_permissions_skip_button">Ohita</string>
<string name="onboarding_permissions_contacts_description">Salli pääsy, jotta voimme näyttää yhteystietoehdotuksia ja yhteystietojen nimet ja kuvat.</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Autoriser laccès afin de donner des suggestions de contact et dafficher le nom et la photo des contacts.</string>
<string name="onboarding_permissions_notifications_description">Activation des notifications afin que vous ne ratiez aucun courriel.</string>
<string name="onboarding_permissions_notifications_title">Notifications</string>
<string name="onboarding_permissions_screen_title">Amélioration de lexpérience</string>
<string name="onboarding_permissions_contacts_title">Contacts</string>
<string name="onboarding_permissions_allow_button">Autoriser</string>
<string name="onboarding_permissions_skip_button">Ignorer</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Jou tagong om suggestjes foar kontakten jaan te kinnen en nammen en fotos fan kontakten toane te kinnen.</string>
<string name="onboarding_permissions_notifications_description">Skeakelje meldingen yn, sadat jo gjin e-mailberjochten misse.</string>
<string name="onboarding_permissions_notifications_title">Meldingen</string>
<string name="onboarding_permissions_screen_title">Ferbetterje de ûnderfining</string>
<string name="onboarding_permissions_contacts_title">Kontakten</string>
<string name="onboarding_permissions_allow_button">Tastean</string>
<string name="onboarding_permissions_skip_button">Oerslaan</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_allow_button">Ceadaigh</string>
<string name="onboarding_permissions_screen_title">Feabhas a chur ar an taithí</string>
<string name="onboarding_permissions_contacts_title">Teagmhálaithe</string>
<string name="onboarding_permissions_contacts_description">Ceadaigh rochtain a bheith in ann moltaí teagmhála a sholáthar agus ainmneacha teagmhála agus grianghraif a thaispeáint.</string>
<string name="onboarding_permissions_notifications_title">Fógraí</string>
<string name="onboarding_permissions_notifications_description">Cuir fógraí ar siúl ionas nach gcaillfidh tú aon ríomhphost.</string>
<string name="onboarding_permissions_skip_button">Scipeáil</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Thoir piseach air an àrainneachd</string>
<string name="onboarding_permissions_contacts_description">Thoir seachad cead-inntrigidh ma tha thu airson s gum mol sinn luchd-aithne dhut agus airson ainmean is dealbhan luchd-aithne fhaicinn.</string>
<string name="onboarding_permissions_notifications_description">Cuir na brathan air is chan fhairtlich post-d eile ort.</string>
<string name="onboarding_permissions_allow_button">Ceadaich</string>
<string name="onboarding_permissions_skip_button">Leum seachad air</string>
<string name="onboarding_permissions_contacts_title">Luchd-aithne</string>
<string name="onboarding_permissions_notifications_title">Brathan</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">कॉन्टैक्ट जोड़ने की सलाह और कॉन्टैक्ट का नाम और फोटो देख पाने के लिए एक्सेस दें।</string>
<string name="onboarding_permissions_notifications_title">नोटिफिकेशन</string>
<string name="onboarding_permissions_screen_title">ऐप बेहतर करें</string>
<string name="onboarding_permissions_contacts_title">कॉन्टैक्ट</string>
<string name="onboarding_permissions_notifications_description">नोटिफिकेशन ऑन करें ताकि आपसे कोई भी ईमेल छूट ना जाएं।</string>
<string name="onboarding_permissions_allow_button">दें</string>
<string name="onboarding_permissions_skip_button">छोड़ें</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Poboljšajte iskustvo</string>
<string name="onboarding_permissions_contacts_title">Kontakti</string>
<string name="onboarding_permissions_notifications_title">Obavijesti</string>
<string name="onboarding_permissions_contacts_description">Omogućite pristup kako biste mogli dobivati prijedloge kontakata i prikazivati imena i fotografije kontakata.</string>
<string name="onboarding_permissions_notifications_description">Uključite obavijesti kako ne biste propustili nijednu email poruku.</string>
<string name="onboarding_permissions_allow_button">Dopusti</string>
<string name="onboarding_permissions_skip_button">Preskoči</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Engedélyezze a hozzáférést a névjegyjavaslatok biztosításához, illetve a névjegyek és fényképek megjelenítéséhez.</string>
<string name="onboarding_permissions_notifications_description">Kapcsolja be az értesítéseket, hogy ne maradjon le egyetlen levélről sem.</string>
<string name="onboarding_permissions_notifications_title">Értesítések</string>
<string name="onboarding_permissions_screen_title">Élmény javítása</string>
<string name="onboarding_permissions_contacts_title">Kapcsolatok</string>
<string name="onboarding_permissions_allow_button">Engedélyezés</string>
<string name="onboarding_permissions_skip_button">Kihagyás</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Tingkatkan pengalaman Anda</string>
<string name="onboarding_permissions_contacts_title">Kontak</string>
<string name="onboarding_permissions_contacts_description">Memungkinkan akses agar dapat memberikan saran kontak serta menampilkan nama kontak dan foto.</string>
<string name="onboarding_permissions_notifications_title">Notifikasi</string>
<string name="onboarding_permissions_notifications_description">Menyalakan notifikasi agar Anda tidak melewatkan surel apa pun.</string>
<string name="onboarding_permissions_allow_button">Izinkan</string>
<string name="onboarding_permissions_skip_button">Lewati</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Heimilaðu aðgang að þeim til að fá tillögur og birtingu á nöfnum tengiliða ásamt myndum.</string>
<string name="onboarding_permissions_notifications_description">Kveiktu á tilkynningum svo þú missir ekki af neinum tölvupóstum.</string>
<string name="onboarding_permissions_notifications_title">Tilkynningar</string>
<string name="onboarding_permissions_screen_title">Bættu upplifunina</string>
<string name="onboarding_permissions_contacts_title">Tengiliðir</string>
<string name="onboarding_permissions_allow_button">Leyfa</string>
<string name="onboarding_permissions_skip_button">Sleppa</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Migliora l\'esperienza</string>
<string name="onboarding_permissions_contacts_title">Contatti</string>
<string name="onboarding_permissions_contacts_description">Consenti l\'accesso ai contatti per ricevere suggerimenti e visualizzare nomi e foto profilo</string>
<string name="onboarding_permissions_notifications_description">Attiva le notifiche per non perdere nessuna email</string>
<string name="onboarding_permissions_notifications_title">Notifiche</string>
<string name="onboarding_permissions_allow_button">Consenti</string>
<string name="onboarding_permissions_skip_button">Salta</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_title">אנשי קשר</string>
<string name="onboarding_permissions_notifications_title">התראות</string>
<string name="onboarding_permissions_notifications_description">הפעל התראות על מנת לא לפספס אף הודעת דוא\"ל.</string>
<string name="onboarding_permissions_allow_button">אפשר</string>
<string name="onboarding_permissions_skip_button">דלג</string>
<string name="onboarding_permissions_screen_title">לשפר את החוויה</string>
<string name="onboarding_permissions_contacts_description">לאפשר גישה על מנת שתוכל לקבל הצעות אנשי קשר ולהציג שמות ותמונות של אנשי קשר.</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">アクセスを許可すると、連絡先の候補を表示したり、連絡先の名前や写真を表示できます。</string>
<string name="onboarding_permissions_notifications_description">通知をオンにすれば、メールを見逃しません。</string>
<string name="onboarding_permissions_notifications_title">通知</string>
<string name="onboarding_permissions_screen_title">アプリを使いやすくしましょう</string>
<string name="onboarding_permissions_contacts_title">連絡先</string>
<string name="onboarding_permissions_allow_button">許可</string>
<string name="onboarding_permissions_skip_button">スキップ</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_title">Контакттар</string>
<string name="onboarding_permissions_allow_button">Рұқсат ету</string>
<string name="onboarding_permissions_skip_button">Аттап кету</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_notifications_title">알림</string>
<string name="onboarding_permissions_notifications_description">이메일을 놓치지 않도록 알림을 켜세요.</string>
<string name="onboarding_permissions_allow_button">허용</string>
<string name="onboarding_permissions_skip_button">건너뛰기</string>
<string name="onboarding_permissions_contacts_title">연락처</string>
<string name="onboarding_permissions_contacts_description">연락처 추천을 제공하고 이름과 사진을 표시할 수 있도록 액세스를 허용합니다.</string>
<string name="onboarding_permissions_screen_title">사용성 개선</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Pagerinkite patirtį</string>
<string name="onboarding_permissions_contacts_title">Kontaktai</string>
<string name="onboarding_permissions_contacts_description">Leiskite prieigą, kad programa galėtų siūlyti laiškų adresatus, rodyti jų vardus ir nuotraukas.</string>
<string name="onboarding_permissions_notifications_title">Pranešimai</string>
<string name="onboarding_permissions_notifications_description">Įjunkite pranešimus, kad gaunami laiškai neliktų nepastebėti.</string>
<string name="onboarding_permissions_allow_button">Leisti</string>
<string name="onboarding_permissions_skip_button">Praleisti</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Gi tilgang til å tilby kontaktforslag, og vise kontakters navn og -bilder.</string>
<string name="onboarding_permissions_notifications_description">Skru på varsler så du ikke går glipp av noen e-poster.</string>
<string name="onboarding_permissions_notifications_title">Varsler</string>
<string name="onboarding_permissions_screen_title">Tilpass opplevelsen</string>
<string name="onboarding_permissions_contacts_title">Kontakter</string>
<string name="onboarding_permissions_allow_button">Tillat</string>
<string name="onboarding_permissions_skip_button">Hopp over</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Geef toegang om suggesties voor contacten te kunnen geven en namen en fotos van contacten te kunnen tonen.</string>
<string name="onboarding_permissions_notifications_description">Schakel meldingen in, zodat u geen e-mailberichten mist.</string>
<string name="onboarding_permissions_notifications_title">Meldingen</string>
<string name="onboarding_permissions_screen_title">Verbeter de ervaring</string>
<string name="onboarding_permissions_contacts_title">Contacten</string>
<string name="onboarding_permissions_allow_button">Toestaan</string>
<string name="onboarding_permissions_skip_button">Overslaan</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Tilpass opplevinga</string>
<string name="onboarding_permissions_contacts_title">Kontaktar</string>
<string name="onboarding_permissions_allow_button">Tillat</string>
<string name="onboarding_permissions_skip_button">Hopp over</string>
<string name="onboarding_permissions_contacts_description">Tillat tilgjenge for å vere i stand til å føreslå kontaktar og for å vise kontaktnamn og bilete.</string>
<string name="onboarding_permissions_notifications_title">Notifikasjonar</string>
<string name="onboarding_permissions_notifications_description">Skru på notifikasjonar så du ikkje går glipp av nokon e-postar.</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Zezwól na dostęp, aby móc sugerować kontakty oraz wyświetlać ich imiona, nazwiska i zdjęcia.</string>
<string name="onboarding_permissions_notifications_description">Włącz powiadomienia, aby nie przegapić żadnych e-maili.</string>
<string name="onboarding_permissions_notifications_title">Powiadomienia</string>
<string name="onboarding_permissions_screen_title">Popraw doświadczenie</string>
<string name="onboarding_permissions_contacts_title">Kontakty</string>
<string name="onboarding_permissions_allow_button">Zezwól</string>
<string name="onboarding_permissions_skip_button">Pomiń</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Permitir o acesso para poder fornecer sugestões de contatos e exibir nomes e fotos de contatos.</string>
<string name="onboarding_permissions_notifications_description">Ligar as notificações para que não perca qualquer mensagem.</string>
<string name="onboarding_permissions_notifications_title">Notificações</string>
<string name="onboarding_permissions_screen_title">Melhore sua experiência de uso</string>
<string name="onboarding_permissions_contacts_title">Contatos</string>
<string name="onboarding_permissions_allow_button">Permitir</string>
<string name="onboarding_permissions_skip_button">Pular</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Permitir acesso para fornecer sugestões de contactos e visualizar nomes e fotografias dos contactos.</string>
<string name="onboarding_permissions_notifications_description">Ligar notificações de modo a não perder nenhuns emails.</string>
<string name="onboarding_permissions_notifications_title">Notificações</string>
<string name="onboarding_permissions_screen_title">Melhorar a experiência</string>
<string name="onboarding_permissions_contacts_title">Contactos</string>
<string name="onboarding_permissions_allow_button">Permitir</string>
<string name="onboarding_permissions_skip_button">Saltar</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Permite accesul pentru a putea oferi sugestii de contact și pentru a afișa numele și fotografiile persoanelor de contact.</string>
<string name="onboarding_permissions_notifications_description">Activează notificările pentru a nu pierde niciun e-mail.</string>
<string name="onboarding_permissions_notifications_title">Notificări</string>
<string name="onboarding_permissions_screen_title">Îmbunătățește experiența</string>
<string name="onboarding_permissions_contacts_title">Contacte</string>
<string name="onboarding_permissions_allow_button">Permite</string>
<string name="onboarding_permissions_skip_button">Omite</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_notifications_title">Уведомления</string>
<string name="onboarding_permissions_skip_button">Пропустить</string>
<string name="onboarding_permissions_screen_title">Повысить удобство</string>
<string name="onboarding_permissions_contacts_title">Контакты</string>
<string name="onboarding_permissions_notifications_description">Включите уведомления, чтобы не пропустить ни одного письма.</string>
<string name="onboarding_permissions_allow_button">Разрешить</string>
<string name="onboarding_permissions_contacts_description">Предоставьте доступ, чтобы иметь возможность предлагать контакты и отображать их имена и фотографии.</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Pomôžte nám zlepšiť aplikáciu</string>
<string name="onboarding_permissions_contacts_title">Kontakty</string>
<string name="onboarding_permissions_skip_button">Preskočiť</string>
<string name="onboarding_permissions_notifications_description">Povoľte oznámenia, aby ste nezmeškali žiadne emaily.</string>
<string name="onboarding_permissions_allow_button">Povoliť</string>
<string name="onboarding_permissions_contacts_description">Povoľte prístup na poskytovanie návrhov kontaktov a zobrazenie mien a fotografií kontakov.</string>
<string name="onboarding_permissions_notifications_title">Oznámenia</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Izboljšajte izkušnjo</string>
<string name="onboarding_permissions_contacts_description">Omogočite dostop, da vam bo program lahko ponudil predloge za stike in prikazal imena in fotografije stikov.</string>
<string name="onboarding_permissions_notifications_title">Obvestila</string>
<string name="onboarding_permissions_notifications_description">Vklopite obvestila, da ne zgrešite sporočil.</string>
<string name="onboarding_permissions_skip_button">Preskoči</string>
<string name="onboarding_permissions_contacts_title">Stiki</string>
<string name="onboarding_permissions_allow_button">Dovoli</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Lejoni hyrje, për të qenë në gjendje të jepen sugjerime kontaktesh dhe për të shfaqur emra dhe foto kontaktesh.</string>
<string name="onboarding_permissions_notifications_description">Aktivizoni njoftimet, që të mos humbni email-e.</string>
<string name="onboarding_permissions_notifications_title">Njoftime</string>
<string name="onboarding_permissions_screen_title">Përmirësoni përdorimin</string>
<string name="onboarding_permissions_contacts_title">Kontakte</string>
<string name="onboarding_permissions_allow_button">Lejoji</string>
<string name="onboarding_permissions_skip_button">Anashkaloje</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Побољшајте искуство</string>
<string name="onboarding_permissions_contacts_title">Контакти</string>
<string name="onboarding_permissions_contacts_description">Дозволите приступ како бисте могли да добијете предлоге контаката и приказ имена и фотографија контаката.</string>
<string name="onboarding_permissions_notifications_title">Обавештења</string>
<string name="onboarding_permissions_notifications_description">Укључите обавештења како не бисте пропустили ниједан имејл.</string>
<string name="onboarding_permissions_allow_button">Дозволи</string>
<string name="onboarding_permissions_skip_button">Прескочи</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Tillåt åtkomst för att kunna ge kontaktförslag och visa kontaktnamn och foton.</string>
<string name="onboarding_permissions_notifications_description">Slå på aviseringar så att du inte missar några e-postmeddelanden.</string>
<string name="onboarding_permissions_notifications_title">Aviseringar</string>
<string name="onboarding_permissions_screen_title">Förbättra upplevelsen</string>
<string name="onboarding_permissions_contacts_title">Kontakter</string>
<string name="onboarding_permissions_allow_button">Tillåt</string>
<string name="onboarding_permissions_skip_button">Hoppa över</string>
</resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">தொடர்பு பரிந்துரைகளை வழங்கவும் தொடர்பு பெயர்கள் மற்றும் புகைப்படங்களைக் காண்பிக்கவும் அணுகலை அனுமதிக்கவும்.</string>
<string name="onboarding_permissions_notifications_description">அறிவிப்புகளை இயக்கவும், எனவே நீங்கள் எந்த மின்னஞ்சல்களையும் தவறவிடாதீர்கள்.</string>
<string name="onboarding_permissions_allow_button">இசைவு</string>
<string name="onboarding_permissions_skip_button">தவிர்</string>
<string name="onboarding_permissions_screen_title">அனுபவத்தை மேம்படுத்தவும்</string>
<string name="onboarding_permissions_contacts_title">தொடர்புகள்</string>
<string name="onboarding_permissions_notifications_title">அறிவிப்புகள்</string>
</resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Kişi önerileri almak, kişi adlarını ve fotoğraflarını görmek için erişim izni verin.</string>
<string name="onboarding_permissions_notifications_description">Hiçbir e-postayı kaçırmamak için bildirimleri açın.</string>
<string name="onboarding_permissions_notifications_title">Bildirimler</string>
<string name="onboarding_permissions_screen_title">Deneyiminizi iyileştirin</string>
<string name="onboarding_permissions_contacts_title">Kişiler</string>
<string name="onboarding_permissions_allow_button">İzin ver</string>
<string name="onboarding_permissions_skip_button">Atla</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_screen_title">Зробіть користування зручнішим</string>
<string name="onboarding_permissions_contacts_title">Контакти</string>
<string name="onboarding_permissions_contacts_description">Дозвольте доступ, щоб з\'явилася можливість пропонувати контакти та показувати імена та світлини контактів.</string>
<string name="onboarding_permissions_notifications_title">Сповіщення</string>
<string name="onboarding_permissions_notifications_description">Увімкніть сповіщення, щоб не пропустити жодного листа.</string>
<string name="onboarding_permissions_allow_button">Дозволити</string>
<string name="onboarding_permissions_skip_button">Пропустити</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">Cho phép truy cập để có thể cung cấp đề xuất liên hệ và hiển thị tên và ảnh liên hệ.</string>
<string name="onboarding_permissions_notifications_description">Bật thông báo để không bỏ lỡ bất kỳ email nào.</string>
<string name="onboarding_permissions_notifications_title">Thông báo</string>
<string name="onboarding_permissions_screen_title">Cải thiện trải nghiệm</string>
<string name="onboarding_permissions_contacts_title">Danh bạ</string>
<string name="onboarding_permissions_allow_button">Cho phép</string>
<string name="onboarding_permissions_skip_button">Bỏ qua</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">允许访问以便提供联系人建议并显示联系人名称和照片。</string>
<string name="onboarding_permissions_notifications_description">打开通知,以免错过任何电子邮件。</string>
<string name="onboarding_permissions_notifications_title">通知</string>
<string name="onboarding_permissions_screen_title">改善体验</string>
<string name="onboarding_permissions_contacts_title">联系人</string>
<string name="onboarding_permissions_allow_button">允许</string>
<string name="onboarding_permissions_skip_button">跳过</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="onboarding_permissions_contacts_description">允許訪問能夠提供聯絡人建議並顯示聯絡人姓名和照片。</string>
<string name="onboarding_permissions_notifications_description">開啟通知,這樣您就不會錯過任何電子郵件。</string>
<string name="onboarding_permissions_notifications_title">通知</string>
<string name="onboarding_permissions_screen_title">改善體驗</string>
<string name="onboarding_permissions_contacts_title">聯絡人</string>
<string name="onboarding_permissions_allow_button">允許</string>
<string name="onboarding_permissions_skip_button">跳過</string>
</resources>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Title of the onboarding screen to ask for Android permissions -->
<string name="onboarding_permissions_screen_title">Improve the experience</string>
<!-- Title of the section asking for the permission to read contacts -->
<string name="onboarding_permissions_contacts_title">Contacts</string>
<!-- Description of why we ask for the permission to read contacts -->
<string name="onboarding_permissions_contacts_description">Allow access to be able to provide contact suggestions and to display contact names and photos.</string>
<!-- Title of the section asking for permission to post notifications -->
<string name="onboarding_permissions_notifications_title">Notifications</string>
<!-- Description of why we ask the permission to post notifications -->
<string name="onboarding_permissions_notifications_description">Turn on notifications so you don\'t miss any emails.</string>
<!-- Text of the button that will trigger the system dialog to ask for an Android permission -->
<string name="onboarding_permissions_allow_button">Allow</string>
<!-- Text of the button to skip the onboarding screen to ask for Android permissions -->
<string name="onboarding_permissions_skip_button">Skip</string>
</resources>