feat: about dialog and other improvements (#90)

* feat: add about dialog

* feat: add Portuguese l10n

* chore: add acknowledgements
This commit is contained in:
Diego Beraldin 2023-11-01 16:11:33 +01:00 committed by GitHub
parent 33a4f7435e
commit 5d5afc745a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 844 additions and 228 deletions

View File

@ -124,10 +124,18 @@ this project _is_ all about experimenting and learning.
- the `core-md` module in the common flavor is heavily inspired by
[Multiplatform Markdown Renderer](https://github.com/mikepenz/multiplatform-markdown-renderer) but
the Android implementation with Markwon is taken and adapted from
the Android implementation with Markwon is adapted from
[Jerboa for Lemmy](https://github.com/dessalines/jerboa)
- the UI is inspired by the really great [Thunder](https://github.com/thunder-app/thunder) app
## Acknowledgements:
This project would not be what it is were it not for the huge amount of patience and dedication
of early adopters who sent me continous feedback and ideas for improvement after every release.
A special thank to all those who contributed so far, namely:
rb_c, OverfedRaccoon, …
## Want to try it out?
- get it on [Obtainium](https://github.com/ImranR98/Obtainium/releases) by simply adding this

View File

@ -15,14 +15,6 @@ android {
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 33
versionName = "1.0.0-RC2"
buildConfigField(
"String",
"CRASH_REPORT_EMAIL",
"\"diego.beraldin+raccoon4lemmy@gmail.com\""
)
buildConfigField("String", "CRASH_REPORT_SUBJECT", "\"Crash report\"")
archivesName.set("RaccoonForLemmy")
}
buildFeatures {

View File

@ -56,6 +56,7 @@ class LanguageBottomSheet : Screen {
"es",
"fr",
"it",
"pt",
)
Column(
modifier = Modifier.fillMaxWidth().verticalScroll(rememberScrollState()),

View File

@ -17,4 +17,5 @@ object NotificationCenterContractKeys {
const val ChangeColor = "changeColor"
const val MultiCommunityCreated = "multiCommunityCreated"
const val ResetContents = "resetContents"
const val CloseDialog = "closeDialog"
}

View File

@ -23,6 +23,7 @@ fun String.toLanguageName() = when (this) {
"es" -> stringResource(MR.strings.language_es)
"fr" -> stringResource(MR.strings.language_fr)
"it" -> stringResource(MR.strings.language_it)
"pt" -> stringResource(MR.strings.language_pt)
else -> stringResource(MR.strings.language_en)
}

View File

@ -50,6 +50,7 @@ kotlin {
implementation(projects.coreNotifications)
implementation(projects.resources)
implementation(projects.domainLemmy.data)
implementation(projects.domainLemmy.repository)
implementation(projects.domainIdentity)
}
}

View File

@ -1,9 +1,15 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.di
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutDialogMviModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.main.SettingsMviModel
import org.koin.java.KoinJavaComponent.inject
actual fun getSettingsScreenModel(): SettingsMviModel {
actual fun getSettingsViewModel(): SettingsMviModel {
val res: SettingsMviModel by inject(SettingsMviModel::class.java)
return res
}
actual fun getAboutDialogViewModel(): AboutDialogMviModel {
val res: AboutDialogMviModel by inject(AboutDialogMviModel::class.java)
return res
}

View File

@ -1,6 +1,8 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.di
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutDialogMviModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutDialogViewModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.main.SettingsMviModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.main.SettingsViewModel
import org.koin.dsl.module
@ -8,9 +10,7 @@ import org.koin.dsl.module
val settingsTabModule = module {
factory<SettingsMviModel> {
SettingsViewModel(
mvi = DefaultMviModel(
SettingsMviModel.UiState(),
),
mvi = DefaultMviModel(SettingsMviModel.UiState()),
settingsRepository = get(),
accountRepository = get(),
themeRepository = get(),
@ -21,4 +21,11 @@ val settingsTabModule = module {
crashReportConfiguration = get(),
)
}
factory<AboutDialogMviModel> {
AboutDialogViewModel(
mvi = DefaultMviModel(AboutDialogMviModel.UiState()),
identityRepository = get(),
communityRepository = get(),
)
}
}

View File

@ -1,5 +1,8 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.di
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutDialogMviModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.main.SettingsMviModel
expect fun getSettingsScreenModel(): SettingsMviModel
expect fun getSettingsViewModel(): SettingsMviModel
expect fun getAboutDialogViewModel(): AboutDialogMviModel

View File

@ -0,0 +1,12 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog
internal object AboutContants {
const val REPORT_URL =
"https://github.com/diegoberaldin/RaccoonForLemmy/issues/new?labels=bug"
const val CHANGELOG_URL =
"https://github.com/diegoberaldin/RaccoonForLemmy/releases/latest"
const val REPORT_EMAIL_ADDRESS = "diego.beraldin+raccoon4lemmy@gmail.com"
const val WEBSITE_URL = "https://github.com/diegoberaldin/RaccoonForLemmy"
const val LEMMY_COMMUNITY_NAME = "raccoonforlemmy"
const val LEMMY_COMMUNITY_INSTANCE = "lemmy.world"
}

View File

@ -0,0 +1,248 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
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.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.OpenInBrowser
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.screen.Screen
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.CommunityDetailScreen
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.handleUrl
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.di.getAboutDialogViewModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutContants.CHANGELOG_URL
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutContants.REPORT_EMAIL_ADDRESS
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutContants.REPORT_URL
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutContants.WEBSITE_URL
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
import dev.icerock.moko.resources.compose.painterResource
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
class AboutDialog : Screen {
@OptIn(ExperimentalMaterial3Api::class)
@Composable
override fun Content() {
val viewModel = rememberScreenModel { getAboutDialogViewModel() }
viewModel.bindToLifecycle(key)
val uriHandler = LocalUriHandler.current
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
val settingsRepository = remember { getSettingsRepository() }
val settings by settingsRepository.currentSettings.collectAsState()
val uiState by viewModel.uiState.collectAsState()
val notificationCenter = remember { getNotificationCenter() }
LaunchedEffect(viewModel) {
viewModel.effects.onEach { effect ->
when (effect) {
is AboutDialogMviModel.Effect.OpenCommunity -> {
navigator?.push(
CommunityDetailScreen(
community = effect.community,
otherInstance = effect.instance,
)
)
}
}
}.launchIn(this)
}
AlertDialog(
onDismissRequest = {
notificationCenter.getObserver(NotificationCenterContractKeys.CloseDialog)
?.invoke(Unit)
},
) {
Column(
modifier = Modifier
.background(color = MaterialTheme.colorScheme.surface)
.padding(vertical = Spacing.s),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(
text = stringResource(MR.strings.settings_about),
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onBackground,
)
Spacer(modifier = Modifier.height(Spacing.s))
LazyColumn(
modifier = Modifier
.padding(vertical = Spacing.s, horizontal = Spacing.m)
.heightIn(max = 400.dp),
verticalArrangement = Arrangement.spacedBy(Spacing.xs)
) {
item {
AboutItem(
text = stringResource(MR.strings.settings_about_app_version),
value = uiState.version,
)
}
item {
AboutItem(
text = stringResource(MR.strings.settings_about_changelog),
vector = Icons.Default.OpenInBrowser,
textDecoration = TextDecoration.Underline,
onClick = {
handleUrl(
url = CHANGELOG_URL,
openExternal = settings.openUrlsInExternalBrowser,
uriHandler = uriHandler,
navigator = navigator,
)
}
)
}
item {
Button(
onClick = {
handleUrl(
url = REPORT_URL,
openExternal = settings.openUrlsInExternalBrowser,
uriHandler = uriHandler,
navigator = navigator,
)
},
) {
Text(
modifier = Modifier.fillMaxWidth(),
text = stringResource(MR.strings.settings_about_report_github),
style = MaterialTheme.typography.labelLarge,
)
}
Button(
onClick = {
uriHandler.openUri("mailto:$REPORT_EMAIL_ADDRESS")
},
) {
Text(
modifier = Modifier.fillMaxWidth(),
text = stringResource(MR.strings.settings_about_report_email),
style = MaterialTheme.typography.labelLarge,
)
}
}
item {
AboutItem(
painter = painterResource(MR.images.ic_github),
text = stringResource(MR.strings.settings_about_view_github),
textDecoration = TextDecoration.Underline,
onClick = {
handleUrl(
url = WEBSITE_URL,
openExternal = settings.openUrlsInExternalBrowser,
uriHandler = uriHandler,
navigator = navigator,
)
},
)
}
item {
AboutItem(
painter = painterResource(MR.images.ic_lemmy),
text = stringResource(MR.strings.settings_about_view_lemmy),
textDecoration = TextDecoration.Underline,
onClick = {
viewModel.reduce(AboutDialogMviModel.Intent.OpenOwnCommunity)
},
)
}
}
Button(
onClick = {
notificationCenter.getObserver(NotificationCenterContractKeys.CloseDialog)
?.invoke(Unit)
},
) {
Text(text = stringResource(MR.strings.button_close))
}
}
}
}
@Composable
fun AboutItem(
painter: Painter? = null,
vector: ImageVector? = null,
text: String,
textDecoration: TextDecoration = TextDecoration.None,
value: String = "",
onClick: (() -> Unit)? = null,
) {
Row(
modifier = Modifier.padding(
horizontal = Spacing.xs,
vertical = Spacing.s,
).onClick {
onClick?.invoke()
},
horizontalArrangement = Arrangement.spacedBy(Spacing.s),
verticalAlignment = Alignment.CenterVertically,
) {
val imageModifier = Modifier.size(22.dp)
if (painter != null) {
Image(
modifier = imageModifier,
painter = painter,
contentDescription = null,
)
} else if (vector != null) {
Image(
modifier = imageModifier,
imageVector = vector,
contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onBackground),
)
}
Text(
text = text,
style = MaterialTheme.typography.bodyLarge,
textDecoration = textDecoration,
)
Spacer(modifier = Modifier.weight(1f))
if (value.isNotEmpty()) {
Text(
text = value,
style = MaterialTheme.typography.bodyLarge,
)
}
}
}
}

View File

@ -0,0 +1,26 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog
import cafe.adriel.voyager.core.model.ScreenModel
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
interface AboutDialogMviModel :
MviModel<AboutDialogMviModel.Intent, AboutDialogMviModel.UiState, AboutDialogMviModel.Effect>,
ScreenModel {
sealed interface Intent {
data object OpenOwnCommunity : Intent
}
data class UiState(
val version: String = "",
)
sealed interface Effect {
data class OpenCommunity(
val community: CommunityModel,
val instance: String = "",
) : Effect
}
}

View File

@ -0,0 +1,56 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviModel
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
import com.github.diegoberaldin.raccoonforlemmy.core.utils.AppInfo
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.CommunityRepository
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutContants.LEMMY_COMMUNITY_INSTANCE
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutContants.LEMMY_COMMUNITY_NAME
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.launch
class AboutDialogViewModel(
private val mvi: DefaultMviModel<AboutDialogMviModel.Intent, AboutDialogMviModel.UiState, AboutDialogMviModel.Effect>,
private val identityRepository: IdentityRepository,
private val communityRepository: CommunityRepository,
) : AboutDialogMviModel,
MviModel<AboutDialogMviModel.Intent, AboutDialogMviModel.UiState, AboutDialogMviModel.Effect> by mvi {
override fun onStarted() {
mvi.onStarted()
mvi.updateState {
it.copy(
version = AppInfo.versionCode,
)
}
}
override fun reduce(intent: AboutDialogMviModel.Intent) {
when (intent) {
AboutDialogMviModel.Intent.OpenOwnCommunity -> {
mvi.scope?.launch(Dispatchers.IO) {
val auth = identityRepository.authToken.value
val (community, instance) = (communityRepository.getSubscribed(auth)
.firstOrNull { it.name == LEMMY_COMMUNITY_NAME } to "").let {
if (it.first == null) {
communityRepository.get(
name = LEMMY_COMMUNITY_NAME, instance = LEMMY_COMMUNITY_INSTANCE
) to LEMMY_COMMUNITY_INSTANCE
} else it
}
if (community != null) {
mvi.emitEffect(
AboutDialogMviModel.Effect.OpenCommunity(
community = community, instance = instance
)
)
}
}
}
}
}
}

View File

@ -66,7 +66,6 @@ interface SettingsMviModel :
val autoLoadImages: Boolean = false,
val autoExpandComments: Boolean = false,
val fullHeightImages: Boolean = false,
val appVersion: String = "",
)
sealed interface Effect

View File

@ -67,7 +67,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLanguageName
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toReadableName
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.di.getSettingsScreenModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.di.getSettingsViewModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutDialog
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.ui.SettingsTab
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.ui.components.SettingsColorRow
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.ui.components.SettingsHeader
@ -89,7 +90,7 @@ class SettingsScreen : Screen {
@OptIn(ExperimentalMaterial3Api::class)
@Composable
override fun Content() {
val model = rememberScreenModel { getSettingsScreenModel() }
val model = rememberScreenModel { getSettingsViewModel() }
model.bindToLifecycle(SettingsTab.key)
val uiState by model.uiState.collectAsState()
val bottomSheetNavigator = LocalBottomSheetNavigator.current
@ -101,6 +102,7 @@ class SettingsScreen : Screen {
val navigationCoordinator = remember { getNavigationCoordinator() }
val navigator = remember { navigationCoordinator.getRootNavigator() }
val scrollState = rememberScrollState()
LaunchedEffect(navigator) {
navigationCoordinator.onDoubleTabSelection.onEach { tab ->
if (tab == SettingsTab) {
@ -110,6 +112,7 @@ class SettingsScreen : Screen {
}
}.launchIn(this)
}
DisposableEffect(key) {
onDispose {
notificationCenter.removeObserver(key)
@ -120,6 +123,7 @@ class SettingsScreen : Screen {
var uiFontSizeWorkaround by remember { mutableStateOf(true) }
val themeRepository = remember { getThemeRepository() }
LaunchedEffect(themeRepository) {
themeRepository.uiFontScale.drop(1).onEach {
uiFontSizeWorkaround = false
@ -132,6 +136,7 @@ class SettingsScreen : Screen {
}
var upvoteColorDialogOpened by remember { mutableStateOf(false) }
var downvoteColorDialogOpened by remember { mutableStateOf(false) }
var infoDialogOpened by remember { mutableStateOf(false) }
Scaffold(
modifier = Modifier.padding(Spacing.xxs),
@ -544,10 +549,13 @@ class SettingsScreen : Screen {
}
)
// app version
// about
SettingsRow(
title = stringResource(MR.strings.settings_app_version),
value = uiState.appVersion,
title = stringResource(MR.strings.settings_about),
value = "",
onTap = {
infoDialogOpened = true
},
)
Spacer(modifier = Modifier.height(Spacing.xxxl))
@ -578,6 +586,7 @@ class SettingsScreen : Screen {
},
)
}
if (downvoteColorDialogOpened) {
val initial = uiState.downvoteColor ?: MaterialTheme.colorScheme.tertiary
ColorPickerDialog(
@ -595,5 +604,12 @@ class SettingsScreen : Screen {
},
)
}
if (infoDialogOpened) {
notificationCenter.addObserver({
infoDialogOpened = false
}, key, NotificationCenterContractKeys.CloseDialog)
AboutDialog().Content()
}
}
}

View File

@ -16,7 +16,6 @@ import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationC
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.data.SettingsModel
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.AccountRepository
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
import com.github.diegoberaldin.raccoonforlemmy.core.utils.AppInfo
import com.github.diegoberaldin.raccoonforlemmy.core.utils.CrashReportConfiguration
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
@ -112,7 +111,6 @@ class SettingsViewModel(
autoLoadImages = settings.autoLoadImages,
autoExpandComments = settings.autoExpandComments,
fullHeightImages = settings.fullHeightImages,
appVersion = AppInfo.versionCode,
)
}
}

View File

@ -1,11 +1,14 @@
package com.github.diegoberaldin.raccoonforlemmy.feature.settings.di
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.dialog.AboutDialogMviModel
import com.github.diegoberaldin.raccoonforlemmy.feature.settings.main.SettingsMviModel
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
actual fun getSettingsScreenModel(): SettingsMviModel = SettingsScreenModelHelper.model
actual fun getSettingsViewModel(): SettingsMviModel = SettingsScreenModelHelper.settingsViewModel
actual fun getAboutDialogViewModel(): AboutDialogMviModel = SettingsScreenModelHelper.aboutViewModel
object SettingsScreenModelHelper : KoinComponent {
val model: SettingsMviModel by inject()
val settingsViewModel: SettingsMviModel by inject()
val aboutViewModel: AboutDialogMviModel by inject()
}

View File

@ -93,6 +93,7 @@
<string name="language_es" translatable="false">Español</string>
<string name="language_fr" translatable="false">Français</string>
<string name="language_it" translatable="false">Italiano</string>
<string name="language_pt" translatable="false">Português</string>
<string name="login_field_instance_name">Instance name</string>
<string name="login_field_label_optional">(optional)</string>
<string name="login_field_password">Password</string>
@ -144,7 +145,13 @@
<string name="profile_section_posts">Posts</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">y</string>
<string name="settings_app_version">App version</string>
<string name="settings_about">About this app…</string>
<string name="settings_about_app_version">App version</string>
<string name="settings_about_changelog">View full changelog</string>
<string name="settings_about_report_github">Report a bug (GitHub)</string>
<string name="settings_about_report_email">Report a bug (email)</string>
<string name="settings_about_view_github">View on GitHub</string>
<string name="settings_about_view_lemmy">Lemmy community</string>
<string name="settings_auto_expand_comments">Automatically expand comments</string>
<string name="settings_auto_load_images">Automatically load images</string>
<string name="settings_blur_nsfw">Blur NSFW images</string>

View File

@ -139,7 +139,13 @@
<string name="profile_section_posts">Beträge</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">y</string>
<string name="settings_app_version">App Version</string>
<string name="settings_about">Über diese App…</string>
<string name="settings_about_app_version">App version</string>
<string name="settings_about_changelog">Änderungsprotokoll anzeigen</string>
<string name="settings_about_report_github">Melde einen technischen Fehler (GitHub)</string>
<string name="settings_about_report_email">Melde einen technischen Fehler (Email)</string>
<string name="settings_about_view_github">Ansicht auf GitHub</string>
<string name="settings_about_view_lemmy">Lemmy Community</string>
<string name="settings_auto_expand_comments">Kommentare automatisch erweitern</string>
<string name="settings_auto_load_images">Bilder automatisch laden</string>
<string name="settings_blur_nsfw">NSFW-Bilder verwischen</string>

View File

@ -1,203 +1,209 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="action_back_to_top">Volver arriba</string>
<string name="action_chat">Enviar mensaje</string>
<string name="action_clear_read">Esconder leídos</string>
<string name="action_create_post">Nueva publicación</string>
<string name="action_reply">Responder</string>
<string name="button_close">Cerrar</string>
<string name="button_confirm">Confirmar</string>
<string name="button_load">Cargar</string>
<string name="button_reset">Reiniciar</string>
<string name="comment_action_delete">Eliminar</string>
<string name="community_detail_block">Bloquear</string>
<string name="community_detail_block_instance">Bloquear instancia</string>
<string name="community_detail_info">Info comunidad</string>
<string name="community_detail_instance_info">Detalles instancia</string>
<string name="community_info_comments">comentarios</string>
<string name="community_info_daily_active_users">usuarios activos (día)</string>
<string name="community_info_monthly_active_users">usuarios activos (mes)</string>
<string name="community_info_posts">publicaciones</string>
<string name="community_info_subscribers">suscriptores</string>
<string name="community_info_weekly_active_users">usuarios activos (semana)</string>
<string name="create_comment_body">Texto comentario</string>
<string name="create_comment_title">Nuevo comentario</string>
<string name="create_post_body">Texto publicación</string>
<string name="create_post_name">Título publicación</string>
<string name="create_post_nsfw">NSFW</string>
<string name="create_post_tab_editor">Editor</string>
<string name="create_post_tab_preview">Previsualización</string>
<string name="create_post_title">Nueva publicación</string>
<string name="create_post_url">URL</string>
<string name="create_report_placeholder">Texto del informe (opcional)</string>
<string name="create_report_title_comment">Crear informe sobre comentario</string>
<string name="create_report_title_post">Crear informe sobre publicación</string>
<string name="dialog_raw_content_text">Texto</string>
<string name="dialog_raw_content_title">Título</string>
<string name="dialog_raw_content_url">URL</string>
<string name="dialog_title_change_instance">Cambiar de instancia</string>
<string name="dialog_title_raw_content">Contenido raw</string>
<string name="explore_result_type_all">Todos</string>
<string name="explore_result_type_comments">Comentarios</string>
<string name="explore_result_type_communities">Comunidades</string>
<string name="explore_result_type_posts">Publicaciones</string>
<string name="explore_result_type_users">Usuarios</string>
<string name="explore_search_placeholder">Búsqueda</string>
<string name="home_instance_via">a través de %1$s</string>
<string name="home_listing_title">Tipo de listado</string>
<string name="home_listing_type_all">Todos</string>
<string name="home_listing_type_local">Locales</string>
<string name="home_listing_type_subscribed">Subscripciones</string>
<string name="home_sort_title">Tipo de orden</string>
<string name="home_sort_type_active">Activos</string>
<string name="home_sort_type_controversial">Controvertidos</string>
<string name="home_sort_type_hot">Populares</string>
<string name="home_sort_type_most_comments">Más comentados</string>
<string name="home_sort_type_new">Recientes</string>
<string name="home_sort_type_new_comments">Comentarios recientes</string>
<string name="home_sort_type_old">Antiguos</string>
<string name="home_sort_type_scaled">Proporcional</string>
<string name="home_sort_type_top">Lo mejor</string>
<string name="home_sort_type_top_12_hours">Lo mejor de las últimas 12h</string>
<string name="home_sort_type_top_12_hours_short">12h</string>
<string name="home_sort_type_top_6_hours">Lo mejor de las últimas 6h</string>
<string name="home_sort_type_top_6_hours_short">6h</string>
<string name="home_sort_type_top_day">Lo mejor del día</string>
<string name="home_sort_type_top_day_short">día</string>
<string name="home_sort_type_top_hour">Lo mejor de la última hora</string>
<string name="home_sort_type_top_hour_short">1h</string>
<string name="home_sort_type_top_month">Lo mejor del mes</string>
<string name="home_sort_type_top_month_short">mes</string>
<string name="home_sort_type_top_week">Lo mejor de la semana</string>
<string name="home_sort_type_top_week_short">semana</string>
<string name="home_sort_type_top_year">Lo mejor del año</string>
<string name="home_sort_type_top_year_short">año</string>
<string name="inbox_chat_message">Mensaje</string>
<string name="inbox_item_mention">te ha mencionado en</string>
<string name="inbox_item_reply_comment">ha contestado a tu comentario en</string>
<string name="inbox_item_reply_post">ha contestado a tu publicación en</string>
<string name="inbox_listing_type_all">Todos</string>
<string name="inbox_listing_type_title">Tipo de mensajes</string>
<string name="inbox_listing_type_unread">No leídos</string>
<string name="inbox_not_logged_message">Acceso no efectuado.\nAñadir una cuenta en la pantalla
Perfil para acceder a los mensajes.
</string>
<string name="inbox_section_mentions">Menciones</string>
<string name="inbox_section_messages">Mensajes</string>
<string name="inbox_section_replies">Respuestas</string>
<string name="instance_detail_communities">Comunidades</string>
<string name="instance_detail_title">Instancia: %1$s</string>
<string name="lang">es</string>
<string name="login_field_instance_name">Nombre instancia</string>
<string name="login_field_label_optional">(opcional)</string>
<string name="login_field_password">Contraseña</string>
<string name="login_field_token">TOTP 2FA token</string>
<string name="login_field_user_name">Nombre de usuario (o email)</string>
<string name="manage_accounts_button_add">Nueva cuenta</string>
<string name="manage_accounts_title">Gestionar cuentas</string>
<string name="manage_subscriptions_header_multicommunities">Multi-comunidades</string>
<string name="manage_subscriptions_header_subscriptions">Subscripciones</string>
<string name="message_empty_comments">Está demasiado tranquilo por aquí.\n¿Quisieras ser tú el
que va a escribir el primer comentario?
</string>
<string name="message_empty_list">Ningún elemento para mostrar</string>
<string name="message_generic_error">Error genérico</string>
<string name="message_image_loading_error">No ha sido posible descargar la imagen</string>
<string name="message_invalid_field">Campo no válido</string>
<string name="message_missing_field">Campo obligatorio</string>
<string name="message_operation_successful">Operación completada con éxito</string>
<string name="multi_community_editor_communities">Comunidades</string>
<string name="multi_community_editor_icon">Icono</string>
<string name="multi_community_editor_name">Nombre</string>
<string name="multi_community_editor_title">Editor multi-comunidad</string>
<string name="navigation_drawer_anonymous">Anónimo</string>
<string name="navigation_drawer_title_bookmarks">Guardados</string>
<string name="navigation_drawer_title_subscriptions">Subscripciones</string>
<string name="navigation_home">Publicaciones</string>
<string name="navigation_inbox">Mensajes</string>
<string name="navigation_profile">Perfil</string>
<string name="navigation_search">Descubre</string>
<string name="navigation_settings">Ajustes</string>
<string name="post_action_edit">Modificar</string>
<string name="post_action_hide">Esconder</string>
<string name="post_action_report">Crear informe…</string>
<string name="post_action_see_raw">Ver raw…</string>
<string name="post_action_share">Compartir…</string>
<string name="post_detail_cross_posts">también publicado en:</string>
<string name="post_detail_load_more_comments">Descarga más comentarios…</string>
<string name="post_hour_short">h</string>
<string name="post_minute_short">m</string>
<string name="post_second_short">s</string>
<string name="profile_button_login">Acceder</string>
<string name="profile_day_short">d</string>
<string name="profile_million_short">m</string>
<string name="profile_month_short">m</string>
<string name="profile_not_logged_message">Acceso no efectuado.\nAñadir una cuenta para
continuar.
</string>
<string name="profile_section_comments">Comentarios</string>
<string name="profile_section_posts">Publicaciones</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">a</string>
<string name="settings_app_version">Versión app</string>
<string name="settings_auto_expand_comments">Expandir comentarios automáticamente</string>
<string name="settings_auto_load_images">Cargar imágenes automáticamente</string>
<string name="settings_blur_nsfw">Desenfocar imágenes NSFW</string>
<string name="settings_color_aquamarine">🐬 Delfín distraído</string>
<string name="settings_color_banana">🦔 Erizo errante</string>
<string name="settings_color_blue">🐳 Ballena bailarina</string>
<string name="settings_color_custom">Personalizado</string>
<string name="settings_color_dialog_alpha">A</string>
<string name="settings_color_dialog_blue">B</string>
<string name="settings_color_dialog_green">G</string>
<string name="settings_color_dialog_red">R</string>
<string name="settings_color_dialog_title">Elegir un color</string>
<string name="settings_color_gray">🦝 Mapache maloliente</string>
<string name="settings_color_green">🐸 Rana relajada</string>
<string name="settings_color_orange">🦊 Zorro zancudo</string>
<string name="settings_color_pink">🦄 Unicornio único</string>
<string name="settings_color_purple">🐙 Pulpo portentoso</string>
<string name="settings_color_red">🦀 Cangrejo corredizo</string>
<string name="settings_color_white">🐼 Panda peludo</string>
<string name="settings_content_font_large">Grande</string>
<string name="settings_content_font_larger">Más grande</string>
<string name="settings_content_font_largest">Máximo</string>
<string name="settings_content_font_normal">Normal</string>
<string name="settings_content_font_scale">Tamaño de texto de contenidos</string>
<string name="settings_content_font_small">Pequeño</string>
<string name="settings_content_font_smaller">Más pequeño</string>
<string name="settings_content_font_smallest">Mínimo</string>
<string name="settings_custom_seed_color">Color tema personalizado</string>
<string name="settings_default_comment_sort_type">Orden comentarios predefinido</string>
<string name="settings_default_listing_type">Tipo de listado predefinido</string>
<string name="settings_default_post_sort_type">Orden publicaciones predefinido</string>
<string name="settings_downvote_color">Color votos negativos</string>
<string name="settings_dynamic_colors">Utilizar colores dinámicos</string>
<string name="settings_enable_crash_report">Activar notificación de accidentes</string>
<string name="settings_enable_swipe_actions">Activar acciones de deslizamiento</string>
<string name="settings_full_height_images">Altura completa imágenes</string>
<string name="settings_include_nsfw">Incluir contenidos NSFW</string>
<string name="settings_language">Idioma</string>
<string name="settings_navigation_bar_titles_visible">Mostrar títulos en la barra de
navegación
</string>
<string name="settings_open_url_external">Abrir URL en navegador externo</string>
<string name="settings_post_layout">Disposición publicaciones</string>
<string name="settings_post_layout_card">Tarjetas</string>
<string name="settings_post_layout_compact">Compacto</string>
<string name="settings_post_layout_full">Completo</string>
<string name="settings_section_appearance">Aspecto</string>
<string name="settings_section_behaviour">Comportamiento</string>
<string name="settings_section_debug">Debug</string>
<string name="settings_section_feed">Publicaciones y comentarios</string>
<string name="settings_section_nsfw">NSFW</string>
<string name="settings_separate_up_and_downvotes">Distinguir votos positivos / negativos
</string>
<string name="settings_theme_black">Oscuro (AMOLED)</string>
<string name="settings_theme_dark">Oscuro</string>
<string name="settings_theme_light">Claro</string>
<string name="settings_ui_font_family">Fuente interfaz</string>
<string name="settings_ui_font_scale">Tamaño de texto interfaz</string>
<string name="settings_ui_theme">Tema interfaz</string>
<string name="settings_upvote_color">Color votos positivos</string>
<string name="action_back_to_top">Volver arriba</string>
<string name="action_chat">Enviar mensaje</string>
<string name="action_clear_read">Esconder leídos</string>
<string name="action_create_post">Nueva publicación</string>
<string name="action_reply">Responder</string>
<string name="button_close">Cerrar</string>
<string name="button_confirm">Confirmar</string>
<string name="button_load">Cargar</string>
<string name="button_reset">Reiniciar</string>
<string name="comment_action_delete">Eliminar</string>
<string name="community_detail_block">Bloquear</string>
<string name="community_detail_block_instance">Bloquear instancia</string>
<string name="community_detail_info">Info comunidad</string>
<string name="community_detail_instance_info">Detalles instancia</string>
<string name="community_info_comments">comentarios</string>
<string name="community_info_daily_active_users">usuarios activos (día)</string>
<string name="community_info_monthly_active_users">usuarios activos (mes)</string>
<string name="community_info_posts">publicaciones</string>
<string name="community_info_subscribers">suscriptores</string>
<string name="community_info_weekly_active_users">usuarios activos (semana)</string>
<string name="create_comment_body">Texto comentario</string>
<string name="create_comment_title">Nuevo comentario</string>
<string name="create_post_body">Texto publicación</string>
<string name="create_post_name">Título publicación</string>
<string name="create_post_nsfw">NSFW</string>
<string name="create_post_tab_editor">Editor</string>
<string name="create_post_tab_preview">Previsualización</string>
<string name="create_post_title">Nueva publicación</string>
<string name="create_post_url">URL</string>
<string name="create_report_placeholder">Texto del informe (opcional)</string>
<string name="create_report_title_comment">Crear informe sobre comentario</string>
<string name="create_report_title_post">Crear informe sobre publicación</string>
<string name="dialog_raw_content_text">Texto</string>
<string name="dialog_raw_content_title">Título</string>
<string name="dialog_raw_content_url">URL</string>
<string name="dialog_title_change_instance">Cambiar de instancia</string>
<string name="dialog_title_raw_content">Contenido raw</string>
<string name="explore_result_type_all">Todos</string>
<string name="explore_result_type_comments">Comentarios</string>
<string name="explore_result_type_communities">Comunidades</string>
<string name="explore_result_type_posts">Publicaciones</string>
<string name="explore_result_type_users">Usuarios</string>
<string name="explore_search_placeholder">Búsqueda</string>
<string name="home_instance_via">a través de %1$s</string>
<string name="home_listing_title">Tipo de listado</string>
<string name="home_listing_type_all">Todos</string>
<string name="home_listing_type_local">Locales</string>
<string name="home_listing_type_subscribed">Subscripciones</string>
<string name="home_sort_title">Tipo de orden</string>
<string name="home_sort_type_active">Activos</string>
<string name="home_sort_type_controversial">Controvertidos</string>
<string name="home_sort_type_hot">Populares</string>
<string name="home_sort_type_most_comments">Más comentados</string>
<string name="home_sort_type_new">Recientes</string>
<string name="home_sort_type_new_comments">Comentarios recientes</string>
<string name="home_sort_type_old">Antiguos</string>
<string name="home_sort_type_scaled">Proporcional</string>
<string name="home_sort_type_top">Lo mejor</string>
<string name="home_sort_type_top_12_hours">Lo mejor de las últimas 12h</string>
<string name="home_sort_type_top_12_hours_short">12h</string>
<string name="home_sort_type_top_6_hours">Lo mejor de las últimas 6h</string>
<string name="home_sort_type_top_6_hours_short">6h</string>
<string name="home_sort_type_top_day">Lo mejor del día</string>
<string name="home_sort_type_top_day_short">día</string>
<string name="home_sort_type_top_hour">Lo mejor de la última hora</string>
<string name="home_sort_type_top_hour_short">1h</string>
<string name="home_sort_type_top_month">Lo mejor del mes</string>
<string name="home_sort_type_top_month_short">mes</string>
<string name="home_sort_type_top_week">Lo mejor de la semana</string>
<string name="home_sort_type_top_week_short">semana</string>
<string name="home_sort_type_top_year">Lo mejor del año</string>
<string name="home_sort_type_top_year_short">año</string>
<string name="inbox_chat_message">Mensaje</string>
<string name="inbox_item_mention">te ha mencionado en</string>
<string name="inbox_item_reply_comment">ha contestado a tu comentario en</string>
<string name="inbox_item_reply_post">ha contestado a tu publicación en</string>
<string name="inbox_listing_type_all">Todos</string>
<string name="inbox_listing_type_title">Tipo de mensajes</string>
<string name="inbox_listing_type_unread">No leídos</string>
<string name="inbox_not_logged_message">Acceso no efectuado.\nAñadir una cuenta en la pantalla
Perfil para acceder a los mensajes.
</string>
<string name="inbox_section_mentions">Menciones</string>
<string name="inbox_section_messages">Mensajes</string>
<string name="inbox_section_replies">Respuestas</string>
<string name="instance_detail_communities">Comunidades</string>
<string name="instance_detail_title">Instancia: %1$s</string>
<string name="lang">es</string>
<string name="login_field_instance_name">Nombre instancia</string>
<string name="login_field_label_optional">(opcional)</string>
<string name="login_field_password">Contraseña</string>
<string name="login_field_token">TOTP 2FA token</string>
<string name="login_field_user_name">Nombre de usuario (o email)</string>
<string name="manage_accounts_button_add">Nueva cuenta</string>
<string name="manage_accounts_title">Gestionar cuentas</string>
<string name="manage_subscriptions_header_multicommunities">Multi-comunidades</string>
<string name="manage_subscriptions_header_subscriptions">Subscripciones</string>
<string name="message_empty_comments">Está demasiado tranquilo por aquí.\n¿Quisieras ser tú el
que va a escribir el primer comentario?
</string>
<string name="message_empty_list">Ningún elemento para mostrar</string>
<string name="message_generic_error">Error genérico</string>
<string name="message_image_loading_error">No ha sido posible descargar la imagen</string>
<string name="message_invalid_field">Campo no válido</string>
<string name="message_missing_field">Campo obligatorio</string>
<string name="message_operation_successful">Operación completada con éxito</string>
<string name="multi_community_editor_communities">Comunidades</string>
<string name="multi_community_editor_icon">Icono</string>
<string name="multi_community_editor_name">Nombre</string>
<string name="multi_community_editor_title">Editor multi-comunidad</string>
<string name="navigation_drawer_anonymous">Anónimo</string>
<string name="navigation_drawer_title_bookmarks">Guardados</string>
<string name="navigation_drawer_title_subscriptions">Subscripciones</string>
<string name="navigation_home">Publicaciones</string>
<string name="navigation_inbox">Mensajes</string>
<string name="navigation_profile">Perfil</string>
<string name="navigation_search">Descubre</string>
<string name="navigation_settings">Ajustes</string>
<string name="post_action_edit">Modificar</string>
<string name="post_action_hide">Esconder</string>
<string name="post_action_report">Crear informe…</string>
<string name="post_action_see_raw">Ver raw…</string>
<string name="post_action_share">Compartir…</string>
<string name="post_detail_cross_posts">también publicado en:</string>
<string name="post_detail_load_more_comments">Descarga más comentarios…</string>
<string name="post_hour_short">h</string>
<string name="post_minute_short">m</string>
<string name="post_second_short">s</string>
<string name="profile_button_login">Acceder</string>
<string name="profile_day_short">d</string>
<string name="profile_million_short">m</string>
<string name="profile_month_short">m</string>
<string name="profile_not_logged_message">Acceso no efectuado.\nAñadir una cuenta para
continuar.
</string>
<string name="profile_section_comments">Comentarios</string>
<string name="profile_section_posts">Publicaciones</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">a</string>
<string name="settings_about">Sobre esta app…</string>
<string name="settings_about_app_version">Versión app</string>
<string name="settings_about_changelog">Ver registro de cambios</string>
<string name="settings_about_report_github">Reportar un error (GitHub)</string>
<string name="settings_about_report_email">Reportar un error (email)</string>
<string name="settings_about_view_github">Ver en GitHub</string>
<string name="settings_about_view_lemmy">Comunidad Lemmy</string>
<string name="settings_auto_expand_comments">Expandir comentarios automáticamente</string>
<string name="settings_auto_load_images">Cargar imágenes automáticamente</string>
<string name="settings_blur_nsfw">Desenfocar imágenes NSFW</string>
<string name="settings_color_aquamarine">🐬 Delfín distraído</string>
<string name="settings_color_banana">🦔 Erizo errante</string>
<string name="settings_color_blue">🐳 Ballena bailarina</string>
<string name="settings_color_custom">Personalizado</string>
<string name="settings_color_dialog_alpha">A</string>
<string name="settings_color_dialog_blue">B</string>
<string name="settings_color_dialog_green">G</string>
<string name="settings_color_dialog_red">R</string>
<string name="settings_color_dialog_title">Elegir un color</string>
<string name="settings_color_gray">🦝 Mapache maloliente</string>
<string name="settings_color_green">🐸 Rana relajada</string>
<string name="settings_color_orange">🦊 Zorro zancudo</string>
<string name="settings_color_pink">🦄 Unicornio único</string>
<string name="settings_color_purple">🐙 Pulpo portentoso</string>
<string name="settings_color_red">🦀 Cangrejo corredizo</string>
<string name="settings_color_white">🐼 Panda peludo</string>
<string name="settings_content_font_large">Grande</string>
<string name="settings_content_font_larger">Más grande</string>
<string name="settings_content_font_largest">Máximo</string>
<string name="settings_content_font_normal">Normal</string>
<string name="settings_content_font_scale">Tamaño de texto de contenidos</string>
<string name="settings_content_font_small">Pequeño</string>
<string name="settings_content_font_smaller">Más pequeño</string>
<string name="settings_content_font_smallest">Mínimo</string>
<string name="settings_custom_seed_color">Color tema personalizado</string>
<string name="settings_default_comment_sort_type">Orden comentarios predefinido</string>
<string name="settings_default_listing_type">Tipo de listado predefinido</string>
<string name="settings_default_post_sort_type">Orden publicaciones predefinido</string>
<string name="settings_downvote_color">Color votos negativos</string>
<string name="settings_dynamic_colors">Utilizar colores dinámicos</string>
<string name="settings_enable_crash_report">Activar notificación de accidentes</string>
<string name="settings_enable_swipe_actions">Activar acciones de deslizamiento</string>
<string name="settings_full_height_images">Altura completa imágenes</string>
<string name="settings_include_nsfw">Incluir contenidos NSFW</string>
<string name="settings_language">Idioma</string>
<string name="settings_navigation_bar_titles_visible">Mostrar títulos en la barra de
navegación
</string>
<string name="settings_open_url_external">Abrir URL en navegador externo</string>
<string name="settings_post_layout">Disposición publicaciones</string>
<string name="settings_post_layout_card">Tarjetas</string>
<string name="settings_post_layout_compact">Compacto</string>
<string name="settings_post_layout_full">Completo</string>
<string name="settings_section_appearance">Aspecto</string>
<string name="settings_section_behaviour">Comportamiento</string>
<string name="settings_section_debug">Debug</string>
<string name="settings_section_feed">Publicaciones y comentarios</string>
<string name="settings_section_nsfw">NSFW</string>
<string name="settings_separate_up_and_downvotes">Distinguir votos positivos / negativos
</string>
<string name="settings_theme_black">Oscuro (AMOLED)</string>
<string name="settings_theme_dark">Oscuro</string>
<string name="settings_theme_light">Claro</string>
<string name="settings_ui_font_family">Fuente interfaz</string>
<string name="settings_ui_font_scale">Tamaño de texto interfaz</string>
<string name="settings_ui_theme">Tema interfaz</string>
<string name="settings_upvote_color">Color votos positivos</string>
</resources>

View File

@ -139,7 +139,13 @@
<string name="profile_section_posts">Publications</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">a</string>
<string name="settings_app_version">Version de l\'application</string>
<string name="settings_about">À propos de cette application…</string>
<string name="settings_about_app_version">Version de l\'application</string>
<string name="settings_about_changelog">Voir le journal des modifications</string>
<string name="settings_about_report_github">Signaler un bug (GitHub)</string>
<string name="settings_about_report_email">Signaler un bug (e-mail)</string>
<string name="settings_about_view_github">Voir sur GitHub</string>
<string name="settings_about_view_lemmy">Communauté Lemmy</string>
<string name="settings_auto_expand_comments">Élargir les commentaires automatiquement</string>
<string name="settings_auto_load_images">Charger les images automatiquement</string>
<string name="settings_blur_nsfw">Flouer les images NSFW</string>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

View File

@ -139,7 +139,13 @@
<string name="profile_section_posts">Post</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">a</string>
<string name="settings_app_version">Versione app</string>
<string name="settings_about">Informazioni app…</string>
<string name="settings_about_app_version">Versione app</string>
<string name="settings_about_changelog">Visualizza changelog</string>
<string name="settings_about_report_github">Segnala un bug (GitHub)</string>
<string name="settings_about_report_email">Segnala un bug (email)</string>
<string name="settings_about_view_github">Vedi su GitHub</string>
<string name="settings_about_view_lemmy">Lemmy community</string>
<string name="settings_auto_expand_comments">Espandi commenti automaticamente</string>
<string name="settings_auto_load_images">Carica immagini automaticamente</string>
<string name="settings_blur_nsfw">Sfuma immagini NSFW</string>

View File

@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="action_back_to_top">Voltar ao início</string>
<string name="action_chat">Enviar mensagem</string>
<string name="action_clear_read">Limpar lidas</string>
<string name="action_create_post">Criar publicação</string>
<string name="action_reply">Responder</string>
<string name="button_close">Fechar</string>
<string name="button_confirm">Confirmar</string>
<string name="button_load">Carregar</string>
<string name="button_reset">Reiniciar</string>
<string name="comment_action_delete">Eliminar</string>
<string name="community_detail_block">Bloquear</string>
<string name="community_detail_block_instance">Bloquear instância</string>
<string name="community_detail_info">Informações da comunidade</string>
<string name="community_detail_instance_info">Detalhes da instância</string>
<string name="community_info_comments">Comentários</string>
<string name="community_info_daily_active_users">usuários activos (día)</string>
<string name="community_info_monthly_active_users">usuários activos (mês)</string>
<string name="community_info_posts">publicações</string>
<string name="community_info_subscribers">subscriptores</string>
<string name="community_info_weekly_active_users">usuários activos (semana)</string>
<string name="create_comment_body">Texto do comentário</string>
<string name="create_comment_title">Novo comentário</string>
<string name="create_post_body">Texto da publicação</string>
<string name="create_post_name">Título da publicação</string>
<string name="create_post_nsfw">NSFW</string>
<string name="create_post_tab_editor">Editor</string>
<string name="create_post_tab_preview">Visualização</string>
<string name="create_post_title">Nova publicação</string>
<string name="create_post_url">URL</string>
<string name="create_report_placeholder">Texto da denúncia</string>
<string name="create_report_title_comment">Denunciar comentário</string>
<string name="create_report_title_post">Denunciar publicação</string>
<string name="dialog_raw_content_text">Texto</string>
<string name="dialog_raw_content_title">Título</string>
<string name="dialog_raw_content_url">URL</string>
<string name="dialog_title_change_instance">Mudar instância</string>
<string name="dialog_title_raw_content">Conteúdo bruto</string>
<string name="explore_result_type_all">Todos</string>
<string name="explore_result_type_comments">Comentários</string>
<string name="explore_result_type_communities">Comunidades</string>
<string name="explore_result_type_posts">Publicações</string>
<string name="explore_result_type_users">Usuários</string>
<string name="explore_search_placeholder">Buscar</string>
<string name="home_instance_via">via %1$s</string>
<string name="home_listing_title">Listagens</string>
<string name="home_listing_type_all">Todas</string>
<string name="home_listing_type_local">Locais</string>
<string name="home_listing_type_subscribed">Subscritas</string>
<string name="home_sort_title">Ordenar por</string>
<string name="home_sort_type_active">Ativas</string>
<string name="home_sort_type_controversial">Controversas</string>
<string name="home_sort_type_hot">Populares</string>
<string name="home_sort_type_most_comments">Mais comentários</string>
<string name="home_sort_type_new">Novas</string>
<string name="home_sort_type_new_comments">Novos comentários</string>
<string name="home_sort_type_old">Antigos</string>
<string name="home_sort_type_scaled">Proporcional</string>
<string name="home_sort_type_top">Topo</string>
<string name="home_sort_type_top_12_hours">Topo 12 horas</string>
<string name="home_sort_type_top_12_hours_short">12h</string>
<string name="home_sort_type_top_6_hours">Topo 6 horas</string>
<string name="home_sort_type_top_6_hours_short">6h</string>
<string name="home_sort_type_top_day">Topo do día</string>
<string name="home_sort_type_top_day_short">día</string>
<string name="home_sort_type_top_hour">Topo da hora</string>
<string name="home_sort_type_top_hour_short">1h</string>
<string name="home_sort_type_top_month">Topo do mês</string>
<string name="home_sort_type_top_month_short">mês</string>
<string name="home_sort_type_top_week">Topo da semana</string>
<string name="home_sort_type_top_week_short">semana</string>
<string name="home_sort_type_top_year">Topo do ano</string>
<string name="home_sort_type_top_year_short">ano</string>
<string name="inbox_chat_message">Mensagem</string>
<string name="inbox_item_mention">te mencionou em</string>
<string name="inbox_item_reply_comment">te respondeu em</string>
<string name="inbox_item_reply_post">respondeu à tua publicação em</string>
<string name="inbox_listing_type_all">Todas</string>
<string name="inbox_listing_type_title">Tipo de caixa</string>
<string name="inbox_listing_type_unread">Não lidas</string>
<string name="inbox_not_logged_message">Atualmente, não tem sessão iniciada.\nAdicione uma conta
a partir do ecrã de perfil para ver a sua caixa de entrada.
</string>
<string name="inbox_section_mentions">Menções</string>
<string name="inbox_section_messages">Mensagens</string>
<string name="inbox_section_replies">Respostas</string>
<string name="instance_detail_communities">Comunidades</string>
<string name="instance_detail_title">Instância: %1$s</string>
<string name="lang">pt</string>
<string name="login_field_instance_name">Nome da instância</string>
<string name="login_field_label_optional">(optional)</string>
<string name="login_field_password">Palavra-passe</string>
<string name="login_field_token">TOTP 2FA token</string>
<string name="login_field_user_name">Nome de usuário (ou email)</string>
<string name="manage_accounts_button_add">Adicionar uma conta</string>
<string name="manage_accounts_title">Gestionar as contas</string>
<string name="manage_subscriptions_header_multicommunities">Multi-comunidades</string>
<string name="manage_subscriptions_header_subscriptions">Subscripções</string>
<string name="message_empty_comments">É demasiado silencioso lá.\nGostarias de ser aquele que
escreve o primeiro comentário?
</string>
<string name="message_empty_list">Nenhum item a apresentar</string>
<string name="message_generic_error">Erro genérico</string>
<string name="message_image_loading_error">Erro ao carregar imagem</string>
<string name="message_invalid_field">Campo inválido</string>
<string name="message_missing_field">Campo ausente</string>
<string name="message_operation_successful">Operação concluída com êxito</string>
<string name="multi_community_editor_communities">Comunidades</string>
<string name="multi_community_editor_icon">Ícone</string>
<string name="multi_community_editor_name">Nome</string>
<string name="multi_community_editor_title">Editor multi-comunidad</string>
<string name="navigation_drawer_anonymous">Anônimo</string>
<string name="navigation_drawer_title_bookmarks">Guardados</string>
<string name="navigation_drawer_title_subscriptions">Subscripções</string>
<string name="navigation_home">Publicações</string>
<string name="navigation_inbox">Caixa</string>
<string name="navigation_profile">Perfil</string>
<string name="navigation_search">Explorar</string>
<string name="navigation_settings">Configurações</string>
<string name="post_action_edit">Modificar</string>
<string name="post_action_hide">Esconder</string>
<string name="post_action_report">Denunciar…</string>
<string name="post_action_see_raw">Ver conteúdo bruto</string>
<string name="post_action_share">Compartilhar…</string>
<string name="post_detail_cross_posts">publicado também em</string>
<string name="post_detail_load_more_comments">Carregar mais comentários</string>
<string name="post_hour_short">h</string>
<string name="post_minute_short">m</string>
<string name="post_second_short">s</string>
<string name="profile_button_login">Entrar</string>
<string name="profile_day_short">d</string>
<string name="profile_million_short">m</string>
<string name="profile_month_short">m</string>
<string name="profile_not_logged_message">Atualmente, não tem sessão iniciada.\nAdicione uma
conta para continuar.
</string>
<string name="profile_section_comments">Comentários</string>
<string name="profile_section_posts">Publicações</string>
<string name="profile_thousand_short">k</string>
<string name="profile_year_short">y</string>
<string name="settings_about">Sobre esta app…</string>
<string name="settings_about_app_version">Versão da app</string>
<string name="settings_about_changelog">Ver o registro de alterações</string>
<string name="settings_about_report_github">Relatar um bug (GitHub)</string>
<string name="settings_about_report_email">Relatar um bugr (email)</string>
<string name="settings_about_view_github">Ver no GitHub</string>
<string name="settings_about_view_lemmy">Comunidade Lemmy</string>
<string name="settings_auto_expand_comments">Expandir comentários automaticamente</string>
<string name="settings_auto_load_images">Carregar imagens automaticamente</string>
<string name="settings_blur_nsfw">Desfocar imagens NSFW</string>
<string name="settings_color_aquamarine">🐬 Golfinho gostoso</string>
<string name="settings_color_banana">🦔 Ouriço ossudo</string>
<string name="settings_color_blue">🐳 Baleia bailarina</string>
<string name="settings_color_custom">Personalizado</string>
<string name="settings_color_dialog_alpha">A</string>
<string name="settings_color_dialog_blue">B</string>
<string name="settings_color_dialog_green">G</string>
<string name="settings_color_dialog_red">R</string>
<string name="settings_color_dialog_title">Escolher uma cor</string>
<string name="settings_color_gray">🦝 Guaxinim guerreiro</string>
<string name="settings_color_green">🐸 Sapo silencioso</string>
<string name="settings_color_orange">🦊 Raposa rica</string>
<string name="settings_color_pink">🦄 Unicórnio único</string>
<string name="settings_color_purple">🐙 Polvo portentoso</string>
<string name="settings_color_red">🦀 Caranguejo crocante</string>
<string name="settings_color_white">🐼 Urso universitário</string>
<string name="settings_content_font_large">Grande</string>
<string name="settings_content_font_larger">Extra grande</string>
<string name="settings_content_font_largest">Duplo extra large</string>
<string name="settings_content_font_normal">Normal</string>
<string name="settings_content_font_scale">Tamanho do texto do conteúdo</string>
<string name="settings_content_font_small">Pequeno</string>
<string name="settings_content_font_smaller">Extra pequeno</string>
<string name="settings_content_font_smallest">Doblo extra pequeno</string>
<string name="settings_custom_seed_color">Cor do tema personalizado</string>
<string name="settings_default_comment_sort_type">Tipo de ordem comentários padrão</string>
<string name="settings_default_listing_type">Tipo de listagem padrão</string>
<string name="settings_default_post_sort_type">Tipo de ordem publicações padrão</string>
<string name="settings_downvote_color">Cor votos negativos</string>
<string name="settings_dynamic_colors">Usar cores dinâmicas</string>
<string name="settings_enable_crash_report">Ativar relatórios de falhas</string>
<string name="settings_enable_swipe_actions">Ativar ações de deslizar</string>
<string name="settings_full_height_images">Imagens de altura natural</string>
<string name="settings_include_nsfw">Incluir conteúdo NSFW</string>
<string name="settings_language">Idioma</string>
<string name="settings_navigation_bar_titles_visible">Mostrar títulos da barra de navegação
</string>
<string name="settings_open_url_external">Abrir URLs em navegador externo</string>
<string name="settings_post_layout">Layout publicações</string>
<string name="settings_post_layout_card">Ficha</string>
<string name="settings_post_layout_compact">Compacto</string>
<string name="settings_post_layout_full">Completo</string>
<string name="settings_section_appearance">Aparencia</string>
<string name="settings_section_behaviour">Comportamento</string>
<string name="settings_section_debug">Debug</string>
<string name="settings_section_feed">Publicaçoes e comentários</string>
<string name="settings_section_nsfw">NSFW</string>
<string name="settings_separate_up_and_downvotes">Separar votos positivos e negativos</string>
<string name="settings_theme_black">Escuro (AMOLED)</string>
<string name="settings_theme_dark">Escuro</string>
<string name="settings_theme_light">Claro</string>
<string name="settings_ui_font_family">Fonte da interface</string>
<string name="settings_ui_font_scale">Tamanho do texto da interface</string>
<string name="settings_ui_theme">Tema da interface</string>
<string name="settings_upvote_color">Cor votos positivos</string>
</resources>