Merge branch 'master' into feature/allow_change_chapter_cache_size

This commit is contained in:
tristancorbellari 2024-01-09 09:37:01 +02:00
commit 32416efe50
109 changed files with 573 additions and 719 deletions

View File

@ -3,10 +3,10 @@
I acknowledge that:
- I have updated:
- To the latest version of the app (stable is v0.15.1)
- To the latest version of the app (stable is v0.15.2)
- All extensions
- I have gone through the FAQ (https://tachiyomi.org/docs/faq/general) and troubleshooting guide (https://tachiyomi.org/docs/guides/troubleshooting/)
- If this is an issue with an extension, that I should be opening an issue in https://github.com/tachiyomiorg/tachiyomi-extensions
- If this is an issue with an official extension, that I should be opening an issue in https://github.com/tachiyomiorg/extensions
- I have searched the existing issues and this is new ticket **NOT** a duplicate or related to another open or closed issue
- I will fill out the title and the information in this template

View File

@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: ⚠️ Extension/source issue
url: https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new/choose
about: Issues and requests for extensions and sources should be opened in the tachiyomi-extensions repository instead
url: https://github.com/tachiyomiorg/extensions/issues/new/choose
about: Issues and requests for official extensions and sources should be opened in the extensions repository instead
- name: 📦 Tachiyomi extensions
url: https://tachiyomi.org/extensions/
about: List of all available extensions with download links

View File

@ -53,7 +53,7 @@ body:
label: Tachiyomi version
description: You can find your Tachiyomi version in **More → About**.
placeholder: |
Example: "0.15.1"
Example: "0.15.2"
validations:
required: true
@ -94,11 +94,11 @@ body:
required: true
- label: I have written a short but informative title.
required: true
- label: If this is an issue with an extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new/choose).
- label: If this is an issue with an official extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/extensions/issues/new/choose).
required: true
- label: I have gone through the [FAQ](https://tachiyomi.org/docs/faq/general) and [troubleshooting guide](https://tachiyomi.org/docs/guides/troubleshooting/).
required: true
- label: I have updated the app to version **[0.15.1](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
- label: I have updated the app to version **[0.15.2](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
required: true
- label: I have updated all installed extensions.
required: true

View File

@ -31,9 +31,9 @@ body:
required: true
- label: I have written a short but informative title.
required: true
- label: If this is an issue with an extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new/choose).
- label: If this is an issue with an official extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/extensions/issues/new/choose).
required: true
- label: I have updated the app to version **[0.15.1](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
- label: I have updated the app to version **[0.15.2](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
required: true
- label: I will fill out all of the requested information in this form.
required: true

View File

@ -54,7 +54,7 @@ DON'T: https://github.com/tachiyomiorg/tachiyomi/issues/75
* Write a detailed issue, explaining what it should do or how. Avoid writing just "like X app does"
* Include screenshot (if needed)
Source requests should be created at https://github.com/tachiyomiorg/tachiyomi-extensions, they do not belong in this repository.
Source requests are not accepted.
</details>
<details><summary>Contributing</summary>

View File

@ -22,8 +22,8 @@ android {
defaultConfig {
applicationId = "eu.kanade.tachiyomi"
versionCode = 117
versionName = "0.15.1"
versionCode = 118
versionName = "0.15.2"
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")

View File

@ -4,24 +4,24 @@ import eu.kanade.domain.chapter.interactor.GetAvailableScanlators
import eu.kanade.domain.chapter.interactor.SetReadStatus
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
import eu.kanade.domain.download.interactor.DeleteDownload
import eu.kanade.domain.extension.interactor.CreateExtensionRepo
import eu.kanade.domain.extension.interactor.DeleteExtensionRepo
import eu.kanade.domain.extension.interactor.GetExtensionLanguages
import eu.kanade.domain.extension.interactor.GetExtensionRepos
import eu.kanade.domain.extension.interactor.GetExtensionSources
import eu.kanade.domain.extension.interactor.GetExtensionsByType
import eu.kanade.domain.extension.interactor.TrustExtension
import eu.kanade.domain.manga.interactor.GetExcludedScanlators
import eu.kanade.domain.manga.interactor.SetExcludedScanlators
import eu.kanade.domain.manga.interactor.SetMangaViewerFlags
import eu.kanade.domain.manga.interactor.UpdateManga
import eu.kanade.domain.source.interactor.CreateSourceRepo
import eu.kanade.domain.source.interactor.DeleteSourceRepo
import eu.kanade.domain.source.interactor.GetEnabledSources
import eu.kanade.domain.source.interactor.GetLanguagesWithSources
import eu.kanade.domain.source.interactor.GetSourceRepos
import eu.kanade.domain.source.interactor.GetSourcesWithFavoriteCount
import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.domain.source.interactor.ToggleLanguage
import eu.kanade.domain.source.interactor.ToggleSource
import eu.kanade.domain.source.interactor.ToggleSourcePin
import eu.kanade.domain.source.interactor.TrustExtension
import eu.kanade.domain.track.interactor.AddTracks
import eu.kanade.domain.track.interactor.RefreshTracks
import eu.kanade.domain.track.interactor.SyncChapterProgressWithTrack
@ -173,8 +173,8 @@ class DomainModule : InjektModule {
addFactory { ToggleSourcePin(get()) }
addFactory { TrustExtension(get()) }
addFactory { CreateSourceRepo(get()) }
addFactory { DeleteSourceRepo(get()) }
addFactory { GetSourceRepos(get()) }
addFactory { CreateExtensionRepo(get()) }
addFactory { DeleteExtensionRepo(get()) }
addFactory { GetExtensionRepos(get()) }
}
}

View File

@ -1,17 +1,17 @@
package eu.kanade.domain.source.interactor
package eu.kanade.domain.extension.interactor
import eu.kanade.domain.source.service.SourcePreferences
import tachiyomi.core.preference.plusAssign
class CreateSourceRepo(private val preferences: SourcePreferences) {
class CreateExtensionRepo(private val preferences: SourcePreferences) {
fun await(name: String): Result {
// Do not allow invalid formats
if (!name.matches(repoRegex) || name.startsWith(OFFICIAL_REPO_BASE_URL)) {
if (!name.matches(repoRegex)) {
return Result.InvalidUrl
}
preferences.extensionRepos() += name.substringBeforeLast("/index.min.json")
preferences.extensionRepos() += name.removeSuffix("/index.min.json")
return Result.Success
}
@ -22,5 +22,4 @@ class CreateSourceRepo(private val preferences: SourcePreferences) {
}
}
const val OFFICIAL_REPO_BASE_URL = "https://raw.githubusercontent.com/tachiyomiorg/tachiyomi-extensions/repo"
private val repoRegex = """^https://.*/index\.min\.json$""".toRegex()

View File

@ -1,9 +1,9 @@
package eu.kanade.domain.source.interactor
package eu.kanade.domain.extension.interactor
import eu.kanade.domain.source.service.SourcePreferences
import tachiyomi.core.preference.minusAssign
class DeleteSourceRepo(private val preferences: SourcePreferences) {
class DeleteExtensionRepo(private val preferences: SourcePreferences) {
fun await(repo: String) {
preferences.extensionRepos() -= repo

View File

@ -0,0 +1,11 @@
package eu.kanade.domain.extension.interactor
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
class GetExtensionRepos(private val preferences: SourcePreferences) {
fun subscribe(): Flow<Set<String>> {
return preferences.extensionRepos().changes()
}
}

View File

@ -1,4 +1,4 @@
package eu.kanade.domain.source.interactor
package eu.kanade.domain.extension.interactor
import android.content.pm.PackageInfo
import androidx.core.content.pm.PackageInfoCompat
@ -17,11 +17,15 @@ class TrustExtension(
fun trust(pkgName: String, versionCode: Long, signatureHash: String) {
preferences.trustedExtensions().getAndSet { exts ->
// Remove previously trusted versions
val removed = exts.filter { it.startsWith("$pkgName:") }.toMutableSet()
val removed = exts.filterNot { it.startsWith("$pkgName:") }.toMutableSet()
removed.also {
it += "$pkgName:$versionCode:$signatureHash"
}
}
}
fun revokeAll() {
preferences.trustedExtensions().delete()
}
}

View File

@ -81,9 +81,9 @@ class UpdateManga(
dateTime: ZonedDateTime = ZonedDateTime.now(),
window: Pair<Long, Long> = fetchInterval.getWindow(dateTime),
): Boolean {
return fetchInterval.toMangaUpdateOrNull(manga, dateTime, window)
?.let { mangaRepository.update(it) }
?: false
return mangaRepository.update(
fetchInterval.toMangaUpdate(manga, dateTime, window),
)
}
suspend fun awaitUpdateLastUpdate(mangaId: Long): Boolean {

View File

@ -1,13 +0,0 @@
package eu.kanade.domain.source.interactor
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
class GetSourceRepos(private val preferences: SourcePreferences) {
fun subscribe(): Flow<List<String>> {
return preferences.extensionRepos().changes()
.map { it.sortedWith(String.CASE_INSENSITIVE_ORDER) }
}
}

View File

@ -40,7 +40,9 @@ fun DbTrack.toDomainTrack(idRequired: Boolean = true): Track? {
lastChapterRead = last_chapter_read.toDouble(),
totalChapters = total_chapters.toLong(),
status = status.toLong(),
score = score.toDouble(),
// Jank workaround due to precision issues while converting
// See https://github.com/tachiyomiorg/tachiyomi/issues/10343
score = score.toString().toDouble(),
remoteUrl = tracking_url,
startDate = started_reading_date,
finishDate = finished_reading_date,

View File

@ -1,6 +1,8 @@
package eu.kanade.domain.ui.model
import dev.icerock.moko.resources.StringResource
import eu.kanade.tachiyomi.util.system.isDevFlavor
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import tachiyomi.i18n.MR
enum class AppTheme(val titleRes: StringResource?) {
@ -9,7 +11,9 @@ enum class AppTheme(val titleRes: StringResource?) {
GREEN_APPLE(MR.strings.theme_greenapple),
LAVENDER(MR.strings.theme_lavender),
MIDNIGHT_DUSK(MR.strings.theme_midnightdusk),
NORD(MR.strings.theme_nord),
// TODO: re-enable for preview
NORD(MR.strings.theme_nord.takeIf { isDevFlavor || isPreviewBuildType }),
STRAWBERRY_DAIQUIRI(MR.strings.theme_strawberrydaiquiri),
TAKO(MR.strings.theme_tako),
TEALTURQUOISE(MR.strings.theme_tealturquoise),

View File

@ -16,7 +16,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.History
import androidx.compose.material.icons.automirrored.outlined.Launch
import androidx.compose.material.icons.outlined.Settings
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
@ -53,6 +53,7 @@ import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreenModel
import eu.kanade.tachiyomi.util.system.LocaleHelper
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
@ -66,13 +67,23 @@ fun ExtensionDetailsScreen(
navigateUp: () -> Unit,
state: ExtensionDetailsScreenModel.State,
onClickSourcePreferences: (sourceId: Long) -> Unit,
onClickWhatsNew: () -> Unit,
onClickEnableAll: () -> Unit,
onClickDisableAll: () -> Unit,
onClickClearCookies: () -> Unit,
onClickUninstall: () -> Unit,
onClickSource: (sourceId: Long) -> Unit,
) {
val uriHandler = LocalUriHandler.current
val url = remember(state.extension) {
val regex = """https://raw.githubusercontent.com/(.+?)/(.+?)/.+""".toRegex()
regex.find(state.extension?.repoUrl.orEmpty())
?.let {
val (user, repo) = it.destructured
"https://github.com/$user/$repo"
}
?: state.extension?.repoUrl
}
Scaffold(
topBar = { scrollBehavior ->
AppBar(
@ -82,12 +93,14 @@ fun ExtensionDetailsScreen(
AppBarActions(
actions = persistentListOf<AppBar.AppBarAction>().builder()
.apply {
if (state.extension?.isUnofficial == false) {
if (url != null) {
add(
AppBar.Action(
title = stringResource(MR.strings.whats_new),
icon = Icons.Outlined.History,
onClick = onClickWhatsNew,
title = stringResource(MR.strings.action_open_repo),
icon = Icons.AutoMirrored.Outlined.Launch,
onClick = {
uriHandler.openUri(url)
},
),
)
}
@ -138,7 +151,7 @@ fun ExtensionDetailsScreen(
private fun ExtensionDetails(
contentPadding: PaddingValues,
extension: Extension.Installed,
sources: List<ExtensionSourceItem>,
sources: ImmutableList<ExtensionSourceItem>,
onClickSourcePreferences: (sourceId: Long) -> Unit,
onClickUninstall: () -> Unit,
onClickSource: (sourceId: Long) -> Unit,
@ -149,30 +162,10 @@ private fun ExtensionDetails(
ScrollbarLazyColumn(
contentPadding = contentPadding,
) {
when {
extension.isRepoSource ->
item {
val uriHandler = LocalUriHandler.current
WarningBanner(
MR.strings.repo_extension_message,
modifier = Modifier.clickable {
extension.repoUrl ?: return@clickable
uriHandler.openUri(
extension.repoUrl
.replace("https://raw.githubusercontent.com", "https://github.com")
.removeSuffix("/repo/"),
)
},
)
}
extension.isUnofficial ->
item {
WarningBanner(MR.strings.unofficial_extension_message)
}
extension.isObsolete ->
item {
WarningBanner(MR.strings.obsolete_extension_message)
}
if (extension.isObsolete) {
item {
WarningBanner(MR.strings.obsolete_extension_message)
}
}
item {

View File

@ -342,7 +342,6 @@ private fun ExtensionItemContent(
val warning = when {
extension is Extension.Untrusted -> MR.strings.ext_untrusted
extension is Extension.Installed && extension.isUnofficial -> MR.strings.ext_unofficial
extension is Extension.Installed && extension.isObsolete -> MR.strings.ext_obsolete
extension.isNsfw -> MR.strings.ext_nsfw_short
else -> null

View File

@ -26,6 +26,7 @@ import eu.kanade.presentation.browse.components.BaseSourceItem
import eu.kanade.presentation.browse.components.SourceIcon
import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrateSourceScreenModel
import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.collections.immutable.ImmutableList
import tachiyomi.domain.source.model.Source
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.Badge
@ -75,7 +76,7 @@ fun MigrateSourceScreen(
@Composable
private fun MigrateSourceList(
list: List<Pair<Source, Long>>,
list: ImmutableList<Pair<Source, Long>>,
contentPadding: PaddingValues,
onClickItem: (Source) -> Unit,
onLongClickItem: (Source) -> Unit,

View File

@ -16,6 +16,8 @@ import androidx.compose.ui.platform.LocalConfiguration
import eu.kanade.presentation.components.TabbedDialog
import eu.kanade.presentation.components.TabbedDialogPaddings
import eu.kanade.tachiyomi.ui.library.LibrarySettingsScreenModel
import eu.kanade.tachiyomi.util.system.isDevFlavor
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import kotlinx.collections.immutable.persistentListOf
import tachiyomi.core.preference.TriState
import tachiyomi.domain.category.model.Category
@ -74,6 +76,8 @@ private fun ColumnScope.FilterPage(
) {
val filterDownloaded by screenModel.libraryPreferences.filterDownloaded().collectAsState()
val downloadedOnly by screenModel.preferences.downloadedOnly().collectAsState()
val autoUpdateMangaRestrictions by screenModel.libraryPreferences.autoUpdateMangaRestrictions().collectAsState()
TriStateItem(
label = stringResource(MR.strings.label_downloaded),
state = if (downloadedOnly) {
@ -108,6 +112,18 @@ private fun ColumnScope.FilterPage(
state = filterCompleted,
onClick = { screenModel.toggleFilter(LibraryPreferences::filterCompleted) },
)
// TODO: re-enable when custom intervals are ready for stable
if (
(isDevFlavor || isPreviewBuildType) &&
LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in autoUpdateMangaRestrictions
) {
val filterIntervalCustom by screenModel.libraryPreferences.filterIntervalCustom().collectAsState()
TriStateItem(
label = stringResource(MR.strings.action_filter_interval_custom),
state = filterIntervalCustom,
onClick = { screenModel.toggleFilter(LibraryPreferences::filterIntervalCustom) },
)
}
val trackers = remember { screenModel.trackers }
when (trackers.size) {

View File

@ -30,6 +30,7 @@ import tachiyomi.presentation.core.i18n.pluralStringResource
import tachiyomi.presentation.core.i18n.stringResource
import java.time.Instant
import java.time.temporal.ChronoUnit
import kotlin.math.absoluteValue
@Composable
fun DeleteChaptersDialog(
@ -85,7 +86,7 @@ fun SetIntervalDialog(
title = { Text(stringResource(MR.strings.pref_library_update_smart_update)) },
text = {
Column {
if (nextUpdateDays != null && nextUpdateDays >= 0) {
if (nextUpdateDays != null && nextUpdateDays >= 0 && interval >= 0) {
Text(
stringResource(
MR.strings.manga_interval_expected_update,
@ -96,8 +97,8 @@ fun SetIntervalDialog(
),
pluralStringResource(
MR.plurals.day,
count = interval,
interval,
count = interval.absoluteValue,
interval.absoluteValue,
),
),
)
@ -105,7 +106,6 @@ fun SetIntervalDialog(
Spacer(Modifier.height(MaterialTheme.padding.small))
}
// TODO: selecting "1" then doesn't allow for future changes unless defaulting first?
if (onValueChanged != null && (isDevFlavor || isPreviewBuildType)) {
Text(stringResource(MR.strings.manga_interval_custom_amount))

View File

@ -201,14 +201,14 @@ fun MangaActionRow(
onLongClick = onEditCategory,
)
MangaActionButton(
title = if (nextUpdateDays != null) {
pluralStringResource(
title = when (nextUpdateDays) {
null -> stringResource(MR.strings.not_applicable)
0 -> stringResource(MR.strings.manga_interval_expected_update_soon)
else -> pluralStringResource(
MR.plurals.day,
count = nextUpdateDays,
nextUpdateDays,
)
} else {
stringResource(MR.strings.not_applicable)
},
icon = Icons.Default.HourglassEmpty,
color = if (isUserIntervalMode) MaterialTheme.colorScheme.primary else defaultActionButtonColor,

View File

@ -24,6 +24,7 @@ import androidx.core.net.toUri
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.extension.interactor.TrustExtension
import eu.kanade.presentation.more.settings.Preference
import eu.kanade.presentation.more.settings.screen.advanced.ClearDatabaseScreen
import eu.kanade.presentation.more.settings.screen.debug.DebugInfoScreen
@ -340,6 +341,7 @@ object SettingsAdvancedScreen : SearchableSettings {
val uriHandler = LocalUriHandler.current
val extensionInstallerPref = basePreferences.extensionInstaller()
var shizukuMissing by rememberSaveable { mutableStateOf(false) }
val trustExtension = remember { Injekt.get<TrustExtension>() }
if (shizukuMissing) {
val dismiss = { shizukuMissing = false }
@ -392,6 +394,13 @@ object SettingsAdvancedScreen : SearchableSettings {
}
},
),
Preference.PreferenceItem.TextPreference(
title = stringResource(MR.strings.ext_revoke_trust),
onClick = {
trustExtension.revokeAll()
context.toast(MR.strings.requires_app_restart)
},
),
),
)
}

View File

@ -52,7 +52,7 @@ class ExtensionReposScreen(
ExtensionRepoCreateDialog(
onDismissRequest = screenModel::dismissDialog,
onCreate = { screenModel.createRepo(it) },
categories = successState.repos,
repos = successState.repos,
)
}
is RepoDialog.Delete -> {

View File

@ -4,11 +4,11 @@ import androidx.compose.runtime.Immutable
import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import dev.icerock.moko.resources.StringResource
import eu.kanade.domain.source.interactor.CreateSourceRepo
import eu.kanade.domain.source.interactor.DeleteSourceRepo
import eu.kanade.domain.source.interactor.GetSourceRepos
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import eu.kanade.domain.extension.interactor.CreateExtensionRepo
import eu.kanade.domain.extension.interactor.DeleteExtensionRepo
import eu.kanade.domain.extension.interactor.GetExtensionRepos
import kotlinx.collections.immutable.ImmutableSet
import kotlinx.collections.immutable.toImmutableSet
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.receiveAsFlow
@ -19,9 +19,9 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class ExtensionReposScreenModel(
private val getSourceRepos: GetSourceRepos = Injekt.get(),
private val createSourceRepo: CreateSourceRepo = Injekt.get(),
private val deleteSourceRepo: DeleteSourceRepo = Injekt.get(),
private val getExtensionRepos: GetExtensionRepos = Injekt.get(),
private val createExtensionRepo: CreateExtensionRepo = Injekt.get(),
private val deleteExtensionRepo: DeleteExtensionRepo = Injekt.get(),
) : StateScreenModel<RepoScreenState>(RepoScreenState.Loading) {
private val _events: Channel<RepoEvent> = Channel(Int.MAX_VALUE)
@ -29,11 +29,11 @@ class ExtensionReposScreenModel(
init {
screenModelScope.launchIO {
getSourceRepos.subscribe()
getExtensionRepos.subscribe()
.collectLatest { repos ->
mutableState.update {
RepoScreenState.Success(
repos = repos.toImmutableList(),
repos = repos.toImmutableSet(),
)
}
}
@ -47,8 +47,8 @@ class ExtensionReposScreenModel(
*/
fun createRepo(name: String) {
screenModelScope.launchIO {
when (createSourceRepo.await(name)) {
is CreateSourceRepo.Result.InvalidUrl -> _events.send(RepoEvent.InvalidUrl)
when (createExtensionRepo.await(name)) {
is CreateExtensionRepo.Result.InvalidUrl -> _events.send(RepoEvent.InvalidUrl)
else -> {}
}
}
@ -61,7 +61,7 @@ class ExtensionReposScreenModel(
*/
fun deleteRepo(repo: String) {
screenModelScope.launchIO {
deleteSourceRepo.await(repo)
deleteExtensionRepo.await(repo)
}
}
@ -101,7 +101,7 @@ sealed class RepoScreenState {
@Immutable
data class Success(
val repos: ImmutableList<String>,
val repos: ImmutableSet<String>,
val dialog: RepoDialog? = null,
) : RepoScreenState() {

View File

@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.Label
import androidx.compose.material.icons.outlined.Delete
@ -19,12 +18,12 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.ImmutableSet
import tachiyomi.presentation.core.components.material.padding
@Composable
fun ExtensionReposContent(
repos: ImmutableList<String>,
repos: ImmutableSet<String>,
lazyListState: LazyListState,
paddingValues: PaddingValues,
onClickDelete: (String) -> Unit,
@ -36,12 +35,14 @@ fun ExtensionReposContent(
verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
modifier = modifier,
) {
items(repos) { repo ->
ExtensionRepoListItem(
modifier = Modifier.animateItemPlacement(),
repo = repo,
onDelete = { onClickDelete(repo) },
)
repos.forEach {
item {
ExtensionRepoListItem(
modifier = Modifier.animateItemPlacement(),
repo = it,
onDelete = { onClickDelete(it) },
)
}
}
}
}

View File

@ -14,7 +14,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.ImmutableSet
import kotlinx.coroutines.delay
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
@ -24,12 +24,12 @@ import kotlin.time.Duration.Companion.seconds
fun ExtensionRepoCreateDialog(
onDismissRequest: () -> Unit,
onCreate: (String) -> Unit,
categories: ImmutableList<String>,
repos: ImmutableSet<String>,
) {
var name by remember { mutableStateOf("") }
val focusRequester = remember { FocusRequester() }
val nameAlreadyExists = remember(name) { categories.contains(name) }
val nameAlreadyExists = remember(name) { repos.contains(name) }
AlertDialog(
onDismissRequest = onDismissRequest,

View File

@ -7,6 +7,7 @@ import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -22,7 +23,6 @@ import androidx.compose.foundation.layout.paddingFromBaseline
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions
@ -33,6 +33,7 @@ import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
@ -40,7 +41,10 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@ -48,7 +52,11 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.platform.ClipboardManager
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.capitalize
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.TextFieldValue
@ -58,9 +66,11 @@ import androidx.compose.ui.text.toLowerCase
import androidx.compose.ui.tooling.preview.PreviewLightDark
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.presentation.manga.components.MangaCover
import eu.kanade.presentation.theme.TachiyomiTheme
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.util.system.openInBrowser
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold
@ -188,13 +198,7 @@ fun TrackerSearch(
key = { it.hashCode() },
) {
SearchResultItem(
title = it.title,
coverUrl = it.cover_url,
type = it.publishing_type.toLowerCase(Locale.current).capitalize(Locale.current),
startDate = it.start_date,
status = it.publishing_status.toLowerCase(Locale.current).capitalize(Locale.current),
score = it.score,
description = it.summary.trim(),
trackSearch = it,
selected = it == selected,
onClick = { onSelectedChange(it) },
)
@ -214,18 +218,18 @@ fun TrackerSearch(
@Composable
private fun SearchResultItem(
title: String,
coverUrl: String,
type: String,
startDate: String,
status: String,
score: Float,
description: String,
trackSearch: TrackSearch,
selected: Boolean,
onClick: () -> Unit,
) {
val context = LocalContext.current
val clipboardManager: ClipboardManager = LocalClipboardManager.current
val type = trackSearch.publishing_type.toLowerCase(Locale.current).capitalize(Locale.current)
val status = trackSearch.publishing_status.toLowerCase(Locale.current).capitalize(Locale.current)
val description = trackSearch.summary.trim()
val shape = RoundedCornerShape(16.dp)
val borderColor = if (selected) MaterialTheme.colorScheme.outline else Color.Transparent
var dropDownMenuExpanded by remember { mutableStateOf(false) }
Box(
modifier = Modifier
.fillMaxWidth()
@ -237,7 +241,10 @@ private fun SearchResultItem(
color = borderColor,
shape = shape,
)
.selectable(selected = selected, onClick = onClick)
.combinedClickable(
onLongClick = { dropDownMenuExpanded = true },
onClick = onClick,
)
.padding(12.dp),
) {
if (selected) {
@ -251,28 +258,41 @@ private fun SearchResultItem(
Column {
Row {
MangaCover.Book(
data = coverUrl,
data = trackSearch.cover_url,
modifier = Modifier.height(96.dp),
)
Spacer(modifier = Modifier.width(12.dp))
Column {
Text(
text = title,
text = trackSearch.title,
modifier = Modifier.padding(end = 28.dp),
maxLines = 2,
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.titleMedium,
)
SearchResultItemDropDownMenu(
expanded = dropDownMenuExpanded,
onCollapseMenu = { dropDownMenuExpanded = false },
onCopyName = {
clipboardManager.setText(AnnotatedString(trackSearch.title))
},
onOpenInBrowser = {
val url = trackSearch.tracking_url
if (url.isNotBlank()) {
context.openInBrowser(url)
}
},
)
if (type.isNotBlank()) {
SearchResultItemDetails(
title = stringResource(MR.strings.track_type),
text = type,
)
}
if (startDate.isNotBlank()) {
if (trackSearch.start_date.isNotBlank()) {
SearchResultItemDetails(
title = stringResource(MR.strings.label_started),
text = startDate,
text = trackSearch.start_date,
)
}
if (status.isNotBlank()) {
@ -281,10 +301,10 @@ private fun SearchResultItem(
text = status,
)
}
if (score != -1f) {
if (trackSearch.score != -1f) {
SearchResultItemDetails(
title = stringResource(MR.strings.score),
text = score.toString(),
text = trackSearch.score.toString(),
)
}
}
@ -304,6 +324,33 @@ private fun SearchResultItem(
}
}
@Composable
private fun SearchResultItemDropDownMenu(
expanded: Boolean,
onCollapseMenu: () -> Unit,
onCopyName: () -> Unit,
onOpenInBrowser: () -> Unit,
) {
DropdownMenu(
expanded = expanded,
onDismissRequest = onCollapseMenu,
) {
DropdownMenuItem(
text = { Text(stringResource(MR.strings.action_copy_to_clipboard)) },
onClick = {
onCopyName()
onCollapseMenu()
},
)
DropdownMenuItem(
text = { Text(stringResource(MR.strings.action_open_in_browser)) },
onClick = {
onOpenInBrowser()
},
)
}
}
@Composable
private fun SearchResultItemDetails(
title: String,

View File

@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.extension
import android.content.Context
import android.graphics.drawable.Drawable
import eu.kanade.domain.source.interactor.TrustExtension
import eu.kanade.domain.extension.interactor.TrustExtension
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.extension.api.ExtensionApi
import eu.kanade.tachiyomi.extension.api.ExtensionUpdateNotifier
@ -178,14 +178,22 @@ class ExtensionManager(
val pkgName = installedExt.pkgName
val availableExt = availableExtensions.find { it.pkgName == pkgName }
if (!installedExt.isUnofficial && availableExt == null && !installedExt.isObsolete) {
if (availableExt == null && !installedExt.isObsolete) {
mutInstalledExtensions[index] = installedExt.copy(isObsolete = true)
changed = true
} else if (availableExt != null) {
val hasUpdate = installedExt.updateExists(availableExt)
if (installedExt.hasUpdate != hasUpdate) {
mutInstalledExtensions[index] = installedExt.copy(hasUpdate = hasUpdate)
mutInstalledExtensions[index] = installedExt.copy(
hasUpdate = hasUpdate,
repoUrl = availableExt.repoUrl,
)
changed = true
} else {
mutInstalledExtensions[index] = installedExt.copy(
repoUrl = availableExt.repoUrl,
)
changed = true
}
}
@ -353,7 +361,7 @@ class ExtensionManager(
private fun Extension.Installed.updateExists(availableExtension: Extension.Available? = null): Boolean {
val availableExt = availableExtension ?: _availableExtensionsFlow.value.find { it.pkgName == pkgName }
if (isUnofficial || availableExt == null) return false
?: return false
return (availableExt.versionCode > versionCode || availableExt.libVersion > libVersion)
}

View File

@ -1,7 +1,6 @@
package eu.kanade.tachiyomi.extension.api
import android.content.Context
import eu.kanade.domain.source.interactor.OFFICIAL_REPO_BASE_URL
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.extension.model.Extension
@ -36,14 +35,11 @@ internal class ExtensionApi {
suspend fun findExtensions(): List<Extension.Available> {
return withIOContext {
val extensions = buildList {
addAll(getExtensions(OFFICIAL_REPO_BASE_URL, true))
sourcePreferences.extensionRepos().get().map { addAll(getExtensions(it, false)) }
}
val extensions = sourcePreferences.extensionRepos().get().flatMap { getExtensions(it) }
// Sanity check - a small number of extensions probably means something broke
// with the repo generator
if (extensions.size < 50) {
if (extensions.isEmpty()) {
throw Exception()
}
@ -51,10 +47,7 @@ internal class ExtensionApi {
}
}
private suspend fun getExtensions(
repoBaseUrl: String,
isOfficialRepo: Boolean,
): List<Extension.Available> {
private suspend fun getExtensions(repoBaseUrl: String): List<Extension.Available> {
return try {
val response = networkService.client
.newCall(GET("$repoBaseUrl/index.min.json"))
@ -63,7 +56,7 @@ internal class ExtensionApi {
with(json) {
response
.parseAs<List<ExtensionJsonObject>>()
.toExtensions(repoBaseUrl, isRepoSource = !isOfficialRepo)
.toExtensions(repoBaseUrl)
}
} catch (e: Throwable) {
logcat(LogPriority.ERROR, e) { "Failed to get extensions from $repoBaseUrl" }
@ -98,7 +91,7 @@ internal class ExtensionApi {
val availableExt = extensions.find { it.pkgName == pkgName } ?: continue
val hasUpdatedVer = availableExt.versionCode > installedExt.versionCode
val hasUpdatedLib = availableExt.libVersion > installedExt.libVersion
val hasUpdate = installedExt.isUnofficial.not() && (hasUpdatedVer || hasUpdatedLib)
val hasUpdate = hasUpdatedVer || hasUpdatedLib
if (hasUpdate) {
extensionsWithUpdate.add(installedExt)
}
@ -111,10 +104,7 @@ internal class ExtensionApi {
return extensionsWithUpdate
}
private fun List<ExtensionJsonObject>.toExtensions(
repoUrl: String,
isRepoSource: Boolean,
): List<Extension.Available> {
private fun List<ExtensionJsonObject>.toExtensions(repoUrl: String): List<Extension.Available> {
return this
.filter {
val libVersion = it.extractLibVersion()
@ -133,7 +123,6 @@ internal class ExtensionApi {
apkName = it.apk,
iconUrl = "$repoUrl/icon/${it.pkg}.png",
repoUrl = repoUrl,
isRepoSource = isRepoSource,
)
}
}

View File

@ -27,10 +27,8 @@ sealed class Extension {
val icon: Drawable?,
val hasUpdate: Boolean = false,
val isObsolete: Boolean = false,
val isUnofficial: Boolean = false,
val isShared: Boolean,
val repoUrl: String? = null,
val isRepoSource: Boolean = false,
) : Extension()
data class Available(
@ -45,7 +43,6 @@ sealed class Extension {
val apkName: String,
val iconUrl: String,
val repoUrl: String,
val isRepoSource: Boolean,
) : Extension() {
data class Source(

View File

@ -7,7 +7,7 @@ import android.content.pm.PackageManager
import android.os.Build
import androidx.core.content.pm.PackageInfoCompat
import dalvik.system.PathClassLoader
import eu.kanade.domain.source.interactor.TrustExtension
import eu.kanade.domain.extension.interactor.TrustExtension
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.model.LoadResult
@ -59,9 +59,6 @@ internal object ExtensionLoader {
PackageManager.GET_SIGNATURES or
(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) PackageManager.GET_SIGNING_CERTIFICATES else 0)
// inorichi's key
private const val officialSignature = "7ce04da7773d41b489f4693a366c36bcd0a11fc39b547168553c285bd7348e23"
private const val PRIVATE_EXTENSION_EXTENSION = "ext"
private fun getPrivateExtensionDir(context: Context) = File(context.filesDir, "exts")
@ -255,7 +252,7 @@ internal object ExtensionLoader {
if (signatures.isNullOrEmpty()) {
logcat(LogPriority.WARN) { "Package $pkgName isn't signed" }
return LoadResult.Error
} else if (!isTrusted(pkgInfo, signatures)) {
} else if (!trustExtension.isTrusted(pkgInfo, signatures.last())) {
val extension = Extension.Untrusted(
extName,
pkgName,
@ -323,7 +320,6 @@ internal object ExtensionLoader {
isNsfw = isNsfw,
sources = sources,
pkgFactory = appInfo.metaData.getString(METADATA_SOURCE_FACTORY),
isUnofficial = !isOfficiallySigned(signatures),
icon = appInfo.loadIcon(pkgManager),
isShared = extensionInfo.isShared,
)
@ -383,18 +379,6 @@ internal object ExtensionLoader {
?.toList()
}
private fun isTrusted(pkgInfo: PackageInfo, signatures: List<String>): Boolean {
if (officialSignature in signatures) {
return true
}
return trustExtension.isTrusted(pkgInfo, signatures.last())
}
private fun isOfficiallySigned(signatures: List<String>): Boolean {
return signatures.all { it == officialSignature }
}
/**
* On Android 13+ the ApplicationInfo generated by getPackageArchiveInfo doesn't
* have sourceDir which breaks assets loading (used for getting icon here).

View File

@ -5,7 +5,6 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
@ -30,13 +29,11 @@ data class ExtensionDetailsScreen(
}
val navigator = LocalNavigator.currentOrThrow
val uriHandler = LocalUriHandler.current
ExtensionDetailsScreen(
navigateUp = navigator::pop,
state = state,
onClickSourcePreferences = { navigator.push(SourcePreferencesScreen(it)) },
onClickWhatsNew = { uriHandler.openUri(screenModel.getChangelogUrl()) },
onClickEnableAll = { screenModel.toggleSources(true) },
onClickDisableAll = { screenModel.toggleSources(false) },
onClickClearCookies = screenModel::clearCookies,

View File

@ -29,9 +29,6 @@ import tachiyomi.core.util.system.logcat
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
private const val URL_EXTENSION_COMMITS =
"https://github.com/tachiyomiorg/tachiyomi-extensions/commits/master"
class ExtensionDetailsScreenModel(
pkgName: String,
context: Context,
@ -86,16 +83,6 @@ class ExtensionDetailsScreenModel(
}
}
fun getChangelogUrl(): String {
val extension = state.value.extension ?: return ""
val pkgName = extension.pkgName.substringAfter("eu.kanade.tachiyomi.extension.")
val pkgFactory = extension.pkgFactory
// Falling back on GitHub commit history because there is no explicit changelog in extension
return createUrl(URL_EXTENSION_COMMITS, pkgName, pkgFactory)
}
fun clearCookies() {
val extension = state.value.extension ?: return
@ -131,22 +118,6 @@ class ExtensionDetailsScreenModel(
?.let { toggleSource.await(it, enable) }
}
private fun createUrl(
url: String,
pkgName: String,
pkgFactory: String?,
path: String = "",
): String {
return if (!pkgFactory.isNullOrEmpty()) {
when (path.isEmpty()) {
true -> "$url/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/$pkgFactory"
else -> "$url/multisrc/overrides/$pkgFactory/" + (pkgName.split(".").lastOrNull() ?: "") + path
}
} else {
url + "/src/" + pkgName.replace(".", "/") + path
}
}
@Immutable
data class State(
val extension: Extension.Installed? = null,

View File

@ -157,6 +157,7 @@ class LibraryScreenModel(
prefs.filterStarted,
prefs.filterBookmarked,
prefs.filterCompleted,
prefs.filterIntervalCustom,
) + trackFilter.values
).any { it != TriState.DISABLED }
}
@ -178,12 +179,13 @@ class LibraryScreenModel(
): LibraryMap {
val prefs = getLibraryItemPreferencesFlow().first()
val downloadedOnly = prefs.globalFilterDownloaded
val filterDownloaded =
if (downloadedOnly) TriState.ENABLED_IS else prefs.filterDownloaded
val skipOutsideReleasePeriod = prefs.skipOutsideReleasePeriod
val filterDownloaded = if (downloadedOnly) TriState.ENABLED_IS else prefs.filterDownloaded
val filterUnread = prefs.filterUnread
val filterStarted = prefs.filterStarted
val filterBookmarked = prefs.filterBookmarked
val filterCompleted = prefs.filterCompleted
val filterIntervalCustom = prefs.filterIntervalCustom
val isNotLoggedInAnyTrack = loggedInTrackers.isEmpty()
@ -215,6 +217,14 @@ class LibraryScreenModel(
applyFilter(filterCompleted) { it.libraryManga.manga.status.toInt() == SManga.COMPLETED }
}
val filterFnIntervalCustom: (LibraryItem) -> Boolean = {
if (skipOutsideReleasePeriod) {
applyFilter(filterIntervalCustom) { it.libraryManga.manga.fetchInterval < 0 }
} else {
true
}
}
val filterFnTracking: (LibraryItem) -> Boolean = tracking@{ item ->
if (isNotLoggedInAnyTrack || trackFiltersIsIgnored) return@tracking true
@ -225,7 +235,7 @@ class LibraryScreenModel(
val isExcluded = excludedTracks.isNotEmpty() && mangaTracks.fastAny { it in excludedTracks }
val isIncluded = includedTracks.isEmpty() || mangaTracks.fastAny { it in includedTracks }
return@tracking !isExcluded && isIncluded
!isExcluded && isIncluded
}
val filterFn: (LibraryItem) -> Boolean = {
@ -234,6 +244,7 @@ class LibraryScreenModel(
filterFnStarted(it) &&
filterFnBookmarked(it) &&
filterFnCompleted(it) &&
filterFnIntervalCustom(it) &&
filterFnTracking(it)
}
@ -320,6 +331,7 @@ class LibraryScreenModel(
libraryPreferences.downloadBadge().changes(),
libraryPreferences.localBadge().changes(),
libraryPreferences.languageBadge().changes(),
libraryPreferences.autoUpdateMangaRestrictions().changes(),
preferences.downloadedOnly().changes(),
libraryPreferences.filterDownloaded().changes(),
@ -327,20 +339,22 @@ class LibraryScreenModel(
libraryPreferences.filterStarted().changes(),
libraryPreferences.filterBookmarked().changes(),
libraryPreferences.filterCompleted().changes(),
transform = {
ItemPreferences(
downloadBadge = it[0] as Boolean,
localBadge = it[1] as Boolean,
languageBadge = it[2] as Boolean,
globalFilterDownloaded = it[3] as Boolean,
filterDownloaded = it[4] as TriState,
filterUnread = it[5] as TriState,
filterStarted = it[6] as TriState,
filterBookmarked = it[7] as TriState,
filterCompleted = it[8] as TriState,
)
},
)
libraryPreferences.filterIntervalCustom().changes(),
) {
ItemPreferences(
downloadBadge = it[0] as Boolean,
localBadge = it[1] as Boolean,
languageBadge = it[2] as Boolean,
skipOutsideReleasePeriod = LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in (it[3] as Set<*>),
globalFilterDownloaded = it[4] as Boolean,
filterDownloaded = it[5] as TriState,
filterUnread = it[6] as TriState,
filterStarted = it[7] as TriState,
filterBookmarked = it[8] as TriState,
filterCompleted = it[9] as TriState,
filterIntervalCustom = it[10] as TriState,
)
}
}
/**
@ -699,6 +713,7 @@ class LibraryScreenModel(
val downloadBadge: Boolean,
val localBadge: Boolean,
val languageBadge: Boolean,
val skipOutsideReleasePeriod: Boolean,
val globalFilterDownloaded: Boolean,
val filterDownloaded: TriState,
@ -706,6 +721,7 @@ class LibraryScreenModel(
val filterStarted: TriState,
val filterBookmarked: TriState,
val filterCompleted: TriState,
val filterIntervalCustom: TriState,
)
@Immutable

View File

@ -378,12 +378,15 @@ class MangaScreenModel(
fun setFetchInterval(manga: Manga, interval: Int) {
screenModelScope.launchIO {
updateManga.awaitUpdateFetchInterval(
// Custom intervals are negative
manga.copy(fetchInterval = -interval),
)
val updatedManga = mangaRepository.getMangaById(manga.id)
updateSuccessState { it.copy(manga = updatedManga) }
if (
updateManga.awaitUpdateFetchInterval(
// Custom intervals are negative
manga.copy(fetchInterval = -interval),
)
) {
val updatedManga = mangaRepository.getMangaById(manga.id)
updateSuccessState { it.copy(manga = updatedManga) }
}
}
}

View File

@ -462,7 +462,8 @@ class ReaderViewModel @JvmOverloads constructor(
manga.title,
manga.source,
)
if (isNextChapterDownloaded) return@launchIO
if (!isNextChapterDownloaded) return@launchIO
val chaptersToDownload = getNextChapters.await(manga.id, nextChapter.id!!).run {
if (readerPreferences.skipDupe().get()) {
removeDuplicates(nextChapter.toDomainChapter()!!)

View File

@ -214,6 +214,9 @@ class WebtoonRecyclerView @JvmOverloads constructor(
if (!isZooming && doubleTapZoom) {
if (scaleX != DEFAULT_RATE) {
zoom(currentScale, DEFAULT_RATE, x, 0f, y, 0f)
layoutParams.height = originalHeight
halfHeight = layoutParams.height / 2
requestLayout()
} else {
val toScale = 2f
val toX = (halfWidth - ev.x) * (toScale - 1)

View File

@ -56,12 +56,12 @@ class CrashLogUtil(
val availableExtension = availableExtensions[it.pkgName]
val hasUpdate = (availableExtension?.versionCode ?: 0) > it.versionCode
if (!hasUpdate && !it.isObsolete && !it.isUnofficial) return@mapNotNull null
if (!hasUpdate && !it.isObsolete) return@mapNotNull null
"""
- ${it.name}
Installed: ${it.versionName} / Available: ${availableExtension?.versionName ?: "?"}
Obsolete: ${it.isObsolete} / Unofficial: ${it.isUnofficial}
Obsolete: ${it.isObsolete}
""".trimIndent()
}

View File

@ -43,8 +43,6 @@ fun Long.toDateKey(): Date {
return Date.from(instant.truncatedTo(ChronoUnit.DAYS))
}
private const val MILLISECONDS_IN_DAY = 86_400_000L
fun Date.toRelativeString(
context: Context,
relative: Boolean = true,
@ -69,6 +67,8 @@ fun Date.toRelativeString(
}
}
private const val MILLISECONDS_IN_DAY = 86_400_000L
private val Date.timeWithOffset: Long
get() {
return Calendar.getInstance().run {
@ -78,6 +78,6 @@ private val Date.timeWithOffset: Long
}
}
fun Long.floorNearest(to: Long): Long {
private fun Long.floorNearest(to: Long): Long {
return this.floorDiv(to) * to
}

View File

@ -5,6 +5,7 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.online.HttpSource
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
import tachiyomi.data.DatabaseHandler
import tachiyomi.domain.source.model.SourceWithCount
@ -38,18 +39,19 @@ class SourceRepositoryImpl(
}
override fun getSourcesWithFavoriteCount(): Flow<List<Pair<DomainSource, Long>>> {
val sourceIdWithFavoriteCount =
handler.subscribeToList { mangasQueries.getSourceIdWithFavoriteCount() }
return sourceIdWithFavoriteCount.map { sourceIdsWithCount ->
sourceIdsWithCount
.map { (sourceId, count) ->
return combine(
handler.subscribeToList { mangasQueries.getSourceIdWithFavoriteCount() },
sourceManager.catalogueSources,
) { sourceIdWithFavoriteCount, _ -> sourceIdWithFavoriteCount }
.map {
it.map { (sourceId, count) ->
val source = sourceManager.getOrStub(sourceId)
val domainSource = mapSourceToDomainSource(source).copy(
isStub = source is StubSource,
)
domainSource to count
}
}
}
}
override fun getSourcesWithNonLibraryManga(): Flow<List<SourceWithCount>> {

View File

@ -85,26 +85,6 @@ class LibraryPreferences(
TriState.DISABLED,
)
fun filterIntervalLong() = preferenceStore.getEnum(
"pref_filter_library_interval_long",
TriState.DISABLED,
)
fun filterIntervalLate() = preferenceStore.getEnum(
"pref_filter_library_interval_late",
TriState.DISABLED,
)
fun filterIntervalDropped() = preferenceStore.getEnum(
"pref_filter_library_interval_dropped",
TriState.DISABLED,
)
fun filterIntervalPassed() = preferenceStore.getEnum(
"pref_filter_library_interval_passed",
TriState.DISABLED,
)
fun filterTracking(id: Int) = preferenceStore.getEnum(
"pref_filter_library_tracked_${id}_v2",
TriState.DISABLED,

View File

@ -14,11 +14,11 @@ class FetchInterval(
private val getChaptersByMangaId: GetChaptersByMangaId,
) {
suspend fun toMangaUpdateOrNull(
suspend fun toMangaUpdate(
manga: Manga,
dateTime: ZonedDateTime,
window: Pair<Long, Long>,
): MangaUpdate? {
): MangaUpdate {
val interval = manga.fetchInterval.takeIf { it < 0 } ?: calculateInterval(
chapters = getChaptersByMangaId.await(manga.id, applyScanlatorFilter = true),
zone = dateTime.zone,
@ -30,11 +30,7 @@ class FetchInterval(
}
val nextUpdate = calculateNextUpdate(manga, interval, dateTime, currentWindow)
return if (manga.nextUpdate == nextUpdate && manga.fetchInterval == interval) {
null
} else {
MangaUpdate(id = manga.id, nextUpdate = nextUpdate, fetchInterval = interval)
}
return MangaUpdate(id = manga.id, nextUpdate = nextUpdate, fetchInterval = interval)
}
fun getWindow(dateTime: ZonedDateTime): Pair<Long, Long> {
@ -96,34 +92,31 @@ class FetchInterval(
dateTime: ZonedDateTime,
window: Pair<Long, Long>,
): Long {
return if (
manga.nextUpdate !in window.first.rangeTo(window.second + 1) ||
manga.fetchInterval == 0
) {
val latestDate = ZonedDateTime.ofInstant(
if (manga.lastUpdate > 0) Instant.ofEpochMilli(manga.lastUpdate) else Instant.now(),
dateTime.zone,
)
.toLocalDate()
.atStartOfDay()
val timeSinceLatest = ChronoUnit.DAYS.between(latestDate, dateTime).toInt()
val cycle = timeSinceLatest.floorDiv(
interval.absoluteValue.takeIf { interval < 0 }
?: doubleInterval(interval, timeSinceLatest, doubleWhenOver = 10),
)
latestDate.plusDays((cycle + 1) * interval.toLong()).toEpochSecond(dateTime.offset) * 1000
} else {
manga.nextUpdate
if (manga.nextUpdate in window.first.rangeTo(window.second + 1)) {
return manga.nextUpdate
}
val latestDate = ZonedDateTime.ofInstant(
if (manga.lastUpdate > 0) Instant.ofEpochMilli(manga.lastUpdate) else Instant.now(),
dateTime.zone,
)
.toLocalDate()
.atStartOfDay()
val timeSinceLatest = ChronoUnit.DAYS.between(latestDate, dateTime).toInt()
val cycle = timeSinceLatest.floorDiv(
interval.absoluteValue.takeIf { interval < 0 }
?: increaseInterval(interval, timeSinceLatest, increaseWhenOver = 10),
)
return latestDate.plusDays((cycle + 1) * interval.toLong()).toEpochSecond(dateTime.offset) * 1000
}
private fun doubleInterval(delta: Int, timeSinceLatest: Int, doubleWhenOver: Int): Int {
private fun increaseInterval(delta: Int, timeSinceLatest: Int, increaseWhenOver: Int): Int {
if (delta >= MAX_INTERVAL) return MAX_INTERVAL
// double delta again if missed more than 9 check in new delta
val cycle = timeSinceLatest.floorDiv(delta) + 1
return if (cycle > doubleWhenOver) {
doubleInterval(delta * 2, timeSinceLatest, doubleWhenOver)
return if (cycle > increaseWhenOver) {
increaseInterval(delta * 2, timeSinceLatest, increaseWhenOver)
} else {
delta
}

View File

@ -89,7 +89,7 @@ sqldelight-gradle = { module = "app.cash.sqldelight:gradle-plugin", version.ref
junit = "org.junit.jupiter:junit-jupiter:5.10.1"
kotest-assertions = "io.kotest:kotest-assertions-core:5.8.0"
mockk = "io.mockk:mockk:1.13.8"
mockk = "io.mockk:mockk:1.13.9"
voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" }
voyager-screenmodel = { module = "cafe.adriel.voyager:voyager-screenmodel", version.ref = "voyager" }

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="unofficial_extension_message">ይህ ቅጥያ ከኦፊሴላዊው የታቺዮሚ ቅጥያዎች ዝርዝር አይደለም ፡፡</string>
<string name="obsolete_extension_message">ይህ ቅጥያ ከእንግዲህ አይገኝም።</string>
<string name="untrusted_extension_message">ይህ ቅጥያ ባልታመነ የእውቅና ማረጋገጫ ተፈርሟል እና አልነቃም።
\n
@ -10,7 +9,6 @@
<string name="untrusted_extension">የማይታመን ቅጥያ</string>
<string name="ext_uninstall">ማራገፍ</string>
<string name="ext_untrusted">የማይታመን</string>
<string name="ext_unofficial">ኦፊሴላዊ ያልሆነ</string>
<string name="ext_trust">አደራ</string>
<string name="ext_installed">ተጭኗል</string>
<string name="ext_installing">በመጫን ላይ</string>

View File

@ -374,8 +374,6 @@
<string name="invalid_backup_file_missing_manga">النسخة الإحتياطية لا تحتوي على أيّة إدخالات المكتبة.</string>
<string name="invalid_backup_file">ملفُّ النسخ الاحتياطيِّ غير صالح</string>
<string name="tracking_info">مزامنة أحادية تُحدِّث قراءة الفصول في المتتبعات الخارجية، ولك تعيين التتبِّع لكلِّ مدخلة على حدى، وذلك من زرِّ التتبع فيهم.</string>
<string name="unofficial_extension_message">ليست هذه الإضافة من القائمة الرسمية.</string>
<string name="ext_unofficial">غير رسمي</string>
<string name="pref_library_update_refresh_metadata_summary">تحقق من وجود غلاف جديد وتفاصيل جديدة عند تحديث المكتبة</string>
<string name="pref_library_update_refresh_metadata">تحديث البيانات الوصفية تلقائياً</string>
<string name="sort_by_upload_date">حسب تاريخ الرفع</string>
@ -708,10 +706,6 @@
<string name="pref_library_columns_per_row">%d كلَّ صفٍّ</string>
<string name="action_set_interval">عيِّد المدة</string>
<string name="action_filter_interval_custom">مدة جلب مخصَّصة</string>
<string name="action_filter_interval_long">اجلب كلَّ شهر (٢٨ يومًا)</string>
<string name="action_filter_interval_passed">مرت مدة الالتماس</string>
<string name="action_filter_interval_late">١٠+ التماسات متأخرة</string>
<string name="action_filter_interval_dropped">ربما أُلغيت؟ ٢٠ التماسًا متأخرًا وشهران</string>
<string name="manga_display_interval_title">قدِّر كلَّ</string>
<string name="pref_update_only_in_release_period">ليس ضمن مدة الإصدار المتوقعة</string>
<string name="skipped_reason_not_in_release_period">تُخُطِّيت بسبب عدم توقع صدور اليوم</string>

View File

@ -54,11 +54,7 @@
<string name="action_filter_bookmarked">Bookmarked</string>
<string name="action_filter_tracked">Tracked</string>
<string name="action_filter_unread">Unread</string>
<string name="action_filter_interval_custom">Customized fetch interval</string>
<string name="action_filter_interval_long">Fetch monthly (28 days)</string>
<string name="action_filter_interval_late">Late 10+ check</string>
<string name="action_filter_interval_dropped">Dropped? Late 20+ and 2 months</string>
<string name="action_filter_interval_passed">Passed check period</string>
<string name="action_filter_interval_custom">Customized update frequency</string>
<!-- reserved for #4048 -->
<string name="action_filter_empty">Remove filter</string>
<string name="action_sort_alpha">Alphabetically</string>
@ -315,15 +311,13 @@
<string name="ext_installing">Installing</string>
<string name="ext_installed">Installed</string>
<string name="ext_trust">Trust</string>
<string name="ext_unofficial">Unofficial</string>
<string name="ext_untrusted">Untrusted</string>
<string name="ext_uninstall">Uninstall</string>
<string name="ext_app_info">App info</string>
<string name="untrusted_extension">Untrusted extension</string>
<string name="untrusted_extension_message">This extension was signed by any unknown author and wasn\'t loaded.\n\nMalicious extensions can read any stored login credentials or execute arbitrary code.\n\nBy trusting this extension\'s certificate, you accept these risks.</string>
<string name="untrusted_extension_message">Malicious extensions can read any stored login credentials or execute arbitrary code.\n\nBy trusting this extension, you accept these risks.</string>
<string name="obsolete_extension_message">This extension is no longer available. It may not function properly and can cause issues with the app. Uninstalling it is recommended.</string>
<string name="unofficial_extension_message">This extension is not from the official list.</string>
<string name="extension_api_error">Failed to get extensions list</string>
<string name="extension_api_error">Failed to fetch available extensions</string>
<string name="ext_info_version">Version</string>
<string name="ext_info_language">Language</string>
<string name="ext_info_age_rating">Age rating</string>
@ -338,6 +332,7 @@
<string name="ext_installer_private" translatable="false">Private</string>
<string name="ext_installer_shizuku_stopped">Shizuku is not running</string>
<string name="ext_installer_shizuku_unavailable_dialog">Install and start Shizuku to use Shizuku as extension installer.</string>
<string name="ext_revoke_trust">Revoke trusted unknown extensions</string>
<!-- Extension repos -->
<string name="label_extension_repos">Extension repos</string>
@ -349,7 +344,7 @@
<string name="action_delete_repo">Delete repo</string>
<string name="invalid_repo_name">Invalid repo URL</string>
<string name="delete_repo_confirmation">Do you wish to delete the repo \"%s\"?</string>
<string name="repo_extension_message">This extension is from an external repo. Tap to view the repo.</string>
<string name="action_open_repo">Open source repo</string>
<!-- Reader section -->
<string name="pref_fullscreen">Fullscreen</string>
@ -685,9 +680,9 @@
<string name="display_mode_chapter">Chapter %1$s</string>
<string name="manga_display_interval_title">Estimate every</string>
<string name="manga_display_modified_interval_title">Set to update every</string>
<string name="manga_interval_header">Next update</string>
<!-- "... around 2 days" -->
<string name="manga_interval_expected_update">Next update expected in around %1$s, checking around every %2$s</string>
<string name="manga_interval_expected_update">New chapters predicted to be released in around %1$s, checking around every %2$s.</string>
<string name="manga_interval_expected_update_soon">Soon</string>
<string name="manga_interval_custom_amount">Custom update frequency:</string>
<string name="chapter_downloading_progress">Downloading (%1$d/%2$d)</string>
<string name="chapter_error">Error</string>

View File

@ -89,7 +89,6 @@
<string name="categories">Катэгорыі</string>
<string name="ext_uninstall">Выдаліць</string>
<string name="ext_untrusted">Ненадзейны</string>
<string name="ext_unofficial">Неафіцыйны</string>
<string name="ext_trust">Надзейны</string>
<string name="ext_installed">Усталяваны</string>
<string name="ext_installing">Устаноўка</string>
@ -185,7 +184,6 @@
<string name="pref_fullscreen">Поўнаэкранны рэжым</string>
<string name="ext_nsfw_warning">Можа ўтрымліваць кантэнт NSFW (18+)</string>
<string name="ext_nsfw_short">18+</string>
<string name="unofficial_extension_message">Гэта пашырэнне не ўваходзіць у афіцыйны спіс пашырэньні Tachiyomi.</string>
<string name="obsolete_extension_message">Гэта пашырэнне больш недаступна.</string>
<string name="untrusted_extension_message">Гэта пашырэнне было падпісана ненадзейным сертыфікатам і не было актывавана.
\n

View File

@ -383,8 +383,6 @@
<string name="invalid_backup_file">Невалиден резервен файл</string>
<string name="pref_show_reading_mode_summary">Накратко показване на текущия режим при отваряне на четеца</string>
<string name="pref_show_reading_mode">Покажи режим на четене</string>
<string name="unofficial_extension_message">Това разширение не е част от официалните разширения на Тачийоми.</string>
<string name="ext_unofficial">Неофициален</string>
<string name="pref_library_update_refresh_metadata_summary">Провери за нова корица и подробности при актуализиране на библиотеката</string>
<string name="pref_library_update_refresh_metadata">Автоматично обновяване на метаданните</string>
<string name="action_disable">Деактивирай</string>

View File

@ -365,8 +365,6 @@
<string name="pref_cutout_short">বিষয়বস্তু কাটআউটে দেখুন</string>
<string name="ext_nsfw_warning">প্রাপ্তবয়স্কদের (18+) কন্টেন্ট থাকতে পারে</string>
<string name="ext_nsfw_short">১৮+</string>
<string name="unofficial_extension_message">এক্সটেনশনটি তাচিওমির অনুমোদিত এক্সটেনশন তালিকায় নেই।</string>
<string name="ext_unofficial">অনুমোদনহীন</string>
<string name="ext_updates_pending">অনিষ্পন্ন হালনাগাদ</string>
<string name="pref_library_update_refresh_metadata_summary">সংগ্রহশালা হালনাগেদের সময় নতুন মোড়ক এবং বর্ণনা খুঁজুন</string>
<string name="pinned_sources">গাঁথুনিকৃত</string>
@ -625,7 +623,6 @@
<string name="pref_onboarding_guide">অনবর্ডিং গাইড</string>
<string name="onboarding_action_finish">শুরু করুন</string>
<string name="action_apply">এপ্লাই</string>
<string name="action_filter_interval_passed">চেক করার সময় পার হয়েছে</string>
<string name="onboarding_storage_selection_required">একটি ফোল্ডার অবশ্যই ঠিক করতে হবে</string>
<string name="onboarding_permission_notifications">নোটিফিকেশনের পারমিশন</string>
<string name="action_revert_to_default">সকল সেটিং ডিফল্ট করুন</string>
@ -643,5 +640,4 @@
<string name="sort_category_confirmation">আপনি কি বর্ণানুক্রমিকভাবে ফিল্টার করতে চান</string>
<string name="action_ok">ঠিক আছে</string>
<string name="action_sort_next_updated">পরবর্তী আপডেটের সম্ভাব্য সময়</string>
<string name="action_filter_interval_long">প্রতিমাসে রিফ্রেস করুন (২৮ দিন)</string>
</resources>

View File

@ -80,4 +80,9 @@
<item quantity="many">%d dies</item>
<item quantity="other">%d dies</item>
</plurals>
<plurals name="num_repos">
<item quantity="one">%d repositori</item>
<item quantity="many">%d repositoris</item>
<item quantity="other">%d repositoris</item>
</plurals>
</resources>

View File

@ -83,7 +83,7 @@
<string name="all">Tot</string>
<string name="pref_library_update_restriction">Restriccions del dispositiu per a les actualitzacions automàtiques</string>
<string name="charging">Quan sestigui carregant</string>
<string name="pref_update_only_non_completed">Amb lestat «Completat»</string>
<string name="pref_update_only_non_completed">Omet els elements amb lestat «Completat»</string>
<string name="pref_auto_update_manga_sync">Actualitza el progrés després de llegir</string>
<string name="default_category">Categoria per defecte</string>
<string name="default_category_summary">Demana-ho sempre</string>
@ -96,12 +96,12 @@
<string name="ext_trust">Confia-hi</string>
<string name="ext_untrusted">No és de confiança</string>
<string name="ext_uninstall">Desinstal·la</string>
<string name="untrusted_extension">Extensió no fiable</string>
<string name="untrusted_extension_message">Aquesta extensió sha signat amb un certificat que no és de confiança i no sha activat.
<string name="untrusted_extension">Extensió que no és de confiança</string>
<string name="untrusted_extension_message">Aquesta extensió lha signada algun autor desconegut i no sha carregat.
\n
\nUna extensió maliciosa podria llegir qualsevol credencial dinici de sessió desada o executar codi arbitrari.
\nLes extensions malicioses poden llegir qualsevol credencial dinici de sessió desada o executar codi arbitrari.
\n
\nSi confieu en aquest certificat, accepteu aquests riscos.</string>
\nSi confieu en el certificat daquesta extensió, accepteu aquests riscos.</string>
<string name="pref_fullscreen">Pantalla completa</string>
<string name="pref_page_transitions">Anima les transicions de pàgina</string>
<string name="pref_show_page_number">Mostra el número de pàgina</string>
@ -370,8 +370,6 @@
<string name="pref_true_color_summary">Redueix les bandes de colors, però pot afectar el rendiment</string>
<string name="tracking_info">La sincronització és unidireccional per a actualitzar el progrés dels capítols als serveis de seguiment externs. Configureu el seguiment delements individuals al seu botó de seguiment.</string>
<string name="pref_refresh_library_covers">Refresca les portades de la biblioteca</string>
<string name="unofficial_extension_message">Aquesta extensió no pertany a la llista dextensions oficials.</string>
<string name="ext_unofficial">No oficial</string>
<string name="sort_by_upload_date">Per data de pujada</string>
<string name="label_data">Dades</string>
<string name="backup_restore_missing_sources">Manquen fonts:</string>
@ -550,8 +548,8 @@
<string name="clear_database_source_item_count">Hi ha %1$d elements a la base de dades que no són a la biblioteca</string>
<string name="cancelled">Cancel·lada</string>
<string name="library_errors_help">Per a obtenir ajuda per a resoldre errors dactualització de la biblioteca, vegeu %1$s</string>
<string name="extension_api_error">No sha pogut obtenir la llista dextensions</string>
<string name="pref_update_only_completely_read">Amb capítols no llegits</string>
<string name="extension_api_error">No shan pogut obtenir les extensions disponibles</string>
<string name="pref_update_only_completely_read">Omet els elements amb capítols no llegits</string>
<string name="save_chapter_as_cbz">Desa com a arxiu CBZ</string>
<string name="backup_info">També hauríeu de desar còpies de les còpies de seguretat en altres llocs. Les còpies de seguretat poden contenir dades sensibles, incloent-hi les contrasenyes desades; aneu amb compte si les compartiu.</string>
<string name="database_clean">No hi ha res que calgui buidar</string>
@ -567,7 +565,7 @@
<string name="action_show_manga">Mostra lelement</string>
<string name="pref_navigate_pan">Fes panoràmiques les imatges amples</string>
<string name="action_display_cover_only_grid">Graella només a la portada</string>
<string name="pref_update_only_started">Que no shagin començat</string>
<string name="pref_update_only_started">Omet els elements no començats</string>
<string name="skipped_reason_completed">Sha omès perquè la sèrie està completada</string>
<string name="skipped_reason_not_started">Sha omès perquè no hi ha cap capítol llegit</string>
<string name="skipped_reason_not_caught_up">Sha omès perquè hi ha capítols no llegits</string>
@ -705,13 +703,10 @@
<string name="pref_page_rotate">Rota les pàgines amples perquè sajustin a la pantalla</string>
<string name="pref_debug_info">Informació de depuració</string>
<string name="action_set_interval">Estableix linterval</string>
<string name="action_filter_interval_custom">Interval dobtenció personalitzat</string>
<string name="action_filter_interval_custom">Freqüència dactualització personalitzat</string>
<string name="action_sort_next_updated">Pròxima actualització prevista</string>
<string name="action_filter_interval_long">Obtén mensualment (28 dies)</string>
<string name="action_filter_interval_late">Endarrerit 10 o més dies</string>
<string name="action_filter_interval_dropped">Abandonat\? Endarrerit 20 o més dies i 2 mesos</string>
<string name="action_ok">Dacord</string>
<string name="pref_update_only_in_release_period">Fora del període esperat de publicació</string>
<string name="pref_update_only_in_release_period">Preveu el moment del pròxim llançament</string>
<string name="intervals_header">Intervals</string>
<string name="manga_display_interval_title">Estima cada</string>
<string name="manga_display_modified_interval_title">Sactualitzarà cada</string>
@ -719,7 +714,6 @@
<string name="track_delete_remote_text">Elimina també de %s</string>
<string name="track_delete_text">Se neliminarà el seguiment local.</string>
<string name="skipped_reason_not_in_release_period">Sha omès perquè no se nespera cap publicació avui</string>
<string name="action_filter_interval_passed">Període de comprovació superat</string>
<string name="delete_downloaded">Suprimeix els baixats</string>
<string name="has_results">Té resultats</string>
<string name="syncing_library">Sestà sincronitzant la biblioteca</string>
@ -767,7 +761,7 @@
<string name="onboarding_action_finish">Comença</string>
<string name="onboarding_storage_selection_required">Cal que seleccioneu una carpeta</string>
<string name="onboarding_heading">Et donem la benvinguda!</string>
<string name="onboarding_guides_returning_user">Ja heu fet servir %s abans?</string>
<string name="onboarding_guides_returning_user">Heu reinstal·lat %s?</string>
<string name="onboarding_action_skip">Omet</string>
<string name="onboarding_action_next">Següent</string>
<string name="onboarding_description">Primer cal configurar unes quantes coses. Sempre podràs canviar aquestes opcions a la configuració.</string>
@ -785,8 +779,24 @@
<string name="onboarding_permission_notifications_description">Rebeu notificacions quan hi hagi actualitzacions de la biblioteca i més.</string>
<string name="onboarding_permission_action_grant">Permet</string>
<string name="available_disk_space_info">Disponible: %1$s / Total: %2$s</string>
<string name="manga_interval_expected_update">La pròxima actualització es farà pels volts de %s</string>
<string name="manga_interval_expected_update">Sha previst que sen publicaran nous capítols pels volts de %1$s, es comprova cada %2$s.</string>
<string name="invalid_backup_file_error">Error complet:</string>
<string name="ext_permission_install_apps_warning">Calen permisos per a instal·lar extensions. Premeu aquí per a concedir-les.</string>
<string name="private_settings">Inclou-hi configuració sensible (per exemple, testimonis dautenticació dels serveis de seguiment)</string>
<string name="label_extension_repos">Repositoris dextensions</string>
<string name="information_empty_repos">No heu definit cap repositori.</string>
<string name="action_delete_repo">Suprimeix el repositori</string>
<string name="action_add_repo_message">Afegiu repositoris addicionals al Tachiyomi. Ha de ser un URL que acabi amb «index.min.json».</string>
<string name="error_repo_exists">Aquest repositori ja existeix!</string>
<string name="invalid_repo_name">URL del repositori invàlid</string>
<string name="delete_repo_confirmation">Voleu suprimir el repositori «%s»?</string>
<string name="onboarding_storage_help_action">Guia demmagatzematge</string>
<string name="onboarding_storage_help_info">Heu actualitzat duna versió més antiga i no sabeu què heu de seleccionar? Consulteu la guia demmagatzematge per a més informació.</string>
<string name="theme_nord">Nòrdic</string>
<string name="pref_library_update_smart_update">Actualitzacions intel·lgents</string>
<string name="ext_revoke_trust">Revoca les extensions de confiança desconegudes</string>
<string name="action_add_repo">Afegeix un repositori</string>
<string name="label_add_repo_input">URL del repositori</string>
<string name="manga_interval_expected_update_soon">Aviat</string>
<string name="manga_interval_custom_amount">Freqüència dactualització personalitzada:</string>
</resources>

View File

@ -187,12 +187,10 @@
<string name="ext_installing">Pag-instalar</string>
<string name="ext_installed">Gi-install</string>
<string name="ext_trust">Pagsalig</string>
<string name="ext_unofficial">Dili opisyal</string>
<string name="ext_untrusted">Dili kasaligan</string>
<string name="ext_uninstall">I-uninstall</string>
<string name="untrusted_extension">Dili kasaligan nga extension</string>
<string name="obsolete_extension_message">Kini nga extension dili na magamit.</string>
<string name="unofficial_extension_message">Kini nga extension dili gikan sa opisyal nga listahan sa mga extension sa Tachiyomi.</string>
<string name="extension_api_error">Napakyas sa pagkuha sa listahan sa mga extension</string>
<string name="ext_nsfw_short">18+</string>
<string name="ext_nsfw_warning">Ang mga tinubdan gikan niini nga extension mahimong adunay sulod nga NSFW (18+)</string>

View File

@ -380,8 +380,6 @@
<string name="tapping_inverted_none">Žádné</string>
<string name="ext_nsfw_warning">Zdroje z tohoto rozšíření mohou obsahovat NSFW (18+) obsah</string>
<string name="ext_nsfw_short">18+</string>
<string name="unofficial_extension_message">Toto rozšíření není z oficiálního seznamu rozšíření.</string>
<string name="ext_unofficial">Neoficiální</string>
<string name="pref_library_update_refresh_metadata_summary">Kontrolovat dostupnost nových přebalů a detailů při aktualizaci knihovny</string>
<string name="pref_library_update_refresh_metadata">Automaticky obnovovat metadata</string>
<string name="parental_controls_info">Toto nastavení nemůže zamezit neoficiálním nebo špatně označeným rozšířením v zobrazování NSFW (18+) obsahu v aplikaci.</string>
@ -706,15 +704,11 @@
<string name="pref_chapter_swipe_start">Přejetí prstem doleva</string>
<string name="pref_double_tap_zoom">Přiblížení dvojitým klepnutím</string>
<string name="pref_library_columns_per_row">%d na řádek</string>
<string name="action_filter_interval_passed">Uplynulé kontrolní období</string>
<string name="action_filter_interval_custom">Přizpůsobený interval načítání</string>
<string name="action_filter_interval_long">Načíst měsíčně (28 dní)</string>
<string name="action_filter_interval_late">Pozdní kontrola 10+</string>
<string name="action_sort_next_updated">Další očekávaná aktualizace</string>
<string name="manga_display_interval_title">Odhadovat každý</string>
<string name="manga_display_modified_interval_title">Nastavit aktualizaci každých</string>
<string name="action_set_interval">Nastavit interval</string>
<string name="action_filter_interval_dropped">Opuštěný\? Pozdě 20+ a 2 měsíce</string>
<string name="pref_update_only_in_release_period">Mimo očekávané období vydání</string>
<string name="intervals_header">Intervaly</string>
<string name="skipped_reason_not_in_release_period">Přeskočeno, protože dnes nebylo očekáváno žádné vydání</string>

View File

@ -178,7 +178,6 @@
<string name="pref_update_only_non_completed">Серилӗх вӗҫленнӗ</string>
<string name="pref_category_about">Ап ҫинчен</string>
<string name="ext_untrusted">Шанчӑклӑ мар</string>
<string name="ext_unofficial">Чӑнлавлӑ мар</string>
<string name="ext_trust">Шанчӑклӑ</string>
<string name="ext_pending">Кӗтет</string>
<string name="backup_restore_missing_sources">Ҫук ҫӑл куҫсем:</string>
@ -237,7 +236,6 @@
<string name="pref_show_page_number">Ел шутне кӑтартни</string>
<string name="pref_double_tap_anim_speed">Икӗ хут пуссан эним хӑвӑртлӑхӗ</string>
<string name="pref_page_transitions">Елсем хушшипе енимлӗ куҫни</string>
<string name="unofficial_extension_message">Ҫак хушма Tachiyomi-н ӗҫ йӗркиллӗ хушмасен йат-йышне кӗмест.</string>
<string name="obsolete_extension_message">Ҫак хушмана урӑх кӗме май ҫук. Вӑл тӗрӗс мар ӗҫлеме тата апа йӑнӑшлаттарма пултарать. Ӑна катертме сӗнетпӗр.</string>
<string name="untrusted_extension_message">Ку хушмана шанчӑклӑ мар ӗнентерӳ хучӗпе алӑ пуснӑ тата ӑна пуҫарман.
\n
@ -561,15 +559,11 @@
<string name="ext_installer_pref">Ларткӑч</string>
<string name="ext_installer_shizuku_stopped">Shizuku ӗҫлемест</string>
<string name="ext_info_age_rating">Ҫул-ӳсӗм чаравӗ</string>
<string name="action_filter_interval_passed">Иртнӗ тапхӑр тӗрӗслевӗ</string>
<string name="action_sort_next_updated">Тепӗр кӗтӗнекен ҫӗнетӳпе</string>
<string name="pref_chapter_swipe">Сыпӑк туртни</string>
<string name="ext_install_service_notif">Хушма лартни…</string>
<string name="action_set_interval">Тӑтӑшлӑх палӑрт</string>
<string name="action_filter_interval_custom">Ӗнерӳллӗ илӳ тӑтӑшлӑхӗ</string>
<string name="action_filter_interval_long">Уйӑхлӑ илӳ (28 кун)</string>
<string name="action_filter_interval_late">Йулашки 10+ куна тӗрӗслени</string>
<string name="action_filter_interval_dropped">Пӑрахнӑ\? Йулашки 20+ кун тата 2 уйӑх</string>
<string name="ext_installer_legacy">Малтанхилле</string>
<string name="ext_installer_shizuku_unavailable_dialog">Shizuku-н хушма ларткӑча усӑ курма Shizuku ларт тата ҫут.</string>
<string name="action_ok">Йурӗ</string>

View File

@ -266,7 +266,6 @@
<string name="gray_background">Grå</string>
<string name="pref_relative_format_summary">\"%1$s\" i stedet for \"%2$s\"</string>
<string name="action_sort_next_updated">Næste forventede opdatering</string>
<string name="ext_unofficial">Uofficiel</string>
<string name="pref_browse_summary">Kilder, udvidelser, global søgning</string>
<string name="nav_zone_left">Venstre</string>
<string name="backup_created">Sikkerhedskopi oprettet</string>

View File

@ -76,7 +76,7 @@
<string name="all">Alle</string>
<string name="pref_library_update_restriction">Geräteeinschränkungen für automatische Aktualisierungen</string>
<string name="charging">Beim Laden</string>
<string name="pref_update_only_non_completed">Mit dem Status „Abgeschlossen“</string>
<string name="pref_update_only_non_completed">Einträge mit dem Status „Abgeschlossen“ überspringen</string>
<string name="pref_auto_update_manga_sync">Fortschritt nach dem Lesen aktualisieren</string>
<string name="default_category">Standardkategorie</string>
<string name="default_category_summary">Immer fragen</string>
@ -240,11 +240,11 @@
<string name="ext_installing">Wird installiert</string>
<string name="ext_installed">Installiert</string>
<string name="ext_uninstall">Deinstallieren</string>
<string name="untrusted_extension_message">Diese Erweiterung ist mit einem nicht vertrauenswürdigen Zertifikat unterschrieben und wurde nicht aktiviert.
<string name="untrusted_extension_message">Diese Erweiterung wurde von einem unbekannten Autor signiert und wurde deshalb nicht geladen.
\n
\nEine bösartige Erweiterung könnte gespeicherte Anmeldedaten auslesen oder einen schädlichen Code ausführen.
\nBösartige Erweiterungen können gespeicherte Anmeldedaten auslesen oder schädlichen Code ausführen.
\n
\nDurch das Vertrauen dieses Zertifikats akzeptierst du diese Risiken.</string>
\nDurch das Vertrauen des Zertifikats dieser Erweiterung akzeptierst du diese Risiken.</string>
<string name="double_tap_anim_speed_0">Keine Animation</string>
<string name="double_tap_anim_speed_normal">Normal</string>
<string name="double_tap_anim_speed_fast">Schnell</string>
@ -370,13 +370,11 @@
<string name="battery_optimization_setting_activity_not_found">Geräteeinstellungen konnten nicht geöffnet werden</string>
<string name="tracking_info">Einweg-Synchronisation zum Aktualisieren der Kapitelfortschritte in den externen Trackingdiensten. Richte Tracking für einzelne Einträge über deren jeweiligen Trackingbutton ein.</string>
<string name="pref_refresh_library_covers">Bibliothekscover aktualisieren</string>
<string name="unofficial_extension_message">Diese Erweiterung stammt nicht aus der offiziellen Liste.</string>
<string name="ext_unofficial">Inoffiziell</string>
<string name="sort_by_upload_date">Nach Uploaddatum</string>
<string name="label_data">Daten</string>
<string name="backup_restore_missing_sources">Fehlende Quellen:</string>
<string name="invalid_backup_file_missing_manga">Sicherung beinhaltet keinerlei Bibliothekseinträge.</string>
<string name="invalid_backup_file">Ungültige Sicherungsdatei</string>
<string name="invalid_backup_file">Ungültige Sicherungsdatei:</string>
<string name="pref_library_update_refresh_metadata_summary">Auf neue Cover und Details überprüfen, wenn die Bibliothek aktualisiert wird</string>
<string name="pref_library_update_refresh_metadata">Metadaten automatisch aktualisieren</string>
<string name="action_migrate">Migrieren</string>
@ -457,9 +455,7 @@
<string name="pref_dual_page_split">Breite Seiten aufteilen</string>
<string name="pref_dual_page_invert_summary">Falls die Platzierung der aufgeteilten Seiten nicht mit der Leserichtung übereinstimmt</string>
<string name="pref_dual_page_invert">Platzierung aufgeteilter Seiten umkehren</string>
<string name="backup_restore_content_full">Die Daten der Sicherungsdatei werden wiederhergestellt.
\n
\nDu musst jegliche fehlende Erweiterungen installieren und dich anschließend bei den Tracking-Anbietern einloggen, um sie zu benutzen.</string>
<string name="backup_restore_content_full">Du musst jegliche fehlende Erweiterungen installieren und dich anschließend bei den Tracking-Anbietern einloggen, um sie zu benutzen.</string>
<string name="pref_show_navigation_mode_summary">Kurz anzeigen, wenn der Leser geöffnet wird</string>
<string name="pref_show_navigation_mode">Tippzonen-Overlay anzeigen</string>
<string name="nav_zone_right">Rechts</string>
@ -559,7 +555,7 @@
<string name="database_clean">Nichts zu bereinigen</string>
<string name="extension_api_error">Herunterladen der Erweiterungsliste ist fehlgeschlagen</string>
<string name="privacy_policy">Datenschutzbestimmungen</string>
<string name="pref_update_only_completely_read">Mit ungelesenen Kapiteln</string>
<string name="pref_update_only_completely_read">Einträge mit ungelesen Kapiteln überspringen</string>
<string name="library_errors_help">Für Hilfe zum Beheben von Fehlern bei Bibliotheksaktualisierungen, siehe %1$s</string>
<string name="save_chapter_as_cbz">Als CBZ-Archiv speichern</string>
<string name="cancelled">Abgebrochen</string>
@ -569,7 +565,7 @@
<string name="action_display_cover_only_grid">Nur-Cover-Kacheln</string>
<string name="pref_landscape_zoom">Bei breiten Bildern automatisch hineinzoomen</string>
<string name="pref_navigate_pan">Innerhalb breiter Seiten navigieren</string>
<string name="pref_update_only_started">Die noch nicht begonnen wurden</string>
<string name="pref_update_only_started">Nicht begonnene Einträge überspringen</string>
<string name="skipped_reason_completed">Übersprungen, da die Serie abgeschlossen ist</string>
<string name="skipped_reason_not_caught_up">Übersprungen, weil es ungelesene Kapitel gibt</string>
<string name="skipped_reason_not_started">Übersprungen, weil keine Kapitel gelesen wurden</string>
@ -709,15 +705,11 @@
<string name="intervals_header">Intervalle</string>
<string name="action_filter_interval_custom">Benutzerdefiniertes Abrufintervall</string>
<string name="action_set_interval">Intervall einstellen</string>
<string name="action_filter_interval_long">Monatlich abrufen (28 Tage)</string>
<string name="action_sort_next_updated">Nächste erwartete Aktualisierung</string>
<string name="pref_update_only_in_release_period">Außerhalb des erwarteten Veröffentlichungszeitraums</string>
<string name="pref_update_only_in_release_period">Nächsten Veröffentlichungszeitpunkt vorhersagen</string>
<string name="skipped_reason_not_in_release_period">Übersprungen, da heute keine Veröffentlichung erwartet wurde</string>
<string name="manga_display_interval_title">Schätzt alle</string>
<string name="manga_display_modified_interval_title">Aktualisiert alle</string>
<string name="action_filter_interval_dropped">Abgebrochen\? Um 20+ Tage und 2 Monate verspätet</string>
<string name="action_filter_interval_passed">Überprüfungszeitraum überschritten</string>
<string name="action_filter_interval_late">Um 10+ Tage verspätet</string>
<string name="track_delete_text">Dies wird das lokale Tracking entfernen.</string>
<string name="track_delete_remote_text">Auch aus %s entfernen</string>
<string name="action_ok">OK</string>
@ -769,7 +761,7 @@
<string name="onboarding_action_finish">Loslegen</string>
<string name="onboarding_storage_selection_required">Es muss ein Ordner ausgewählt sein</string>
<string name="onboarding_heading">Willkommen!</string>
<string name="onboarding_guides_returning_user">%s bereits genutzt?</string>
<string name="onboarding_guides_returning_user">%s reinstallieren?</string>
<string name="onboarding_action_skip">Überspringen</string>
<string name="onboarding_action_next">Weiter</string>
<string name="onboarding_description">Lass uns zuerst ein paar Dinge einrichten. Du kannst diese später in den Einstellungen jederzeit ändern.</string>
@ -789,4 +781,19 @@
<string name="ext_permission_install_apps_warning">Für das Installieren von Erweiterungen sind Berechtigungen erforderlich. Tippe hier, um sie zu gewähren.</string>
<string name="private_settings">Sensible Einstellungen einbeziehen (z. B. Login-Token für Tracker)</string>
<string name="onboarding_permission_action_grant">Zulassen</string>
<string name="invalid_backup_file_error">Vollständiger Fehler:</string>
<string name="manga_interval_custom_amount">Benutzerdefinierte Aktualisierungshäufigkeit:</string>
<string name="label_extension_repos">Erweiterungs-Repositories</string>
<string name="information_empty_repos">Es wurden noch keine Repositories festgelegt.</string>
<string name="action_add_repo">Repository hinzufügen</string>
<string name="error_repo_exists">Dieses Repository existiert bereits!</string>
<string name="action_delete_repo">Repository löschen</string>
<string name="delete_repo_confirmation">Möchtest du das Repository „%s“ löschen?</string>
<string name="onboarding_storage_help_info">Du aktualisierst von einer älteren Version und bist dir nicht sicher, was du auswählen sollst? Schau dir den Speicherleitfaden für mehr Informationen an.</string>
<string name="onboarding_storage_help_action">Speicherleitfaden</string>
<string name="pref_library_update_smart_update">Intelligentes Aktualisieren</string>
<string name="label_add_repo_input">Repository-URL</string>
<string name="action_add_repo_message">Füge zusätzliche Repositories zu Tachiyomi hinzu. Deren URL sollte mit „index.min.json“ enden.</string>
<string name="invalid_repo_name">Ungültige Repository-URL</string>
<string name="manga_interval_expected_update">Nächste Aktualisierung erwartet in ca. %1$s, überprüfe ca. alle %2$s</string>
</resources>

View File

@ -370,8 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">Δεν ήταν δυνατό το άνοιγμα των ρυθμίσεων της συσκευής</string>
<string name="tracking_info">Μονόδρομος συγχρονισμός για ενημέρωση των υπηρεσιών εξωτερικής παρακολούθησης προόδου κεφαλαίων. Ρυθμίστε την παρακολούθηση για μεμονωμένες καταχωρήσεις από το κουμπί παρακολούθησης τους.</string>
<string name="pref_refresh_library_covers">Ανανέωση εξώφυλλων βιβλιοθήκης</string>
<string name="unofficial_extension_message">Αυτή η επέκταση δεν προέρχεται από την επίσημη λίστα.</string>
<string name="ext_unofficial">Ανεπίσημη</string>
<string name="sort_by_upload_date">Από ημερομηνία μεταφόρτωσης</string>
<string name="label_data">Δεδομένα</string>
<string name="backup_restore_missing_sources">Πηγές που λείπουν:</string>
@ -708,14 +706,10 @@
<string name="pref_library_columns_per_row">%d ανά σειρά</string>
<string name="action_set_interval">Ορισμός χρονικού διαστήματος</string>
<string name="action_filter_interval_custom">Προσαρμοσμένο διάστημα ανάκτησης</string>
<string name="action_filter_interval_dropped">Dropped\? Αργά 20+ και 2 μήνες</string>
<string name="action_filter_interval_late">Αργός έλεγχος 10+</string>
<string name="action_filter_interval_passed">Πέρασε την περίοδο ελέγχου</string>
<string name="pref_update_only_in_release_period">Εκτός αναμενόμενης περιόδου κυκλοφορίας</string>
<string name="intervals_header">Διαστήματα</string>
<string name="manga_display_interval_title">Εκτίμηση κάθε</string>
<string name="manga_display_modified_interval_title">Ρύθμιση για ενημέρωση κάθε</string>
<string name="action_filter_interval_long">Ανάκτηση μηνιαίως (28 ημέρες)</string>
<string name="action_sort_next_updated">Επόμενη αναμενόμενη ενημέρωση</string>
<string name="skipped_reason_not_in_release_period">Παραλείφθηκε επειδή δεν αναμενόταν κυκλοφορία σήμερα</string>
<string name="action_ok">Εντάξει</string>

View File

@ -90,7 +90,6 @@
<string name="action_previous_chapter">Antaŭa ĉapitro</string>
<string name="ext_uninstall">Malinstali</string>
<string name="ext_untrusted">Malfidanta</string>
<string name="ext_unofficial">Neoficiala</string>
<string name="ext_trust">Fidi</string>
<string name="ext_installed">Instalita</string>
<string name="ext_installing">Instalata</string>
@ -409,7 +408,6 @@
<string name="pref_read_with_volume_keys_inverted">Inversigi laŭtec-butonojn</string>
<string name="pref_inverted_colors">Inversigita</string>
<string name="pref_dual_page_split">Du-paĝa divido</string>
<string name="unofficial_extension_message">Ĉi tiu kromaĵo ne estas de la oficiala Tachiyomi kromaĵlisto.</string>
<string name="ext_pending">Atendantaj</string>
<string name="pref_update_only_non_completed">Nur ĝisdatigi okazantaj mangaojn</string>
<string name="restrictions">Limigoj: %s</string>
@ -462,5 +460,25 @@
<string name="label_downloaded">Elŝutita</string>
<string name="action_set_interval">Meti intervalon</string>
<string name="action_filter_interval_custom">Personaligita intervalo de elŝutoj</string>
<string name="action_filter_interval_long">Prenu ĉiumonate (28 tagoj)</string>
<string name="action_copy_to_clipboard">Kopii al tondujo</string>
<string name="delete_category">Forigi kategorion</string>
<string name="onboarding_storage_info">Elektu dosierujon kie %1$s estos konservonta ĉapitrajn elŝutojn, savkopiojn, kaj aliajn.
\n
\nDediĉita dosierujo estas rekomendita.
\n
\nElektita dosierujo: %2$s</string>
<string name="action_not_now">Ne nun</string>
<string name="action_display_language_badge">Lingvo</string>
<string name="onboarding_storage_action_select">Elekti dosierujon</string>
<string name="action_search_hint">Serĉi…</string>
<string name="delete_category_confirmation">Ĉu vi volas forigi la kategorion \"%s\"?</string>
<string name="action_apply">Apliki</string>
<string name="action_revert_to_default">Restarigi al defaŭltaj</string>
<string name="action_close">Fermi</string>
<string name="action_ok">Bone</string>
<string name="action_sort_category">Ordigi kategoriojn</string>
<string name="sort_category_confirmation">Ĉu vi volas ordigi la kategoriojn alfabete?</string>
<string name="action_remove_everything">Forigi ĉiojn</string>
<string name="onboarding_heading">Bonvenon!</string>
<string name="onboarding_action_skip">Preterpasi</string>
</resources>

View File

@ -23,7 +23,7 @@
<string name="action_add_category">Añadir categoría</string>
<string name="action_edit_categories">Editar categorías</string>
<string name="action_rename_category">Renombrar categoría</string>
<string name="action_move_category">Establecer categorías</string>
<string name="action_move_category">Asignar categorías</string>
<string name="action_edit_cover">Editar la portada</string>
<string name="action_pause">Pausar</string>
<string name="action_previous_chapter">Capítulo anterior</string>
@ -54,7 +54,7 @@
<string name="update_48hour">Cada 2 días</string>
<string name="pref_library_update_restriction">Restricciones de actualización automática del dispositivo</string>
<string name="charging">Mientras se carga la batería</string>
<string name="pref_update_only_non_completed">Saltarse títulos cuya publicación haya concluido</string>
<string name="pref_update_only_non_completed">Saltarse títulos cuyo estado de publicación sea «completado»</string>
<string name="pref_auto_update_manga_sync">Actualizar progreso al terminar un capítulo</string>
<string name="pref_fullscreen">Pantalla completa</string>
<string name="pref_page_transitions">Transiciones de página animadas</string>
@ -126,7 +126,7 @@
<string name="download_unread">Sin leer</string>
<string name="confirm_delete_chapters">¿Seguro que quieres eliminar los capítulos seleccionados\?</string>
<string name="reading">Leyendo</string>
<string name="completed">Concluido</string>
<string name="completed">Completado</string>
<string name="dropped">Abandonado</string>
<string name="on_hold">En espera</string>
<string name="plan_to_read">Para leer luego</string>
@ -135,7 +135,7 @@
<string name="status">Estado</string>
<string name="chapters">Capítulos</string>
<string name="dialog_with_checkbox_remove_description">Esto eliminará la fecha de lectura de este capítulo. ¿Estás seguro?</string>
<string name="dialog_with_checkbox_reset">Reiniciar todos los capítulos de este manga</string>
<string name="dialog_with_checkbox_reset">Reiniciar todos los capítulos de la serie actual</string>
<string name="chapter_progress">Pág: %1$d</string>
<string name="no_next_chapter">Siguiente capítulo no encontrado</string>
<string name="decode_image_error">No se pudo cargar la imagen</string>
@ -214,13 +214,13 @@
<string name="delete_downloads_for_manga">¿Quieres borrar los capítulos descargados?</string>
<string name="chapter_paused">Pausado</string>
<string name="manga_tracking_tab">Seguimiento</string>
<string name="error_category_exists">¡Ya existe una categoría con este nombre!</string>
<string name="error_category_exists">Ya existe una categoría con este nombre</string>
<string name="snack_categories_deleted">Categorías eliminadas</string>
<string name="snack_add_to_library">¿Añadir manga a la biblioteca\?</string>
<string name="picture_saved">Imagen guardada</string>
<string name="custom_filter">Filtro personalizado</string>
<string name="set_as_cover">Establecer como cubierta</string>
<string name="cover_updated">Cubierta actualizada</string>
<string name="set_as_cover">Poner como portada</string>
<string name="cover_updated">Se ha actualizado la portada de la serie</string>
<string name="notification_cover_update_failed">Error al actualizar la portada</string>
<string name="download_notifier_downloader_title">Descargador</string>
<string name="action_global_search">Búsqueda global</string>
@ -252,11 +252,9 @@
<string name="transition_no_previous">No hay ningún capítulo anterior</string>
<string name="migrate">Migrar</string>
<string name="copy">Copiar</string>
<string name="untrusted_extension_message">Esta extensión tiene una firma de un autor desconocido y no se ha podido cargar.
<string name="untrusted_extension_message">Una extensión maliciosa puede leer credenciales de inicio guardadas o ejecutar cualquier tipo de código en tu dispositivo.
\n
\nUna extensión maliciosa puede leer credenciales de inicio guardadas o ejecutar cualquier tipo de código en tu dispositivo.
\n
\nAl confiar en este certificado aceptas estos riesgos.</string>
\nAl marcar al autor como de confianza aceptas estos riesgos.</string>
<string name="double_tap_anim_speed_0">Sin animación</string>
<string name="manga_added_library">Añadido a biblioteca</string>
<string name="manga_removed_library">Quitado de biblioteca</string>
@ -371,8 +369,6 @@
<string name="battery_optimization_setting_activity_not_found">No se pudieron abrir los ajustes del dispositivo</string>
<string name="pref_refresh_library_covers">Actualizar las portadas de la biblioteca</string>
<string name="tracking_info">La sincronización de estos servicios solo funciona en un solo sentido. Cada elemento en tu biblioteca tiene un botón de seguimiento y tendrás que configurarlo a mano, uno a uno.</string>
<string name="unofficial_extension_message">Esta extensión no es de la lista oficial de extensiones.</string>
<string name="ext_unofficial">No oficial</string>
<string name="label_data">Datos</string>
<string name="backup_restore_missing_sources">Fuentes que faltan:</string>
<string name="invalid_backup_file_missing_manga">La copia de seguridad no contiene ningun elemento; la biblioteca está vacía.</string>
@ -391,7 +387,7 @@
<string name="action_start">Empezar</string>
<string name="loader_not_implemented_error">No se ha encontrado la fuente</string>
<string name="action_disable">Desactivar</string>
<string name="requires_app_restart">Es necesario reiniciar la aplicación para que surja efecto</string>
<string name="requires_app_restart">Es necesario reiniciar la aplicación para que surta efecto</string>
<string name="label_network">Red</string>
<string name="unknown_status">Estado desconocido</string>
<string name="tapping_inverted_both">Ambos</string>
@ -501,9 +497,9 @@
<string name="error_no_match">No se han encontrado coincidencias</string>
<string name="source_unsupported">Fuente no soportada</string>
<string name="unread">Sin leer</string>
<string name="error_sharing_cover">Error al compartir portada</string>
<string name="error_saving_cover">Error al guardar portada</string>
<string name="cover_saved">Portada guardada</string>
<string name="error_sharing_cover">Hubo un error al compartir la portada</string>
<string name="error_saving_cover">Hubo un error al guardar la portada</string>
<string name="cover_saved">Se ha guardado la portada</string>
<string name="manga_cover">Portada</string>
<string name="date">Fecha</string>
<string name="local_filter_order_by">Ordenar por</string>
@ -555,7 +551,7 @@
<string name="pref_auto_clear_chapter_cache">Limpiar la caché de capítulos al abrir la aplicación</string>
<string name="database_clean">Base de datos limpia</string>
<string name="clear_database_source_item_count">%1$d títulos que no pertenecen a la biblioteca en la base de datos</string>
<string name="extension_api_error">No se pudo descargar el listado de extensiones</string>
<string name="extension_api_error">No se han podido obtener las extensiones disponibles</string>
<string name="privacy_policy">Política de privacidad</string>
<string name="pref_update_only_completely_read">Saltarse títulos con capítulos por leer</string>
<string name="library_errors_help">Si necesitas ayuda para resolver los errores de actualización de la biblioteca mira en %1$s</string>
@ -616,7 +612,7 @@
<string name="pref_user_agent_string">Identificarse como otro navegador web («user agent»)</string>
<string name="pref_reset_user_agent_string">Volver a la identificación de navegador («user agent») original</string>
<string name="action_remove_everything">Quitar todo</string>
<string name="loader_rar5_error">La app no soporta el formato RARv5</string>
<string name="loader_rar5_error">La aplicación no es capaz de leer el formato RARv5</string>
<string name="appwidget_updates_description">Aquí aparecerá el contenido más reciente de tu biblioteca</string>
<string name="appwidget_unavailable_locked">El widget no está disponible cuando el bloqueo de aplicación está activo</string>
<string name="update_already_running">Ya se está actualizando</string>
@ -673,7 +669,7 @@
<string name="hour_short">%dh</string>
<string name="minute_short">%dm</string>
<string name="label_used">En uso</string>
<string name="not_applicable">No disponible</string>
<string name="not_applicable">¿?</string>
<string name="label_tracked_titles">En servicios de seguimiento</string>
<string name="label_downloaded">Descargados</string>
<string name="label_stats">Estadísticas</string>
@ -704,18 +700,14 @@
<string name="pref_chapter_swipe_end">Deslizar a la derecha</string>
<string name="pref_double_tap_zoom">Ampliar tocando dos veces la pantalla</string>
<string name="pref_library_columns_per_row">%d por fila</string>
<string name="action_filter_interval_late">Tras 10 o más días</string>
<string name="action_sort_next_updated">Próxima actualización prevista</string>
<string name="pref_update_only_in_release_period">Intentar predecir cuándo sale el siguiente número</string>
<string name="intervals_header">Intervalos</string>
<string name="action_filter_interval_passed">Ha pasado el período de comprobación</string>
<string name="manga_display_interval_title">Estimar cada</string>
<string name="action_filter_interval_dropped">¿Abandonado\? Tras más de 20 días y 2 meses</string>
<string name="manga_display_modified_interval_title">Forzar actualización cada</string>
<string name="skipped_reason_not_in_release_period">No se ha comprobado ninguna actualización hoy al no prever ninguna</string>
<string name="action_set_interval">Establecer intervalo</string>
<string name="action_filter_interval_custom">Intervalo de descarga personalizado</string>
<string name="action_filter_interval_long">Comprobar de forma mensual (28 días)</string>
<string name="action_filter_interval_custom">Frecuencia de actualización personalizada</string>
<string name="action_ok">Aceptar</string>
<string name="track_delete_title">¿Quieres desvincular %s?</string>
<string name="track_delete_text">Esto eliminará el seguimiento localmente.</string>
@ -788,8 +780,7 @@
<string name="ext_permission_install_apps_warning">Toca aquí para conceder los permisos necesarios para instalar extensiones.</string>
<string name="private_settings">Incluir datos privados, como las claves de inicio de sesión en plataformas de seguimiento</string>
<string name="invalid_backup_file_error">Descripción completa del problema:</string>
<string name="manga_interval_expected_update">Próxima actualización prevista en torno a %1$s, revisando cada %2$s</string>
<string name="repo_extension_message">Esta extensión proviene de un repositorio externo. Toca para verlo.</string>
<string name="manga_interval_expected_update">Se espera que se publiquen nuevos capítulos alrededor de %1$s, comprobando alrededor de cada %2$s.</string>
<string name="manga_interval_custom_amount">Frecuencia de actualización personalizada:</string>
<string name="error_repo_exists">El repositorio ya existe</string>
<string name="pref_library_update_smart_update">Actualizaciones inteligentes</string>
@ -797,11 +788,14 @@
<string name="action_add_repo_message">Añade más repositorios a Tachiyomi; la dirección URL tiene que terminar en «index.min.json».</string>
<string name="delete_repo_confirmation">¿Seguro que quieres borrar el repositorio «%s»?</string>
<string name="action_delete_repo">Borrar repositorio</string>
<string name="manga_interval_header">Próxima actualización</string>
<string name="action_add_repo">Añadir un repositorio</string>
<string name="information_empty_repos">Todavía no has añadido ningún repositorio.</string>
<string name="label_extension_repos">Repositorios de extensiones</string>
<string name="label_add_repo_input">Dirección URL del repositorio</string>
<string name="onboarding_storage_help_info">¿Acabas de actualizar desde una versión más antigua y no sabes qué hacer? Échale un vistazo a la guía de almacenamiento.</string>
<string name="onboarding_storage_help_action">Guía de almacenamiento</string>
<string name="theme_nord">Nord</string>
<string name="manga_interval_expected_update_soon">Pronto</string>
<string name="ext_revoke_trust">Revocar extensiones desconocidas de confianza</string>
<string name="action_open_repo">Ver el código del repositorio</string>
</resources>

View File

@ -60,7 +60,6 @@
<string name="dropped">Alde batera utzia</string>
<string name="status">Egoera</string>
<string name="untrusted_extension">Fidagarria ez den luzapena</string>
<string name="unofficial_extension_message">Luzapen hau ez da Tachiyomi-ren luzapenen zerrenda ofizialekoa.</string>
<string name="obsolete_extension_message">Luzapen hau jada ez dago eskuragarri.</string>
<string name="disabled">Desgaitua</string>
<string name="invalid_backup_file">Babeskopia fitxategi baliogabea</string>
@ -100,7 +99,6 @@
<string name="ext_pending">Egiteke</string>
<string name="ext_downloading">Deskargatzen</string>
<string name="ext_installing">Instalatzen</string>
<string name="ext_unofficial">Ez-ofiziala</string>
<string name="ext_nsfw_warning">NSFW (18+) edukia izan dezake</string>
<string name="ext_installer_pref">Instalatzailea</string>
<string name="pref_fullscreen">Pantaila osoa</string>
@ -583,7 +581,6 @@
<string name="label_started">Hasia</string>
<string name="label_local">Lokala</string>
<string name="label_downloaded">Deskargatuak</string>
<string name="action_filter_interval_long">Jaso hilabetero (28 egun)</string>
<string name="action_copy_to_clipboard">Kopiatu arbelera</string>
<string name="action_not_now">Orain ez</string>
<string name="delete_downloaded">Ezabatu deskargatuak</string>

View File

@ -210,7 +210,6 @@
<string name="pref_show_page_number">نمایش شماره صفحه</string>
<string name="pref_page_transitions">انمیشن‌های تغییر صفحه</string>
<string name="pref_fullscreen">تمام صفحه</string>
<string name="unofficial_extension_message">این افزونه در لیست افزونه‌های رسمی تاچیومی نیست.</string>
<string name="obsolete_extension_message">این افزونه دیگر در دسترس نیست. ممکن است به درستی کار نکند و باعث ایجاد مشکلاتی در برنامه شود. حذف نصب آن توصیه می شود.</string>
<string name="untrusted_extension_message">این افزونه با یک گواهی نامطمئن امضا شده است و فعال نشده است.
\n
@ -220,7 +219,6 @@
<string name="untrusted_extension">افزونه نامطمئن</string>
<string name="ext_uninstall">حذف نصب</string>
<string name="ext_untrusted">نامطمئن</string>
<string name="ext_unofficial">غیررسمی</string>
<string name="ext_trust">مورد اعتماد</string>
<string name="ext_installed">نصب شده</string>
<string name="ext_installing">در حال نصب</string>

View File

@ -370,8 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">Laiteasetuksia ei voitu avata</string>
<string name="tracking_info">Yksisuuntainen synkronointi lukujen seurantapalveluiden päivittämiseksi. Määritä yksittäisten mangamerkintöjen seuranta seurantapainikkeesta.</string>
<string name="pref_refresh_library_covers">Päivitä kirjaston manga-kannet</string>
<string name="unofficial_extension_message">Tämä laajennus ei ole virallisesta Tachiyomi-laajennusluettelosta.</string>
<string name="ext_unofficial">Epävirallinen</string>
<string name="sort_by_upload_date">Latauspäivämäärän mukaan</string>
<string name="label_data">Tiedot</string>
<string name="backup_restore_missing_sources">Puuttuvat lähteet:</string>

View File

@ -77,7 +77,7 @@
<string name="information_empty_category">Wala ka pang kategorya. Pindutin ang plus button para gumawa ng isa para sa pag-aayos ng iyong aklatan.</string>
<string name="information_empty_library">Bakante ang Aklatan mo</string>
<string name="information_no_recent_manga">Walang binasa kamakailan</string>
<string name="information_no_recent">Walang bago</string>
<string name="information_no_recent">Walang kamakailang mga update</string>
<string name="information_no_downloads">Walang dina-download</string>
<string name="label_help">Tulong</string>
<string name="label_extension_info">Tungkol sa extension</string>
@ -178,7 +178,6 @@
<string name="pref_page_transitions">I-animate ang paglipat-pahina</string>
<string name="pref_cutout_short">Ipakita ang laman sa cutout area</string>
<string name="pref_fullscreen">Naka-fullscreen</string>
<string name="unofficial_extension_message">Wala sa opisyal na listahan ang extension na ito.</string>
<string name="obsolete_extension_message">Hindi na available ang extension na ito. Maaaring hindi ito gumana nang maayos at maaaring magdulot ng mga isyu sa app. Inirerekomenda ang pag-uninstall nito.</string>
<string name="untrusted_extension_message">Ang extension na ito ay nilagdaan ng sinumang hindi kilalang author at hindi na-load.
\n
@ -189,7 +188,6 @@
<string name="ext_uninstall">I-uninstall</string>
<string name="ext_trust">Tiwala</string>
<string name="ext_untrusted">Kaduda-duda</string>
<string name="ext_unofficial">Di-opisyal</string>
<string name="ext_installed">Naka-install</string>
<string name="ext_installing">Ini-install</string>
<string name="ext_downloading">Dina-download</string>
@ -555,7 +553,7 @@
<string name="clear_database_source_item_count">%1$d na entry sa database na wala sa aklatan</string>
<string name="pref_auto_clear_chapter_cache">Linisin ang cache ng kabanata sa paglulunsad ng app</string>
<string name="database_clean">Walang malilinis</string>
<string name="extension_api_error">Bigong makuha ang listahan ng mga extension</string>
<string name="extension_api_error">Bigong makuha ng mga available na extension</string>
<string name="privacy_policy">Patakaran sa Pagkapribado</string>
<string name="library_errors_help">Para sa tulong sa pag-aayos ng mga error sa pag-update ng aklatan, tingnan ang %1$s</string>
<string name="pref_update_only_completely_read">Laktawan ang mga entry na hindi pa nababasang kabanata</string>
@ -681,7 +679,7 @@
<string name="label_stats">Istatistika</string>
<string name="pref_skip_dupe_chapters">Laktawan ang mga magkaparehong kabanata</string>
<string name="copied_to_clipboard_plain">Kinopya sa clipboard</string>
<string name="information_required_plain">*kailangan</string>
<string name="information_required_plain">*kinakailangan</string>
<string name="enhanced_services_not_installed">Mayroon ngunit hindi naka-install ang source: %s</string>
<string name="confirm_add_duplicate_manga">Mayroon kang entry sa iyong aklatan na magkapareho ng pangalan.
\n
@ -705,12 +703,8 @@
<string name="pref_library_columns_per_row">%d kada hilera</string>
<string name="pref_chapter_swipe_end">Mag-swipe ng pakanang pagkilos</string>
<string name="action_set_interval">Itakda ang pagitan</string>
<string name="action_filter_interval_custom">Ipasadya ang fetch interval</string>
<string name="action_filter_interval_late">Huling 10+ pagsusuri</string>
<string name="action_filter_interval_custom">Ipasadya ang dalas ng pag-update</string>
<string name="action_sort_next_updated">Susunod na inaasahang update</string>
<string name="action_filter_interval_dropped">Itinigil\? Huli ng 20+ at 2 buwan</string>
<string name="action_filter_interval_passed">Lumipas ang check period</string>
<string name="action_filter_interval_long">Kunin kada buwan (kada ika-28 na araw)</string>
<string name="manga_display_interval_title">Tantyahin bawat</string>
<string name="manga_display_modified_interval_title">Itakdang i-update bawat</string>
<string name="pref_update_only_in_release_period">Hulaan ang susunod na oras ng release</string>
@ -785,7 +779,7 @@
<string name="onboarding_permission_notifications_description">Maabisuhan para sa mga update sa aklatan at higit pa.</string>
<string name="onboarding_permission_action_grant">Payagan</string>
<string name="available_disk_space_info">Na magagamit: %1$s / Kabuuan: %2$s</string>
<string name="manga_interval_expected_update">Inaasahan ang susunod na update sa humigit-kumulang %1$s, na tumitingin sa bawat %2$s</string>
<string name="manga_interval_expected_update">Mga bagong kabanata na hinulaang ipapalabas sa humigit-kumulang %1$s, na tumitingin sa bawat %2$s.</string>
<string name="invalid_backup_file_error">Buong error:</string>
<string name="ext_permission_install_apps_warning">Kinakailangan ng permiso para mag-install ng mga extension. I-tap upang mapayagan ito.</string>
<string name="private_settings">Kasali ang mga sensitibong setting (hal., mga tracker login token)</string>
@ -799,9 +793,10 @@
<string name="action_delete_repo">Tanggalin ang repo</string>
<string name="label_add_repo_input">URL ng repo</string>
<string name="action_add_repo_message">Magdagdag ng mga karagdagang repo sa Tachiyomi. Dapat ito ay isang URL na nagtatapos sa \"index.min.json\".</string>
<string name="repo_extension_message">Ang extension na ito ay nagmula sa isang external na repo. I-tap para tignan ang repo.</string>
<string name="invalid_repo_name">Di-wastong URL ng repo</string>
<string name="manga_interval_header">Susunod na update</string>
<string name="delete_repo_confirmation">Gusto mo bang tanggalin ang repo na \"%s\"?</string>
<string name="manga_interval_custom_amount">Ipasadya ang update frequency:</string>
<string name="theme_nord">Nord</string>
<string name="manga_interval_expected_update_soon">Malapit na</string>
<string name="ext_revoke_trust">Bawiin ang mga pinagkakatiwalaang hindi kilalang extension</string>
</resources>

View File

@ -370,8 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">Impossible d\'ouvrir les paramètres de l\'appareil</string>
<string name="pref_refresh_library_covers">Actualiser les couvertures de la bibliothèque</string>
<string name="tracking_info">Synchronisation à sens unique pour mettre à jour la progression du chapitre dans les services de suivi. Configurez le suivi des entrées individuelles à partir de leur bouton de suivi.</string>
<string name="unofficial_extension_message">Cette extension ne fait pas partie de la liste officielle.</string>
<string name="ext_unofficial">Non officiel</string>
<string name="pref_library_update_refresh_metadata_summary">Vérifier s\'il y a une nouvelle couverture ou synopsis lors des mises à jour de la bibliothèque</string>
<string name="sort_by_upload_date">Par date de téléversement</string>
<string name="label_data">Donnée</string>
@ -704,10 +702,6 @@
<string name="pref_chapter_swipe">Glissement de chapitre</string>
<string name="pref_chapter_swipe_end">Action de glisser à droite</string>
<string name="pref_double_tap_zoom">Appuyez deux fois pour zoomer</string>
<string name="action_filter_interval_long">Recherche mensuelle (28 jours)</string>
<string name="action_filter_interval_late">Vérification tardive 10+</string>
<string name="action_filter_interval_dropped">Abandonné \? En retard de 20+ et 2 mois</string>
<string name="action_filter_interval_passed">Période de contrôle réussie</string>
<string name="action_sort_next_updated">Prochaine mise à jour prévue</string>
<string name="pref_update_only_in_release_period">Prochaine sortie prévue dans:</string>
<string name="action_set_interval">Définir l\'intervalle</string>

View File

@ -79,7 +79,6 @@
<string name="pref_fullscreen">Pantalla completa</string>
<string name="ext_nsfw_warning">As fontes desta extensión poden ter contido NSFW (+18)</string>
<string name="ext_nsfw_short">+18</string>
<string name="unofficial_extension_message">Esta extensión non é da lista de extensións oficiais de Tachiyomi.</string>
<string name="obsolete_extension_message">Esta extensión xa non está dispoñible. Pode que non funcione ben e cause problemas na aplicación. Recoméndase desinstalala.</string>
<string name="untrusted_extension_message">Esta extensión foi firmada cun certificado non confiable e non se activou.
\n
@ -89,7 +88,6 @@
<string name="untrusted_extension">Extensión non confiable</string>
<string name="ext_untrusted">Non confiable</string>
<string name="ext_uninstall">Desinstalar</string>
<string name="ext_unofficial">Non oficial</string>
<string name="ext_trust">De confianza</string>
<string name="ext_installed">Instaladas</string>
<string name="ext_installing">Instalando</string>

View File

@ -371,13 +371,11 @@
<string name="pref_update_only_started">זה עוד לא התחיל</string>
<string name="ext_update_all">עדכן הכל</string>
<string name="ext_trust">האמן</string>
<string name="unofficial_extension_message">ההרחבה הזאת לא נמצאת ברשימת ההרחבות הרשמיות של Tachiyomi.</string>
<string name="ext_nsfw_warning">עלול להכיל תוכן שלא מתאים למקום העבודה (18+)</string>
<string name="ext_install_service_notif">מתקין הרחבה…</string>
<string name="include">כלול: %s</string>
<string name="pref_show_navigation_mode_summary">הראה לזמן קצר כשפותחים את מצב הקריאה</string>
<string name="pref_show_reading_mode">הראה מצב קריאה</string>
<string name="ext_unofficial">בלתי רשמי</string>
<string name="ext_app_info">פרטי האפליקצייה</string>
<string name="extension_api_error">נכשל בקבלת רשימת ההרחבות</string>
<string name="ext_nsfw_short">18+</string>
@ -582,7 +580,6 @@
<string name="theme_tidalwave">גלים</string>
<string name="action_set_interval">קבע מרווח זמן</string>
<string name="action_filter_interval_custom">קבע מרווח זמן מותאם מראש לטעינה</string>
<string name="action_filter_interval_long">טען חודשית (28 ימים)</string>
<string name="unknown_title">כותרת לא מוכרת</string>
<string name="download_notifier_downloader_title">מנהל ההורדות</string>
<string name="exception_http">HTTP %d, בדוק באתר ב-WebView</string>
@ -597,9 +594,6 @@
<string name="action_not_now">לא עכשיו</string>
<string name="download_notifier_cache_renewal">בודק הורדות</string>
<string name="delete_downloaded">מחק הורדות</string>
<string name="action_filter_interval_late">בדוק 10+ באיחור</string>
<string name="action_filter_interval_dropped">נפל\? באיחור 20+ וחודשיים</string>
<string name="action_filter_interval_passed">תקופת בדיקה עברה</string>
<string name="action_sort_next_updated">העדכון הצפוי הבא</string>
<string name="pref_advanced_summary">הורד קבצי קריסה, אופטימיזציה לסוללה</string>
<string name="theme_lavender">לבנדר</string>

View File

@ -370,8 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">डिवाइस सेटिंग नहीं खोल सका</string>
<string name="tracking_info">ट्रैकिंग सेवाओं में अध्याय की प्रगति को अद्यतन करने के लिए एकतरफा सिंक। अपने ट्रैकिंग बटन से व्यक्तिगत प्रविष्टियों के लिए ट्रैकिंग सेट अप करें।</string>
<string name="pref_refresh_library_covers">रिफ्रेश पुस्तकालय मंगा कवर</string>
<string name="unofficial_extension_message">यह एक्सटेंशन आधिकारिक ताचियोमी एक्सटेंशन सूची से नहीं है।</string>
<string name="ext_unofficial">अनौपचारिक</string>
<string name="sort_by_upload_date">अपलोड तिथि द्वारा</string>
<string name="label_data">डेटा</string>
<string name="backup_restore_missing_sources">अनुपलब्ध स्रोत:</string>
@ -656,9 +654,6 @@
<string name="pref_security_summary">ऐप लॉक, सुरक्षित स्क्रीन</string>
<string name="action_set_interval">अंतराल निर्धारित करें</string>
<string name="action_filter_interval_custom">अनुकूलित लाने का अंतराल</string>
<string name="action_filter_interval_long">मासिक प्राप्त करें (28 दिन)</string>
<string name="action_filter_interval_late">देर से 10+ की जाँच</string>
<string name="action_filter_interval_dropped">छोड़ा हुआ\? देर से 20+ और 2 महीने</string>
<string name="intervals_header">अंतराल</string>
<string name="pref_chapter_swipe_end">दाईं ओर स्वाइप करने पर</string>
<string name="pref_chapter_swipe">अध्याय स्वाइप</string>

View File

@ -375,8 +375,6 @@
<string name="invalid_backup_file_missing_manga">Sigurnosna kopija ne sadrži unose u biblioteci.</string>
<string name="invalid_backup_file">Neispravna datoteka sigurnosne kopije</string>
<string name="tracking_info">Jednosmjerna sinkronizacija za aktualiziranje napretka poglavlja u eksternoj usluzi praćenja. Postavi praćenje pojedinačnih unosa manga putem gumba za praćenje.</string>
<string name="unofficial_extension_message">Ovo proširenje nije iz službenog popisa.</string>
<string name="ext_unofficial">Neslužbeno</string>
<string name="pref_library_update_refresh_metadata_summary">Provjeri nove naslovnice i pojedinosti prilikom aktualiziranja biblioteke</string>
<string name="pref_library_update_refresh_metadata">Automatski osvježi metapodatke</string>
<string name="action_migrate">Migriraj</string>
@ -708,7 +706,6 @@
<string name="pref_chapter_swipe_end">Prelistaj udesno</string>
<string name="action_set_interval">Postavi interval</string>
<string name="action_filter_interval_custom">Prilagođeni interval dohvaćanja</string>
<string name="action_filter_interval_long">Mjesečno dohvaćanje (28 dana)</string>
<string name="manga_display_interval_title">Procijeni svakih</string>
<string name="action_sort_next_updated">Sljedeće očekivano aktualiziranje</string>
<string name="manga_display_modified_interval_title">Postavi za aktualiziranje svakih</string>
@ -724,10 +721,7 @@
<string name="syncing_library">Sinkroniziranje biblioteke</string>
<string name="library_sync_complete">Sinkroniziranje biblioteke završeno</string>
<string name="information_cloudflare_help">Dodirni ovdje za pomoć s Cloudflareom</string>
<string name="action_filter_interval_dropped">Ispušteno\? Zadnjih 20 dana i 2 mjeseca</string>
<string name="track_activity_name">Prijava za uslugu praćenja</string>
<string name="action_filter_interval_passed">Prekoraöeno razdoblje provjere</string>
<string name="action_filter_interval_late">Provjera zadnjih 10 i više dana</string>
<string name="download_cache_invalidated">Indeks preuzimanja poništen</string>
<string name="create_backup_file_error">Nije bilo moguće stvoriti datoteku sigurnosne kopije</string>
<string name="licensed_manga_chapters_error">Licencirano Nema poglavlja za prikaz</string>

View File

@ -182,7 +182,6 @@
<string name="action_search_settings">Keresési beállítások</string>
<string name="action_sort_date_added">Dátum hozzáadva</string>
<string name="untrusted_extension">Nem megbízható bővítmény</string>
<string name="ext_unofficial">Nem hivatalos</string>
<string name="ext_obsolete">Elavult</string>
<string name="ext_updates_pending">Függőben lévő frissítések</string>
<string name="pref_library_update_refresh_metadata_summary">Új borító és részletek keresése a könyvtár frissítésekor</string>
@ -196,7 +195,6 @@
<string name="pref_show_reading_mode">Olvasó mód mutatása</string>
<string name="ext_nsfw_warning">Tartalmazhat felnőtt (18+) tartalmat</string>
<string name="ext_nsfw_short">18+</string>
<string name="unofficial_extension_message">Ez a bővítmény nem a hivatalos Tachiyomi bővítménylistából származik.</string>
<string name="obsolete_extension_message">Ez a bővítmény nem elérhető többé. Előfordulhat, hogy nem működik megfelelően, és problémákat okozhat az alkalmazásban. Az eltávolítása javasolt.</string>
<string name="add_to_library">Könyvtárhoz adás</string>
<string name="unknown_status">Ismeretlen állapot</string>
@ -689,10 +687,6 @@
<string name="pref_skip_dupe_chapters">Duplikált fejezetek átugrása</string>
<string name="action_set_interval">Időköz állítása</string>
<string name="action_filter_interval_custom">Egyedi lekérési időköz</string>
<string name="action_filter_interval_long">Lekérés hónaponta (28 nap)</string>
<string name="action_filter_interval_late">Késő 10+ ellenőrzés</string>
<string name="action_filter_interval_dropped">Dobott\? Késő 20+ és 2 hónap</string>
<string name="action_filter_interval_passed">Átment az ellenőrzési időszakon</string>
<string name="action_sort_next_updated">Következő várt frissítés</string>
<string name="pref_double_tap_zoom">Dupla koppintás a nagyításhoz</string>
<string name="pref_hide_in_library_items">Már könyvtári bejegyzések elrejtése</string>

View File

@ -368,8 +368,6 @@
<string name="battery_optimization_setting_activity_not_found">Tidak dapat membuka pengaturan perangkat</string>
<string name="pref_refresh_library_covers">Muat ulang sampul pustaka</string>
<string name="tracking_info">Sinkronisasi satu arah untuk memperbarui kemajuan bab di layanan pelacak eksternal. Siapkan pelacakan untuk setiap entri dari tombol pelacaknya.</string>
<string name="unofficial_extension_message">Ekstensi ini bukan dari daftar resmi.</string>
<string name="ext_unofficial">Tidak resmi</string>
<string name="pref_library_update_refresh_metadata_summary">Periksa sampul dan detail baru saat memperbarui pustaka</string>
<string name="pref_library_update_refresh_metadata">Segarkan metadata secara otomatis</string>
<string name="action_migrate">Pindah</string>
@ -706,11 +704,7 @@
<string name="pref_library_columns_per_row">%d per baris</string>
<string name="action_set_interval">Tetapkan jeda waktu</string>
<string name="action_filter_interval_custom">Interval pengambilan disesuaikan</string>
<string name="action_filter_interval_long">Ambil bulanan (28 hari)</string>
<string name="action_filter_interval_late">Cek 10+ terlambat</string>
<string name="skipped_reason_not_in_release_period">Dilewati karena tidak ada rilis yang diharapkan hari ini</string>
<string name="action_filter_interval_dropped">Berkurang\? Akhir 20+ dan 2 bulan</string>
<string name="action_filter_interval_passed">Melewati periode pemeriksaan</string>
<string name="action_sort_next_updated">Pembaruan yang diharapkan berikutnya</string>
<string name="intervals_header">Interval</string>
<string name="pref_update_only_in_release_period">Prediksikan waktu rilis selanjutnya</string>
@ -793,10 +787,8 @@
<string name="information_empty_repos">Anda tidak memiliki repositori yang ditetapkan.</string>
<string name="invalid_backup_file_error">Keseluruhan eror:</string>
<string name="error_repo_exists">Repositori ini sudah ada!</string>
<string name="manga_interval_header">Update selanjutnya</string>
<string name="label_add_repo_input">URL Repo</string>
<string name="invalid_repo_name">URL repo tidak valid</string>
<string name="repo_extension_message">Ekstensi ini dari repo eksternal. ketuk untuk lihat repo.</string>
<string name="private_settings">Sertakan pengaturan sensitif (contohnya, token login pelacak)</string>
<string name="ext_permission_install_apps_warning">Izin diperlukan untuk memasang ekstensi. Klik disini untuk memberi izin.</string>
<string name="action_delete_repo">Hapus repo</string>

View File

@ -377,8 +377,6 @@
<string name="backup_restore_missing_sources">Fonti mancanti:</string>
<string name="invalid_backup_file_missing_manga">Il backup non contiene alcuna voce di libreria.</string>
<string name="invalid_backup_file">File di backup invalido</string>
<string name="unofficial_extension_message">Questa estensione non è dalla lista ufficiale.</string>
<string name="ext_unofficial">Non ufficiale</string>
<string name="pref_library_update_refresh_metadata_summary">Controlla nuove copertine e descrizioni durante l\'aggiornamento della libreria</string>
<string name="pref_library_update_refresh_metadata">Ricarica metadati automaticamente</string>
<string name="action_display_show_tabs">Mostra schede delle categorie</string>
@ -707,14 +705,10 @@
<string name="pref_chapter_swipe_start">Azione di scorrimento a sinistra</string>
<string name="pref_library_columns_per_row">%d per riga</string>
<string name="action_set_interval">Imposta intervallo</string>
<string name="action_filter_interval_long">Recupera mensilmente (28 giorni)</string>
<string name="action_filter_interval_dropped">Abbandonato\? In ritardo tra 20 giorni e 2 mesi</string>
<string name="pref_update_only_in_release_period">Fuori dal periodo di rilascio previsto</string>
<string name="intervals_header">Intervalli</string>
<string name="manga_display_interval_title">Stima ogni</string>
<string name="action_filter_interval_custom">Intervallo di recupero personalizzato</string>
<string name="action_filter_interval_passed">Periodo di controllo superato</string>
<string name="action_filter_interval_late">In ritardo di 10+ giorni</string>
<string name="action_sort_next_updated">Prossimo aggiornamento previsto</string>
<string name="manga_display_modified_interval_title">Imposta l\'aggiornamento ogni</string>
<string name="skipped_reason_not_in_release_period">Saltato perché oggi non era previsto alcun rilascio</string>

View File

@ -344,8 +344,6 @@
<string name="filter_mode_multiply">乗算</string>
<string name="pref_true_color_summary">バンディングを軽減しますが、パフォーマンスを影響するかもしれません</string>
<string name="pref_cutout_short">画面の切り抜きエリアにも内容を表示</string>
<string name="unofficial_extension_message">この拡張機能は公式リストに含まれていません。</string>
<string name="ext_unofficial">非公式</string>
<string name="ext_updates_pending">更新あり</string>
<string name="pref_library_update_refresh_metadata_summary">ライブラリを更新時、新しい表紙と情報を確認します</string>
<string name="pref_library_update_refresh_metadata">メタデータを自動で更新</string>
@ -706,7 +704,6 @@
<string name="pref_double_tap_zoom">ダブルタップでズーム</string>
<string name="action_set_interval">間隔を設定</string>
<string name="action_filter_interval_custom">カスタマイズした取得間隔</string>
<string name="action_filter_interval_long">1か月毎に取得 (28日)</string>
<string name="action_sort_next_updated">次の更新予定</string>
<string name="pref_update_only_in_release_period">更新予定時間外</string>
<string name="intervals_header">間隔</string>
@ -718,9 +715,6 @@
<string name="track_delete_text">ローカルの追跡が削除されます。</string>
<string name="track_delete_remote_text">%s からも削除</string>
<string name="delete_downloaded">ダウンロードを削除</string>
<string name="action_filter_interval_late">レイト10+チェック</string>
<string name="action_filter_interval_dropped">落選? 20歳後半と2ヶ月</string>
<string name="action_filter_interval_passed">チェック期間を過ぎました</string>
<string name="action_ok">OK</string>
<string name="syncing_library">ライブラリを同期しています</string>
<string name="library_sync_complete">ライブラリを同期しました</string>

View File

@ -209,7 +209,6 @@
<string name="ext_install">pasang</string>
<string name="ext_installed">Ngetrap</string>
<string name="ext_trust">Pracaya</string>
<string name="ext_unofficial">Ora resmi</string>
<string name="untrusted_extension">Ekstensi ora kapracaya</string>
<string name="default_category_summary">Tansah takon</string>
<string name="pref_show_page_number">Tampilake nomer halaman</string>
@ -251,7 +250,6 @@
\n Ekstensi angkoro bisa maca kredensial login sing disimpen ing Tachiyomi utawa nglakokake kode sewenang-wenang.
\n
\n Kanthi percaya karo sertifikat iki, sampeyan nampa risiko kasebut.</string>
<string name="unofficial_extension_message">Ekstensi iki ora saka dhaptar ekstensi Tachiyomi resmi.</string>
<string name="ext_downloading">Ndownload</string>
<string name="pref_show_navigation_mode">Tampilake overlay zona tutul</string>
<string name="pref_library_update_categories_details">Manga ing kategori sing ora kalebu ora bakal dianyari sanajan uga ana ing kategori sing kalebu.</string>

View File

@ -117,7 +117,6 @@
<string name="ext_installed">დაისნტალირებული</string>
<string name="ext_downloading">იტვირთება</string>
<string name="ext_pending">მოლოდინში</string>
<string name="ext_unofficial">არაოფიციცალური</string>
<string name="ext_uninstall">წაშლა</string>
<string name="pref_fullscreen">მთლიან ეკრანზე</string>
<string name="pref_cutout_short">კონტენტის ჩვენება ჩამოჭრილ ადგილზე</string>
@ -351,7 +350,6 @@
<string name="ext_untrusted">არასანდო</string>
<string name="untrusted_extension">არასანდო დამატება</string>
<string name="obsolete_extension_message">დამატება ხელმისაწვდომი აღარაა. მან შეიძლება არასწორად იმუშაოს და აპლიკაციას პრობლემები შეუქმნას. გირჩევთ, წაშალოთ ის.</string>
<string name="unofficial_extension_message">დამატება არ არის Tachiyomi-ს ოფიციალური დამატებების სიიდან.</string>
<string name="pref_double_tap_anim_speed">ორჯერ დაჭერისას ანიმაციის სისწრაფე</string>
<string name="pref_true_color_summary">აუმჯობესებს ხარისხს, თუმცა ამცირებს წარმადობას</string>
<string name="pref_custom_brightness">გამოიყენე პერსონალიზებული სიკაშკაშე</string>

View File

@ -212,7 +212,6 @@
<string name="ext_installing">Орнатылуда</string>
<string name="ext_installed">Орнатылды</string>
<string name="ext_trust">Сенім</string>
<string name="ext_unofficial">Бейресми</string>
<string name="ext_untrusted">Сенімсіз</string>
<string name="ext_installer_shizuku_unavailable_dialog">Shizuku-ны кеңейту орнатушысы ретінде пайдалану үшін Shizuku-ны орнатып іске қосыңыз.</string>
<string name="pref_show_navigation_mode">Түрту аймақтарының қабаттасуын көрсету</string>
@ -243,7 +242,6 @@
\nЗиянды кеңейту Tachiyomi-де сақталған кез келген кіру тіркелгі деректерін оқуы немесе еркін кодты орындауы мүмкін.
\n
\nОсы сертификатқа сену арқылы сіз осы қауіп-қатерді қабылдайсыз.</string>
<string name="unofficial_extension_message">Бұл кеңейту Tachiyomi кеңейтулерінің ресми тізімінен емес.</string>
<string name="ext_nsfw_short">18+</string>
<string name="ext_nsfw_warning">Бұл кеңейту дереккөзінде NSFW (18+) мазмұны болуы мүмкін</string>
<string name="ext_install_service_notif">Кеңейту орнатылуда…</string>

View File

@ -191,7 +191,6 @@
<string name="label_backup">បម្រុងទុក និងស្ដារឡើងវិញ</string>
<string name="delete_downloaded">លុបអ្វីដែលបានទាញហើយ</string>
<string name="label_local">ក្នុងទូរស័ព្ទ</string>
<string name="action_filter_interval_passed">សូមឆែកមើលកំឡុងពេល</string>
<string name="on">បើក</string>
<string name="action_sort_category">តម្រៀបតាមថ្នាក់ក្រម</string>
<string name="action_update_category">ធ្វើបច្ចុប្បន្នភាពថ្នាក់ក្រម</string>
@ -211,5 +210,4 @@
<string name="action_sort_last_manga_update">ពិនិត្យបច្ចុប្បន្នភាពចុងក្រោយ</string>
<string name="delete_category">លុបថ្នាក់ក្រម</string>
<string name="action_sort_next_updated">ភាគថ្មីរំពឹងទុកនៅ</string>
<string name="action_filter_interval_long">ទាញចូលប្រចាំខែ (28 ថ្ងៃ)</string>
</resources>

View File

@ -370,8 +370,6 @@
<string name="creating_backup">ಬ್ಯಾಕಪ್ ರಚಿಸಲಾಗುತ್ತಿದೆ</string>
<string name="backup_choice">ನೀವು ಏನು ಬ್ಯಾಕಪ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಿ\?</string>
<string name="backup_in_progress">ಬ್ಯಾಕಪ್ ಈಗಾಗಲೇ ಪ್ರಗತಿಯಲ್ಲಿದೆ</string>
<string name="unofficial_extension_message">ಈ ವಿಸ್ತರಣೆಯು ಅಧಿಕೃತ ತಚಿಯೋಮಿ ವಿಸ್ತರಣೆಗಳ ಪಟ್ಟಿಯಿಂದಲ್ಲ.</string>
<string name="ext_unofficial">ಅನಧಿಕೃತ</string>
<string name="sort_by_upload_date">ಅಪ್‌ಲೋಡ್ ದಿನಾಂಕದ ಮೂಲಕ</string>
<string name="label_data">ಡೇಟಾ</string>
<string name="backup_restore_missing_sources">ಕಾಣೆಯಾದ ಮೂಲಗಳು:</string>

View File

@ -335,7 +335,6 @@
<string name="tapping_inverted_horizontal">수평 반전</string>
<string name="pref_grayscale">그레이스케일</string>
<string name="pref_dual_page_split">넓은 페이지 분할</string>
<string name="ext_unofficial">비공식</string>
<string name="action_display_comfortable_grid">보기 편한 격자</string>
<string name="pref_dark_theme_pure_black">다크 모드에 검정색 사용</string>
<string name="pref_app_theme">앱 테마</string>
@ -528,7 +527,6 @@
<string name="theme_strawberrydaiquiri">딸기 칵테일</string>
<string name="extension_api_error">확장 앱 목록 가져오기 실패</string>
<string name="exclude">제외: %s</string>
<string name="unofficial_extension_message">이 확장앱은 공식 확장앱이 아닙니다.</string>
<string name="tracking_info">트래킹 서비스에 항목 진행 상황을 업데이트합니다. 트래킹 버튼을 이용하여 각각의 항목 별로 트래킹을 설정하세요.</string>
<string name="tracking_guide">트래커 가이드</string>
<string name="enhanced_services">향상된 트래킹 서비스</string>
@ -708,7 +706,6 @@
<string name="pref_double_tap_zoom">두 번 탭하여 줌</string>
<string name="action_set_interval">간격 설정</string>
<string name="action_filter_interval_custom">사용자 지정 가져오기 간격</string>
<string name="action_filter_interval_long">매월 가져오기 (28일)</string>
<string name="intervals_header">간격</string>
<string name="delete_downloaded">다운로드 삭제</string>
<string name="has_results">결과가 있는 것만 보기</string>
@ -717,12 +714,10 @@
<string name="action_ok">OK</string>
<string name="skipped_reason_not_in_release_period">오늘 연재가 예상되지 않았기 때문에 건너뛰었습니다</string>
<string name="track_delete_title">%s 동기화를 삭제 하시겠습니까\?</string>
<string name="action_filter_interval_passed">체크 기간이 지났습니다</string>
<string name="pref_update_only_in_release_period">연재 예정 기간 제외</string>
<string name="download_cache_invalidated">다운로드 인덱스를 제거함</string>
<string name="action_sort_next_updated">다음 업데이트 예정</string>
<string name="information_cloudflare_help">탭하여 Cloudflare에 관한 도움말 보기</string>
<string name="action_filter_interval_late">일별 가져오기 (10일 이상)</string>
<string name="unlock_app_title">%s를 잠금해제</string>
<string name="manga_display_modified_interval_title">항상 업데이트 하도록 설정</string>
<string name="syncing_library">서재를 동기화합니다</string>
@ -731,7 +726,6 @@
<string name="action_move_to_bottom_all_for_series">이 시리즈를 맨 아래로 이동</string>
<string name="licensed_manga_chapters_error">라이센스 제한 - 회차를 표시할 수 없습니다</string>
<string name="exception_offline">인터넷에 연결되지 않음</string>
<string name="action_filter_interval_dropped">포기했나요\? 20일 ~ 2달 이내</string>
<string name="manga_display_interval_title">항상 평가하기</string>
<string name="track_activity_name">트래킹 서비스 로그인</string>
<string name="exception_http">HTTP %d, WebView의 웹 사이트를 확인해 주세요</string>

View File

@ -185,7 +185,6 @@
<string name="pref_fullscreen">Pilno ekrano rėžimas</string>
<string name="ext_nsfw_warning">Šaltiniuose gali būti N18 turinio</string>
<string name="ext_nsfw_short">18+</string>
<string name="unofficial_extension_message">Šis plėtinys nėra iš oficialaus Tachiyomi sąrašo.</string>
<string name="obsolete_extension_message">Šis plėtinys nebėra prieinamas. Plėtinys gali veikti netinkamai arba sukelti problemas programėlėje. Rekomenduojama išdiegti plėtinį.</string>
<string name="untrusted_extension_message">Šis plėtinys buvo pasirašytas nepatikimu sertifikatu ir nebuvo aktyvuotas.
\n
@ -197,7 +196,6 @@
<string name="ext_uninstall">Šalinti</string>
<string name="ext_trust">Patikimas</string>
<string name="ext_untrusted">Nepatikimas</string>
<string name="ext_unofficial">Neoficiali</string>
<string name="ext_installed">Įdiegtas</string>
<string name="ext_installing">Diegiasi</string>
<string name="ext_downloading">Siunčiasi</string>

View File

@ -263,10 +263,8 @@
<string name="ext_updates_pending">Gaida atjauninājumu</string>
<string name="ext_installed">Instalēts</string>
<string name="ext_trust">Uzticams</string>
<string name="ext_unofficial">Neoficiāls</string>
<string name="ext_untrusted">Neuzticams</string>
<string name="obsolete_extension_message">Šis paplašinājums vairs nav pieejams. Tas var nedarboties pareizi un var radīt problēmas ar lietotni. Ieteicams to atinstalēt.</string>
<string name="unofficial_extension_message">Šis paplašinājums nav no oficiālā saraksta.</string>
<string name="pref_dual_page_split">Sadalīt platas lapas</string>
<string name="pref_dual_page_invert">Apvērst dalītās lapas izvietojumu</string>
<string name="pref_cutout_short">Rādīt saturu izgriezuma apgabalā</string>
@ -713,8 +711,6 @@
<string name="manga_display_interval_title">Novērtēt katru</string>
<string name="action_set_interval">Iestatīt intervālu</string>
<string name="action_filter_interval_custom">Pielāgots datu iegūšanas intervāls</string>
<string name="action_filter_interval_long">Iegūt katru mēnesi (28 dienas)</string>
<string name="action_filter_interval_passed">Nokārtots pārbaudes periods</string>
<string name="action_sort_next_updated">Nākamais gaidāmais atjauninājums</string>
<string name="track_activity_name">Pieteikšanās izsekošana</string>
<string name="syncing_library">Sinhronizē bibliotēku</string>
@ -728,8 +724,6 @@
<string name="pref_double_tap_zoom">Dubult-pieskarieties, lai tuvinātu</string>
<string name="pref_library_columns_per_row">%d katrā rindā</string>
<string name="unlock_app_title">Atbloķēt %s</string>
<string name="action_filter_interval_late">Par vēlu +10 pārbaudes</string>
<string name="action_filter_interval_dropped">Pametāt\? Par vēlu +20 un 2 mēnešus</string>
<string name="pref_chapter_swipe">Vilkt nodaļas</string>
<string name="manga_display_modified_interval_title">Atjaunināt katru</string>
<string name="exception_http">HTTP %d, pārbaudiet vietni iekš WebView</string>

View File

@ -191,9 +191,7 @@
<string name="pref_library_columns">आयटम प्रती पंक्ती</string>
<string name="pref_category_display">दाखवा</string>
<string name="hide_notification_content">सूचना सामग्री लपवा</string>
<string name="unofficial_extension_message">हा विस्तार अधिकृत ताचिओमी विस्तार सूचीतून नाही.</string>
<string name="double_tap_anim_speed_normal">सामान्य</string>
<string name="ext_unofficial">अनधिकृत</string>
<string name="pref_viewer_nav">नैविगेशन माध्य</string>
<string name="nav_zone_right">उजवी</string>
<string name="nav_zone_left">डावी</string>
@ -216,6 +214,5 @@
<string name="off">बंद</string>
<string name="action_set_interval">मध्यांतर</string>
<string name="action_filter_tracked">ट्रॅक केले</string>
<string name="action_filter_interval_long">मासिक फेच (२८ दिवस)</string>
<string name="action_filter_interval_custom">कस्टमाईज्ड फेच इंटरवल</string>
</resources>

View File

@ -375,8 +375,6 @@
<string name="backup_restore_missing_sources">Tiada sumber:</string>
<string name="invalid_backup_file_missing_manga">Sandaran tidak mengandungi apa-apa entri pustaka.</string>
<string name="invalid_backup_file">Fail sandaran tidak sah</string>
<string name="unofficial_extension_message">Sambungan ini bukan daripada senarai yang rasmi.</string>
<string name="ext_unofficial">Tidak rasmi</string>
<string name="pref_library_update_refresh_metadata_summary">Semak muka hadapan dan tentang baharu bila mengemaskini pustaka</string>
<string name="pref_library_update_refresh_metadata">Segar semula metadata secara automatik</string>
<string name="action_migrate">Pindah sumber</string>
@ -708,16 +706,12 @@
<string name="pref_chapter_swipe_start">Tindakan leret ke kiri</string>
<string name="action_set_interval">Tetapkan jarak masa</string>
<string name="action_filter_interval_custom">Jarak masa diambil tersuai</string>
<string name="action_filter_interval_long">Ambil bulanan (28 hari)</string>
<string name="action_filter_interval_late">Lewat semak 10+</string>
<string name="action_filter_interval_dropped">Diabaikan\? Lewat 20+ dan 2 bulan</string>
<string name="action_sort_next_updated">Kemas kini seterusnya dijangka</string>
<string name="manga_display_modified_interval_title">Tetapkan untuk kemas kini setiap</string>
<string name="skipped_reason_not_in_release_period">Dilangkau kerana tiada keluaran yang dijangkakan hari ini</string>
<string name="intervals_header">Jarak masa</string>
<string name="pref_update_only_in_release_period">Diluar jangkaan masa keluaran</string>
<string name="manga_display_interval_title">Anggaran setiap</string>
<string name="action_filter_interval_passed">Melepasi tempoh semak</string>
<string name="track_delete_title">Buang penjejakan %s\?</string>
<string name="track_delete_text">Ini akan membuang penjejakan secara lokal.</string>
<string name="action_ok">OK</string>

View File

@ -64,4 +64,8 @@
<item quantity="one">%d dag</item>
<item quantity="other">%d dager</item>
</plurals>
<plurals name="num_repos">
<item quantity="one">%d pakkebrønn</item>
<item quantity="other">%d pakkebrønner</item>
</plurals>
</resources>

View File

@ -250,11 +250,9 @@
<string name="label_help">Hjelp</string>
<string name="action_display_download_badge">Last ned kapitler</string>
<string name="pref_library_columns">Rutenettstørrelse</string>
<string name="untrusted_extension_message">Denne utvidelsen ble signert av en ukjent forfatter og ble dermed ikke lastet inn.
<string name="untrusted_extension_message">Skadelige utvidelser kan lese alle lagrede innloggingsdetaljer eller kjøre vilkårlig kode.
\n
\nSkadelige utvidelser kan lese alle lagrede innloggingsdetaljer eller kjøre vilkårlig kode.
\n
\nVed å godta dette sertifikatet til utvidelsen, aksepterer du disse risikoene.</string>
\nVed å godta denne utvidelsen, aksepterer du disse risikoene.</string>
<string name="pref_double_tap_anim_speed">Animasjonshastighet ved dobbelklikk</string>
<string name="pager_viewer">Sider</string>
<string name="confirm_set_image_as_cover">Bruk dette bildet som omslag\?</string>
@ -339,7 +337,6 @@
<string name="hide_notification_content">Skjul merknadsinnhold</string>
<string name="secure_screen_summary">Sikker skjerm skjuler programinnhold ved bytting av programmer og blokker skjermavbildninger</string>
<string name="label_downloaded_only">Kun nedlastet</string>
<string name="ext_unofficial">Uoffisiell</string>
<string name="viewer">Lesemodus</string>
<string name="information_cloudflare_bypass_failure">Klarte ikke bypassere Cloudflare</string>
<string name="updating_library">Oppdaterer bibliotek</string>
@ -374,7 +371,6 @@
<string name="restoring_backup_canceled">Avbrutt gjenoppretting</string>
<string name="restore_in_progress">Gjenoppretting allerede underveis</string>
<string name="pref_show_reading_mode">Vis lesemodus</string>
<string name="unofficial_extension_message">Denne utvidelsen kommer ikke fra den offisielle listen.</string>
<string name="action_disable">deaktivere</string>
<string name="action_disable_all">deaktiver alle</string>
<string name="action_enable_all">aktiver alle</string>
@ -569,7 +565,7 @@
<string name="pref_navigate_pan">Panorer brede bilder</string>
<string name="clear_database_source_item_count">%1$d ikke-bibliotek oppføringer i databasen</string>
<string name="action_move_to_top_all_for_series">Flytt serien til toppen</string>
<string name="extension_api_error">Kunne ikke hente utvidelseslisten</string>
<string name="extension_api_error">Klarte ikke å hente tilgjengelige utvidelser</string>
<string name="rotation_reverse_portrait">Omvendt portrett</string>
<string name="pref_auto_clear_chapter_cache">Tøm kapittel hurtigbufferen ved oppstart av appen</string>
<string name="notification_update_error">%1$d oppdatering(er) mislyktes</string>
@ -633,7 +629,7 @@
<string name="action_search_hint">Søk…</string>
<string name="action_remove_everything">Fjern alt</string>
<string name="ext_info_version">Versjon</string>
<string name="custom_cover">Tilpasset omslag</string>
<string name="custom_cover">Egendefinert omslag</string>
<string name="popular">Populært</string>
<string name="appwidget_updates_description">Se de nylig oppdaterte biblotekoppføringene dine</string>
<string name="appwidget_unavailable_locked">Moduler er ikke tilgjengelig når applås er aktivert</string>
@ -703,13 +699,9 @@
<string name="manga_display_modified_interval_title">Sett til å oppdatere hver</string>
<string name="skipped_reason_not_in_release_period">Hoppet over fordi ingen utgivelse var forventet i dag</string>
<string name="pref_chapter_swipe">Kapittelsveip</string>
<string name="action_filter_interval_long">Oppdater månedlig (28 dager)</string>
<string name="action_set_interval">Sett intervall</string>
<string name="action_filter_interval_custom">Tilpasset oppdateringsintervall</string>
<string name="action_filter_interval_late">Sen 10+ sjekk</string>
<string name="action_filter_interval_passed">Passert sjekkperiode</string>
<string name="action_filter_interval_custom">Egendefinert oppdateringsintervall</string>
<string name="action_sort_next_updated">Neste forventede oppdatering</string>
<string name="action_filter_interval_dropped">Droppet\? Sen 20+ og 2 måneder</string>
<string name="pref_chapter_swipe_end">Sveip til høyre handling</string>
<string name="intervals_header">Intervaller</string>
<string name="manga_display_interval_title">Anslå hver</string>
@ -777,8 +769,7 @@
\nEn dedikert mappe anbefales.
\n
\nValgt mappe: %2$s</string>
<string name="repo_extension_message">Denne utvidelsen er fra en ekstern pakkebrønn. Trykk for å se pakkebrønnen.</string>
<string name="manga_interval_expected_update">Neste oppdatering forventes om omtrent %1$s, sjekker omtrent hver %2$s</string>
<string name="manga_interval_expected_update">Nye kapitler forventes om omtrent %1$s, sjekker omtrent hver %2$s.</string>
<string name="onboarding_permission_notifications">Tillat varslinger</string>
<string name="onboarding_permission_install_apps">Tillat å installere apper</string>
<string name="available_disk_space_info">Tilgjengelig: %1$s / Totalt: %2$s</string>
@ -796,10 +787,15 @@
<string name="ext_permission_install_apps_warning">Tillatelse er nødvendig for å installere utvidelser. Trykk her for å tillate.</string>
<string name="delete_repo_confirmation">Ønsker du å slette pakkebrønnen \"%s\"?</string>
<string name="action_delete_repo">Slett pakkebrønn</string>
<string name="manga_interval_header">Neste oppdatering</string>
<string name="action_add_repo">Legg til pakkebrønn</string>
<string name="private_settings">Inkluder sensitive innstillinger (f.eks., innloggingstoken for sporer)</string>
<string name="information_empty_repos">Du har ingen pakkebrønner satt opp.</string>
<string name="onboarding_permission_action_grant">Tillat</string>
<string name="label_extension_repos">Utvidelsepakkebrønner</string>
<string name="onboarding_storage_help_info">Oppdaterer du fra en eldre versjon og er usikker på hva du skal velge? Sjekk lagringsguiden for mer informasjon.</string>
<string name="onboarding_storage_help_action">Lagringsguiden</string>
<string name="theme_nord">Nord</string>
<string name="manga_interval_expected_update_soon">Snart</string>
<string name="ext_revoke_trust">Fjern tilliten til ukjente utvidelser</string>
<string name="action_open_repo">Åpne pakkebrønnen</string>
</resources>

View File

@ -189,7 +189,6 @@
<string name="ext_installed">स्थापना गरियो</string>
<string name="ext_trust">विश्वास</string>
<string name="obsolete_extension_message">यो एक्सटेन्शन अब उपलब्ध छैन। यसले राम्ररी काम नगर्न सक्छ र एपमा समस्या ल्याउन सक्छ। यसलाई अनइन्स्टल गर्न सिफारिस गरिन्छ।</string>
<string name="unofficial_extension_message">यो एक्सटेन्शन आधिकारिक सूचीबाट होइन।</string>
<string name="ext_nsfw_warning">यस एक्सटेन्शनको स्रोतहरूमा NSFW (१८+) सामग्री समावेश हुन सक्छ</string>
<string name="ext_install_service_notif">एक्सटेन्शन स्थापना गर्दै…</string>
<string name="ext_installer_shizuku_stopped">Shizuku चलिरहेको छैन</string>
@ -219,7 +218,6 @@
<string name="ext_downloading">डाउनलोड गर्दै</string>
<string name="ext_installing">स्थापना गर्दै</string>
<string name="ext_untrusted">अविश्वसनीय</string>
<string name="ext_unofficial">अनौपचारिक</string>
<string name="ext_nsfw_short">१८+</string>
<string name="filter_mode_overlay">ओभरले</string>
<string name="pref_skip_filtered_chapters">फिल्टर गरिएका अध्यायहरू छोड्नुहोस्</string>
@ -708,16 +706,12 @@
<string name="pref_library_columns_per_row">%d प्रति पङ्क्ति</string>
<string name="action_set_interval">अन्तराल सेट गर्नुहोस्</string>
<string name="action_filter_interval_custom">कस्टम गरिएको ल्याउने अन्तराल</string>
<string name="action_filter_interval_long">मासिक ल्याउनुहोस् (२८ दिन)</string>
<string name="manga_display_modified_interval_title">प्रत्येक अपडेट गर्न सेट गर्नुहोस्</string>
<string name="skipped_reason_not_in_release_period">छोडियो किनभने आज कुनै रिलीज अपेक्षित थिएन</string>
<string name="intervals_header">अन्तरालहरू</string>
<string name="action_filter_interval_late">ढिलो १०+ जाँच</string>
<string name="action_filter_interval_passed">जाँच अवधि पार भयो</string>
<string name="action_sort_next_updated">अर्को अपेक्षित अपडेट</string>
<string name="pref_update_only_in_release_period">अपेक्षित रिलीज अवधि बाहिर</string>
<string name="manga_display_interval_title">प्रत्येक अनुमान लगाउनुहोस्</string>
<string name="action_filter_interval_dropped">छोडियो\? ढिलो २०+ र २ महिना</string>
<string name="track_delete_title">%s ट्र्याकिङ हटाउने हो\?</string>
<string name="track_delete_remote_text">%s बाट पनि हटाउनुहोस्</string>
<string name="track_delete_text">यसले लोकल रूपमा ट्र्याकिङ हटाउनेछ।</string>

View File

@ -370,8 +370,6 @@
<string name="pref_true_color_summary">Vermindert kleurstrepen, maar beïnvloedt de prestaties</string>
<string name="pref_refresh_library_covers">Omslagen van manga in bibliotheek bijwerken</string>
<string name="tracking_info">Eenzijdige synchronisatie om voortang van hoofdstukken bij te werken bij externe trackerdiensten. Stel tracking in bij individuele items via de \"Tracking\"-knop.</string>
<string name="unofficial_extension_message">Deze extensie behoort niet tot de officiële Tachiyomi extensielijst.</string>
<string name="ext_unofficial">Niet officieel</string>
<string name="pref_library_update_refresh_metadata_summary">Controleer bij het bijwerken van de bibliotheek op nieuwe omslag en details</string>
<string name="loader_not_implemented_error">Bron niet gevonden</string>
<string name="page_list_empty_error">Geen pagina\'s gevonden</string>
@ -676,8 +674,6 @@
<string name="pref_update_only_in_release_period">Buiten verwachte vrijgave periode</string>
<string name="action_set_interval">Interval instellen</string>
<string name="action_filter_interval_custom">Aangepast ophaalinterval</string>
<string name="action_filter_interval_long">Maandelijks ophalen (28 dagen)</string>
<string name="action_filter_interval_passed">Controleperiode overschreden</string>
<string name="action_sort_next_updated">Volgende verwachte update</string>
<string name="split_tall_images">Splits hoge afbeeldingen</string>
<string name="licensed_manga_chapters_error">Gelicenseerd - Geen hoofdstukken te laten zien</string>
@ -711,8 +707,6 @@
<string name="skipped_reason_not_in_release_period">Overgeslagen omdat geen uitgave is verwacht vandaag</string>
<string name="information_required_plain">*vereist</string>
<string name="label_total_chapters">Totaal</string>
<string name="action_filter_interval_late">Late 10+ controle</string>
<string name="action_filter_interval_dropped">Gevallen\? Late 20+ en 2 maanden</string>
<string name="label_read_chapters">Lees</string>
<string name="label_tracked_titles">Gevolgde titels</string>
<string name="label_mean_score">Gemiddelde score</string>

View File

@ -129,7 +129,6 @@
<string name="ext_untrusted">Ikkje-tiltrudd</string>
<string name="ext_uninstall">Avinstaller</string>
<string name="untrusted_extension">Ikkje-tiltrudd utvidelse</string>
<string name="unofficial_extension_message">Denne utvidinga kjem ikkje frå den offisielle Tachiyomi-utvidingslista.</string>
<string name="extension_api_error">Kunne ikkje henta utvidingslista</string>
<string name="ext_nsfw_short">18+</string>
<string name="ext_install_service_notif">Installerer utviding…</string>
@ -236,7 +235,6 @@
<string name="update_6hour">Kvar sjette time</string>
<string name="ext_installer_shizuku_unavailable_dialog">Installer og start Shizuku for å bruka Shizuku som utvidingsinstallatør.</string>
<string name="update_12hour">Kvar tolvte time</string>
<string name="ext_unofficial">Uoffisiell</string>
<string name="obsolete_extension_message">Denne utvidinga er ikkje lengre tilgjengeleg.</string>
<string name="ext_nsfw_warning">Kan innehalda NSFW (18+) innhald</string>
<string name="pref_category_delete_chapters">Slett kapittel</string>

View File

@ -370,8 +370,6 @@
<string name="restoring_backup_error">Przywracanie kopii zapasowej zakończone niepowodzeniem</string>
<string name="creating_backup_error">Tworzenie kopii zapasowej zakończone niepowodzeniem</string>
<string name="pref_category_reading">Czytane</string>
<string name="unofficial_extension_message">Te rozszerzenie nie jest na liście oficjalnych rozszerzeń.</string>
<string name="ext_unofficial">Nieoficjalne</string>
<string name="sort_by_upload_date">Po dacie dodania</string>
<string name="label_data">Dane</string>
<string name="backup_restore_missing_sources">Brakujące źródła:</string>
@ -723,7 +721,6 @@
<string name="information_cloudflare_help">Naciśnij tutaj aby uzyskać pomoc dotyczącą Cloudflare</string>
<string name="unlock_app_title">Odblokuj %s</string>
<string name="action_filter_interval_custom">Dostosowany interwał aktualizacji</string>
<string name="action_filter_interval_long">W miesiącu (28 dni)</string>
<string name="action_ok">OK</string>
<string name="track_delete_text">To usunie śledzenie lokalne.</string>
<string name="action_apply">Zatwierdź</string>

View File

@ -370,8 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">Não foi possível abrir as configurações do dispositivo</string>
<string name="tracking_info">Sincronização unidirecional para atualizar o progresso dos capítulos nos serviços monitoradores externos. Configure o monitoramento para itens individuais a partir de seus botões de monitoramento.</string>
<string name="pref_refresh_library_covers">Atualizar as capas da biblioteca</string>
<string name="unofficial_extension_message">Esta extensão não é da lista oficial.</string>
<string name="ext_unofficial">Não oficial</string>
<string name="sort_by_upload_date">Pela data de envio</string>
<string name="label_data">Dados</string>
<string name="backup_restore_missing_sources">Fontes faltando:</string>
@ -555,7 +553,7 @@
<string name="pref_auto_clear_chapter_cache">Limpar o cache de capítulos ao abrir o aplicativo</string>
<string name="clear_database_source_item_count">%1$d itens que não estão na biblioteca no banco de dados</string>
<string name="database_clean">Nada a ser limpo</string>
<string name="extension_api_error">Erro ao obter a lista de extensões</string>
<string name="extension_api_error">Erro ao obter as extensões disponíveis</string>
<string name="privacy_policy">Política de privacidade</string>
<string name="pref_update_only_completely_read">Pular itens com capítulos não lidos</string>
<string name="library_errors_help">Para obter ajuda sobre como corrigir erros de atualização da biblioteca, veja %1$s</string>
@ -704,14 +702,10 @@
<string name="pref_chapter_swipe_start">Ação de deslizar para a esquerda</string>
<string name="pref_double_tap_zoom">Toque duplo para dar zoom</string>
<string name="pref_library_columns_per_row">%d por linha</string>
<string name="action_filter_interval_late">Verificação dos últimos 10+</string>
<string name="action_sort_next_updated">Próxima atualização esperada</string>
<string name="pref_update_only_in_release_period">Prever a data do próximo lançamento</string>
<string name="action_set_interval">Definir intervalo</string>
<string name="action_filter_interval_custom">Personalizar o intervalo de requisições</string>
<string name="action_filter_interval_long">Requisitar mensalmente (28 dias)</string>
<string name="action_filter_interval_dropped">Abandonado\? Últimos 20+ e 2 meses</string>
<string name="action_filter_interval_passed">Intervalo de verificação aprovado</string>
<string name="action_filter_interval_custom">Personalizar a frequência de atualizações</string>
<string name="skipped_reason_not_in_release_period">Pulado porque nenhum lançamento era esperado hoje</string>
<string name="intervals_header">Intervalos</string>
<string name="manga_display_modified_interval_title">Definido para atualizar todo</string>
@ -787,8 +781,7 @@
<string name="available_disk_space_info">Disponível: %1$s / Total: %2$s</string>
<string name="ext_permission_install_apps_warning">Permissões são necessárias para instalar extensões. Toque aqui para conceder.</string>
<string name="private_settings">Incluir configurações sensíveis (tokens de login dos monitoradores, por exemplo)</string>
<string name="repo_extension_message">Esta extensão é de um repositório externo. Toque para visualizar o repositório.</string>
<string name="manga_interval_expected_update">Próxima atualização esperada em torno de %1$s, verificando em torno de cada %2$s</string>
<string name="manga_interval_expected_update">Novos capítulos com previsão de serem lançados em torno de %1$s, verificando em torno de cada %2$s</string>
<string name="manga_interval_custom_amount">Frequência de atualização personalizada:</string>
<string name="invalid_backup_file_error">Erro completo:</string>
<string name="error_repo_exists">Este repositório já existe!</string>
@ -797,11 +790,13 @@
<string name="action_add_repo_message">Adiciona repositórios adicionais ao Tachiyomi. Deve ser uma URL que termine com \"index.min.json\".</string>
<string name="delete_repo_confirmation">Você deseja deletar o repositório \"%s\"?</string>
<string name="action_delete_repo">Deletar repositório</string>
<string name="manga_interval_header">Próxima atualização</string>
<string name="action_add_repo">Adicionar repositório</string>
<string name="information_empty_repos">Você não tem repositórios definidos.</string>
<string name="label_extension_repos">Repositórios de extensões</string>
<string name="label_add_repo_input">URL do repositório</string>
<string name="onboarding_storage_help_action">Guia de armazenamento</string>
<string name="onboarding_storage_help_info">Atualizando de uma versão anterior e não tem certeza do que selecionar? Consulte o guia de armazenamento para mais informações.</string>
<string name="manga_interval_expected_update_soon">Em breve</string>
<string name="theme_nord">Nord</string>
<string name="ext_revoke_trust">Revogar a confiabilidade de extensões desconhecidas</string>
</resources>

View File

@ -370,7 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">Não foi possível abrir as definições do aparelho</string>
<string name="pref_refresh_library_covers">Atualizar capas da biblioteca</string>
<string name="tracking_info">Sincronização unidirecional para atualizar o progresso dos capítulos nos serviços de monitoramento. Configure o monitoramento para itens individuais a partir dos botões de monitoramento deles.</string>
<string name="unofficial_extension_message">Esta extensão não vem da lista oficial de extensões do Tachiyomi.</string>
<string name="pref_show_reading_mode_summary">Mostra brevemente o modo atual quando o leitor é aberto</string>
<string name="page_list_empty_error">Nenhuma página encontrada</string>
<string name="sort_by_upload_date">Por data de envio</string>
@ -380,7 +379,6 @@
<string name="invalid_backup_file_missing_manga">O backup não possui nenhum item da biblioteca.</string>
<string name="invalid_backup_file">Ficheiro de cópia de segurança invalido</string>
<string name="pref_show_reading_mode">Mostrar modo de leitura</string>
<string name="ext_unofficial">Não oficial</string>
<string name="pref_library_update_refresh_metadata_summary">Procurar nova capa e detalhes quando a biblioteca atualizar</string>
<string name="pref_library_update_refresh_metadata">Atualizar automaticamente os metadados</string>
<string name="action_display_show_tabs">Mostrar abas de categoria</string>
@ -704,7 +702,6 @@
<string name="pref_chapter_swipe_start">Ação de deslizar para a esquerda</string>
<string name="pref_double_tap_zoom">Toque duplo para aproximar</string>
<string name="action_set_interval">Definir intervalo</string>
<string name="action_filter_interval_long">Buscar mensalmente (28 dias)</string>
<string name="pref_update_only_in_release_period">Fora do período esperado de lançamento</string>
<string name="pref_debug_info">Informações de depuração</string>
<string name="pref_chapter_swipe">Trocar de capítulo</string>

View File

@ -379,8 +379,6 @@
<string name="action_migrate">Migrează</string>
<string name="label_data">Date</string>
<string name="invalid_backup_file">Fișierul de rezerva este invalid</string>
<string name="unofficial_extension_message">Aceasta extensie nu face parte din lista oficială de extensii Tachiyomi.</string>
<string name="ext_unofficial">Neoficial</string>
<string name="page_list_empty_error">Nu s-au găsit pagini</string>
<string name="tabs_header">Tab-uri</string>
<string name="action_display_show_tabs">Afișează filele categoriei</string>
@ -694,14 +692,10 @@
<string name="copied_to_clipboard_plain">Copiat in clipboard</string>
<string name="unlock_app_title">Deblochează %s</string>
<string name="delete_downloaded">Șterge descărcările</string>
<string name="action_filter_interval_late">Verificare întârziată (10+)</string>
<string name="action_set_interval">Setează intervalul</string>
<string name="action_filter_interval_passed">Perioada de control a trecut</string>
<string name="scanlator">Scanlator</string>
<string name="label_data_storage">Date și stocare</string>
<string name="action_filter_interval_dropped">Abandonat? Întârziat (20+ și 2 luni)</string>
<string name="action_sort_next_updated">Următoarea actualizare așteptată</string>
<string name="action_filter_interval_long">Fetch lunar (28 de zile)</string>
<string name="action_filter_interval_custom">Interval de preluare personalizat</string>
<string name="pref_storage_location">Locație de stocare</string>
<string name="information_cloudflare_help">Atinge aici pentru ajutor cu Cloudflare</string>

View File

@ -242,11 +242,9 @@
<string name="ext_untrusted">Ненадёжное</string>
<string name="ext_uninstall">Удалить</string>
<string name="untrusted_extension">Ненадёжное расширение</string>
<string name="untrusted_extension_message">Это расширение было подписано неизвестным автором и не было загружено.
<string name="untrusted_extension_message">Вредоносные расширения могут считывать любые хранящиеся учётные данные для входа или выполнять произвольный код.
\n
\nВредоносные расширения могут считывать любые хранящиеся учётные данные для входа или выполнять произвольный код.
\n
\nДоверяя сертификату этого расширения, вы принимаете эти риски.</string>
\nДоверяя этому расширению, вы принимаете эти риски.</string>
<string name="pref_double_tap_anim_speed">Скорость анимации при двойном нажатии</string>
<string name="double_tap_anim_speed_0">Без анимации</string>
<string name="double_tap_anim_speed_normal">Нормальная</string>
@ -370,8 +368,6 @@
<string name="battery_optimization_setting_activity_not_found">Не удалось открыть настройки устройства</string>
<string name="pref_refresh_library_covers">Обновить обложки серий</string>
<string name="tracking_info">Односторонняя синхронизация для обновления прогресса в сторонних сервисах отслеживания. Настройте отслеживание при помощи кнопки «Отслеживание».</string>
<string name="unofficial_extension_message">Это расширение не входит в официальный список расширений.</string>
<string name="ext_unofficial">Неофициальное</string>
<string name="sort_by_upload_date">Дата добавления</string>
<string name="label_data">Данные</string>
<string name="backup_restore_missing_sources">Отсутствующие источники:</string>
@ -555,7 +551,7 @@
<string name="pref_auto_clear_chapter_cache">Очищать кэш глав при запуске приложения</string>
<string name="clear_database_source_item_count">%1$d не библиотечных серий в базе данных</string>
<string name="database_clean">Нечего очищать</string>
<string name="extension_api_error">Не удалось получить список расширений</string>
<string name="extension_api_error">Не удалось получить доступные расширения</string>
<string name="privacy_policy">Политика конфиденциальности</string>
<string name="pref_update_only_completely_read">Пропускать серии с непрочитанными главами</string>
<string name="library_errors_help">Для помощи в исправлении ошибок библиотеки нажать %1$s</string>
@ -704,16 +700,12 @@
<string name="pref_chapter_swipe_start">Проведите влево</string>
<string name="pref_double_tap_zoom">Двойное нажатие для увеличения</string>
<string name="pref_library_columns_per_row">%d в ряд</string>
<string name="action_filter_interval_custom">Настраиваемый интервал получения</string>
<string name="action_filter_interval_long">Месячная проверка (28 дней)</string>
<string name="action_filter_interval_dropped">Заброшено\? Прошедшие 20+ дней и 2 месяца</string>
<string name="action_filter_interval_custom">Настраиваемая частота обновления</string>
<string name="intervals_header">Интервалы</string>
<string name="manga_display_interval_title">Оценивать каждые</string>
<string name="action_set_interval">Задать интервал</string>
<string name="action_filter_interval_late">Проверка прошедших 10+ дней</string>
<string name="action_filter_interval_passed">Срок проверки истёк</string>
<string name="action_sort_next_updated">Следующее ожидамое обновление</string>
<string name="pref_update_only_in_release_period">Предсказать следующее время выпуска</string>
<string name="pref_update_only_in_release_period">Ожидается выход новых глав</string>
<string name="manga_display_modified_interval_title">Задать обновления каждые</string>
<string name="skipped_reason_not_in_release_period">Пропущено, т.к сегодня не ожидается выпуска</string>
<string name="track_delete_title">Удалить отслеживание %s\?</string>
@ -788,8 +780,7 @@
<string name="ext_permission_install_apps_warning">Нужны разрешения для установки расширений. Нажмите сюда, чтобы их предоставить.</string>
<string name="private_settings">Включать конфиденциальные настройки (например, токены для входа в службы отслеживания)</string>
<string name="invalid_backup_file_error">Полная ошибка:</string>
<string name="manga_interval_expected_update">Следующее обновление ожидается через %1$s, проверяя каждые %2$s</string>
<string name="repo_extension_message">Это расширение из внешнего репозитория. Нажмите, чтобы просмотреть репозиторий.</string>
<string name="manga_interval_expected_update">Выход новых глав ожидается примерно через %1$s, следующая проверка будет через %2$s.</string>
<string name="manga_interval_custom_amount">Настраиваемая частота обновления:</string>
<string name="error_repo_exists">Этот репозиторий уже существует!</string>
<string name="pref_library_update_smart_update">Умное обновление</string>
@ -797,11 +788,14 @@
<string name="action_add_repo_message">Добавить дополнительные репозиторий в Tachiyomi. Это должны быть URL-адреса которые заканчиваться на \"index.min.json\".</string>
<string name="delete_repo_confirmation">Хотите ли вы удалить репозиторий \"%s\"?</string>
<string name="action_delete_repo">Удалить репозиторий</string>
<string name="manga_interval_header">Следующее обновление</string>
<string name="action_add_repo">Добавить репозиторий</string>
<string name="information_empty_repos">У вас нет репозиториев.</string>
<string name="label_extension_repos">Репозитории расширений</string>
<string name="label_add_repo_input">URL-адрес репозитория</string>
<string name="onboarding_storage_help_action">Руководство по хранению</string>
<string name="onboarding_storage_help_info">Обновляетесь со старой версии и не знаете, что выбрать? Обратите внимание на руководство по хранению для большей информации.</string>
<string name="manga_interval_expected_update_soon">Скоро</string>
<string name="theme_nord">Север</string>
<string name="ext_revoke_trust">Не доверять неизвестным расширениям</string>
<string name="action_open_repo">Репозиторий open-source</string>
</resources>

View File

@ -188,7 +188,6 @@
<string name="pref_library_update_refresh_metadata">प्रदत्तांशं स्वयञ्चालितं नवीकरोतु</string>
<string name="categorized_display_settings">प्रतिवर्गं विन्यासस्य प्रदर्शनस्य च कृते समायोजनानि</string>
<string name="untrusted_extension">अविश्वस्तविस्तारः</string>
<string name="unofficial_extension_message">अयं विस्तारः टाचीयोमेः अधिकारिकविस्तारसूच्याः नास्ति।</string>
<string name="extension_api_error">विस्तारसूच्याः प्राप्तिः अनुत्तीर्णा</string>
<string name="pref_library_update_categories_details">माङ्गाः याः वर्जितवर्गेषु सन्ति ताः अन्तर्भूतवर्गेषु सन्ति चेदपि तासां नवीकरणं न भविष्यति।</string>
<string name="obsolete_extension_message">अयं विस्तारः इतःपरं न उपलभ्यः।</string>
@ -197,7 +196,6 @@
<string name="ext_update">नवीकरोतु</string>
<string name="ext_install">प्रतिस्थायतु</string>
<string name="ext_pending">अपूर्णम्</string>
<string name="ext_unofficial">अनधिकारः</string>
<string name="ext_uninstall">निष्कासयतु</string>
<string name="ext_installer_shizuku_stopped">शिज़ुकुः न चलति</string>
<string name="ext_installer_pref">प्रतिष्ठापनसहायकम्</string>

View File

@ -198,7 +198,6 @@
<string name="pref_page_transitions">Хамсааһыннах, сирэй арыйыыта</string>
<string name="pref_cutout_short">Быһыллыбыт хонууга баары көрдөр</string>
<string name="pref_fullscreen">Толору экран</string>
<string name="unofficial_extension_message">Бу кэҥэтии официальнай Tachiyomi испииһэгиттэн буолбатах.</string>
<string name="obsolete_extension_message">Бу кэҥэтии кыаллыбат буолла.</string>
<string name="untrusted_extension_message">Бу кэҥэтии эрэлэ суох туоһу суругунан бэлиэтэммит уонна холбоммотох.
\n
@ -208,7 +207,6 @@
<string name="untrusted_extension">Эрэлэ суох кэҥэтии</string>
<string name="ext_uninstall">Сотон кэбис</string>
<string name="ext_untrusted">Эрэлэ суох</string>
<string name="ext_unofficial">Официальнайа суох</string>
<string name="ext_trust">Эрэллээх</string>
<string name="ext_installed">Турда</string>
<string name="ext_installing">ТуруорааҺын</string>

View File

@ -370,8 +370,6 @@
<string name="battery_optimization_setting_activity_not_found">Abertura de sas impostatziones de sistema fallida</string>
<string name="tracking_info">Sincronizatzione a una diretzione ebbia pro agiornare su progressu in sos capìtulos in servìtzios de arrastamentu esternos. Imposta s\'arrastamentu pro sos elementos dae su butone de arrastamentu issoro.</string>
<string name="pref_refresh_library_covers">Annoa sas coberteddas de sa biblioteca</string>
<string name="unofficial_extension_message">Custa estensione non benit dae sa lista ufitziale.</string>
<string name="ext_unofficial">No ufitziale</string>
<string name="sort_by_upload_date">Pro data de carrigamentu</string>
<string name="label_data">Datos</string>
<string name="backup_restore_missing_sources">Fontes chi mancant:</string>
@ -708,16 +706,12 @@
<string name="pref_debug_info">Informatziones de depuratzione de còdighe</string>
<string name="manga_display_interval_title">Càrcula cada</string>
<string name="action_filter_interval_custom">Intervallu de recùperu personalizadu</string>
<string name="action_filter_interval_long">Recùpera cada mese (28 dies)</string>
<string name="action_filter_interval_dropped">Abbandonadu\? In ritardu de 20+ dies e 2 meses</string>
<string name="action_sort_next_updated">Agiornamentu imbente prevìdidu</string>
<string name="pref_update_only_in_release_period">Foras de su perìodu de publicatzione prevìdidu</string>
<string name="intervals_header">Intervallos</string>
<string name="manga_display_modified_interval_title">Imposta s\'agiornamentu pro cada</string>
<string name="skipped_reason_not_in_release_period">Brincadu ca non bi fiat peruna publicatzione prevìdida oe</string>
<string name="action_set_interval">Imposta s\'intervallu</string>
<string name="action_filter_interval_late">Verìfica in ritardu de 10+ dies</string>
<string name="action_filter_interval_passed">Perìodu de controllu coladu</string>
<string name="action_ok">AB</string>
<string name="track_delete_title">Bogare s\'arrastadore de %s\?</string>
<string name="track_delete_text">Custu at a bogare s\'arrastamentu locale.</string>

View File

@ -459,7 +459,6 @@
<string name="off">Vyp.</string>
<string name="download_insufficient_space">Nepodarilo sa stiahnuť kapitoly z dôvodu nedostatku úložného priestoru</string>
<string name="action_sort_count">Celkový počet</string>
<string name="ext_unofficial">Neoficiálne</string>
<string name="ext_installer_legacy">Pôvodný</string>
<string name="automatic_background">Automatický</string>
<string name="tapping_inverted_none">Žiadne</string>
@ -526,7 +525,6 @@
<string name="manga_cover">Obal</string>
<string name="cover_saved">Obal uložený</string>
<string name="delete_category_confirmation">Prajete si vymazať kategóriu „%s“\?</string>
<string name="unofficial_extension_message">Toto rozšírenie nie je z oficiálneho zoznamu rozšírení Tachiyomi.</string>
<string name="tapping_inverted_vertical">Vertikálne</string>
<string name="backup_restore_missing_trackers">Sledovače, do ktorých nie ste prihlásení:</string>
<string name="pref_dns_over_https">DNS cez HTTPS (DoH)</string>

View File

@ -239,7 +239,6 @@
<string name="appwidget_unavailable_locked">Miniaplikacioni nuk ofrohet kur kyçja e aplikacionit është aktivizuar</string>
<string name="ext_pending">Në pritje</string>
<string name="ext_installing">duke instaluar</string>
<string name="ext_unofficial">Jozyrtare</string>
<string name="ext_untrusted">E pabesueshme</string>
<string name="ext_app_info">Informacioni i aplikacionit</string>
<string name="untrusted_extension">Shtesë pabesueshme</string>
@ -289,7 +288,6 @@
<string name="ext_trust">Besim</string>
<string name="ext_downloading">Po shkarkohet</string>
<string name="ext_uninstall">Çinstaloni</string>
<string name="unofficial_extension_message">Kjo shtesë nuk është nga lista zyrtare e shtesave Tachiyomi.</string>
<string name="ext_installer_legacy">Trashëgimia</string>
<string name="untrusted_extension_message">Kjo shtesë u nënshkrua me një certifikatë të pabesueshme dhe nuk u aktivizua.
\n

View File

@ -363,8 +363,6 @@
<string name="pref_show_reading_mode">Прикажи начин читања</string>
<string name="ext_nsfw_warning">Може садржати садржај за одрасле (18+)</string>
<string name="ext_nsfw_short">18+</string>
<string name="unofficial_extension_message">Овај додатак није из званичне листе.</string>
<string name="ext_unofficial">Незванично</string>
<string name="pref_library_update_refresh_metadata_summary">Провери да ли постоје нови омоти при ажурирању колекције</string>
<string name="pref_library_update_refresh_metadata">Аутоматски освежи метаподатке</string>
<string name="parental_controls_info">Ово не спречава незваничне или потенцијално погрешно означене додатке да прикажу садржај за одрасле (18+) унутар апликације.</string>
@ -712,7 +710,6 @@
<string name="skipped_reason_not_in_release_period">Прескочено јер данас није очекивано издање</string>
<string name="pref_update_only_in_release_period">Изван очекиваног периода изласка</string>
<string name="action_set_interval">Постави интервалу</string>
<string name="action_filter_interval_dropped">Испуштено\? Задњих 20+ и 2 месеца</string>
<string name="intervals_header">Интервали</string>
<string name="track_delete_remote_text">Такође уклони из %s</string>
<string name="track_activity_name">Запис праћења</string>
@ -721,16 +718,13 @@
<string name="download_cache_invalidated">Индекс преузимања поништен</string>
<string name="delete_downloaded">Обриши преузет садржај</string>
<string name="action_filter_interval_custom">Прилагођен интервал преузимања</string>
<string name="action_filter_interval_passed">Прошло прегледни рок</string>
<string name="action_ok">У реду</string>
<string name="library_sync_complete">Синхронизовање колекције завршено</string>
<string name="manga_display_modified_interval_title">Постави да ажурира сваки</string>
<string name="track_delete_title">Уклони праћење %s\?</string>
<string name="track_delete_text">Ово ће уклонити локално праћење.</string>
<string name="action_filter_interval_late">Провера задњих 10+</string>
<string name="action_sort_next_updated">Следеће очекивано ажурирање</string>
<string name="syncing_library">Синхронизовање колекције</string>
<string name="action_filter_interval_long">Месечно преузимање (28 дана)</string>
<string name="unlock_app_title">Откључај %s</string>
<string name="exception_offline">Нема везе са интернетом</string>
<string name="exception_http">HTTP %d, погледај веб сајт у WebView</string>

View File

@ -375,8 +375,6 @@
<string name="backup_restore_missing_sources">Saknade källor:</string>
<string name="invalid_backup_file_missing_manga">Säkerhetskopian innehåller inga biblioteksposter.</string>
<string name="invalid_backup_file">Ogiltig säkerhetskopiafil:</string>
<string name="unofficial_extension_message">Detta tillägg är inte från den officiella listan.</string>
<string name="ext_unofficial">Inofficiell</string>
<string name="pref_library_update_refresh_metadata_summary">Sök efter nytt omslag och detaljer när du uppdaterar biblioteket</string>
<string name="pref_library_update_refresh_metadata">Uppdatera metadata automatiskt</string>
<string name="action_migrate">Migrera</string>
@ -689,15 +687,11 @@
<string name="manga_display_interval_title">Uppskatta varje</string>
<string name="action_set_interval">Ange intervall</string>
<string name="action_filter_interval_custom">Anpassat hämtningsintervall</string>
<string name="action_filter_interval_long">Hämta månadsvis (28 dagar)</string>
<string name="action_filter_interval_late">Sen 10+ check</string>
<string name="action_sort_next_updated">Nästa förväntade uppdatering</string>
<string name="skipped_reason_not_in_release_period">Hoppades över eftersom ingen publicering förväntades idag</string>
<string name="label_tracked_titles">Spårade inlägg</string>
<string name="day_short">%dd</string>
<string name="track_error">%1$s fel: %2$s</string>
<string name="action_filter_interval_dropped">Avhoppad\? Sen 20+ och 2 månader</string>
<string name="action_filter_interval_passed">Godkänd kontrollperiod</string>
<string name="pref_double_tap_zoom">Dubbeltryck för att zooma</string>
<string name="track_remove_start_date_conf_text">Detta kommer att ta bort ditt tidigare valda startdatum från %s</string>
<string name="track_delete_title">Ta bort %s spårning\?</string>

View File

@ -48,4 +48,7 @@
<plurals name="day">
<item quantity="other">%d วัน</item>
</plurals>
<plurals name="num_repos">
<item quantity="other">%d รีโพ</item>
</plurals>
</resources>

Some files were not shown because too many files have changed in this diff Show More