Clean up some unnecessary bits

- Remove analytics/crash reporting
- Remove app update check
- Remove F-Droid warning
- Remove Discord references
This commit is contained in:
arkon 2024-01-11 18:53:47 -05:00
parent 899bd26956
commit 33c62ab711
50 changed files with 42 additions and 289 deletions

View file

@ -59,8 +59,7 @@ representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community moderators responsible for enforcement at
the [Tachiyomi Discord server](https://discord.gg/tachiyomi).
reported to the community moderators via issues.
All complaints will be reviewed and investigated promptly and fairly.
All community moderators are obligated to respect the privacy and security of the

View file

@ -30,7 +30,7 @@ To auto-fix some linting errors, run the `ktlintFormat` Gradle task.
## Getting help
- Join [the Discord server](https://discord.gg/tachiyomi) for online help and to ask questions while developing.
No support is currently provided.
# Translations

View file

@ -1,6 +1,6 @@
| Build | Stable | Weekly Preview | Contribute | Support Server |
|-------|----------|---------|------------|---------|
| [![CI](https://github.com/tachiyomiorg/tachiyomi/actions/workflows/build_push.yml/badge.svg)](https://github.com/tachiyomiorg/tachiyomi/actions/workflows/build_push.yml) | [![stable release](https://img.shields.io/github/release/tachiyomiorg/tachiyomi.svg?maxAge=3600&label=download)](https://github.com/tachiyomiorg/tachiyomi/releases) | [![latest preview build](https://img.shields.io/github/v/release/tachiyomiorg/tachiyomi-preview.svg?maxAge=3600&label=download)](https://github.com/tachiyomiorg/tachiyomi-preview/releases) | [![Translation status](https://hosted.weblate.org/widgets/tachiyomi/-/svg-badge.svg)](https://hosted.weblate.org/engage/tachiyomi/?utm_source=widget) | [![Discord](https://img.shields.io/discord/349436576037732353.svg?label=discord&labelColor=7289da&color=2c2f33&style=flat)](https://discord.gg/tachiyomi) |
| Build | Stable | Weekly Preview | Contribute |
|-------|--------|----------------|------------|
| [![CI](https://github.com/tachiyomiorg/tachiyomi/actions/workflows/build_push.yml/badge.svg)](https://github.com/tachiyomiorg/tachiyomi/actions/workflows/build_push.yml) | [![stable release](https://img.shields.io/github/release/tachiyomiorg/tachiyomi.svg?maxAge=3600&label=download)](https://github.com/tachiyomiorg/tachiyomi/releases) | [![latest preview build](https://img.shields.io/github/v/release/tachiyomiorg/tachiyomi-preview.svg?maxAge=3600&label=download)](https://github.com/tachiyomiorg/tachiyomi-preview/releases) | [![Translation status](https://hosted.weblate.org/widgets/tachiyomi/-/svg-badge.svg)](https://hosted.weblate.org/engage/tachiyomi/?utm_source=widget) |
# ![app icon](./.github/readme-images/app-icon.png)Tachiyomi
Tachiyomi is a free and open source manga reader for Android 6.0 and above.
@ -28,8 +28,7 @@ Please make sure to read the full guidelines. Your issue may be closed without w
<details><summary>Issues</summary>
1. **Before reporting a new issue, take a look at the [FAQ](https://tachiyomi.org/docs/faq/general), the [changelog](https://tachiyomi.org/changelogs/) and the already opened [issues](https://github.com/tachiyomiorg/tachiyomi/issues).**
2. If you are unsure, ask here: [![Discord](https://img.shields.io/discord/349436576037732353.svg)](https://discord.gg/tachiyomi)
**Before reporting a new issue, take a look at the [FAQ](https://tachiyomi.org/docs/faq/general), the [changelog](https://tachiyomi.org/changelogs/) and the already opened [issues](https://github.com/tachiyomiorg/tachiyomi/issues).**
</details>
@ -70,7 +69,6 @@ See [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
## FAQ
[See our website.](https://tachiyomi.org/)
You can also reach out to us on [Discord](https://discord.gg/tachiyomi).
## License

View file

@ -8,10 +8,6 @@ plugins {
id("com.github.zellius.shortcut-helper")
}
if (gradle.startParameter.taskRequests.toString().contains("Standard")) {
apply<com.google.gms.googleservices.GoogleServicesPlugin>()
}
shortcutHelper.setFilePath("./shortcuts.xml")
val SUPPORTED_ABIS = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
@ -31,9 +27,6 @@ android {
buildConfigField("boolean", "INCLUDE_UPDATER", "false")
buildConfigField("boolean", "PREVIEW", "false")
// Please disable ACRA or use your own instance in forked versions of the project
buildConfigField("String", "ACRA_URI", "\"https://tachiyomi.kanade.eu/crash_report\"")
ndk {
abiFilters += SUPPORTED_ABIS
}
@ -245,10 +238,6 @@ dependencies {
// Logging
implementation(libs.logcat)
// Crash reports/analytics
implementation(libs.bundles.acra)
"standardImplementation"(libs.firebase.analytics)
// Shizuku
implementation(libs.bundles.shizuku)

View file

@ -71,7 +71,3 @@
# XmlUtil
-keep public enum nl.adaptivity.xmlutil.EventType { *; }
# Firebase
-keep class com.google.firebase.installations.** { *; }
-keep interface com.google.firebase.installations.** { *; }

View file

@ -33,11 +33,6 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<!-- Remove permission from Firebase dependency -->
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />
<application
android:name=".App"
android:allowBackup="false"
@ -236,11 +231,6 @@
android:name="android.webkit.WebView.MetricsOptOut"
android:value="true" />
<!-- Disable advertising ID collection for Firebase -->
<meta-data
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
</application>
</manifest>

View file

@ -2,8 +2,6 @@ package eu.kanade.domain.base
import android.content.Context
import dev.icerock.moko.resources.StringResource
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import tachiyomi.core.preference.Preference
import tachiyomi.core.preference.PreferenceStore
import tachiyomi.i18n.MR
@ -22,8 +20,6 @@ class BasePreferences(
fun extensionInstaller() = ExtensionInstallerPreference(context, preferenceStore)
fun acraEnabled() = preferenceStore.getBoolean("acra.enable", isPreviewBuildType || isReleaseBuildType)
fun shownOnboardingFlow() = preferenceStore.getBoolean(Preference.appStateKey("onboarding_complete"), false)
enum class ExtensionInstaller(val titleRes: StringResource, val requiresSystemPermission: Boolean) {

View file

@ -1,6 +1,5 @@
package eu.kanade.presentation.more
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
@ -23,7 +22,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import eu.kanade.presentation.components.WarningBanner
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.tachiyomi.R
@ -60,14 +58,7 @@ fun MoreScreen(
),
) {
if (isFDroid) {
WarningBanner(
textRes = MR.strings.fdroid_warning,
modifier = Modifier.clickable {
uriHandler.openUri(
"https://tachiyomi.org/docs/faq/general#how-do-i-update-from-the-f-droid-builds",
)
},
)
// Don't really care about slow updaters now
}
}
},

View file

@ -48,7 +48,6 @@ import eu.kanade.tachiyomi.ui.more.OnboardingScreen
import eu.kanade.tachiyomi.util.CrashLogUtil
import eu.kanade.tachiyomi.util.system.isDevFlavor
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
import eu.kanade.tachiyomi.util.system.powerManager
import eu.kanade.tachiyomi.util.system.setDefaultSettings
@ -88,12 +87,6 @@ object SettingsAdvancedScreen : SearchableSettings {
return buildList {
addAll(
listOf(
Preference.PreferenceItem.SwitchPreference(
pref = basePreferences.acraEnabled(),
title = stringResource(MR.strings.pref_enable_acra),
subtitle = stringResource(MR.strings.pref_acra_summary),
enabled = isPreviewBuildType || isReleaseBuildType,
),
Preference.PreferenceItem.TextPreference(
title = stringResource(MR.strings.pref_dump_crash_logs),
subtitle = stringResource(MR.strings.pref_dump_crash_logs_summary),

View file

@ -1,15 +1,12 @@
package eu.kanade.presentation.more.settings.screen.about
import android.content.Context
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Public
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -30,13 +27,10 @@ import eu.kanade.presentation.util.LocalBackPress
import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
import eu.kanade.tachiyomi.data.updater.RELEASE_URL
import eu.kanade.tachiyomi.ui.more.NewUpdateScreen
import eu.kanade.tachiyomi.util.CrashLogUtil
import eu.kanade.tachiyomi.util.lang.toDateTimestampString
import eu.kanade.tachiyomi.util.system.copyToClipboard
import eu.kanade.tachiyomi.util.system.toast
import kotlinx.coroutines.launch
import logcat.LogPriority
import tachiyomi.core.util.lang.withIOContext
import tachiyomi.core.util.lang.withUIContext
@ -48,7 +42,6 @@ import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource
import tachiyomi.presentation.core.icons.CustomIcons
import tachiyomi.presentation.core.icons.Discord
import tachiyomi.presentation.core.icons.Facebook
import tachiyomi.presentation.core.icons.Github
import tachiyomi.presentation.core.icons.Reddit
@ -98,61 +91,6 @@ object AboutScreen : Screen() {
)
}
if (BuildConfig.INCLUDE_UPDATER) {
item {
TextPreferenceWidget(
title = stringResource(MR.strings.check_for_updates),
widget = {
AnimatedVisibility(visible = isCheckingUpdates) {
CircularProgressIndicator(
modifier = Modifier.size(28.dp),
strokeWidth = 3.dp,
)
}
},
onPreferenceClick = {
if (!isCheckingUpdates) {
scope.launch {
isCheckingUpdates = true
checkVersion(
context = context,
onAvailableUpdate = { result ->
val updateScreen = NewUpdateScreen(
versionName = result.release.version,
changelogInfo = result.release.info,
releaseLink = result.release.releaseLink,
downloadLink = result.release.getDownloadLink(),
)
navigator.push(updateScreen)
},
onFinish = {
isCheckingUpdates = false
},
)
}
}
},
)
}
}
if (!BuildConfig.DEBUG) {
item {
TextPreferenceWidget(
title = stringResource(MR.strings.whats_new),
onPreferenceClick = { uriHandler.openUri(RELEASE_URL) },
)
}
}
item {
TextPreferenceWidget(
title = stringResource(MR.strings.help_translate),
onPreferenceClick = { uriHandler.openUri("https://tachiyomi.org/docs/contribute#translation") },
)
}
item {
TextPreferenceWidget(
title = stringResource(MR.strings.licenses),
@ -179,11 +117,6 @@ object AboutScreen : Screen() {
icon = Icons.Outlined.Public,
url = "https://tachiyomi.org",
)
LinkIcon(
label = "Discord",
icon = CustomIcons.Discord,
url = "https://discord.gg/tachiyomi",
)
LinkIcon(
label = "X",
icon = CustomIcons.X,

View file

@ -3,7 +3,6 @@ package eu.kanade.tachiyomi
import android.annotation.SuppressLint
import android.app.Application
import android.app.PendingIntent
import android.app.job.JobInfo
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@ -42,8 +41,6 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.WebViewUtil
import eu.kanade.tachiyomi.util.system.animatorDurationScale
import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
import eu.kanade.tachiyomi.util.system.notify
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.launchIn
@ -51,13 +48,8 @@ import kotlinx.coroutines.flow.onEach
import logcat.AndroidLogcatLogger
import logcat.LogPriority
import logcat.LogcatLogger
import org.acra.config.httpSender
import org.acra.config.scheduler
import org.acra.ktx.initAcra
import org.acra.sender.HttpSender
import org.conscrypt.Conscrypt
import tachiyomi.core.i18n.stringResource
import tachiyomi.core.preference.Preference
import tachiyomi.core.util.system.logcat
import tachiyomi.i18n.MR
import tachiyomi.presentation.widget.WidgetManager
@ -94,7 +86,6 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
Injekt.importModule(AppModule(this))
Injekt.importModule(DomainModule())
setupAcra()
setupNotificationChannels()
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
@ -198,28 +189,6 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
return super.getPackageName()
}
private fun setupAcra() {
if (isPreviewBuildType || isReleaseBuildType) {
initAcra {
buildConfigClass = BuildConfig::class.java
excludeMatchingSharedPreferencesKeys = listOf(
Preference.privateKey(".*"), ".*username.*", ".*password.*", ".*token.*",
)
httpSender {
uri = BuildConfig.ACRA_URI
httpMethod = HttpSender.Method.PUT
}
scheduler {
requiresBatteryNotLow = true
requiresDeviceIdle = true
requiresNetworkType = JobInfo.NETWORK_TYPE_UNMETERED
}
}
}
}
private fun setupNotificationChannels() {
try {
Notifications.createChannels(this)

View file

@ -65,7 +65,6 @@ import eu.kanade.tachiyomi.Migrations
import eu.kanade.tachiyomi.data.cache.ChapterCache
import eu.kanade.tachiyomi.data.download.DownloadCache
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
import eu.kanade.tachiyomi.data.updater.RELEASE_URL
import eu.kanade.tachiyomi.extension.api.ExtensionApi
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
@ -74,7 +73,6 @@ import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen
import eu.kanade.tachiyomi.ui.deeplink.DeepLinkScreen
import eu.kanade.tachiyomi.ui.home.HomeScreen
import eu.kanade.tachiyomi.ui.manga.MangaScreen
import eu.kanade.tachiyomi.ui.more.NewUpdateScreen
import eu.kanade.tachiyomi.ui.more.OnboardingScreen
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.isNavigationBarNeedsScrim
@ -93,7 +91,6 @@ import tachiyomi.core.Constants
import tachiyomi.core.util.lang.launchIO
import tachiyomi.core.util.system.logcat
import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.domain.release.interactor.GetApplicationRelease
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource
@ -314,27 +311,6 @@ class MainActivity : BaseActivity() {
@Composable
private fun CheckForUpdates() {
val context = LocalContext.current
val navigator = LocalNavigator.currentOrThrow
// App updates
LaunchedEffect(Unit) {
if (BuildConfig.INCLUDE_UPDATER) {
try {
val result = AppUpdateChecker().checkForUpdate(context)
if (result is GetApplicationRelease.Result.NewUpdate) {
val updateScreen = NewUpdateScreen(
versionName = result.release.version,
changelogInfo = result.release.info,
releaseLink = result.release.releaseLink,
downloadLink = result.release.getDownloadLink(),
)
navigator.push(updateScreen)
}
} catch (e: Exception) {
logcat(LogPriority.ERROR, e)
}
}
}
// Extensions updates
LaunchedEffect(Unit) {

View file

@ -1,69 +0,0 @@
{
"project_info": {
"project_number": "777921915939",
"firebase_url": "https://tachiyomi-47364.firebaseio.com",
"project_id": "tachiyomi-47364",
"storage_bucket": "tachiyomi-47364.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:777921915939:android:36544cd2d96c50c7",
"android_client_info": {
"package_name": "eu.kanade.tachiyomi"
}
},
"oauth_client": [
{
"client_id": "777921915939-9q25jvgbdtpk91daqlk7sa1cbdcg77o6.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAHr8RxyeiSPC_MxJTnivz-hmdo5oX0QQQ"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "777921915939-9q25jvgbdtpk91daqlk7sa1cbdcg77o6.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:777921915939:android:564fdc1d62efd1de",
"android_client_info": {
"package_name": "eu.kanade.tachiyomi.debug"
}
},
"oauth_client": [
{
"client_id": "777921915939-9q25jvgbdtpk91daqlk7sa1cbdcg77o6.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAHr8RxyeiSPC_MxJTnivz-hmdo5oX0QQQ"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "777921915939-9q25jvgbdtpk91daqlk7sa1cbdcg77o6.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

View file

@ -6,7 +6,6 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
buildscript {
dependencies {
classpath(libs.android.shortcut.gradle)
classpath(libs.google.services.gradle)
classpath(libs.aboutLibraries.gradle)
classpath(libs.sqldelight.gradle)
classpath(libs.moko.gradle)

View file

@ -1,6 +1,5 @@
[versions]
aboutlib_version = "10.10.0"
acra = "5.11.3"
leakcanary = "2.13"
moko = "0.23.0"
okhttp_version = "5.0.0-alpha.12"
@ -13,7 +12,6 @@ voyager = "1.0.0"
[libraries]
desugar = "com.android.tools:desugar_jdk_libs:2.0.4"
android-shortcut-gradle = "com.github.zellius:android-shortcut-gradle-plugin:0.1.2"
google-services-gradle = "com.google.gms:google-services:4.4.0"
rxjava = "io.reactivex:rxjava:1.3.8"
@ -68,10 +66,6 @@ moko-gradle = { module = "dev.icerock.moko:resources-generator", version.ref = "
logcat = "com.squareup.logcat:logcat:0.1"
acra-http = { module = "ch.acra:acra-http", version.ref = "acra" }
acra-scheduler = { module = "ch.acra:acra-advanced-scheduler", version.ref = "acra" }
firebase-analytics = "com.google.firebase:firebase-analytics-ktx:21.5.0"
aboutLibraries-gradle = { module = "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin", version.ref = "aboutlib_version" }
aboutLibraries-compose = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "aboutlib_version" }
@ -99,7 +93,6 @@ voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", vers
ktlint = "org.jlleitschuh.gradle:ktlint-gradle:12.0.3"
[bundles]
acra = ["acra-http", "acra-scheduler"]
okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsoverhttps"]
js-engine = ["quickjs-android"]
sqlite = ["sqlite-framework", "sqlite-ktx", "sqlite-android"]

View file

@ -809,7 +809,7 @@
<!-- Crash screen -->
<string name="crash_screen_title">Whoops!</string>
<string name="crash_screen_description">%s ran into an unexpected error. We suggest you share the crash logs in our support channel on Discord.</string>
<string name="crash_screen_description">%s ran into an unexpected error.</string>
<string name="crash_screen_restart_application">Restart the application</string>
<!-- Stats screen -->

View file

@ -575,7 +575,7 @@
<string name="are_you_sure">Сигурни ли сте\?</string>
<string name="popular">Популярни</string>
<string name="unfinished_list">Списък с незавършени</string>
<string name="crash_screen_description">%s се сблъска с неочаквана грешка. Препоръчваме да заснемете това съобщение, да запазите записите от крашовете и да ги споделите в нашия канал за поддръжка в Discord.</string>
<string name="crash_screen_description">%s се сблъска с неочаквана грешка.</string>
<string name="updates_last_update_info">Последно обновяване на библиотеката: %1$s</string>
<string name="reading_list">Списък за четене</string>
<string name="cant_open_last_read_chapter">Не може да се отвори последната прочетена глава</string>

View file

@ -625,7 +625,7 @@
<string name="auto_download_while_reading">Baixa automàticament mentre es llegeix</string>
<string name="download_ahead_info">Només funciona si el capítol actual i el següent ja estan baixats.</string>
<string name="crash_screen_title">Ups!</string>
<string name="crash_screen_description">Sha produït un error inesperat al %s. Us suggerim que compartiu el registre derrors al nostre canal dassistència al Discord.</string>
<string name="crash_screen_description">Sha produït un error inesperat al %s.</string>
<string name="missing_storage_permission">No shan concedit permisos demmagatzematge</string>
<string name="popular">Populars</string>
<string name="pref_backup_summary">Còpies de seguretat automàtiques i manuals i espai demmagatzematge</string>

View file

@ -637,7 +637,7 @@
<string name="pref_browse_summary">Zdroje, rozšíření, globální vyhledávání</string>
<string name="pref_security_summary">Zámek aplikace, zabezpečená obrazovka</string>
<string name="pref_advanced_summary">Výpis protokolů selhání, optimalizace baterie</string>
<string name="crash_screen_description">%s narazil na neočekávanou chybu. Doporučujeme vám sdílet protokoly o selhání a poté je sdílet v našem kanálu podpory na Discordu.</string>
<string name="crash_screen_description">%s narazil na neočekávanou chybu.</string>
<string name="crash_screen_restart_application">Restartujte aplikaci</string>
<string name="pref_backup_summary">Ruční a automatické zálohování, místo v úložišti</string>
<string name="crash_screen_title">Ups!</string>

View file

@ -639,7 +639,7 @@
<string name="crash_screen_title">Ups!</string>
<string name="pref_advanced_summary">Absturzprotokolle ausgeben, Akkuverbrauch-Optimierung</string>
<string name="pref_backup_summary">Manuelle und automatische Datensicherungen, Speicherplatz</string>
<string name="crash_screen_description">%s ist auf einen unerwarteten Fehler gestoßen. Wir empfehlen dir, die Absturzprotokolle in unserem Support-Kanal auf Discord zu teilen.</string>
<string name="crash_screen_description">%s ist auf einen unerwarteten Fehler gestoßen.</string>
<string name="pref_security_summary">App-Sperre, sicherer Bildschirm</string>
<string name="unknown_title">Unbekannter Titel</string>
<string name="invalid_location">Ungültiger Speicherort: %s</string>

View file

@ -640,7 +640,7 @@
<string name="crash_screen_restart_application">Επανεκκίνηση της εφαρμογής</string>
<string name="pref_downloads_summary">Αυτόματη λήψη, λήψη εκ των προτέρων</string>
<string name="pref_advanced_summary">Αρχεία καταγραφής σφαλμάτων, βελτιστοποιήσεις μπαταρίας</string>
<string name="crash_screen_description">Το %s αντιμετώπισε ένα απροσδόκητο σφάλμα. Σας προτείνουμε να μοιραστείτε τα αρχεία καταγραφής σφαλμάτων στο κανάλι υποστήριξης μας στο Discord.</string>
<string name="crash_screen_description">Το %s αντιμετώπισε ένα απροσδόκητο σφάλμα.</string>
<string name="unknown_title">Άγνωστος τίτλος</string>
<string name="invalid_location">Μη έγκυρη τοποθεσία: %s</string>
<string name="error_user_agent_string_invalid">Μη έγκυρη συμβολοσειρά πράκτορα χρήστη</string>

View file

@ -632,7 +632,7 @@
<string name="pref_tracking_summary">Sincroniza tu progreso de lectura; unidireccional o mejorada</string>
<string name="pref_downloads_summary">Descargas automáticas y por adelantado</string>
<string name="pref_library_summary">Categorías, actualizaciones generales y acciones al deslizar el dedo</string>
<string name="crash_screen_description">%s se ha cerrado por un problema inesperado. Te sugerimos que compartas todos tus registros de depuración, enviándolos a nuestro canal de apoyo en Discord, en inglés.</string>
<string name="crash_screen_description">%s se ha cerrado por un problema inesperado.</string>
<string name="pref_reader_summary">Modos de lectura, apariencia y navegación</string>
<string name="pref_appearance_summary">Temas de colores y formatos de fecha</string>
<string name="pref_advanced_summary">Volcar datos del cuelgue y estado de ahorro de batería</string>

View file

@ -638,7 +638,7 @@
<string name="pref_advanced_summary">Itambak ang mga crash log, pag-o-optimisa sa baterya</string>
<string name="pref_library_summary">Mga kategorya, panlahatang update, pag-swipe ng kabanata</string>
<string name="pref_browse_summary">Mga source, extension, panlahatang paghanap</string>
<string name="crash_screen_description">Nagkaroon ng hindi inaasahang error ang %s. Iminumungkahi naming ibahagi mo ang mga crash log sa aming support channel sa Discord.</string>
<string name="crash_screen_description">Nagkaroon ng hindi inaasahang error ang %s.</string>
<string name="crash_screen_title">Ay!</string>
<string name="crash_screen_restart_application">Buksan muli ang app</string>
<string name="invalid_location">Invalid na lugar: %s</string>

View file

@ -640,7 +640,7 @@
<string name="pref_library_summary">Catégories, mise à jour globale, faire glisser le chapitre</string>
<string name="pref_reader_summary">Mode de lecture, affichage, navigation</string>
<string name="pref_security_summary">Verrouillage des applications, écran sécurisé</string>
<string name="crash_screen_description">%s a rencontré une erreur inattendue. Nous vous suggérons de nous partager les rapports de plantage dans notre salon d\'assistance sur Discord.</string>
<string name="crash_screen_description">%s a rencontré une erreur inattendue.</string>
<string name="invalid_location">Emplacement invalide : %s</string>
<string name="error_user_agent_string_invalid">Chaîne d\'agent utilisateur invalide</string>
<string name="unknown_title">Titre inconnu</string>

View file

@ -584,7 +584,7 @@
<string name="manga_tracking_tab">En seguimento</string>
<string name="reading">Lendo</string>
<string name="download_notifier_text_only_wifi">Non hai ningunha conexión Wi-Fi dispoñible</string>
<string name="crash_screen_description">%s pechouse por un problema inesperado. Aconsellámoste que compartas os rexistros de erros na canle de soporte no Discord (en inglés).</string>
<string name="crash_screen_description">%s pechouse por un problema inesperado.</string>
<string name="crash_screen_restart_application">Reinicia a aplicación</string>
<string name="source_filter_empty_screen">Non se atopou ninguna fonte instalada</string>
<string name="download_queue_size_warning">Advertencia: As baixadas grandes poden facer que as fontes se volvan máis lentas e/ou bloqueen Tachiyomi. Preme para saber máis.</string>

View file

@ -641,7 +641,7 @@
<string name="unknown_title">Nepoznat naslov</string>
<string name="updates_last_update_info">Zadnje aktualiziranje biblioteke: %s</string>
<string name="are_you_sure">Sigurno\?</string>
<string name="crash_screen_description">%s je naišao na neočekivanu grešku. Predlažemo da podijeliš zapis o prekidu programa u našem kanalu za podršku na Discordu.</string>
<string name="crash_screen_description">%s je naišao na neočekivanu grešku.</string>
<string name="label_overview_section">Pregled</string>
<string name="label_completed_titles">Dovršene stavke</string>
<string name="label_read_duration">Trajanje čitanja</string>

View file

@ -677,7 +677,7 @@
<string name="pref_debug_info">Debug információ</string>
<string name="popular">Felkapott</string>
<string name="update_already_running">A frissités már folyamatban van</string>
<string name="crash_screen_description">%s hibába ütközött. A hiba üzenetet kérünk oszd meg velünk a Discord szerverünkön.</string>
<string name="crash_screen_description">%s hibába ütközött.</string>
<string name="track_remove_date_conf_title">Dátum eltávolítása\?</string>
<string name="crash_screen_restart_application">Applikáció újrainditása</string>
<string name="label_titles_in_global_update">Globális frissités</string>

View file

@ -632,7 +632,7 @@
<string name="pref_browse_summary">Sumber, ekstensi, pencarian global</string>
<string name="pref_reader_summary">Mode membaca, tampilan, navigasi</string>
<string name="pref_tracking_summary">Sinkronisasi progres searah, sinkronisasi yang ditingkatkan</string>
<string name="crash_screen_description">%s mengalami kesalahan tak terduga. Kami menyarankan Anda membagi log kerusakan di saluran dukungan kami di Discord.</string>
<string name="crash_screen_description">%s mengalami kesalahan tak terduga.</string>
<string name="pref_downloads_summary">Unduh otomatis, unduh terlebih dahulu</string>
<string name="pref_security_summary">Kunci aplikasi, amankan layar</string>
<string name="pref_appearance_summary">Tema, format tanggal &amp; waktu</string>

View file

@ -634,7 +634,7 @@
<string name="skipped_reason_not_always_update">Saltato perché la serie non richiede aggiornamenti</string>
<string name="action_search_hint">Ricerca…</string>
<string name="pref_appearance_summary">Tema, formato data e ora</string>
<string name="crash_screen_description">%s ha riscontrato un errore imprevisto. Ti suggeriamo di condividere il registro degli arresti anomali nel nostro canale di supporto su Discord.</string>
<string name="crash_screen_description">%s ha riscontrato un errore imprevisto.</string>
<string name="pref_library_summary">Categorie, aggiornamenti globali, azioni di scorrimento capitoli</string>
<string name="pref_downloads_summary">Download automatico, download anticipato</string>
<string name="pref_browse_summary">Fonti, estensioni, ricerca globale</string>

View file

@ -629,7 +629,7 @@
<string name="missing_storage_permission">ストレージ権限を持っていません</string>
<string name="skipped_reason_not_always_update">シリーズは更新を必要としないため、スキップされました</string>
<string name="action_search_hint">検索…</string>
<string name="crash_screen_description">%sでは予期せぬエラーが発生しました。お手数ですが、クラッシュ ログを Discord のサポート チャネルで共有するようお願い致します。</string>
<string name="crash_screen_description">%sでは予期せぬエラーが発生しました。</string>
<string name="invalid_location">無効な場所: %s</string>
<string name="unknown_title">不明なタイトル</string>
<string name="error_user_agent_string_invalid">ユーザー エージェント文字列が無効です</string>

View file

@ -573,7 +573,7 @@
<string name="file_select_cover">Мұқаба таңдау</string>
<string name="file_select_backup">Сақтық көшірме файлын таңдау</string>
<string name="crash_screen_title">Ойбай!</string>
<string name="crash_screen_description">%s күтпеген қатеге ұшырады. Жаңылыс журналдарын Discord сайтындағы қолдау арнамызда ортақ пайдалануды ұсынамыз.</string>
<string name="crash_screen_description">%s күтпеген қатеге ұшырады.</string>
<string name="crash_screen_restart_application">Қолданбаны өшіріп қосу</string>
<string name="download_queue_error">Тараулар жүктелмеді. Жүктеулер кезегіне барып, сол жерден байқап көре аласыз</string>
<string name="download_insufficient_space">Жадта орын аз болғандықтан тараулар жүктелмейді</string>

View file

@ -640,7 +640,7 @@
<string name="pref_downloads_summary">자동 다운로드, 미리 다운로드</string>
<string name="crash_screen_title">앗!</string>
<string name="crash_screen_restart_application">애플리케이션 재시작</string>
<string name="crash_screen_description">%s에 예기치 않은 오류가 발생했습니다. 충돌 로그를 공식 디스코드 채널에 공유하는 것을 추천합니다.</string>
<string name="crash_screen_description">%s에 예기치 않은 오류가 발생했습니다.</string>
<string name="unknown_title">알 수 없는 제목</string>
<string name="invalid_location">잘못된 위치: %s</string>
<string name="error_user_agent_string_invalid">잘못된 사용자 에이전트 문자열</string>

View file

@ -644,7 +644,7 @@
<string name="error_user_agent_string_invalid">Netinkama naudotojo agento eilutė</string>
<string name="unknown_title">Nežinomas pavadinimas</string>
<string name="updates_last_update_info_just_now">Ką tik</string>
<string name="crash_screen_description">%s susidūrė su netikėta klaida. Siūlome padaryti šio pranešimo ekrano nuotrauką, išsisaugoti gedimų žurnalus ir pasidalyti tuo mūsų „Discord“ palaikymo kanale.</string>
<string name="crash_screen_description">%s susidūrė su netikėta klaida.</string>
<string name="are_you_sure">Ar esate tikri\?</string>
<string name="popular">Populiaru</string>
<string name="crash_screen_title">Ups!</string>

View file

@ -671,7 +671,7 @@
<string name="delete_category_confirmation">Vai vēlaties dzēst kategoriju \"%s\"\?</string>
<string name="track_error">%1$s kļūda: %2$s</string>
<string name="update_already_running">Atjauninājums jau darbojas</string>
<string name="crash_screen_description">%s radās neparedzēta kļūda. Mēs iesakām dalīties ar avārijas žurnālu mūsu atbalsta kanālā Discord lietotnē.</string>
<string name="crash_screen_description">%s radās neparedzēta kļūda.</string>
<string name="pref_page_rotate">Pagrieziet platas lapas, lai tās ietilptu</string>
<string name="pref_page_rotate_invert">Apvērst orientācija pagrieztām platām lapām</string>
<string name="split_tall_images">Sadalīt augstus attēlus</string>

View file

@ -640,7 +640,7 @@
<string name="crash_screen_title">Aduhai!</string>
<string name="crash_screen_restart_application">Mulakan semula aplikasi</string>
<string name="pref_browse_summary">Sumber, sambungan, carian keseluruhan</string>
<string name="crash_screen_description">%s mengalami ralat tidak dijangka. Kami mencadangkan anda untuk kongsi log kerosakan pada Discord kami di saluran bantuan.</string>
<string name="crash_screen_description">%s mengalami ralat tidak dijangka.</string>
<string name="unknown_title">Tajuk tidak diketahui</string>
<string name="invalid_location">Lokasi tidak sah: %s</string>
<string name="error_user_agent_string_invalid">Rentetan ejen pengguna tidak sah</string>

View file

@ -623,7 +623,7 @@
<string name="delete_category">Slett kategori</string>
<string name="internal_error">InternalError: Sjekk krasjlogger for mer informasjon</string>
<string name="crash_screen_title">Oops!</string>
<string name="crash_screen_description">%s fikk en uventet feil. Vi foreslår at du deler krasjloggene i vår støttekanal på Discord.</string>
<string name="crash_screen_description">%s fikk en uventet feil.</string>
<string name="pref_app_language">Appspråk</string>
<string name="description_placeholder">Ingen beskrivelse</string>
<string name="action_search_hint">Søk…</string>

View file

@ -668,7 +668,7 @@
<string name="track_remove_start_date_conf_text">Dit gaat je eerder geselcteerde startdatum %s verwijderen</string>
<string name="delete_downloaded">Download verwijderen</string>
<string name="skipped_reason_not_always_update">Overgeslagen omdat serie geen updates vereist.</string>
<string name="crash_screen_description">%s is een onverwachte fout tegengekomen. We raden u aan de crashlogboeken te delen in ons ondersteuningskanaal op Discord.</string>
<string name="crash_screen_description">%s is een onverwachte fout tegengekomen.</string>
<string name="pref_debug_info">Foutopsporingsinformatie</string>
<string name="label_completed_titles">Voltooide titels</string>
<string name="pref_update_only_in_release_period">Buiten verwachte vrijgave periode</string>

View file

@ -635,7 +635,7 @@
<string name="label_local">Lokalne</string>
<string name="label_downloaded">Pobrane</string>
<string name="pref_invalidate_download_cache_summary">Wymuś ponowne sprawdzenie pobranych rozdziałów przez aplikację</string>
<string name="crash_screen_description">%s napotkał nieoczekiwany błąd. Sugerujemy podzielenie się logami crasha, a następnie udostępnienie ich na naszym kanale wsparcia na Discordzie.</string>
<string name="crash_screen_description">%s napotkał nieoczekiwany błąd.</string>
<string name="pref_reader_summary">Tryb czytania, wyświetl, nawigacja</string>
<string name="invalid_location">Nieprawidłowa lokalizacja: %s</string>
<string name="action_display_show_continue_reading_button">Przycisk wznów czytanie</string>

View file

@ -640,7 +640,7 @@
<string name="pref_advanced_summary">Exportar registros de travamento, otimizações de bateria</string>
<string name="crash_screen_title">Ooops!</string>
<string name="crash_screen_restart_application">Reiniciar o aplicativo</string>
<string name="crash_screen_description">%s teve um erro inesperado. Nós sugerimos que você compartilhe os registros de travamento em nosso canal de suporte no Discord.</string>
<string name="crash_screen_description">%s teve um erro inesperado.</string>
<string name="unknown_title">Título desconhecido</string>
<string name="invalid_location">Local inválido: %s</string>
<string name="error_user_agent_string_invalid">Valor de user agent inválido</string>

View file

@ -651,7 +651,7 @@
<string name="updates_last_update_info_just_now">Agora mesmo</string>
<string name="crash_screen_restart_application">Reinicie o aplicativo</string>
<string name="crash_screen_title">Ops!</string>
<string name="crash_screen_description">%s encontrou um erro inesperado. Sugerimos que você compartilhe os registros de falha em nosso canal de suporte no Discord.</string>
<string name="crash_screen_description">%s encontrou um erro inesperado.</string>
<string name="pref_downloads_summary">Descarga automática, descarga a frente</string>
<string name="pref_tracking_summary">Sincronização de progresso unidirecional, sincronização aprimorada</string>
<string name="pref_browse_summary">Fontes, extensões, pesquisa global</string>

View file

@ -633,7 +633,7 @@
<string name="pref_reset_user_agent_string">Restabilirea șirului implicit de agent al utilizatorului</string>
<string name="updates_last_update_info_just_now">Chiar acum</string>
<string name="pref_verbose_logging">Consemnare verbală</string>
<string name="crash_screen_description">%s a întâmpinat o eroare neașteptată. Vă sugerăm să faceți o captură de ecran a acestui mesaj, să descărcați registrele de erori și apoi să le partajați prin intermediul canalului nostru de asistență pe Discord.</string>
<string name="crash_screen_description">%s a întâmpinat o eroare neașteptată.</string>
<string name="appwidget_unavailable_locked">Widgetul nu este disponibil atunci când este activată blocarea aplicației</string>
<string name="pref_appearance_summary">Tema, formatul datei și al orei</string>
<string name="pref_library_summary">Categorii, actualizări globale</string>

View file

@ -640,7 +640,7 @@
<string name="pref_security_summary">Блокировка приложения, защита экрана</string>
<string name="pref_advanced_summary">Выгрузка журнала с ошибками, оптимизация батареи</string>
<string name="crash_screen_title">Ой, ошибочка вышла!</string>
<string name="crash_screen_description">%s столкнулось с непредвиденной ошибкой. Мы рекомендуем поделиться журналом с ошибками в нашем Discord сервере в ветке support.</string>
<string name="crash_screen_description">%s столкнулось с непредвиденной ошибкой.</string>
<string name="unknown_title">Неизвестное название</string>
<string name="invalid_location">Недопустимое расположение: %s</string>
<string name="error_user_agent_string_invalid">Недопустимый параметр user agent</string>

View file

@ -633,7 +633,7 @@
<string name="missing_storage_permission">Permissu de archiviatzione non cuntzessu</string>
<string name="skipped_reason_not_always_update">Brincadu ca sa sèrie non tenet bisòngiu de agiornamentos</string>
<string name="action_search_hint">Chirca…</string>
<string name="crash_screen_description">%s at tentu un\'errore non prevìdidu. Ti cussigiamus de cumpartzire sos registros de sas serraduras anòmalas in su canale de suportu nostru de Discord.</string>
<string name="crash_screen_description">%s at tentu un\'errore non prevìdidu.</string>
<string name="crash_screen_restart_application">Torra a allùghere s\'aplicatzione</string>
<string name="pref_appearance_summary">Tema, data e formadu de s\'ora</string>
<string name="pref_library_summary">Categorias, agiornamentos globales, iscurrimentu de capìtulos</string>

View file

@ -614,7 +614,7 @@
<string name="migration_help_guide">Udhëzuesi i migrimit të burimit</string>
<string name="migration_selection_prompt">Zgjidhni një burim për të migruar</string>
<string name="migrate">Migroni</string>
<string name="crash_screen_description">%s hasi në një gabim të papritur. Ne ju sugjerojmë që të fotografoni këtë mesazh, të hidhni regjistrat e aksidenteve dhe më pas ta shpërndani në kanalin tonë të mbështetjes në Discord.</string>
<string name="crash_screen_description">%s hasi në një gabim të papritur.</string>
<string name="crash_screen_restart_application">Rinisni aplikacionin</string>
<string name="download_insufficient_space">Kapitujt nuk mund të shkarkoheshin për shkak të hapësirës së ulët të ruajtjes</string>
<string name="download_queue_size_warning">Paralajmërim: shkarkimet e mëdha me shumicë mund të çojnë në ngadalësimin e burimeve dhe/ose bllokimin e Tachiyomi. Trokit për të mësuar më shumë.</string>

View file

@ -594,7 +594,7 @@
<string name="pref_reset_viewer_flags_success">Сва подешавања читача су ресетована</string>
<string name="pref_invalidate_download_cache_summary">Присили апликацију да поново провери преузета поглавља</string>
<string name="not_installed">Није инсталирано</string>
<string name="crash_screen_description">%s је наишао на неочекивану грешку. Предлажемо да поделите запис о прекиду програма на нашем каналу за подршку на Discord-у.</string>
<string name="crash_screen_description">%s је наишао на неочекивану грешку.</string>
<string name="appwidget_unavailable_locked">Widget није доступан када је омогућено закључавање апликације</string>
<string name="pref_library_update_show_tab_badge">Прокажи број непрочитаних на икони ажурирања</string>
<string name="wish_list">Листа жеља</string>

View file

@ -638,7 +638,7 @@
<string name="invalid_location">Ogiltig plats: %s</string>
<string name="missing_storage_permission">Lagrings rättigheter inte tillagda</string>
<string name="skipped_reason_not_always_update">Hoppat över för att serien inte behöver uppdateras</string>
<string name="crash_screen_description">%s stötte på ett oväntat fel. Vi föreslår att du delar med dig av kraschloggen i vår supportkanal på Discord.</string>
<string name="crash_screen_description">%s stötte på ett oväntat fel.</string>
<string name="pref_appearance_summary">Tema, datum och tids format</string>
<string name="pref_browse_summary">Källor, tillägg, global sökning</string>
<string name="crash_screen_restart_application">Starta om applikationen</string>

View file

@ -640,7 +640,7 @@
<string name="pref_tracking_summary">Tek yönlü ilerleme eşitlemesi, gelişmiş eşitleme</string>
<string name="crash_screen_restart_application">Uygulamayı yeniden başlat</string>
<string name="crash_screen_title">Tüh!</string>
<string name="crash_screen_description">%s beklenmeyen bir hatayla karşılaştı. Çökme günlüklerini Discord\'daki destek kanalımızda paylaşmanızı öneririz.</string>
<string name="crash_screen_description">%s beklenmeyen bir hatayla karşılaştı.</string>
<string name="unknown_title">Bilinmeyen başlık</string>
<string name="invalid_location">Geçersiz konum: %s</string>
<string name="error_user_agent_string_invalid">Geçersiz kullanıcı aracısı dizgesi</string>

View file

@ -627,7 +627,7 @@
<string name="error_user_agent_string_blank">Рядок User agent не може бути пустим</string>
<string name="popular">Популярне</string>
<string name="auto_download_while_reading">Автоматичне завантаження під час читання</string>
<string name="crash_screen_description">%s зіткнулися з неочікуваною помилкою. Ми пропонуємо вам поділитися журналами збоїв у нашому каналі підтримки на Discord.</string>
<string name="crash_screen_description">%s зіткнулися з неочікуваною помилкою.</string>
<string name="pref_appearance_summary">Тема, формат дати та часу</string>
<string name="pref_library_summary">Категорії, глобальне оновлення, гортання розділів</string>
<string name="pref_reader_summary">Режим читання, відображення, навігація</string>

View file

@ -680,7 +680,7 @@
<string name="pref_hide_in_library_items">Giấu những truyện đã có trong thư viện</string>
<string name="minute_short">%d phút</string>
<string name="download_notifier_cache_renewal">Đang kiểm tra những truyện đã tải xuống</string>
<string name="crash_screen_description">%s đã có lỗi. Bạn nên chia sẻ tệp báo lỗi tạm ở trong kênh hỗ trợ của chúng tôi trên Discord.</string>
<string name="crash_screen_description">%s đã có lỗi.</string>
<string name="action_update_category">Cập nhật danh mục</string>
<string name="confirm_add_duplicate_manga">Truyện này đã có sẵn trong thư viện bạn.
\n

View file

@ -638,7 +638,7 @@
<string name="pref_advanced_summary">傾印當機記錄、電池效能最佳化</string>
<string name="crash_screen_restart_application">重新啟動應用程式</string>
<string name="crash_screen_title">哎呀!</string>
<string name="crash_screen_description">「%s」發生了未預期的錯誤。我們建議你將當機記錄分享至我們位於 Discord 上的 support 頻道。</string>
<string name="crash_screen_description">「%s」發生了未預期的錯誤。</string>
<string name="pref_library_summary">類別、全域更新、目錄滑動動作</string>
<string name="pref_browse_summary">來源、擴充套件、全域搜尋</string>
<string name="invalid_location">無效的位置:%s</string>