Compare commits

...

19 Commits

Author SHA1 Message Date
gallegonovato
3778a9e1d4 Translated using Weblate (Spanish)
Currently translated at 100.0% (416 of 416 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/
Translation: Kotatsu/Strings
2023-05-17 18:51:56 +03:00
Макар Разин
71ecd9d8e2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (416 of 416 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (416 of 416 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (416 of 416 strings)

Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/be/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ru/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/
Translation: Kotatsu/Strings
2023-05-17 18:51:56 +03:00
Subham Jena
7cba8d2dc7 Translated using Weblate (Odia)
Currently translated at 3.8% (16 of 416 strings)

Translated using Weblate (Odia)

Currently translated at 2.4% (10 of 415 strings)

Co-authored-by: Subham Jena <subhamjena8465@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/or/
Translation: Kotatsu/Strings
2023-05-17 18:51:56 +03:00
GpixeL
79c2927da2 Translated using Weblate (Indonesian)
Currently translated at 96.8% (402 of 415 strings)

Co-authored-by: GpixeL <gamesfire313@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/id/
Translation: Kotatsu/Strings
2023-05-17 18:51:56 +03:00
ctntt
a4a28c7342 Translated using Weblate (German)
Currently translated at 99.2% (413 of 416 strings)

Translated using Weblate (German)

Currently translated at 99.5% (413 of 415 strings)

Co-authored-by: ctntt <pavlov_mainstreamed@slmail.me>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/de/
Translation: Kotatsu/Strings
2023-05-17 18:51:56 +03:00
43a92bdf08 Improve sync logging 2023-05-17 17:00:42 +03:00
51ff1ff7b7 Fix concurrent chapters loading in reader 2023-05-17 16:17:18 +03:00
2e0eb5de54 Fix handling special characters in local manga filenames 2023-05-16 13:07:11 +03:00
4f68e7d0e6 Handle WebView unavailability 2023-05-16 07:56:05 +03:00
ctntt
c6d303980b Translated using Weblate (German)
Currently translated at 100.0% (7 of 7 strings)

Translated using Weblate (German)

Currently translated at 99.5% (412 of 414 strings)

Co-authored-by: ctntt <pavlov_mainstreamed@slmail.me>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/plurals/de/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/de/
Translation: Kotatsu/Strings
Translation: Kotatsu/plurals
2023-05-15 18:51:27 +03:00
18e6ee1453 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (414 of 414 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (414 of 414 strings)

Co-authored-by: Koitharu <nvasya95@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/be/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/
Translation: Kotatsu/Strings
2023-05-15 18:51:27 +03:00
J. Lavoie
09144d7f55 Translated using Weblate (French)
Currently translated at 100.0% (414 of 414 strings)

Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/fr/
Translation: Kotatsu/Strings
2023-05-15 18:51:27 +03:00
gallegonovato
05583504ee Translated using Weblate (Spanish)
Currently translated at 100.0% (7 of 7 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (414 of 414 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/plurals/es/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/
Translation: Kotatsu/Strings
Translation: Kotatsu/plurals
2023-05-15 18:51:27 +03:00
GpixeL
8dc02967fc Translated using Weblate (Indonesian)
Currently translated at 97.1% (402 of 414 strings)

Co-authored-by: GpixeL <gamesfire313@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/id/
Translation: Kotatsu/Strings
2023-05-15 18:51:27 +03:00
Макар Разин
4c206746c9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (414 of 414 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (414 of 414 strings)

Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/be/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/
Translation: Kotatsu/Strings
2023-05-15 18:51:27 +03:00
Subham Jena
e9b0e9f740 Translated using Weblate (Odia)
Currently translated at 2.1% (9 of 414 strings)

Translated using Weblate (Odia)

Currently translated at 85.7% (6 of 7 strings)

Added translation using Weblate (Odia)

Translated using Weblate (Odia)

Currently translated at 14.2% (1 of 7 strings)

Added translation using Weblate (Odia)

Co-authored-by: Subham Jena <subhamjena8465@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/plurals/or/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/or/
Translation: Kotatsu/Strings
Translation: Kotatsu/plurals
2023-05-15 18:51:27 +03:00
6d0cd49db3 Improve branch selection 2023-05-15 18:37:25 +03:00
e69964d1f5 Fix obtaining manga output 2023-05-12 15:56:50 +03:00
f368277d73 Fix lint warnings 2023-05-12 13:42:31 +03:00
77 changed files with 3180 additions and 2700 deletions

View File

@@ -15,8 +15,8 @@ android {
applicationId 'org.koitharu.kotatsu' applicationId 'org.koitharu.kotatsu'
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 33 targetSdkVersion 33
versionCode 542 versionCode 545
versionName '5.1-b1' versionName '5.1.1'
generatedDensities = [] generatedDensities = []
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -78,15 +78,15 @@ afterEvaluate {
} }
dependencies { dependencies {
//noinspection GradleDependency //noinspection GradleDependency
implementation('com.github.KotatsuApp:kotatsu-parsers:96b9ac36f3') { implementation('com.github.KotatsuApp:kotatsu-parsers:cae7073f87') {
exclude group: 'org.json', module: 'json' exclude group: 'org.json', module: 'json'
} }
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.21' implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.21'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.10.0' implementation 'androidx.core:core-ktx:1.10.1'
implementation 'androidx.activity:activity-ktx:1.7.1' implementation 'androidx.activity:activity-ktx:1.7.1'
implementation 'androidx.fragment:fragment-ktx:1.5.7' implementation 'androidx.fragment:fragment-ktx:1.5.7'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
@@ -122,8 +122,8 @@ dependencies {
implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.2' implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.2'
implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.2' implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.2'
implementation 'com.google.dagger:hilt-android:2.45' implementation 'com.google.dagger:hilt-android:2.46.1'
kapt 'com.google.dagger:hilt-compiler:2.45' kapt 'com.google.dagger:hilt-compiler:2.46.1'
implementation 'androidx.hilt:hilt-work:1.0.0' implementation 'androidx.hilt:hilt-work:1.0.0'
kapt 'androidx.hilt:hilt-compiler:1.0.0' kapt 'androidx.hilt:hilt-compiler:1.0.0'
@@ -140,18 +140,18 @@ dependencies {
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
testImplementation 'org.json:json:20230227' testImplementation 'org.json:json:20230227'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4' testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1'
androidTestImplementation 'androidx.test:runner:1.5.2' androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test:rules:1.5.0' androidTestImplementation 'androidx.test:rules:1.5.0'
androidTestImplementation 'androidx.test:core-ktx:1.5.0' androidTestImplementation 'androidx.test:core-ktx:1.5.0'
androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.5' androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.5'
androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4' androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1'
androidTestImplementation 'androidx.room:room-testing:2.5.1' androidTestImplementation 'androidx.room:room-testing:2.5.1'
androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.14.0' androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.15.0'
androidTestImplementation 'com.google.dagger:hilt-android-testing:2.45' androidTestImplementation 'com.google.dagger:hilt-android-testing:2.46.1'
kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.45' kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.46.1'
} }

View File

@@ -1,4 +1,5 @@
-optimizationpasses 8 -optimizationpasses 8
-dontobfuscate
-assumenosideeffects class kotlin.jvm.internal.Intrinsics { -assumenosideeffects class kotlin.jvm.internal.Intrinsics {
public static void checkExpressionValueIsNotNull(...); public static void checkExpressionValueIsNotNull(...);
public static void checkNotNullExpressionValue(...); public static void checkNotNullExpressionValue(...);

View File

@@ -163,10 +163,6 @@
</activity> </activity>
<service
android:name="org.koitharu.kotatsu.download.ui.service.DownloadService"
android:foregroundServiceType="dataSync"
android:stopWithTask="false" />
<service android:name="org.koitharu.kotatsu.local.ui.LocalChaptersRemoveService" /> <service android:name="org.koitharu.kotatsu.local.ui.LocalChaptersRemoveService" />
<service <service
android:name="org.koitharu.kotatsu.widget.shelf.ShelfWidgetService" android:name="org.koitharu.kotatsu.widget.shelf.ShelfWidgetService"
@@ -241,7 +237,13 @@
<provider <provider
android:name="androidx.startup.InitializationProvider" android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup" android:authorities="${applicationId}.androidx-startup"
tools:node="remove" /> android:exported="false"
tools:node="remove">
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
<receiver <receiver
android:name="org.koitharu.kotatsu.widget.shelf.ShelfWidgetProvider" android:name="org.koitharu.kotatsu.widget.shelf.ShelfWidgetProvider"

View File

@@ -0,0 +1,93 @@
package org.koitharu.kotatsu.base.ui.dialog
import android.content.Context
import android.content.DialogInterface
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.core.view.updatePadding
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.hannesdorfmann.adapterdelegates4.AdapterDelegate
import com.hannesdorfmann.adapterdelegates4.AdapterDelegatesManager
import com.hannesdorfmann.adapterdelegates4.ListDelegationAdapter
import org.koitharu.kotatsu.R
class RecyclerViewAlertDialog private constructor(
private val delegate: AlertDialog
) : DialogInterface by delegate {
fun show() = delegate.show()
class Builder<T>(context: Context) {
private val recyclerView = RecyclerView(context)
private val delegatesManager = AdapterDelegatesManager<List<T>>()
private var items: List<T>? = null
private val delegate = MaterialAlertDialogBuilder(context)
.setView(recyclerView)
init {
recyclerView.layoutManager = LinearLayoutManager(context)
recyclerView.updatePadding(
top = context.resources.getDimensionPixelOffset(R.dimen.list_spacing),
)
recyclerView.clipToPadding = false
}
fun setTitle(@StringRes titleResId: Int): Builder<T> {
delegate.setTitle(titleResId)
return this
}
fun setTitle(title: CharSequence): Builder<T> {
delegate.setTitle(title)
return this
}
fun setIcon(@DrawableRes iconId: Int): Builder<T> {
delegate.setIcon(iconId)
return this
}
fun setPositiveButton(
@StringRes textId: Int,
listener: DialogInterface.OnClickListener,
): Builder<T> {
delegate.setPositiveButton(textId, listener)
return this
}
fun setNegativeButton(
@StringRes textId: Int,
listener: DialogInterface.OnClickListener? = null
): Builder<T> {
delegate.setNegativeButton(textId, listener)
return this
}
fun setCancelable(isCancelable: Boolean): Builder<T> {
delegate.setCancelable(isCancelable)
return this
}
fun addAdapterDelegate(subject: AdapterDelegate<List<T>>): Builder<T> {
delegatesManager.addDelegate(subject)
return this
}
fun setItems(list: List<T>): Builder<T> {
items = list
return this
}
fun create(): RecyclerViewAlertDialog {
recyclerView.adapter = ListDelegationAdapter(delegatesManager).also {
it.items = items
}
return RecyclerViewAlertDialog(delegate.create())
}
}
}

View File

@@ -8,19 +8,22 @@ abstract class BoundsScrollListener(private val offsetTop: Int, private val offs
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy) super.onScrolled(recyclerView, dx, dy)
if (recyclerView.hasPendingAdapterUpdates()) {
return
}
val layoutManager = (recyclerView.layoutManager as? LinearLayoutManager) ?: return val layoutManager = (recyclerView.layoutManager as? LinearLayoutManager) ?: return
val firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition() val firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition()
if (firstVisibleItemPosition == RecyclerView.NO_POSITION) { if (firstVisibleItemPosition == RecyclerView.NO_POSITION) {
return return
} }
if (firstVisibleItemPosition <= offsetTop) {
onScrolledToStart(recyclerView)
}
val visibleItemCount = layoutManager.childCount val visibleItemCount = layoutManager.childCount
val totalItemCount = layoutManager.itemCount val totalItemCount = layoutManager.itemCount
if (visibleItemCount + firstVisibleItemPosition >= totalItemCount - offsetBottom) { if (visibleItemCount + firstVisibleItemPosition >= totalItemCount - offsetBottom) {
onScrolledToEnd(recyclerView) onScrolledToEnd(recyclerView)
} }
if (firstVisibleItemPosition <= offsetTop) {
onScrolledToStart(recyclerView)
}
} }
abstract fun onScrolledToStart(recyclerView: RecyclerView) abstract fun onScrolledToStart(recyclerView: RecyclerView)

View File

@@ -2,9 +2,9 @@ package org.koitharu.kotatsu.base.ui.list
import android.view.View import android.view.View
interface OnListItemClickListener<I> { fun interface OnListItemClickListener<I> {
fun onItemClick(item: I, view: View) fun onItemClick(item: I, view: View)
fun onItemLongClick(item: I, view: View) = false fun onItemLongClick(item: I, view: View) = false
} }

View File

@@ -0,0 +1,30 @@
package org.koitharu.kotatsu.base.ui.list
import androidx.recyclerview.widget.RecyclerView
class ScrollListenerInvalidationObserver(
private val recyclerView: RecyclerView,
private val scrollListener: RecyclerView.OnScrollListener,
) : RecyclerView.AdapterDataObserver() {
override fun onChanged() {
super.onChanged()
invalidateScroll()
}
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
super.onItemRangeInserted(positionStart, itemCount)
invalidateScroll()
}
override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) {
super.onItemRangeRemoved(positionStart, itemCount)
invalidateScroll()
}
private fun invalidateScroll() {
recyclerView.post {
scrollListener.onScrolled(recyclerView, 0, 0)
}
}
}

View File

@@ -10,9 +10,7 @@ import com.google.android.material.floatingactionbutton.ExtendedFloatingActionBu
open class ShrinkOnScrollBehavior : Behavior<ExtendedFloatingActionButton> { open class ShrinkOnScrollBehavior : Behavior<ExtendedFloatingActionButton> {
@Suppress("unused")
constructor() : super() constructor() : super()
@Suppress("unused")
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
override fun onStartNestedScroll( override fun onStartNestedScroll(

View File

@@ -15,6 +15,7 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.base.ui.BaseActivity
import org.koitharu.kotatsu.core.network.CommonHeadersInterceptor import org.koitharu.kotatsu.core.network.CommonHeadersInterceptor
import org.koitharu.kotatsu.databinding.ActivityBrowserBinding import org.koitharu.kotatsu.databinding.ActivityBrowserBinding
import org.koitharu.kotatsu.utils.ext.catchingWebViewUnavailability
import com.google.android.material.R as materialR import com.google.android.material.R as materialR
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
@@ -24,7 +25,9 @@ class BrowserActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallback
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(ActivityBrowserBinding.inflate(layoutInflater)) if (!catchingWebViewUnavailability { setContentView(ActivityBrowserBinding.inflate(layoutInflater)) }) {
return
}
supportActionBar?.run { supportActionBar?.run {
setDisplayHomeAsUpEnabled(true) setDisplayHomeAsUpEnabled(true)
setHomeAsUpIndicator(materialR.drawable.abc_ic_clear_material) setHomeAsUpIndicator(materialR.drawable.abc_ic_clear_material)

View File

@@ -1,7 +1,10 @@
package org.koitharu.kotatsu.core.db.entity package org.koitharu.kotatsu.core.db.entity
import org.koitharu.kotatsu.core.model.MangaSource import org.koitharu.kotatsu.core.model.MangaSource
import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaState
import org.koitharu.kotatsu.parsers.model.MangaTag
import org.koitharu.kotatsu.parsers.model.SortOrder
import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.mapToSet
import org.koitharu.kotatsu.parsers.util.toTitleCase import org.koitharu.kotatsu.parsers.util.toTitleCase
import org.koitharu.kotatsu.utils.ext.longHashCode import org.koitharu.kotatsu.utils.ext.longHashCode
@@ -66,7 +69,6 @@ fun SortOrder(name: String, fallback: SortOrder): SortOrder = runCatching {
SortOrder.valueOf(name) SortOrder.valueOf(name)
}.getOrDefault(fallback) }.getOrDefault(fallback)
@Suppress("FunctionName")
fun MangaState(name: String): MangaState? = runCatching { fun MangaState(name: String): MangaState? = runCatching {
MangaState.valueOf(name) MangaState.valueOf(name)
}.getOrNull() }.getOrNull()

View File

@@ -4,12 +4,15 @@ import android.content.Context
import androidx.annotation.WorkerThread import androidx.annotation.WorkerThread
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.cancelAndJoin import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.runInterruptible import kotlinx.coroutines.runInterruptible
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.utils.ext.printStackTraceDebug import org.koitharu.kotatsu.utils.ext.printStackTraceDebug
import org.koitharu.kotatsu.utils.ext.processLifecycleScope import org.koitharu.kotatsu.utils.ext.processLifecycleScope
@@ -82,6 +85,15 @@ class FileLogger(
flushImpl() flushImpl()
} }
@WorkerThread
fun flushBlocking() {
if (!isEnabled) {
return
}
runBlockingSafe { flushJob?.cancelAndJoin() }
runBlockingSafe { flushImpl() }
}
private fun postFlush() { private fun postFlush() {
if (flushJob?.isActive == true) { if (flushJob?.isActive == true) {
return return
@@ -96,10 +108,10 @@ class FileLogger(
} }
} }
private suspend fun flushImpl() { private suspend fun flushImpl() = withContext(NonCancellable) {
mutex.withLock { mutex.withLock {
if (buffer.isEmpty()) { if (buffer.isEmpty()) {
return return@withContext
} }
runInterruptible(Dispatchers.IO) { runInterruptible(Dispatchers.IO) {
if (file.length() > MAX_SIZE_BYTES) { if (file.length() > MAX_SIZE_BYTES) {
@@ -131,4 +143,9 @@ class FileLogger(
} }
bakFile.delete() bakFile.delete()
} }
private inline fun runBlockingSafe(crossinline block: suspend () -> Unit) = try {
runBlocking(NonCancellable) { block() }
} catch (_: InterruptedException) {
}
} }

View File

@@ -3,8 +3,8 @@ package org.koitharu.kotatsu.core.model
import androidx.core.os.LocaleListCompat import androidx.core.os.LocaleListCompat
import org.koitharu.kotatsu.details.ui.model.ChapterListItem import org.koitharu.kotatsu.details.ui.model.ChapterListItem
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.mapToSet
import org.koitharu.kotatsu.parsers.util.toTitleCase
import org.koitharu.kotatsu.utils.ext.iterator import org.koitharu.kotatsu.utils.ext.iterator
fun Collection<Manga>.ids() = mapToSet { it.id } fun Collection<Manga>.ids() = mapToSet { it.id }
@@ -35,15 +35,22 @@ fun Manga.getPreferredBranch(history: MangaHistory?): String? {
} }
} }
val groups = ch.groupBy { it.branch } val groups = ch.groupBy { it.branch }
if (groups.size == 1) {
return groups.keys.first()
}
val candidates = HashMap<String?, List<MangaChapter>>(groups.size)
for (locale in LocaleListCompat.getAdjustedDefault()) { for (locale in LocaleListCompat.getAdjustedDefault()) {
var language = locale.getDisplayLanguage(locale).toTitleCase(locale) val displayLanguage = locale.getDisplayLanguage(locale)
if (groups.containsKey(language)) { val displayName = locale.getDisplayName(locale)
return language for (branch in groups.keys) {
} if (branch != null && (
language = locale.getDisplayName(locale).toTitleCase(locale) branch.contains(displayLanguage, ignoreCase = true) ||
if (groups.containsKey(language)) { branch.contains(displayName, ignoreCase = true)
return language )
) {
candidates[branch] = groups[branch] ?: continue
}
} }
} }
return groups.maxByOrNull { it.value.size }?.key return candidates.ifEmpty { groups }.maxByOrNull { it.value.size }?.key
} }

View File

@@ -11,6 +11,7 @@ import androidx.annotation.VisibleForTesting
import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutInfoCompat
import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.IconCompat
import androidx.core.graphics.drawable.toBitmap
import androidx.room.InvalidationTracker import androidx.room.InvalidationTracker
import coil.ImageLoader import coil.ImageLoader
import coil.request.ImageRequest import coil.request.ImageRequest
@@ -27,9 +28,9 @@ import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.history.domain.HistoryRepository
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.reader.ui.ReaderActivity import org.koitharu.kotatsu.reader.ui.ReaderActivity
import org.koitharu.kotatsu.utils.ext.getDrawableOrThrow
import org.koitharu.kotatsu.utils.ext.printStackTraceDebug import org.koitharu.kotatsu.utils.ext.printStackTraceDebug
import org.koitharu.kotatsu.utils.ext.processLifecycleScope import org.koitharu.kotatsu.utils.ext.processLifecycleScope
import org.koitharu.kotatsu.utils.ext.requireBitmap
import org.koitharu.kotatsu.utils.ext.runCatchingCancellable import org.koitharu.kotatsu.utils.ext.runCatchingCancellable
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -92,6 +93,14 @@ class ShortcutsUpdater @Inject constructor(
return manager.maxShortcutCountPerActivity > 0 return manager.maxShortcutCountPerActivity > 0
} }
fun notifyMangaOpened(mangaId: Long) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
return
}
val manager = context.getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager
manager.reportShortcutUsed(mangaId.toString())
}
@RequiresApi(Build.VERSION_CODES.N_MR1) @RequiresApi(Build.VERSION_CODES.N_MR1)
private suspend fun updateShortcutsImpl() = runCatchingCancellable { private suspend fun updateShortcutsImpl() = runCatchingCancellable {
val manager = context.getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager val manager = context.getSystemService(Context.SHORTCUT_SERVICE) as ShortcutManager
@@ -122,7 +131,7 @@ class ShortcutsUpdater @Inject constructor(
.precision(Precision.EXACT) .precision(Precision.EXACT)
.scale(Scale.FILL) .scale(Scale.FILL)
.build(), .build(),
).requireBitmap() ).getDrawableOrThrow().toBitmap()
}.fold( }.fold(
onSuccess = { IconCompat.createWithAdaptiveBitmap(it) }, onSuccess = { IconCompat.createWithAdaptiveBitmap(it) },
onFailure = { IconCompat.createWithResource(context, R.drawable.ic_shortcut_default) }, onFailure = { IconCompat.createWithResource(context, R.drawable.ic_shortcut_default) },

View File

@@ -19,10 +19,13 @@ import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import okhttp3.ResponseBody import okhttp3.ResponseBody
import okhttp3.internal.closeQuietly import okhttp3.internal.closeQuietly
import okio.Closeable
import okio.buffer
import org.koitharu.kotatsu.core.model.MangaSource import org.koitharu.kotatsu.core.model.MangaSource
import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.parser.RemoteMangaRepository import org.koitharu.kotatsu.core.parser.RemoteMangaRepository
import org.koitharu.kotatsu.local.data.CacheDir import org.koitharu.kotatsu.local.data.CacheDir
import org.koitharu.kotatsu.local.data.util.withExtraCloseable
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.util.await import org.koitharu.kotatsu.parsers.util.await
import java.net.HttpURLConnection import java.net.HttpURLConnection
@@ -54,7 +57,9 @@ class FaviconFetcher(
val icon = checkNotNull(favicons.find(sizePx)) { "No favicons found" } val icon = checkNotNull(favicons.find(sizePx)) { "No favicons found" }
val response = loadIcon(icon.url, mangaSource) val response = loadIcon(icon.url, mangaSource)
val responseBody = response.requireBody() val responseBody = response.requireBody()
val source = writeToDiskCache(responseBody)?.toImageSource() ?: responseBody.toImageSource() val source = writeToDiskCache(responseBody)?.toImageSource()?.also {
response.closeQuietly()
} ?: responseBody.toImageSource(response)
return SourceResult( return SourceResult(
source = source, source = source,
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(icon.type), mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(icon.type),
@@ -71,7 +76,7 @@ class FaviconFetcher(
options.tags.asMap().forEach { request.tag(it.key as Class<Any>, it.value) } options.tags.asMap().forEach { request.tag(it.key as Class<Any>, it.value) }
val response = okHttpClient.newCall(request.build()).await() val response = okHttpClient.newCall(request.build()).await()
if (!response.isSuccessful && response.code != HttpURLConnection.HTTP_NOT_MODIFIED) { if (!response.isSuccessful && response.code != HttpURLConnection.HTTP_NOT_MODIFIED) {
response.body?.closeQuietly() response.closeQuietly()
throw HttpException(response) throw HttpException(response)
} }
return response return response
@@ -116,8 +121,12 @@ class FaviconFetcher(
return ImageSource(data, fileSystem, diskCacheKey, this) return ImageSource(data, fileSystem, diskCacheKey, this)
} }
private fun ResponseBody.toImageSource(): ImageSource { private fun ResponseBody.toImageSource(response: Closeable): ImageSource {
return ImageSource(source(), options.context, FaviconMetadata(mangaSource)) return ImageSource(
source().withExtraCloseable(response).buffer(),
options.context,
FaviconMetadata(mangaSource),
)
} }
private fun Response.toDataSource(): DataSource { private fun Response.toDataSource(): DataSource {

View File

@@ -1,6 +1,8 @@
package org.koitharu.kotatsu.details.domain package org.koitharu.kotatsu.details.domain
class BranchComparator : Comparator<String?> { import org.koitharu.kotatsu.details.ui.model.MangaBranch
override fun compare(o1: String?, o2: String?): Int = compareValues(o1, o2) class BranchComparator : Comparator<MangaBranch> {
}
override fun compare(o1: MangaBranch, o2: MangaBranch): Int = compareValues(o1.name, o2.name)
}

View File

@@ -1,12 +1,12 @@
package org.koitharu.kotatsu.details.ui package org.koitharu.kotatsu.details.ui
import android.content.Context import android.content.Context
import android.content.DialogInterface
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.transition.Slide import android.transition.Slide
import android.transition.TransitionManager import android.transition.TransitionManager
import android.view.Gravity import android.view.Gravity
import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@@ -19,31 +19,31 @@ import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.domain.MangaIntent import org.koitharu.kotatsu.base.domain.MangaIntent
import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.base.ui.BaseActivity
import org.koitharu.kotatsu.base.ui.dialog.RecyclerViewAlertDialog
import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.base.ui.widgets.BottomSheetHeaderBar import org.koitharu.kotatsu.base.ui.widgets.BottomSheetHeaderBar
import org.koitharu.kotatsu.core.exceptions.resolve.SnackbarErrorObserver import org.koitharu.kotatsu.core.exceptions.resolve.SnackbarErrorObserver
import org.koitharu.kotatsu.core.model.parcelable.ParcelableManga import org.koitharu.kotatsu.core.model.parcelable.ParcelableManga
import org.koitharu.kotatsu.core.os.ShortcutsUpdater import org.koitharu.kotatsu.core.os.ShortcutsUpdater
import org.koitharu.kotatsu.databinding.ActivityDetailsBinding import org.koitharu.kotatsu.databinding.ActivityDetailsBinding
import org.koitharu.kotatsu.details.service.MangaPrefetchService import org.koitharu.kotatsu.details.service.MangaPrefetchService
import org.koitharu.kotatsu.details.ui.adapter.branchAD
import org.koitharu.kotatsu.details.ui.model.ChapterListItem import org.koitharu.kotatsu.details.ui.model.ChapterListItem
import org.koitharu.kotatsu.details.ui.model.HistoryInfo import org.koitharu.kotatsu.details.ui.model.HistoryInfo
import org.koitharu.kotatsu.details.ui.model.MangaBranch
import org.koitharu.kotatsu.download.ui.worker.DownloadStartedObserver import org.koitharu.kotatsu.download.ui.worker.DownloadStartedObserver
import org.koitharu.kotatsu.main.ui.owners.NoModalBottomSheetOwner import org.koitharu.kotatsu.main.ui.owners.NoModalBottomSheetOwner
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.reader.ui.ReaderActivity import org.koitharu.kotatsu.reader.ui.ReaderActivity
import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.reader.ui.ReaderState
import org.koitharu.kotatsu.utils.ViewBadge import org.koitharu.kotatsu.utils.ViewBadge
import org.koitharu.kotatsu.utils.ext.getDisplayMessage
import org.koitharu.kotatsu.utils.ext.scaleUpActivityOptionsOf
import org.koitharu.kotatsu.utils.ext.setNavigationBarTransparentCompat import org.koitharu.kotatsu.utils.ext.setNavigationBarTransparentCompat
import org.koitharu.kotatsu.utils.ext.textAndVisible import org.koitharu.kotatsu.utils.ext.textAndVisible
import javax.inject.Inject import javax.inject.Inject
@@ -53,7 +53,9 @@ class DetailsActivity :
BaseActivity<ActivityDetailsBinding>(), BaseActivity<ActivityDetailsBinding>(),
View.OnClickListener, View.OnClickListener,
BottomSheetHeaderBar.OnExpansionChangeListener, BottomSheetHeaderBar.OnExpansionChangeListener,
NoModalBottomSheetOwner, View.OnLongClickListener, PopupMenu.OnMenuItemClickListener { NoModalBottomSheetOwner,
View.OnLongClickListener,
PopupMenu.OnMenuItemClickListener {
override val bsHeader: BottomSheetHeaderBar? override val bsHeader: BottomSheetHeaderBar?
get() = binding.headerChapters get() = binding.headerChapters
@@ -254,18 +256,19 @@ class DetailsActivity :
} }
private fun showBranchPopupMenu() { private fun showBranchPopupMenu() {
val menu = PopupMenu(this, binding.headerChapters ?: binding.buttonDropdown) var dialog: DialogInterface? = null
val currentBranch = viewModel.selectedBranchValue val listener = OnListItemClickListener<MangaBranch> { item, _ ->
for (branch in viewModel.branches.value ?: return) { viewModel.setSelectedBranch(item.name)
val item = menu.menu.add(R.id.group_branches, Menu.NONE, Menu.NONE, branch) dialog?.dismiss()
item.isChecked = branch == currentBranch
} }
menu.menu.setGroupCheckable(R.id.group_branches, true, true) dialog = RecyclerViewAlertDialog.Builder<MangaBranch>(this)
menu.setOnMenuItemClickListener { item -> .addAdapterDelegate(branchAD(listener))
viewModel.setSelectedBranch(item.title?.toString()) .setCancelable(true)
true .setNegativeButton(android.R.string.cancel, null)
} .setTitle(R.string.translations)
menu.show() .setItems(viewModel.branches.value.orEmpty())
.create()
.also { it.show() }
} }
private fun openReader(isIncognitoMode: Boolean) { private fun openReader(isIncognitoMode: Boolean) {

View File

@@ -16,6 +16,7 @@ import kotlinx.coroutines.launch
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.browser.BrowserActivity import org.koitharu.kotatsu.browser.BrowserActivity
import org.koitharu.kotatsu.core.os.ShortcutsUpdater import org.koitharu.kotatsu.core.os.ShortcutsUpdater
import org.koitharu.kotatsu.details.ui.model.MangaBranch
import org.koitharu.kotatsu.favourites.ui.categories.select.FavouriteCategoriesBottomSheet import org.koitharu.kotatsu.favourites.ui.categories.select.FavouriteCategoriesBottomSheet
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
@@ -124,18 +125,20 @@ class DetailsMenuProvider(
return true return true
} }
private fun showSaveConfirmation(manga: Manga, chaptersCount: Int, branches: List<String?>) { private fun showSaveConfirmation(manga: Manga, chaptersCount: Int, branches: List<MangaBranch>) {
val dialogBuilder = MaterialAlertDialogBuilder(activity) val dialogBuilder = MaterialAlertDialogBuilder(activity)
.setTitle(R.string.save_manga) .setTitle(R.string.save_manga)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
if (branches.size > 1) { if (branches.size > 1) {
val items = Array(branches.size) { i -> branches[i].orEmpty() } val items = Array(branches.size) { i -> branches[i].name.orEmpty() }
val currentBranch = viewModel.selectedBranchIndex.value ?: -1 val currentBranch = branches.indexOfFirst { it.isSelected }
val checkedIndices = BooleanArray(branches.size) { i -> i == currentBranch } val checkedIndices = BooleanArray(branches.size) { i -> i == currentBranch }
dialogBuilder.setMultiChoiceItems(items, checkedIndices) { _, i, checked -> dialogBuilder.setMultiChoiceItems(items, checkedIndices) { _, i, checked ->
checkedIndices[i] = checked checkedIndices[i] = checked
}.setPositiveButton(R.string.save) { _, _ -> }.setPositiveButton(R.string.save) { _, _ ->
val selectedBranches = branches.filterIndexedTo(HashSet()) { i, _ -> checkedIndices[i] } val selectedBranches = branches.mapIndexedNotNullTo(HashSet()) { i, b ->
if (checkedIndices[i]) b.name else null
}
val chaptersIds = manga.chapters?.mapNotNullToSet { c -> val chaptersIds = manga.chapters?.mapNotNullToSet { c ->
if (c.branch in selectedBranches) c.id else null if (c.branch in selectedBranches) c.id else null
} }

View File

@@ -36,6 +36,7 @@ import org.koitharu.kotatsu.core.prefs.observeAsFlow
import org.koitharu.kotatsu.details.domain.BranchComparator import org.koitharu.kotatsu.details.domain.BranchComparator
import org.koitharu.kotatsu.details.ui.model.ChapterListItem import org.koitharu.kotatsu.details.ui.model.ChapterListItem
import org.koitharu.kotatsu.details.ui.model.HistoryInfo import org.koitharu.kotatsu.details.ui.model.HistoryInfo
import org.koitharu.kotatsu.details.ui.model.MangaBranch
import org.koitharu.kotatsu.download.ui.worker.DownloadWorker import org.koitharu.kotatsu.download.ui.worker.DownloadWorker
import org.koitharu.kotatsu.favourites.domain.FavouritesRepository import org.koitharu.kotatsu.favourites.domain.FavouritesRepository
import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.history.domain.HistoryRepository
@@ -44,7 +45,6 @@ import org.koitharu.kotatsu.local.data.LocalStorageChanges
import org.koitharu.kotatsu.local.domain.LocalMangaRepository import org.koitharu.kotatsu.local.domain.LocalMangaRepository
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.util.mapToSet
import org.koitharu.kotatsu.scrobbling.common.domain.Scrobbler import org.koitharu.kotatsu.scrobbling.common.domain.Scrobbler
import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblingInfo import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblingInfo
import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblingStatus import org.koitharu.kotatsu.scrobbling.common.domain.model.ScrobblingStatus
@@ -158,17 +158,15 @@ class DetailsViewModel @Inject constructor(
scrobblingInfo.filterNotNull() scrobblingInfo.filterNotNull()
}.asFlowLiveData(viewModelScope.coroutineContext + Dispatchers.Default, emptyList()) }.asFlowLiveData(viewModelScope.coroutineContext + Dispatchers.Default, emptyList())
val branches: LiveData<List<String?>> = delegate.manga.map { val branches: LiveData<List<MangaBranch>> = combine(
val chapters = it?.chapters ?: return@map emptyList() delegate.manga,
chapters.mapToSet { x -> x.branch }.sortedWith(BranchComparator())
}.asFlowLiveData(viewModelScope.coroutineContext + Dispatchers.Default, emptyList())
val selectedBranchIndex = combine(
branches.asFlow(),
delegate.selectedBranch, delegate.selectedBranch,
) { branches, selected -> ) { m, b ->
branches.indexOf(selected) val chapters = m?.chapters ?: return@combine emptyList()
}.asFlowLiveData(viewModelScope.coroutineContext + Dispatchers.Default, -1) chapters.groupBy { x -> x.branch }
.map { x -> MangaBranch(x.key, x.value.size, x.key == b) }
.sortedWith(BranchComparator())
}.asFlowLiveData(viewModelScope.coroutineContext + Dispatchers.Default, emptyList())
val selectedBranchName = delegate.selectedBranch val selectedBranchName = delegate.selectedBranch
.asFlowLiveData(viewModelScope.coroutineContext, null) .asFlowLiveData(viewModelScope.coroutineContext, null)

View File

@@ -0,0 +1,39 @@
package org.koitharu.kotatsu.details.ui.adapter
import android.graphics.Color
import android.text.Spannable
import android.text.style.ForegroundColorSpan
import android.text.style.RelativeSizeSpan
import androidx.core.text.buildSpannedString
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.list.AdapterDelegateClickListenerAdapter
import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.databinding.ItemCheckableNewBinding
import org.koitharu.kotatsu.details.ui.model.MangaBranch
import org.koitharu.kotatsu.utils.ext.getThemeColor
fun branchAD(
clickListener: OnListItemClickListener<MangaBranch>,
) = adapterDelegateViewBinding<MangaBranch, MangaBranch, ItemCheckableNewBinding>(
{ inflater, parent -> ItemCheckableNewBinding.inflate(inflater, parent, false) },
) {
val clickAdapter = AdapterDelegateClickListenerAdapter(this, clickListener)
itemView.setOnClickListener(clickAdapter)
val counterColorSpan = ForegroundColorSpan(context.getThemeColor(android.R.attr.textColorSecondary, Color.LTGRAY))
val counterSizeSpan = RelativeSizeSpan(0.86f)
bind {
binding.root.text = buildSpannedString {
append(item.name ?: getString(R.string.system_default))
append(' ')
append(' ')
val start = length
append(item.count.toString())
setSpan(counterColorSpan, start, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
setSpan(counterSizeSpan, start, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}
binding.root.isChecked = item.isSelected
}
}

View File

@@ -1,45 +1,16 @@
package org.koitharu.kotatsu.details.ui.adapter package org.koitharu.kotatsu.details.ui.adapter
import android.view.LayoutInflater import com.hannesdorfmann.adapterdelegates4.ListDelegationAdapter
import android.view.View import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener
import android.view.ViewGroup import org.koitharu.kotatsu.details.ui.model.MangaBranch
import android.widget.BaseAdapter
import android.widget.TextView
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.parsers.util.replaceWith
class BranchesAdapter : BaseAdapter() { class BranchesAdapter(
list: List<MangaBranch>,
listener: OnListItemClickListener<MangaBranch>,
) : ListDelegationAdapter<List<MangaBranch>>() {
private val dataSet = ArrayList<String?>() init {
delegatesManager.addDelegate(branchAD(listener))
override fun getCount(): Int { items = list
return dataSet.size
} }
}
override fun getItem(position: Int): Any? {
return dataSet[position]
}
override fun getItemId(position: Int): Long {
return dataSet[position].hashCode().toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = convertView ?: LayoutInflater.from(parent.context)
.inflate(R.layout.item_branch, parent, false)
(view as TextView).text = dataSet[position]
return view
}
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = convertView ?: LayoutInflater.from(parent.context)
.inflate(R.layout.item_branch_dropdown, parent, false)
(view as TextView).text = dataSet[position]
return view
}
fun setItems(items: Collection<String?>) {
dataSet.replaceWith(items)
notifyDataSetChanged()
}
}

View File

@@ -0,0 +1,32 @@
package org.koitharu.kotatsu.details.ui.model
import org.koitharu.kotatsu.list.ui.model.ListModel
class MangaBranch(
val name: String?,
val count: Int,
val isSelected: Boolean,
) : ListModel {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as MangaBranch
if (name != other.name) return false
if (count != other.count) return false
return isSelected == other.isSelected
}
override fun hashCode(): Int {
var result = name.hashCode()
result = 31 * result + count
result = 31 * result + isSelected.hashCode()
return result
}
override fun toString(): String {
return "$name: $count"
}
}

View File

@@ -17,8 +17,10 @@ class PausingReceiver(
override fun onReceive(context: Context, intent: Intent?) { override fun onReceive(context: Context, intent: Intent?) {
val uuid = intent?.getStringExtra(EXTRA_UUID)?.toUUIDOrNull() val uuid = intent?.getStringExtra(EXTRA_UUID)?.toUUIDOrNull()
assert(uuid == id) if (uuid != id) {
when (intent?.action) { return
}
when (intent.action) {
ACTION_RESUME -> pausingHandle.resume() ACTION_RESUME -> pausingHandle.resume()
ACTION_PAUSE -> pausingHandle.pause() ACTION_PAUSE -> pausingHandle.pause()
} }

View File

@@ -31,7 +31,8 @@ sealed class LocalMangaInput(
} }
@JvmStatic @JvmStatic
protected fun zipUri(file: File, entryName: String) = "cbz://${file.path}#$entryName" protected fun zipUri(file: File, entryName: String): String =
Uri.fromParts("cbz", file.path, entryName).toString()
@JvmStatic @JvmStatic
protected fun Manga.copy2( protected fun Manga.copy2(

View File

@@ -1,6 +1,11 @@
package org.koitharu.kotatsu.local.data.output package org.koitharu.kotatsu.local.data.output
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
import okio.Closeable import okio.Closeable
import org.koitharu.kotatsu.local.data.input.LocalMangaInput
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.util.toFileNameSafe import org.koitharu.kotatsu.parsers.util.toFileNameSafe
@@ -26,25 +31,63 @@ sealed class LocalMangaOutput(
const val ENTRY_NAME_INDEX = "index.json" const val ENTRY_NAME_INDEX = "index.json"
const val SUFFIX_TMP = ".tmp" const val SUFFIX_TMP = ".tmp"
private val mutex = Mutex()
fun getOrCreate(root: File, manga: Manga): LocalMangaOutput { suspend fun getOrCreate(root: File, manga: Manga): LocalMangaOutput = withContext(Dispatchers.IO) {
return checkNotNull(getImpl(root, manga, onlyIfExists = false)) val preferSingleCbz = manga.chapters.let {
} it != null && it.size <= 3
fun get(root: File, manga: Manga): LocalMangaOutput? {
return getImpl(root, manga, onlyIfExists = true)
}
private fun getImpl(root: File, manga: Manga, onlyIfExists: Boolean): LocalMangaOutput? {
val fileName = manga.title.toFileNameSafe()
val dir = File(root, fileName)
val zip = File(root, "$fileName.cbz")
return when {
dir.isDirectory -> LocalMangaDirOutput(dir, manga)
zip.isFile -> LocalMangaZipOutput(zip, manga)
!onlyIfExists -> LocalMangaDirOutput(dir, manga)
else -> null
} }
checkNotNull(getImpl(root, manga, onlyIfExists = false, preferSingleCbz))
}
suspend fun get(root: File, manga: Manga): LocalMangaOutput? = withContext(Dispatchers.IO) {
getImpl(root, manga, onlyIfExists = true, preferSingleCbz = false)
}
private suspend fun getImpl(
root: File,
manga: Manga,
onlyIfExists: Boolean,
preferSingleCbz: Boolean,
): LocalMangaOutput? {
mutex.withLock {
var i = 0
val baseName = manga.title.toFileNameSafe()
while (true) {
val fileName = if (i == 0) baseName else baseName + "_$i"
val dir = File(root, fileName)
val zip = File(root, "$fileName.cbz")
i++
return when {
dir.isDirectory -> {
if (canWriteTo(dir, manga)) {
LocalMangaDirOutput(dir, manga)
} else {
continue
}
}
zip.isFile -> if (canWriteTo(zip, manga)) {
LocalMangaZipOutput(zip, manga)
} else {
continue
}
!onlyIfExists -> if (preferSingleCbz) {
LocalMangaZipOutput(zip, manga)
} else {
LocalMangaDirOutput(dir, manga)
}
else -> null
}
}
}
}
private suspend fun canWriteTo(file: File, manga: Manga): Boolean {
val info = LocalMangaInput.of(file).getMangaInfo() ?: return false
return info.id == manga.id
} }
} }
} }

View File

@@ -9,7 +9,6 @@ import android.net.Uri
import android.os.Build import android.os.Build
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.PendingIntentCompat import androidx.core.app.PendingIntentCompat
import androidx.core.content.ContextCompat
import androidx.hilt.work.HiltWorker import androidx.hilt.work.HiltWorker
import androidx.work.Constraints import androidx.work.Constraints
import androidx.work.CoroutineWorker import androidx.work.CoroutineWorker
@@ -71,6 +70,7 @@ class ImportWorker @AssistedInject constructor(
.setPriority(NotificationCompat.PRIORITY_MIN) .setPriority(NotificationCompat.PRIORITY_MIN)
.setDefaults(0) .setDefaults(0)
.setSilent(true) .setSilent(true)
.setOngoing(true)
.setProgress(0, 0, true) .setProgress(0, 0, true)
.setSmallIcon(android.R.drawable.stat_sys_download) .setSmallIcon(android.R.drawable.stat_sys_download)
.setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE) .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE)

View File

@@ -200,7 +200,7 @@ class PageLoader @Inject constructor(
.build() .build()
okHttp.newCall(request).await().use { response -> okHttp.newCall(request).await().use { response ->
check(response.isSuccessful) { check(response.isSuccessful) {
"Invalid response: ${response.code} ${response.message}" "Invalid response: ${response.code} ${response.message} at $pageUrl"
} }
val body = checkNotNull(response.body) { val body = checkNotNull(response.body) {
"Null response" "Null response"

View File

@@ -50,6 +50,7 @@ import org.koitharu.kotatsu.utils.GridTouchHelper
import org.koitharu.kotatsu.utils.IdlingDetector import org.koitharu.kotatsu.utils.IdlingDetector
import org.koitharu.kotatsu.utils.ShareHelper import org.koitharu.kotatsu.utils.ShareHelper
import org.koitharu.kotatsu.utils.ext.hasGlobalPoint import org.koitharu.kotatsu.utils.ext.hasGlobalPoint
import org.koitharu.kotatsu.utils.ext.isRtl
import org.koitharu.kotatsu.utils.ext.observeWithPrevious import org.koitharu.kotatsu.utils.ext.observeWithPrevious
import org.koitharu.kotatsu.utils.ext.postDelayed import org.koitharu.kotatsu.utils.ext.postDelayed
import org.koitharu.kotatsu.utils.ext.setValueRounded import org.koitharu.kotatsu.utils.ext.setValueRounded
@@ -156,6 +157,7 @@ class ReaderActivity :
if (binding.appbarTop.isVisible) { if (binding.appbarTop.isVisible) {
lifecycle.postDelayed(hideUiRunnable, TimeUnit.SECONDS.toMillis(1)) lifecycle.postDelayed(hideUiRunnable, TimeUnit.SECONDS.toMillis(1))
} }
binding.slider.isRtl = mode == ReaderMode.REVERSED
} }
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {

View File

@@ -1,5 +1,6 @@
package org.koitharu.kotatsu.reader.ui package org.koitharu.kotatsu.reader.ui
import android.annotation.SuppressLint
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@@ -179,6 +180,7 @@ class ReaderInfoBarView @JvmOverloads constructor(
} }
} }
@SuppressLint("DiscouragedApi")
private fun getSystemUiDimensionOffset(name: String, fallback: Int = 0): Int = runCatching { private fun getSystemUiDimensionOffset(name: String, fallback: Int = 0): Int = runCatching {
val manager = context.packageManager val manager = context.packageManager
val resources = manager.getResourcesForApplication("com.android.systemui") val resources = manager.getResourcesForApplication("com.android.systemui")

View File

@@ -4,7 +4,7 @@ import androidx.annotation.IdRes
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.fragment.app.commit import androidx.fragment.app.commit
import org.koitharu.kotatsu.core.prefs.ReaderMode import org.koitharu.kotatsu.core.prefs.ReaderMode
import org.koitharu.kotatsu.reader.ui.pager.BaseReader import org.koitharu.kotatsu.reader.ui.pager.BaseReaderFragment
import org.koitharu.kotatsu.reader.ui.pager.reversed.ReversedReaderFragment import org.koitharu.kotatsu.reader.ui.pager.reversed.ReversedReaderFragment
import org.koitharu.kotatsu.reader.ui.pager.standard.PagerReaderFragment import org.koitharu.kotatsu.reader.ui.pager.standard.PagerReaderFragment
import org.koitharu.kotatsu.reader.ui.pager.webtoon.WebtoonReaderFragment import org.koitharu.kotatsu.reader.ui.pager.webtoon.WebtoonReaderFragment
@@ -15,7 +15,7 @@ class ReaderManager(
@IdRes private val containerResId: Int, @IdRes private val containerResId: Int,
) { ) {
private val modeMap = EnumMap<ReaderMode, Class<out BaseReader<*>>>(ReaderMode::class.java) private val modeMap = EnumMap<ReaderMode, Class<out BaseReaderFragment<*>>>(ReaderMode::class.java)
init { init {
modeMap[ReaderMode.STANDARD] = PagerReaderFragment::class.java modeMap[ReaderMode.STANDARD] = PagerReaderFragment::class.java
@@ -23,8 +23,8 @@ class ReaderManager(
modeMap[ReaderMode.WEBTOON] = WebtoonReaderFragment::class.java modeMap[ReaderMode.WEBTOON] = WebtoonReaderFragment::class.java
} }
val currentReader: BaseReader<*>? val currentReader: BaseReaderFragment<*>?
get() = fragmentManager.findFragmentById(containerResId) as? BaseReader<*> get() = fragmentManager.findFragmentById(containerResId) as? BaseReaderFragment<*>
val currentMode: ReaderMode? val currentMode: ReaderMode?
get() { get() {
@@ -40,7 +40,7 @@ class ReaderManager(
} }
} }
fun replace(reader: BaseReader<*>) { fun replace(reader: BaseReaderFragment<*>) {
fragmentManager.commit { fragmentManager.commit {
setReorderingAllowed(true) setReorderingAllowed(true)
replace(containerResId, reader) replace(containerResId, reader)

View File

@@ -19,6 +19,8 @@ import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
@@ -34,6 +36,7 @@ import org.koitharu.kotatsu.base.domain.MangaIntent
import org.koitharu.kotatsu.base.ui.BaseViewModel import org.koitharu.kotatsu.base.ui.BaseViewModel
import org.koitharu.kotatsu.bookmarks.domain.Bookmark import org.koitharu.kotatsu.bookmarks.domain.Bookmark
import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository
import org.koitharu.kotatsu.core.os.ShortcutsUpdater
import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.prefs.ReaderMode import org.koitharu.kotatsu.core.prefs.ReaderMode
@@ -75,6 +78,7 @@ class ReaderViewModel @Inject constructor(
private val pageSaveHelper: PageSaveHelper, private val pageSaveHelper: PageSaveHelper,
private val pageLoader: PageLoader, private val pageLoader: PageLoader,
private val chaptersLoader: ChaptersLoader, private val chaptersLoader: ChaptersLoader,
private val shortcutsUpdater: ShortcutsUpdater,
) : BaseViewModel() { ) : BaseViewModel() {
private val intent = MangaIntent(savedStateHandle) private val intent = MangaIntent(savedStateHandle)
@@ -149,6 +153,10 @@ class ReaderViewModel @Inject constructor(
.onEach { key -> .onEach { key ->
if (key == AppSettings.KEY_READER_SLIDER) notifyStateChanged() if (key == AppSettings.KEY_READER_SLIDER) notifyStateChanged()
}.launchIn(viewModelScope + Dispatchers.Default) }.launchIn(viewModelScope + Dispatchers.Default)
launchJob(Dispatchers.Default) {
val mangaId = mangaData.filterNotNull().first().id
shortcutsUpdater.notifyMangaOpened(mangaId)
}
} }
fun reload() { fun reload() {
@@ -244,6 +252,7 @@ class ReaderViewModel @Inject constructor(
val prevJob = stateChangeJob val prevJob = stateChangeJob
stateChangeJob = launchJob(Dispatchers.Default) { stateChangeJob = launchJob(Dispatchers.Default) {
prevJob?.cancelAndJoin() prevJob?.cancelAndJoin()
loadingJob?.join()
val pages = content.value?.pages ?: return@launchJob val pages = content.value?.pages ?: return@launchJob
pages.getOrNull(position)?.let { page -> pages.getOrNull(position)?.let { page ->
currentState.update { cs -> currentState.update { cs ->
@@ -255,12 +264,12 @@ class ReaderViewModel @Inject constructor(
return@launchJob return@launchJob
} }
ensureActive() ensureActive()
if (position <= BOUNDS_PAGE_OFFSET) {
loadPrevNextChapter(pages.first().chapterId, isNext = false)
}
if (position >= pages.lastIndex - BOUNDS_PAGE_OFFSET) { if (position >= pages.lastIndex - BOUNDS_PAGE_OFFSET) {
loadPrevNextChapter(pages.last().chapterId, isNext = true) loadPrevNextChapter(pages.last().chapterId, isNext = true)
} }
if (position <= BOUNDS_PAGE_OFFSET) {
loadPrevNextChapter(pages.first().chapterId, isNext = false)
}
if (pageLoader.isPrefetchApplicable()) { if (pageLoader.isPrefetchApplicable()) {
pageLoader.prefetch(pages.trySublist(position + 1, position + PREFETCH_LIMIT)) pageLoader.prefetch(pages.trySublist(position + 1, position + PREFETCH_LIMIT))
} }
@@ -340,7 +349,9 @@ class ReaderViewModel @Inject constructor(
@AnyThread @AnyThread
private fun loadPrevNextChapter(currentId: Long, isNext: Boolean) { private fun loadPrevNextChapter(currentId: Long, isNext: Boolean) {
val prevJob = loadingJob
loadingJob = launchLoadingJob(Dispatchers.Default) { loadingJob = launchLoadingJob(Dispatchers.Default) {
prevJob?.join()
chaptersLoader.loadPrevNextChapter(mangaData.requireValue(), currentId, isNext) chaptersLoader.loadPrevNextChapter(mangaData.requireValue(), currentId, isNext)
content.emitValue(ReaderContent(chaptersLoader.snapshot(), null)) content.emitValue(ReaderContent(chaptersLoader.snapshot(), null))
} }

View File

@@ -11,7 +11,6 @@ import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.button.MaterialButtonToggleGroup import com.google.android.material.button.MaterialButtonToggleGroup
import com.google.android.material.slider.Slider import com.google.android.material.slider.Slider
@@ -148,8 +147,8 @@ class ReaderConfigBottomSheet :
} }
} }
override fun onActivityResult(uri: Uri?) { override fun onActivityResult(result: Uri?) {
viewModel.onActivityResult(uri) viewModel.onActivityResult(result)
dismissAllowingStateLoss() dismissAllowingStateLoss()
} }
@@ -157,7 +156,6 @@ class ReaderConfigBottomSheet :
val helper = ScreenOrientationHelper(requireActivity()) val helper = ScreenOrientationHelper(requireActivity())
orientationHelper = helper orientationHelper = helper
helper.observeAutoOrientation() helper.observeAutoOrientation()
.flowWithLifecycle(lifecycle)
.onEach { .onEach {
binding.buttonScreenRotate.isGone = it binding.buttonScreenRotate.isGone = it
}.launchIn(viewLifecycleScope) }.launchIn(viewLifecycleScope)

View File

@@ -12,7 +12,7 @@ import org.koitharu.kotatsu.utils.ext.getParcelableCompat
private const val KEY_STATE = "state" private const val KEY_STATE = "state"
abstract class BaseReader<B : ViewBinding> : BaseFragment<B>() { abstract class BaseReaderFragment<B : ViewBinding> : BaseFragment<B>() {
protected val viewModel by activityViewModels<ReaderViewModel>() protected val viewModel by activityViewModels<ReaderViewModel>()
private var stateToSave: ReaderState? = null private var stateToSave: ReaderState? = null

View File

@@ -13,8 +13,8 @@ import org.koitharu.kotatsu.core.os.NetworkState
import org.koitharu.kotatsu.databinding.FragmentReaderStandardBinding import org.koitharu.kotatsu.databinding.FragmentReaderStandardBinding
import org.koitharu.kotatsu.reader.domain.PageLoader import org.koitharu.kotatsu.reader.domain.PageLoader
import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.reader.ui.ReaderState
import org.koitharu.kotatsu.reader.ui.pager.BaseReader
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderFragment
import org.koitharu.kotatsu.reader.ui.pager.ReaderPage import org.koitharu.kotatsu.reader.ui.pager.ReaderPage
import org.koitharu.kotatsu.reader.ui.pager.standard.PagerReaderFragment import org.koitharu.kotatsu.reader.ui.pager.standard.PagerReaderFragment
import org.koitharu.kotatsu.utils.ext.doOnPageChanged import org.koitharu.kotatsu.utils.ext.doOnPageChanged
@@ -26,7 +26,7 @@ import javax.inject.Inject
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
@AndroidEntryPoint @AndroidEntryPoint
class ReversedReaderFragment : BaseReader<FragmentReaderStandardBinding>() { class ReversedReaderFragment : BaseReaderFragment<FragmentReaderStandardBinding>() {
@Inject @Inject
lateinit var networkState: NetworkState lateinit var networkState: NetworkState
@@ -70,6 +70,7 @@ class ReversedReaderFragment : BaseReader<FragmentReaderStandardBinding>() {
override fun onDestroyView() { override fun onDestroyView() {
pagerAdapter = null pagerAdapter = null
binding.pager.adapter = null
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -33,7 +33,9 @@ open class PageHolder(
binding.ssiv.bindToLifecycle(owner) binding.ssiv.bindToLifecycle(owner)
binding.ssiv.isEagerLoadingEnabled = !isLowRamDevice(context) binding.ssiv.isEagerLoadingEnabled = !isLowRamDevice(context)
binding.ssiv.addOnImageEventListener(delegate) binding.ssiv.addOnImageEventListener(delegate)
@Suppress("LeakingThis")
bindingInfo.buttonRetry.setOnClickListener(this) bindingInfo.buttonRetry.setOnClickListener(this)
@Suppress("LeakingThis")
bindingInfo.buttonErrorDetails.setOnClickListener(this) bindingInfo.buttonErrorDetails.setOnClickListener(this)
binding.textViewNumber.isVisible = settings.isPagesNumbersEnabled binding.textViewNumber.isVisible = settings.isPagesNumbersEnabled
} }

View File

@@ -13,8 +13,8 @@ import org.koitharu.kotatsu.core.os.NetworkState
import org.koitharu.kotatsu.databinding.FragmentReaderStandardBinding import org.koitharu.kotatsu.databinding.FragmentReaderStandardBinding
import org.koitharu.kotatsu.reader.domain.PageLoader import org.koitharu.kotatsu.reader.domain.PageLoader
import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.reader.ui.ReaderState
import org.koitharu.kotatsu.reader.ui.pager.BaseReader
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderFragment
import org.koitharu.kotatsu.reader.ui.pager.ReaderPage import org.koitharu.kotatsu.reader.ui.pager.ReaderPage
import org.koitharu.kotatsu.utils.ext.doOnPageChanged import org.koitharu.kotatsu.utils.ext.doOnPageChanged
import org.koitharu.kotatsu.utils.ext.isAnimationsEnabled import org.koitharu.kotatsu.utils.ext.isAnimationsEnabled
@@ -25,7 +25,7 @@ import javax.inject.Inject
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
@AndroidEntryPoint @AndroidEntryPoint
class PagerReaderFragment : BaseReader<FragmentReaderStandardBinding>() { class PagerReaderFragment : BaseReaderFragment<FragmentReaderStandardBinding>() {
@Inject @Inject
lateinit var networkState: NetworkState lateinit var networkState: NetworkState
@@ -69,6 +69,7 @@ class PagerReaderFragment : BaseReader<FragmentReaderStandardBinding>() {
override fun onDestroyView() { override fun onDestroyView() {
pagesAdapter = null pagesAdapter = null
binding.pager.adapter = null
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -12,8 +12,8 @@ import org.koitharu.kotatsu.core.os.NetworkState
import org.koitharu.kotatsu.databinding.FragmentReaderWebtoonBinding import org.koitharu.kotatsu.databinding.FragmentReaderWebtoonBinding
import org.koitharu.kotatsu.reader.domain.PageLoader import org.koitharu.kotatsu.reader.domain.PageLoader
import org.koitharu.kotatsu.reader.ui.ReaderState import org.koitharu.kotatsu.reader.ui.ReaderState
import org.koitharu.kotatsu.reader.ui.pager.BaseReader
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderFragment
import org.koitharu.kotatsu.reader.ui.pager.ReaderPage import org.koitharu.kotatsu.reader.ui.pager.ReaderPage
import org.koitharu.kotatsu.utils.ext.findCenterViewPosition import org.koitharu.kotatsu.utils.ext.findCenterViewPosition
import org.koitharu.kotatsu.utils.ext.firstVisibleItemPosition import org.koitharu.kotatsu.utils.ext.firstVisibleItemPosition
@@ -22,7 +22,7 @@ import org.koitharu.kotatsu.utils.ext.viewLifecycleScope
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class WebtoonReaderFragment : BaseReader<FragmentReaderWebtoonBinding>() { class WebtoonReaderFragment : BaseReaderFragment<FragmentReaderWebtoonBinding>() {
@Inject @Inject
lateinit var networkState: NetworkState lateinit var networkState: NetworkState
@@ -60,6 +60,7 @@ class WebtoonReaderFragment : BaseReader<FragmentReaderWebtoonBinding>() {
override fun onDestroyView() { override fun onDestroyView() {
webtoonAdapter = null webtoonAdapter = null
binding.recyclerView.adapter = null
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -241,6 +241,7 @@ class AniListRepository(
descriptionHtml = json.getString("description"), descriptionHtml = json.getString("description"),
) )
@Suppress("FunctionName")
private fun AniListUser(json: JSONObject) = ScrobblerUser( private fun AniListUser(json: JSONObject) = ScrobblerUser(
id = json.getLong("id"), id = json.getLong("id"),
nickname = json.getString("name"), nickname = json.getString("name"),

View File

@@ -200,6 +200,7 @@ class MALRepository(
descriptionHtml = json.getString("synopsis"), descriptionHtml = json.getString("synopsis"),
) )
@Suppress("FunctionName")
private fun MALUser(json: JSONObject) = ScrobblerUser( private fun MALUser(json: JSONObject) = ScrobblerUser(
id = json.getLong("id"), id = json.getLong("id"),
nickname = json.getString("name"), nickname = json.getString("name"),

View File

@@ -207,6 +207,7 @@ class ShikimoriRepository(
descriptionHtml = json.getString("description_html"), descriptionHtml = json.getString("description_html"),
) )
@Suppress("FunctionName")
private fun ShikimoriUser(json: JSONObject) = ScrobblerUser( private fun ShikimoriUser(json: JSONObject) = ScrobblerUser(
id = json.getLong("id"), id = json.getLong("id"),
nickname = json.getString("nickname"), nickname = json.getString("nickname"),

View File

@@ -25,6 +25,7 @@ import org.koitharu.kotatsu.databinding.ActivityBrowserBinding
import org.koitharu.kotatsu.parsers.MangaParserAuthProvider import org.koitharu.kotatsu.parsers.MangaParserAuthProvider
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.utils.TaggedActivityResult import org.koitharu.kotatsu.utils.TaggedActivityResult
import org.koitharu.kotatsu.utils.ext.catchingWebViewUnavailability
import org.koitharu.kotatsu.utils.ext.getSerializableExtraCompat import org.koitharu.kotatsu.utils.ext.getSerializableExtraCompat
import javax.inject.Inject import javax.inject.Inject
import com.google.android.material.R as materialR import com.google.android.material.R as materialR
@@ -41,7 +42,9 @@ class SourceAuthActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallba
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(ActivityBrowserBinding.inflate(layoutInflater)) if (!catchingWebViewUnavailability { setContentView(ActivityBrowserBinding.inflate(layoutInflater)) }) {
return
}
val source = intent?.getSerializableExtraCompat(EXTRA_SOURCE) as? MangaSource val source = intent?.getSerializableExtraCompat(EXTRA_SOURCE) as? MangaSource
if (source == null) { if (source == null) {
finishAfterTransition() finishAfterTransition()

View File

@@ -28,6 +28,7 @@ import coil.ImageLoader
import coil.request.ImageRequest import coil.request.ImageRequest
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.channelFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.take
@@ -100,6 +101,7 @@ class SuggestionsWorker @AssistedInject constructor(
.setPriority(NotificationCompat.PRIORITY_MIN) .setPriority(NotificationCompat.PRIORITY_MIN)
.setCategory(NotificationCompat.CATEGORY_SERVICE) .setCategory(NotificationCompat.CATEGORY_SERVICE)
.setDefaults(0) .setDefaults(0)
.setOngoing(true)
.setSilent(true) .setSilent(true)
.setProgress(0, 0, true) .setProgress(0, 0, true)
.setSmallIcon(android.R.drawable.stat_notify_sync) .setSmallIcon(android.R.drawable.stat_notify_sync)
@@ -145,15 +147,27 @@ class SuggestionsWorker @AssistedInject constructor(
.take(MAX_RESULTS) .take(MAX_RESULTS)
suggestionRepository.replace(suggestions) suggestionRepository.replace(suggestions)
if (appSettings.isSuggestionsNotificationAvailable) { if (appSettings.isSuggestionsNotificationAvailable) {
runCatchingCancellable { for (i in 0..3) {
val manga = suggestions[Random.nextInt(0, suggestions.size / 3)] try {
val details = mangaRepositoryFactory.create(manga.manga.source) val manga = suggestions[Random.nextInt(0, suggestions.size / 3)]
.getDetails(manga.manga) val details = mangaRepositoryFactory.create(manga.manga.source)
if (details !in tagsBlacklist) { .getDetails(manga.manga)
if (details.rating > 0 && details.rating < RATING_MIN) {
continue
}
if (details.isNsfw && appSettings.isSuggestionsExcludeNsfw) {
continue
}
if (details in tagsBlacklist) {
continue
}
showNotification(details) showNotification(details)
break
} catch (e: CancellationException) {
throw e
} catch (e: Exception) {
e.printStackTraceDebug()
} }
}.onFailure {
it.printStackTraceDebug()
} }
} }
return suggestions.size return suggestions.size
@@ -178,7 +192,8 @@ class SuggestionsWorker @AssistedInject constructor(
if (blacklist.isNotEmpty()) { if (blacklist.isNotEmpty()) {
list.removeAll { manga -> manga in blacklist } list.removeAll { manga -> manga in blacklist }
} }
list list.shuffle()
list.take(MAX_SOURCE_RESULTS)
}.onFailure { }.onFailure {
it.printStackTraceDebug() it.printStackTraceDebug()
}.getOrDefault(emptyList()) }.getOrDefault(emptyList())
@@ -296,8 +311,10 @@ class SuggestionsWorker @AssistedInject constructor(
private const val MANGA_CHANNEL_ID = "suggestions" private const val MANGA_CHANNEL_ID = "suggestions"
private const val WORKER_NOTIFICATION_ID = 36 private const val WORKER_NOTIFICATION_ID = 36
private const val MAX_RESULTS = 80 private const val MAX_RESULTS = 80
private const val MAX_SOURCE_RESULTS = 14
private const val MAX_RAW_RESULTS = 200 private const val MAX_RAW_RESULTS = 200
private const val TAG_EQ_THRESHOLD = 0.4f private const val TAG_EQ_THRESHOLD = 0.4f
private const val RATING_MIN = 0.5f
private val preferredSortOrders = listOf( private val preferredSortOrders = listOf(
SortOrder.UPDATED, SortOrder.UPDATED,

View File

@@ -13,6 +13,7 @@ import androidx.annotation.WorkerThread
import androidx.core.content.contentValuesOf import androidx.core.content.contentValuesOf
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import okhttp3.Response
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONObject import org.json.JSONObject
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
@@ -22,7 +23,9 @@ import org.koitharu.kotatsu.core.db.TABLE_HISTORY
import org.koitharu.kotatsu.core.db.TABLE_MANGA import org.koitharu.kotatsu.core.db.TABLE_MANGA
import org.koitharu.kotatsu.core.db.TABLE_MANGA_TAGS import org.koitharu.kotatsu.core.db.TABLE_MANGA_TAGS
import org.koitharu.kotatsu.core.db.TABLE_TAGS import org.koitharu.kotatsu.core.db.TABLE_TAGS
import org.koitharu.kotatsu.core.logs.LoggersModule
import org.koitharu.kotatsu.core.network.GZipInterceptor import org.koitharu.kotatsu.core.network.GZipInterceptor
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.parsers.util.json.mapJSONTo import org.koitharu.kotatsu.parsers.util.json.mapJSONTo
import org.koitharu.kotatsu.sync.data.SyncAuthApi import org.koitharu.kotatsu.sync.data.SyncAuthApi
import org.koitharu.kotatsu.sync.data.SyncAuthenticator import org.koitharu.kotatsu.sync.data.SyncAuthenticator
@@ -61,6 +64,7 @@ class SyncHelper(
} }
private val defaultGcPeriod: Long // gc period if sync enabled private val defaultGcPeriod: Long // gc period if sync enabled
get() = TimeUnit.DAYS.toMillis(4) get() = TimeUnit.DAYS.toMillis(4)
private val logger = LoggersModule.provideSyncLogger(context, AppSettings(context))
fun syncFavourites(syncResult: SyncResult) { fun syncFavourites(syncResult: SyncResult) {
val data = JSONObject() val data = JSONObject()
@@ -71,7 +75,7 @@ class SyncHelper(
.url("$baseUrl/resource/$TABLE_FAVOURITES") .url("$baseUrl/resource/$TABLE_FAVOURITES")
.post(data.toRequestBody()) .post(data.toRequestBody())
.build() .build()
val response = httpClient.newCall(request).execute().parseJsonOrNull() val response = httpClient.newCall(request).execute().log().parseJsonOrNull()
if (response != null) { if (response != null) {
val timestamp = response.getLong(FIELD_TIMESTAMP) val timestamp = response.getLong(FIELD_TIMESTAMP)
val categoriesResult = val categoriesResult =
@@ -93,7 +97,7 @@ class SyncHelper(
.url("$baseUrl/resource/$TABLE_HISTORY") .url("$baseUrl/resource/$TABLE_HISTORY")
.post(data.toRequestBody()) .post(data.toRequestBody())
.build() .build()
val response = httpClient.newCall(request).execute().parseJsonOrNull() val response = httpClient.newCall(request).execute().log().parseJsonOrNull()
if (response != null) { if (response != null) {
val result = upsertHistory( val result = upsertHistory(
json = response.getJSONArray(TABLE_HISTORY), json = response.getJSONArray(TABLE_HISTORY),
@@ -105,6 +109,19 @@ class SyncHelper(
gcHistory() gcHistory()
} }
fun onError(e: Throwable) {
if (logger.isEnabled) {
logger.log("Sync error", e)
}
}
fun onSyncComplete(result: SyncResult) {
if (logger.isEnabled) {
logger.log("Sync finshed: ${result.toDebugString()}")
logger.flushBlocking()
}
}
private fun upsertHistory(json: JSONArray, timestamp: Long): Array<ContentProviderResult> { private fun upsertHistory(json: JSONArray, timestamp: Long): Array<ContentProviderResult> {
val uri = uri(authorityHistory, TABLE_HISTORY) val uri = uri(authorityHistory, TABLE_HISTORY)
val operations = ArrayList<ContentProviderOperation>() val operations = ArrayList<ContentProviderOperation>()
@@ -298,4 +315,10 @@ class SyncHelper(
private fun JSONObject.removeJSONObject(name: String) = remove(name) as JSONObject private fun JSONObject.removeJSONObject(name: String) = remove(name) as JSONObject
private fun JSONObject.removeJSONArray(name: String) = remove(name) as JSONArray private fun JSONObject.removeJSONArray(name: String) = remove(name) as JSONArray
private fun Response.log() = apply {
if (logger.isEnabled) {
logger.log("$code ${request.url}")
}
}
} }

View File

@@ -14,8 +14,6 @@ import dagger.hilt.InstallIn
import dagger.hilt.android.EntryPointAccessors import dagger.hilt.android.EntryPointAccessors
import dagger.hilt.components.SingletonComponent import dagger.hilt.components.SingletonComponent
import org.koitharu.kotatsu.core.db.* import org.koitharu.kotatsu.core.db.*
import org.koitharu.kotatsu.core.logs.FileLogger
import org.koitharu.kotatsu.core.logs.SyncLogger
import java.util.concurrent.Callable import java.util.concurrent.Callable
abstract class SyncProvider : ContentProvider() { abstract class SyncProvider : ContentProvider() {
@@ -24,7 +22,6 @@ abstract class SyncProvider : ContentProvider() {
EntryPointAccessors.fromApplication(checkNotNull(context), SyncProviderEntryPoint::class.java) EntryPointAccessors.fromApplication(checkNotNull(context), SyncProviderEntryPoint::class.java)
} }
private val database by lazy { entryPoint.database } private val database by lazy { entryPoint.database }
private val logger by lazy { entryPoint.logger }
private val supportedTables = setOf( private val supportedTables = setOf(
TABLE_FAVOURITES, TABLE_FAVOURITES,
@@ -52,7 +49,6 @@ abstract class SyncProvider : ContentProvider() {
.selection(selection, selectionArgs) .selection(selection, selectionArgs)
.orderBy(sortOrder) .orderBy(sortOrder)
.create() .create()
logger.log("query: ${sqlQuery.sql} (${selectionArgs.contentToString()})")
return database.openHelper.readableDatabase.query(sqlQuery) return database.openHelper.readableDatabase.query(sqlQuery)
} }
@@ -65,7 +61,6 @@ abstract class SyncProvider : ContentProvider() {
if (values == null || table == null) { if (values == null || table == null) {
return null return null
} }
logger.log { "insert: $table [$values]" }
val db = database.openHelper.writableDatabase val db = database.openHelper.writableDatabase
if (db.insert(table, SQLiteDatabase.CONFLICT_IGNORE, values) < 0) { if (db.insert(table, SQLiteDatabase.CONFLICT_IGNORE, values) < 0) {
db.update(table, values) db.update(table, values)
@@ -75,7 +70,6 @@ abstract class SyncProvider : ContentProvider() {
override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int { override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int {
val table = getTableName(uri) ?: return 0 val table = getTableName(uri) ?: return 0
logger.log { "delete: $table ($selection) : (${selectionArgs.contentToString()})" }
return database.openHelper.writableDatabase.delete(table, selection, selectionArgs) return database.openHelper.writableDatabase.delete(table, selection, selectionArgs)
} }
@@ -84,7 +78,6 @@ abstract class SyncProvider : ContentProvider() {
if (values == null || table == null) { if (values == null || table == null) {
return 0 return 0
} }
logger.log { "update: $table ($selection) : (${selectionArgs.contentToString()}) [$values]" }
return database.openHelper.writableDatabase return database.openHelper.writableDatabase
.update(table, SQLiteDatabase.CONFLICT_IGNORE, values, selection, selectionArgs) .update(table, SQLiteDatabase.CONFLICT_IGNORE, values, selection, selectionArgs)
} }
@@ -127,8 +120,5 @@ abstract class SyncProvider : ContentProvider() {
interface SyncProviderEntryPoint { interface SyncProviderEntryPoint {
val database: MangaDatabase val database: MangaDatabase
@get:SyncLogger
val logger: FileLogger
} }
} }

View File

@@ -28,6 +28,10 @@ class FavouritesSyncAdapter(context: Context) : AbstractThreadedSyncAdapter(cont
runCatchingCancellable { runCatchingCancellable {
syncHelper.syncFavourites(syncResult) syncHelper.syncFavourites(syncResult)
SyncController.setLastSync(context, account, authority, System.currentTimeMillis()) SyncController.setLastSync(context, account, authority, System.currentTimeMillis())
}.onFailure(syncResult::onError) }.onFailure { e ->
syncResult.onError(e)
syncHelper.onError(e)
}
syncHelper.onSyncComplete(syncResult)
} }
} }

View File

@@ -28,6 +28,10 @@ class HistorySyncAdapter(context: Context) : AbstractThreadedSyncAdapter(context
runCatchingCancellable { runCatchingCancellable {
syncHelper.syncHistory(syncResult) syncHelper.syncHistory(syncResult)
SyncController.setLastSync(context, account, authority, System.currentTimeMillis()) SyncController.setLastSync(context, account, authority, System.currentTimeMillis())
}.onFailure(syncResult::onError) }.onFailure { e ->
syncResult.onError(e)
syncHelper.onError(e)
}
syncHelper.onSyncComplete(syncResult)
} }
} }

View File

@@ -219,6 +219,7 @@ class TrackWorker @AssistedInject constructor(
.setPriority(NotificationCompat.PRIORITY_MIN) .setPriority(NotificationCompat.PRIORITY_MIN)
.setCategory(NotificationCompat.CATEGORY_SERVICE) .setCategory(NotificationCompat.CATEGORY_SERVICE)
.setDefaults(0) .setDefaults(0)
.setOngoing(true)
.setSilent(true) .setSilent(true)
.setProgress(0, 0, true) .setProgress(0, 0, true)
.setSmallIcon(android.R.drawable.stat_notify_sync) .setSmallIcon(android.R.drawable.stat_notify_sync)

View File

@@ -1,22 +0,0 @@
package org.koitharu.kotatsu.utils
import android.graphics.drawable.Drawable
import androidx.preference.Preference
import coil.target.Target
class PreferenceIconTarget(
private val preference: Preference,
) : Target {
override fun onError(error: Drawable?) {
preference.icon = error
}
override fun onStart(placeholder: Drawable?) {
preference.icon = placeholder
}
override fun onSuccess(result: Drawable) {
preference.icon = result
}
}

View File

@@ -2,6 +2,7 @@ package org.koitharu.kotatsu.utils
import android.content.Context import android.content.Context
import android.net.Uri import android.net.Uri
import android.widget.Toast
import androidx.core.app.ShareCompat import androidx.core.app.ShareCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.BuildConfig
@@ -84,6 +85,7 @@ class ShareHelper(private val context: Context) {
fun shareLogs(loggers: Collection<FileLogger>) { fun shareLogs(loggers: Collection<FileLogger>) {
val intentBuilder = ShareCompat.IntentBuilder(context) val intentBuilder = ShareCompat.IntentBuilder(context)
.setType(TYPE_TEXT) .setType(TYPE_TEXT)
var hasLogs = false
for (logger in loggers) { for (logger in loggers) {
val logFile = logger.file val logFile = logger.file
if (!logFile.exists()) { if (!logFile.exists()) {
@@ -91,8 +93,13 @@ class ShareHelper(private val context: Context) {
} }
val uri = FileProvider.getUriForFile(context, "${BuildConfig.APPLICATION_ID}.files", logFile) val uri = FileProvider.getUriForFile(context, "${BuildConfig.APPLICATION_ID}.files", logFile)
intentBuilder.addStream(uri) intentBuilder.addStream(uri)
hasLogs = true
}
if (hasLogs) {
intentBuilder.setChooserTitle(R.string.share_logs)
intentBuilder.startChooser()
} else {
Toast.makeText(context, R.string.nothing_here, Toast.LENGTH_SHORT).show()
} }
intentBuilder.setChooserTitle(R.string.share_logs)
intentBuilder.startChooser()
} }
} }

View File

@@ -19,6 +19,7 @@ import android.provider.Settings
import android.view.View import android.view.View
import android.view.ViewPropertyAnimator import android.view.ViewPropertyAnimator
import android.view.Window import android.view.Window
import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.IntegerRes import androidx.annotation.IntegerRes
import androidx.core.app.ActivityOptionsCompat import androidx.core.app.ActivityOptionsCompat
@@ -170,3 +171,18 @@ fun Context.findActivity(): Activity? = when (this) {
is ContextWrapper -> baseContext.findActivity() is ContextWrapper -> baseContext.findActivity()
else -> null else -> null
} }
inline fun Activity.catchingWebViewUnavailability(block: () -> Unit): Boolean {
return try {
block()
true
} catch (e: Exception) {
if (e.isWebViewUnavailable()) {
Toast.makeText(this, R.string.web_view_unavailable, Toast.LENGTH_LONG).show()
finishAfterTransition()
false
} else {
throw e
}
}
}

View File

@@ -34,18 +34,21 @@ fun Fragment.addMenuProvider(provider: MenuProvider) {
} }
@MainThread @MainThread
suspend fun Fragment.awaitViewLifecycle(): LifecycleOwner = suspendCancellableCoroutine { cont -> suspend fun Fragment.awaitViewLifecycle(): LifecycleOwner {
val liveData = viewLifecycleOwnerLiveData val liveData = viewLifecycleOwnerLiveData
val observer = object : Observer<LifecycleOwner?> { liveData.value?.let { return it }
override fun onChanged(value: LifecycleOwner?) { return suspendCancellableCoroutine { cont ->
if (value != null) { val observer = object : Observer<LifecycleOwner?> {
liveData.removeObserver(this) override fun onChanged(value: LifecycleOwner?) {
cont.resume(value) if (value != null) {
liveData.removeObserver(this)
cont.resume(value)
}
} }
} }
} liveData.observeForever(observer)
liveData.observeForever(observer) cont.invokeOnCancellation {
cont.invokeOnCancellation { liveData.removeObserver(observer)
liveData.removeObserver(observer) }
} }
} }

View File

@@ -4,9 +4,9 @@ import android.view.View
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
fun Insets.end(view: View): Int { fun Insets.end(view: View): Int {
return if (view.layoutDirection == View.LAYOUT_DIRECTION_RTL) left else right return if (view.isRtl) left else right
} }
fun Insets.start(view: View): Int { fun Insets.start(view: View): Int {
return if (view.layoutDirection == View.LAYOUT_DIRECTION_RTL) right else left return if (view.isRtl) right else left
} }

View File

@@ -2,6 +2,7 @@ package org.koitharu.kotatsu.utils.ext
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.res.Resources import android.content.res.Resources
import android.util.AndroidRuntimeException
import androidx.collection.arraySetOf import androidx.collection.arraySetOf
import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CancellationException
import okio.FileNotFoundException import okio.FileNotFoundException
@@ -54,7 +55,9 @@ fun Throwable.getDisplayMessage(resources: Resources): String = when (this) {
is IOException -> getDisplayMessage(message, resources) ?: localizedMessage is IOException -> getDisplayMessage(message, resources) ?: localizedMessage
else -> localizedMessage else -> localizedMessage
} ?: resources.getString(R.string.error_occurred) }.ifNullOrEmpty {
resources.getString(R.string.error_occurred)
}
private fun getDisplayMessage(msg: String?, resources: Resources): String? = when { private fun getDisplayMessage(msg: String?, resources: Resources): String? = when {
msg.isNullOrEmpty() -> null msg.isNullOrEmpty() -> null
@@ -92,3 +95,8 @@ inline fun <R> runCatchingCancellable(block: () -> R): Result<R> {
Result.failure(e) Result.failure(e)
} }
} }
fun Throwable.isWebViewUnavailable(): Boolean {
return (this is AndroidRuntimeException && message?.contains("WebView") == true) ||
cause?.isWebViewUnavailable() == true
}

View File

@@ -54,6 +54,11 @@ var RecyclerView.firstVisibleItemPosition: Int
} }
} }
val RecyclerView.visibleItemCount: Int
get() = (layoutManager as? LinearLayoutManager)?.run {
findLastVisibleItemPosition() - findFirstVisibleItemPosition()
} ?: 0
fun View.hasGlobalPoint(x: Int, y: Int): Boolean { fun View.hasGlobalPoint(x: Int, y: Int): Boolean {
if (visibility != View.VISIBLE) { if (visibility != View.VISIBLE) {
return false return false
@@ -66,7 +71,7 @@ fun View.hasGlobalPoint(x: Int, y: Int): Boolean {
fun View.measureHeight(): Int { fun View.measureHeight(): Int {
val vh = height val vh = height
return if (vh == 0) { return if (vh == 0) {
measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED)
measuredHeight measuredHeight
} else vh } else vh
} }
@@ -74,7 +79,7 @@ fun View.measureHeight(): Int {
fun View.measureWidth(): Int { fun View.measureWidth(): Int {
val vw = width val vw = width
return if (vw == 0) { return if (vw == 0) {
measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED)
measuredWidth measuredWidth
} else vw } else vw
} }
@@ -178,7 +183,6 @@ val View.parents: Sequence<ViewParent>
} }
} }
@Suppress("unused")
fun View.measureDimension(desiredSize: Int, measureSpec: Int): Int { fun View.measureDimension(desiredSize: Int, measureSpec: Int): Int {
var result: Int var result: Int
val specMode = MeasureSpec.getMode(measureSpec) val specMode = MeasureSpec.getMode(measureSpec)
@@ -201,3 +205,9 @@ fun <V> V.setChecked(checked: Boolean, animate: Boolean) where V : View, V : Che
jumpDrawablesToCurrentState() jumpDrawablesToCurrentState()
} }
} }
var View.isRtl: Boolean
get() = layoutDirection == View.LAYOUT_DIRECTION_RTL
set(value) {
layoutDirection = if (value) View.LAYOUT_DIRECTION_RTL else View.LAYOUT_DIRECTION_LTR
}

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.widget.RemoteViews import android.widget.RemoteViews
import android.widget.RemoteViewsService import android.widget.RemoteViewsService
import androidx.core.graphics.drawable.toBitmap
import coil.ImageLoader import coil.ImageLoader
import coil.executeBlocking import coil.executeBlocking
import coil.request.ImageRequest import coil.request.ImageRequest
@@ -15,7 +16,7 @@ import org.koitharu.kotatsu.base.domain.MangaIntent
import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.history.domain.HistoryRepository
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.util.replaceWith import org.koitharu.kotatsu.parsers.util.replaceWith
import org.koitharu.kotatsu.utils.ext.requireBitmap import org.koitharu.kotatsu.utils.ext.getDrawableOrThrow
class RecentListFactory( class RecentListFactory(
private val context: Context, private val context: Context,
@@ -56,7 +57,7 @@ class RecentListFactory(
.tag(item.source) .tag(item.source)
.transformations(transformation) .transformations(transformation)
.build(), .build(),
).requireBitmap() ).getDrawableOrThrow().toBitmap()
}.onSuccess { cover -> }.onSuccess { cover ->
views.setImageViewBitmap(R.id.imageView_cover, cover) views.setImageViewBitmap(R.id.imageView_cover, cover)
}.onFailure { }.onFailure {

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.widget.RemoteViews import android.widget.RemoteViews
import android.widget.RemoteViewsService import android.widget.RemoteViewsService
import androidx.core.graphics.drawable.toBitmap
import coil.ImageLoader import coil.ImageLoader
import coil.executeBlocking import coil.executeBlocking
import coil.request.ImageRequest import coil.request.ImageRequest
@@ -16,7 +17,7 @@ import org.koitharu.kotatsu.core.prefs.AppWidgetConfig
import org.koitharu.kotatsu.favourites.domain.FavouritesRepository import org.koitharu.kotatsu.favourites.domain.FavouritesRepository
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.util.replaceWith import org.koitharu.kotatsu.parsers.util.replaceWith
import org.koitharu.kotatsu.utils.ext.requireBitmap import org.koitharu.kotatsu.utils.ext.getDrawableOrThrow
class ShelfListFactory( class ShelfListFactory(
private val context: Context, private val context: Context,
@@ -67,7 +68,7 @@ class ShelfListFactory(
.tag(item.source) .tag(item.source)
.transformations(transformation) .transformations(transformation)
.build(), .build(),
).requireBitmap() ).getDrawableOrThrow().toBitmap()
}.onSuccess { cover -> }.onSuccess { cover ->
views.setImageViewBitmap(R.id.imageView_cover, cover) views.setImageViewBitmap(R.id.imageView_cover, cover)
}.onFailure { }.onFailure {

View File

@@ -83,6 +83,7 @@
android:paddingHorizontal="@dimen/margin_normal" android:paddingHorizontal="@dimen/margin_normal"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?textAppearanceTitleMedium" android:textAppearance="?textAppearanceTitleMedium"
tools:ignore="InconsistentLayout"
tools:text="@string/chapter_d_of_d" /> tools:text="@string/chapter_d_of_d" />
<TextView <TextView

View File

@@ -83,6 +83,7 @@
app:layout_behavior="org.koitharu.kotatsu.main.ui.MainActionButtonBehavior" app:layout_behavior="org.koitharu.kotatsu.main.ui.MainActionButtonBehavior"
app:layout_dodgeInsetEdges="bottom" app:layout_dodgeInsetEdges="bottom"
app:layout_insetEdge="bottom" app:layout_insetEdge="bottom"
tools:ignore="InconsistentLayout"
tools:visibility="visible" /> tools:visibility="visible" />
<org.koitharu.kotatsu.base.ui.widgets.SlidingBottomNavigationView <org.koitharu.kotatsu.base.ui.widgets.SlidingBottomNavigationView

View File

@@ -24,6 +24,7 @@
android:scrollIndicators="top|bottom" android:scrollIndicators="top|bottom"
android:scrollbars="vertical" android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:ignore="UnusedAttribute"
tools:listitem="@layout/item_source_locale" /> tools:listitem="@layout/item_source_locale" />
</LinearLayout> </LinearLayout>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceBodyLarge" />

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:drawableEnd="?android:listChoiceIndicatorSingle"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceBodyLarge"
tools:text="Scanlator" />

View File

@@ -92,5 +92,5 @@
android:singleLine="true" android:singleLine="true"
android:textAppearance="?attr/textAppearanceBodySmall" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:attr/textColorPrimary" android:textColor="?android:attr/textColorPrimary"
tools:text="@string/theme_name_mint" /> tools:text="@string/theme_name_miku" />
</LinearLayout> </LinearLayout>

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@@ -46,4 +45,4 @@
tools:text="@string/try_again" tools:text="@string/try_again"
tools:visibility="visible" /> tools:visibility="visible" />
</LinearLayout> </LinearLayout>

View File

@@ -31,16 +31,16 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="mail@mail.com" android:textAppearance="?textAppearanceBodyLarge"
android:textAppearance="?textAppearanceBodyLarge" /> tools:text="mail@mail.com" />
<TextView <TextView
android:id="@+id/last_checked" android:id="@+id/last_checked"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="Last checked: 6:00 PM" android:textAppearance="?textAppearanceBodySmall"
android:textAppearance="?textAppearanceBodySmall" /> tools:text="Last checked: 6:00 PM" />
</LinearLayout> </LinearLayout>

View File

@@ -1,400 +1,415 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="local_storage">На прыладзе</string> <string name="local_storage">На прыладзе</string>
<string name="favourites">Абраныя</string> <string name="favourites">Абраныя</string>
<string name="history">Гісторыя</string> <string name="history">Гісторыя</string>
<string name="error_occurred">Адбылася памылка</string> <string name="error_occurred">Адбылася памылка</string>
<string name="network_error">Памылка сеткі</string> <string name="network_error">Памылка сеткі</string>
<string name="details">Падрабязнасцi</string> <string name="details">Падрабязнасцi</string>
<string name="chapters">Раздзелы</string> <string name="chapters">Раздзелы</string>
<string name="list">Спіс</string> <string name="list">Спіс</string>
<string name="detailed_list">Падрабязны спіс</string> <string name="detailed_list">Падрабязны спіс</string>
<string name="grid">Табліца</string> <string name="grid">Табліца</string>
<string name="list_mode">Выгляд спісу</string> <string name="list_mode">Выгляд спісу</string>
<string name="settings">Налады</string> <string name="settings">Налады</string>
<string name="remote_sources">Крыніцы мангі</string> <string name="remote_sources">Крыніцы мангі</string>
<string name="loading_">Загрузка…</string> <string name="loading_">Загрузка…</string>
<string name="chapter_d_of_d">Глава %1$d з %2$d</string> <string name="chapter_d_of_d">Глава %1$d з %2$d</string>
<string name="close">Закрыць</string> <string name="close">Закрыць</string>
<string name="try_again">Паўтарыць</string> <string name="try_again">Паўтарыць</string>
<string name="clear_history">Ачысціць гісторыю</string> <string name="clear_history">Ачысціць гісторыю</string>
<string name="nothing_found">Нічога не знойдзена</string> <string name="nothing_found">Нічога не знойдзена</string>
<string name="history_is_empty">Гісторыя пустая</string> <string name="history_is_empty">Гісторыя пустая</string>
<string name="read">Чытаць</string> <string name="read">Чытаць</string>
<string name="you_have_not_favourites_yet">Дадайце цікавую для вас мангу ў абранае, каб не страціць яе</string> <string name="you_have_not_favourites_yet">Дадайце цікавую для вас мангу ў абранае, каб не страціць яе</string>
<string name="add_to_favourites">Дадаць у абраныя</string> <string name="add_to_favourites">Дадаць у абраныя</string>
<string name="add_new_category">Стварыць катэгорыю</string> <string name="add_new_category">Стварыць катэгорыю</string>
<string name="add">Дадаць</string> <string name="add">Дадаць</string>
<string name="save">Захаваць</string> <string name="save">Захаваць</string>
<string name="share">Падзяліцца</string> <string name="share">Падзяліцца</string>
<string name="create_shortcut">Стварыць ярлык…</string> <string name="create_shortcut">Стварыць ярлык…</string>
<string name="share_s">Падзялiцца %s</string> <string name="share_s">Падзялiцца %s</string>
<string name="search">Пошук</string> <string name="search">Пошук</string>
<string name="search_manga">Пошук мангі</string> <string name="search_manga">Пошук мангі</string>
<string name="manga_downloading_">Спампоўванне мангі…</string> <string name="manga_downloading_">Спампоўванне мангі…</string>
<string name="processing_">Апрацоўка…</string> <string name="processing_">Апрацоўка…</string>
<string name="download_complete">Спампоўванне завершана</string> <string name="download_complete">Спампоўванне завершана</string>
<string name="downloads">Спампоўкі</string> <string name="downloads">Спампоўкі</string>
<string name="by_name">Па імю</string> <string name="by_name">Па імю</string>
<string name="popular">Папулярная</string> <string name="popular">Папулярная</string>
<string name="updated">Абноўленая</string> <string name="updated">Абноўленая</string>
<string name="newest">Новая</string> <string name="newest">Новая</string>
<string name="by_rating">Па рэйтынгу</string> <string name="by_rating">Па рэйтынгу</string>
<string name="sort_order">Сартаванне</string> <string name="sort_order">Сартаванне</string>
<string name="filter">Фільтр</string> <string name="filter">Фільтр</string>
<string name="theme">Тэма</string> <string name="theme">Тэма</string>
<string name="light">Светлая</string> <string name="light">Светлая</string>
<string name="dark">Цёмная</string> <string name="dark">Цёмная</string>
<string name="automatic">Аўтаматычна</string> <string name="automatic">Аўтаматычна</string>
<string name="pages">Старонкi</string> <string name="pages">Старонкi</string>
<string name="clear">Ачысціць</string> <string name="clear">Ачысціць</string>
<string name="text_clear_history_prompt">Вы ўпэўненыя, што жадаеце ачысціць гісторыю\?</string> <string name="text_clear_history_prompt">Вы ўпэўненыя, што жадаеце ачысціць гісторыю\?</string>
<string name="remove">Выдаліць</string> <string name="remove">Выдаліць</string>
<string name="_s_deleted_from_local_storage">«%s» выдалена з прылады</string> <string name="_s_deleted_from_local_storage">«%s» выдалена з прылады</string>
<string name="save_page">Захаваць старонку</string> <string name="save_page">Захаваць старонку</string>
<string name="page_saved">Старонка захавана</string> <string name="page_saved">Старонка захавана</string>
<string name="share_image">Падзяліцца выявай</string> <string name="share_image">Падзяліцца выявай</string>
<string name="_import">Імпарт</string> <string name="_import">Імпарт</string>
<string name="delete">Выдаліць</string> <string name="delete">Выдаліць</string>
<string name="operation_not_supported">Аперацыя не падтрымліваецца</string> <string name="operation_not_supported">Аперацыя не падтрымліваецца</string>
<string name="text_file_not_supported">Файл не падтрымліваецца. Падтрымліваюцца толькі ZIP і CBZ.</string> <string name="text_file_not_supported">Файл не падтрымліваецца. Падтрымліваюцца толькі ZIP і CBZ.</string>
<string name="no_description">Няма апісання</string> <string name="no_description">Няма апісання</string>
<string name="history_and_cache">Гісторыя і кэш</string> <string name="history_and_cache">Гісторыя і кэш</string>
<string name="clear_pages_cache">Ачысціць кэш старонак</string> <string name="clear_pages_cache">Ачысціць кэш старонак</string>
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string> <string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
<string name="standard">Стандартны</string> <string name="standard">Стандартны</string>
<string name="webtoon">Манхва</string> <string name="webtoon">Манхва</string>
<string name="read_mode">Рэжым чытання</string> <string name="read_mode">Рэжым чытання</string>
<string name="grid_size">Памер табліцы</string> <string name="grid_size">Памер табліцы</string>
<string name="search_on_s">Пошук па %s</string> <string name="search_on_s">Пошук па %s</string>
<string name="delete_manga">Выдаліць мангу</string> <string name="delete_manga">Выдаліць мангу</string>
<string name="reader_settings">Налады чытання</string> <string name="reader_settings">Налады чытання</string>
<string name="switch_pages">Гартанне старонак</string> <string name="switch_pages">Гартанне старонак</string>
<string name="text_delete_local_manga">Вы ўпэўненыя, што жадаеце выдаліць «%s» з прылады\?</string> <string name="text_delete_local_manga">Вы ўпэўненыя, што жадаеце выдаліць «%s» з прылады\?</string>
<string name="taps_on_edges">Націск па краях</string> <string name="taps_on_edges">Націск па краях</string>
<string name="volume_buttons">Кнопкі гучнасці</string> <string name="volume_buttons">Кнопкі гучнасці</string>
<string name="_continue">Працягнцуць</string> <string name="_continue">Працягнцуць</string>
<string name="error">Памылка</string> <string name="error">Памылка</string>
<string name="clear_thumbs_cache">Ачысціць кэш мініяцюр</string> <string name="clear_thumbs_cache">Ачысціць кэш мініяцюр</string>
<string name="search_history_cleared">Гісторыя пошуку ачышчана</string> <string name="search_history_cleared">Гісторыя пошуку ачышчана</string>
<string name="clear_search_history">Ачысціць гісторыю пошуку</string> <string name="clear_search_history">Ачысціць гісторыю пошуку</string>
<string name="gestures_only">Толькі жэсты</string> <string name="gestures_only">Толькі жэсты</string>
<string name="internal_storage">Унутранае сховішча</string> <string name="internal_storage">Унутранае сховішча</string>
<string name="external_storage">Знешняе сховішча</string> <string name="external_storage">Знешняе сховішча</string>
<string name="domain">Дамен</string> <string name="domain">Дамен</string>
<string name="app_update_available">Даступна абнаўленне праграмы</string> <string name="app_update_available">Даступна абнаўленне праграмы</string>
<string name="open_in_browser">Адкрыць у браўзеры</string> <string name="open_in_browser">Адкрыць у браўзеры</string>
<string name="large_manga_save_confirm">У гэтай манге %s. Вы ўпэўненыя, што хочаце захаваць іх усё\?</string> <string name="large_manga_save_confirm">У гэтай манге %s. Вы ўпэўненыя, што хочаце захаваць іх усё\?</string>
<string name="save_manga">Захаваць мангу</string> <string name="save_manga">Захаваць мангу</string>
<string name="notifications">Паведамленні</string> <string name="notifications">Паведамленні</string>
<string name="enabled_d_of_d">Уключана %1$d з %2$d</string> <string name="enabled_d_of_d">Уключана %1$d з %2$d</string>
<string name="new_chapters">Новыя раздзелы</string> <string name="new_chapters">Новыя раздзелы</string>
<string name="download">Спампаваць</string> <string name="download">Спампаваць</string>
<string name="notifications_settings">Налады апавяшчэнняў</string> <string name="notifications_settings">Налады апавяшчэнняў</string>
<string name="notification_sound">Гук апавяшчэння</string> <string name="notification_sound">Гук апавяшчэння</string>
<string name="light_indicator">Светлавая iндыкацыя</string> <string name="light_indicator">Светлавая iндыкацыя</string>
<string name="vibration">Вібрацыя</string> <string name="vibration">Вібрацыя</string>
<string name="favourites_categories">Катэгорыі абранага</string> <string name="favourites_categories">Катэгорыі абранага</string>
<string name="remove_category">Выдаліць катэгорыю</string> <string name="remove_category">Выдаліць катэгорыю</string>
<string name="manga_shelf">Паліца з мангай</string> <string name="manga_shelf">Паліца з мангай</string>
<string name="recent_manga">Нядаўняя манга</string> <string name="recent_manga">Нядаўняя манга</string>
<string name="pages_animation">Анімацыя гартання</string> <string name="pages_animation">Анімацыя гартання</string>
<string name="manga_save_location">Месца спампоўвання мангі</string> <string name="manga_save_location">Месца спампоўвання мангі</string>
<string name="not_available">Недаступна</string> <string name="not_available">Недаступна</string>
<string name="cannot_find_available_storage">Не атрымалася знайсці ніводнага даступнага сховішча</string> <string name="cannot_find_available_storage">Не атрымалася знайсці ніводнага даступнага сховішча</string>
<string name="other_storage">Іншае сховішча</string> <string name="other_storage">Іншае сховішча</string>
<string name="done">Гатова</string> <string name="done">Гатова</string>
<string name="all_favourites">Усе абраныя</string> <string name="all_favourites">Усе абраныя</string>
<string name="favourites_category_empty">У гэтай катэгорыі нічога няма</string> <string name="favourites_category_empty">У гэтай катэгорыі нічога няма</string>
<string name="read_later">Прачытаць пазней</string> <string name="read_later">Прачытаць пазней</string>
<string name="updates">Абнаўленні</string> <string name="updates">Абнаўленні</string>
<string name="text_feed_holder">Тут будуць паказвацца абнаўлення мангі, якую вы чытаеце</string> <string name="text_feed_holder">Тут будуць паказвацца абнаўлення мангі, якую вы чытаеце</string>
<string name="search_results">Вынікі пошуку</string> <string name="search_results">Вынікі пошуку</string>
<string name="new_version_s">Новая версія: %s</string> <string name="new_version_s">Новая версія: %s</string>
<string name="size_s">Памер: %s</string> <string name="size_s">Памер: %s</string>
<string name="clear_updates_feed">Ачысціць стужку абнаўленняў</string> <string name="clear_updates_feed">Ачысціць стужку абнаўленняў</string>
<string name="updates_feed_cleared">Стужка абнаўленняў ачышчана</string> <string name="updates_feed_cleared">Стужка абнаўленняў ачышчана</string>
<string name="rotate_screen">Павярнуць экран</string> <string name="rotate_screen">Павярнуць экран</string>
<string name="update">Абнавіць</string> <string name="update">Абнавіць</string>
<string name="feed_will_update_soon">Абнаўленне хутка пачнецца</string> <string name="feed_will_update_soon">Абнаўленне хутка пачнецца</string>
<string name="track_sources">Правяраць абнаўленні мангі</string> <string name="track_sources">Правяраць абнаўленні мангі</string>
<string name="dont_check">Не правяраць</string> <string name="dont_check">Не правяраць</string>
<string name="enter_password">Увядзіце пароль</string> <string name="enter_password">Увядзіце пароль</string>
<string name="wrong_password">Няверны пароль</string> <string name="wrong_password">Няверны пароль</string>
<string name="protect_application">Абараніць праграму</string> <string name="protect_application">Абараніць праграму</string>
<string name="protect_application_summary">Запытваць пароль пры запуску праграмы</string> <string name="protect_application_summary">Запытваць пароль пры запуску праграмы</string>
<string name="repeat_password">Паўтарыце пароль</string> <string name="repeat_password">Паўтарыце пароль</string>
<string name="passwords_mismatch">Паролі не супадаюць</string> <string name="passwords_mismatch">Паролі не супадаюць</string>
<string name="about">Аб праграме</string> <string name="about">Аб праграме</string>
<string name="app_version">Версія %s</string> <string name="app_version">Версія %s</string>
<string name="check_for_updates">Праверыць абнаўленні</string> <string name="check_for_updates">Праверыць абнаўленні</string>
<string name="no_update_available">Няма даступных абнаўленняў</string> <string name="no_update_available">Няма даступных абнаўленняў</string>
<string name="right_to_left">Справа налева</string> <string name="right_to_left">Справа налева</string>
<string name="create_category">Стварыць катэгорыю</string> <string name="create_category">Стварыць катэгорыю</string>
<string name="scale_mode">Маштабаванне</string> <string name="scale_mode">Маштабаванне</string>
<string name="zoom_mode_fit_center">Умясціць у экран</string> <string name="zoom_mode_fit_center">Умясціць у экран</string>
<string name="zoom_mode_fit_height">Падагнаць па вышыні</string> <string name="zoom_mode_fit_height">Падагнаць па вышыні</string>
<string name="zoom_mode_fit_width">Падагнаць па шырыні</string> <string name="zoom_mode_fit_width">Падагнаць па шырыні</string>
<string name="zoom_mode_keep_start">Зыходны памер</string> <string name="zoom_mode_keep_start">Зыходны памер</string>
<string name="black_dark_theme">Чорная цёмная тэма</string> <string name="black_dark_theme">Чорная цёмная тэма</string>
<string name="black_dark_theme_summary">Карысна для AMOLED экранаў</string> <string name="black_dark_theme_summary">Карысна для AMOLED экранаў</string>
<string name="backup_restore">Рэзервовае капіяванне і аднаўленне</string> <string name="backup_restore">Рэзервовае капіяванне і аднаўленне</string>
<string name="create_backup">Стварыць рэзервовую копію</string> <string name="create_backup">Стварыць рэзервовую копію</string>
<string name="restore_backup">Аднавіць данныя</string> <string name="restore_backup">Аднавіць данныя</string>
<string name="data_restored">Данныя адноўлены</string> <string name="data_restored">Данныя адноўлены</string>
<string name="preparing_">Падрыхтоўка…</string> <string name="preparing_">Падрыхтоўка…</string>
<string name="file_not_found">Файл не знойдзены</string> <string name="file_not_found">Файл не знойдзены</string>
<string name="data_restored_success">Усе данныя паспяхова адноўлены</string> <string name="data_restored_success">Усе данныя паспяхова адноўлены</string>
<string name="data_restored_with_errors">Данныя адноўлены, але ўзніклі некаторыя памылкі</string> <string name="data_restored_with_errors">Данныя адноўлены, але ўзніклі некаторыя памылкі</string>
<string name="backup_information">Вы можаце стварыць рэзервовую копію абранага і гісторыі і потым аднавіць іх</string> <string name="backup_information">Вы можаце стварыць рэзервовую копію абранага і гісторыі і потым аднавіць іх</string>
<string name="just_now">Толькі што</string> <string name="just_now">Толькі што</string>
<string name="yesterday">Учора</string> <string name="yesterday">Учора</string>
<string name="long_ago">Даўно</string> <string name="long_ago">Даўно</string>
<string name="group">Групаваць</string> <string name="group">Групаваць</string>
<string name="today">Сёння</string> <string name="today">Сёння</string>
<string name="tap_to_try_again">Паспрабаваць яшчэ раз</string> <string name="tap_to_try_again">Паспрабаваць яшчэ раз</string>
<string name="reader_mode_hint">Абраны рэжым будзе захаваны для бягучай мангі</string> <string name="reader_mode_hint">Абраны рэжым будзе захаваны для бягучай мангі</string>
<string name="silent">Без гуку</string> <string name="silent">Без гуку</string>
<string name="captcha_required">Неабходна прайсці CAPTCHA</string> <string name="captcha_required">Неабходна прайсці CAPTCHA</string>
<string name="captcha_solve">Прайсці</string> <string name="captcha_solve">Прайсці</string>
<string name="clear_cookies">Ачысціць кукi</string> <string name="clear_cookies">Ачысціць кукi</string>
<string name="cookies_cleared">Усе кукi выдалены</string> <string name="cookies_cleared">Усе кукi выдалены</string>
<string name="clear_feed">Ачысціць стужку</string> <string name="clear_feed">Ачысціць стужку</string>
<string name="text_clear_updates_feed_prompt">Уся гісторыя абнаўленняў будзе ачышчана і яе нельга будзе вярнуць. Вы ўпэўненыя\?</string> <string name="text_clear_updates_feed_prompt">Уся гісторыя абнаўленняў будзе ачышчана і яе нельга будзе вярнуць. Вы ўпэўненыя\?</string>
<string name="check_for_new_chapters">Праверка новых глаў</string> <string name="check_for_new_chapters">Праверка новых глаў</string>
<string name="reverse">У адваротным парадку</string> <string name="reverse">У адваротным парадку</string>
<string name="sign_in">Увайсці</string> <string name="sign_in">Увайсці</string>
<string name="auth_required">Для прагляду гэтага кантэнту патрабуецца аўтарызацыя</string> <string name="auth_required">Для прагляду гэтага кантэнту патрабуецца аўтарызацыя</string>
<string name="default_s">Прадвызначаны: %s</string> <string name="default_s">Прадвызначаны: %s</string>
<string name="next">Далей</string> <string name="next">Далей</string>
<string name="protect_application_subtitle">Калі ласка, увядзіце пароль, які спатрэбіцца пры запуску праграмы</string> <string name="protect_application_subtitle">Калі ласка, увядзіце пароль, які спатрэбіцца пры запуску праграмы</string>
<string name="confirm">Пацвердзіць</string> <string name="confirm">Пацвердзіць</string>
<string name="password_length_hint">Пароль павінен змяшчаць не менш за 4 сімвалы</string> <string name="password_length_hint">Пароль павінен змяшчаць не менш за 4 сімвалы</string>
<string name="text_clear_search_history_prompt">Вы сапраўды хочаце выдаліць усе апошнія пошукавыя запыты\?</string> <string name="text_clear_search_history_prompt">Вы сапраўды хочаце выдаліць усе апошнія пошукавыя запыты\?</string>
<string name="read_more">Падрабязна</string> <string name="read_more">Падрабязна</string>
<string name="tracker_warning">Некаторыя вытворцы могуць змяняць паводзіны сістэмы, што можа парушаць выкананне фонавых задач.</string> <string name="tracker_warning">Некаторыя вытворцы могуць змяняць паводзіны сістэмы, што можа парушаць выкананне фонавых задач.</string>
<string name="backup_saved">Рэзервовая копія паспяхова захавана</string> <string name="backup_saved">Рэзервовая копія паспяхова захавана</string>
<string name="welcome">Вітаю</string> <string name="welcome">Вітаю</string>
<string name="text_local_holder_secondary">Вы можаце захаваць мангу з анлайн-крыніц або імпартаваць з файла.</string> <string name="text_local_holder_secondary">Вы можаце захаваць мангу з анлайн-крыніц або імпартаваць з файла.</string>
<string name="text_local_holder_primary">У вас яшчэ няма ніводнай захаванай мангі</string> <string name="text_local_holder_primary">У вас яшчэ няма ніводнай захаванай мангі</string>
<string name="text_history_holder_secondary">Вы можаце знайсці, што пачытаць, у бакавым меню.</string> <string name="text_history_holder_secondary">Вы можаце знайсці, што пачытаць, у бакавым меню.</string>
<string name="text_history_holder_primary">Тут будзе паказана манга, якую вы чытаеце</string> <string name="text_history_holder_primary">Тут будзе паказана манга, якую вы чытаеце</string>
<string name="text_search_holder_secondary">Паспрабуйце перафармуляваць запыт.</string> <string name="text_search_holder_secondary">Паспрабуйце перафармуляваць запыт.</string>
<string name="text_empty_holder_primary">Тут неяк пуста…</string> <string name="text_empty_holder_primary">Тут неяк пуста…</string>
<string name="chapter_is_missing">Глава адсутнічае</string> <string name="chapter_is_missing">Глава адсутнічае</string>
<string name="chapter_is_missing_text">Гэтая глава адсутнічае на вашай прыладзе. Спампуйце ціпрачытайце яе онлайн.</string> <string name="chapter_is_missing_text">Гэтая глава адсутнічае на вашай прыладзе. Спампуйце ціпрачытайце яе онлайн.</string>
<string name="queued">У чарзе</string> <string name="queued">У чарзе</string>
<string name="about_app_translation_summary">Дапамагчы з перакладам праграмы</string> <string name="about_app_translation_summary">Дапамагчы з перакладам праграмы</string>
<string name="about_app_translation">Пераклад</string> <string name="about_app_translation">Пераклад</string>
<string name="text_clear_cookies_prompt">Вы выйдзеце з усіх крыніц, у якіх вы аўтарызаваны</string> <string name="text_clear_cookies_prompt">Вы выйдзеце з усіх крыніц, у якіх вы аўтарызаваны</string>
<string name="auth_not_supported_by">Аўтарызацыя на %s не падтрымліваецца</string> <string name="auth_not_supported_by">Аўтарызацыя на %s не падтрымліваецца</string>
<string name="auth_complete">Аўтарызацыя выканана</string> <string name="auth_complete">Аўтарызацыя выканана</string>
<string name="genres">Жанры</string> <string name="genres">Жанры</string>
<string name="state_finished">Завершана</string> <string name="state_finished">Завершана</string>
<string name="state_ongoing">Ангоінг</string> <string name="state_ongoing">Ангоінг</string>
<string name="system_default">Па змаўчанні</string> <string name="system_default">Па змаўчанні</string>
<string name="exclude_nsfw_from_history">Не паказваць NSFW мангу з гісторыі</string> <string name="exclude_nsfw_from_history">Не паказваць NSFW мангу з гісторыі</string>
<string name="show_pages_numbers">Паказваць нумары старонак</string> <string name="show_pages_numbers">Паказваць нумары старонак</string>
<string name="enabled_sources">Уключаныя крыніцы</string> <string name="enabled_sources">Уключаныя крыніцы</string>
<string name="available_sources">Даступныя крыніцы</string> <string name="available_sources">Даступныя крыніцы</string>
<string name="computing_">Вылічэнні…</string> <string name="computing_">Вылічэнні…</string>
<string name="screenshots_allow">Дазваляць</string> <string name="screenshots_allow">Дазваляць</string>
<string name="screenshots_policy">Палітыка скрыншотаў</string> <string name="screenshots_policy">Палітыка скрыншотаў</string>
<string name="screenshots_block_all">Заўсёды блакуйце</string> <string name="screenshots_block_all">Заўсёды блакуйце</string>
<string name="screenshots_block_nsfw">Блок на NSFW</string> <string name="screenshots_block_nsfw">Блок на NSFW</string>
<string name="filter_load_error">Немагчыма загрузіць спіс жанраў</string> <string name="filter_load_error">Немагчыма загрузіць спіс жанраў</string>
<string name="disabled">Непрацаздольны</string> <string name="disabled">Непрацаздольны</string>
<string name="enabled">Уключаны</string> <string name="enabled">Уключаны</string>
<string name="exclude_nsfw_from_suggestions">Не прапануйце мангу NSFW</string> <string name="exclude_nsfw_from_suggestions">Не прапануйце мангу NSFW</string>
<string name="text_suggestion_holder">Пачніце чытаць мангу, і вы атрымаеце персаналізаваныя прапановы</string> <string name="text_suggestion_holder">Пачніце чытаць мангу, і вы атрымаеце персаналізаваныя прапановы</string>
<string name="suggestions_info">Усе даныя аналізуюцца толькі лакальна на гэтай прыладзе і нікуды не адпраўляюцца.</string> <string name="suggestions_info">Усе даныя аналізуюцца толькі лакальна на гэтай прыладзе і нікуды не адпраўляюцца.</string>
<string name="suggestions_summary">Прапануеце мангу, заснаваную на вашых перавагах</string> <string name="suggestions_summary">Прапануеце мангу, заснаваную на вашых перавагах</string>
<string name="suggestions_enable">Уключыць прапановы</string> <string name="suggestions_enable">Уключыць прапановы</string>
<string name="suggestions">Прапанова</string> <string name="suggestions">Прапанова</string>
<string name="onboard_text">Выберыце мову, на якой вы хочаце чытаць мангу. Вы зможаце змяніць гэта пазней.</string> <string name="onboard_text">Выберыце мову, на якой вы хочаце чытаць мангу. Вы зможаце змяніць гэта пазней.</string>
<string name="reset_filter">Скінуць фільтр</string> <string name="reset_filter">Скінуць фільтр</string>
<string name="find_genre">Знайсці жанр</string> <string name="find_genre">Знайсці жанр</string>
<string name="always">Заўсёды</string> <string name="always">Заўсёды</string>
<string name="nsfw">18+</string> <string name="nsfw">18+</string>
<string name="never">Ніколі</string> <string name="never">Ніколі</string>
<string name="only_using_wifi">Толькі праз Wi-Fi</string> <string name="only_using_wifi">Толькі праз Wi-Fi</string>
<string name="logged_in_as">Вы аўтарызаваны як %s</string> <string name="logged_in_as">Вы аўтарызаваны як %s</string>
<string name="preload_pages">Папярэдняя загрузка старонак</string> <string name="preload_pages">Папярэдняя загрузка старонак</string>
<string name="various_languages">Розныя мовы</string> <string name="various_languages">Розныя мовы</string>
<string name="search_chapters">Знайсці главу</string> <string name="search_chapters">Знайсці главу</string>
<string name="percent_string_pattern">%1$s%%</string> <string name="percent_string_pattern">%1$s%%</string>
<string name="chapters_empty">У гэтай манзе няма глаў</string> <string name="chapters_empty">У гэтай манзе няма глаў</string>
<string name="hide">Схаваць</string> <string name="hide">Схаваць</string>
<string name="appearance">Знешні выгляд</string> <string name="appearance">Знешні выгляд</string>
<string name="content">Змесціва</string> <string name="content">Змесціва</string>
<string name="disable_all">Выключыць усё</string> <string name="disable_all">Выключыць усё</string>
<string name="use_fingerprint">Выкарыстоўваць адбітак пальца, калі даступна</string> <string name="use_fingerprint">Выкарыстоўваць адбітак пальца, калі даступна</string>
<string name="appwidget_shelf_description">Манга з абраных</string> <string name="appwidget_shelf_description">Манга з абраных</string>
<string name="appwidget_recent_description">Манга, якую вы нядаўна чыталі</string> <string name="appwidget_recent_description">Манга, якую вы нядаўна чыталі</string>
<string name="suggestions_updating">Абнаўленне рэкамендацый</string> <string name="suggestions_updating">Абнаўленне рэкамендацый</string>
<string name="local_manga_processing">Апрацоўка захаванай мангі</string> <string name="local_manga_processing">Апрацоўка захаванай мангі</string>
<string name="chapters_will_removed_background">Раздзелы будуць выдалены ў фонавым рэжыме</string> <string name="chapters_will_removed_background">Раздзелы будуць выдалены ў фонавым рэжыме</string>
<string name="check_new_chapters_title">Правяраць новыя главы і паведамляць пра іх</string> <string name="check_new_chapters_title">Правяраць новыя главы і паведамляць пра іх</string>
<string name="show_notification_new_chapters_on">Вы будзеце атрымліваць апавяшчэнні пра абнаўленні мангі, якую вы чытаеце</string> <string name="show_notification_new_chapters_on">Вы будзеце атрымліваць апавяшчэнні пра абнаўленні мангі, якую вы чытаеце</string>
<string name="show_notification_new_chapters_off">Вы не будзеце атрымліваць паведамленні, але новыя главы будуць паказаны ў спісе</string> <string name="show_notification_new_chapters_off">Вы не будзеце атрымліваць паведамленні, але новыя главы будуць паказаны ў спісе</string>
<string name="notifications_enable">Уключыць апавяшчэнні</string> <string name="notifications_enable">Уключыць апавяшчэнні</string>
<string name="bookmarks">Закладкі</string> <string name="bookmarks">Закладкі</string>
<string name="bookmark_removed">Закладка выдалена</string> <string name="bookmark_removed">Закладка выдалена</string>
<string name="bookmark_added">Закладка дадазена</string> <string name="bookmark_added">Закладка дадазена</string>
<string name="removed_from_history">Выдалена з гісторыі</string> <string name="removed_from_history">Выдалена з гісторыі</string>
<string name="dns_over_https">DNS праз HTTPS</string> <string name="dns_over_https">DNS праз HTTPS</string>
<string name="detect_reader_mode">Аўтавызначэнне рэжыму чытання</string> <string name="detect_reader_mode">Аўтавызначэнне рэжыму чытання</string>
<string name="detect_reader_mode_summary">Аўтаматычна вызначае, ці з’яўляецца манга вэбтунам</string> <string name="detect_reader_mode_summary">Аўтаматычна вызначае, ці з’яўляецца манга вэбтунам</string>
<string name="new_sources_text">Даступныя новыя крыніцы мангі</string> <string name="new_sources_text">Даступныя новыя крыніцы мангі</string>
<string name="download_slowdown">Запавольванне спампоўкі</string> <string name="download_slowdown">Запавольванне спампоўкі</string>
<string name="suggestions_excluded_genres">Выключыць жанры</string> <string name="suggestions_excluded_genres">Выключыць жанры</string>
<string name="suggestions_excluded_genres_summary">Укажыце жанры, якія вы не хочаце бачыць у рэкамендацыях</string> <string name="suggestions_excluded_genres_summary">Укажыце жанры, якія вы не хочаце бачыць у рэкамендацыях</string>
<string name="text_delete_local_manga_batch">Выдаліць выбраныя элементы з прылады назаўжды\?</string> <string name="text_delete_local_manga_batch">Выдаліць выбраныя элементы з прылады назаўжды\?</string>
<string name="removal_completed">Выдаленне завершана</string> <string name="removal_completed">Выдаленне завершана</string>
<string name="download_slowdown_summary">Дапамагае пазбегнуць блакіроўкі па IP-адрасе</string> <string name="download_slowdown_summary">Дапамагае пазбегнуць блакіроўкі па IP-адрасе</string>
<string name="bookmark_remove">Выдаліць закладку</string> <string name="bookmark_remove">Выдаліць закладку</string>
<string name="default_mode">Рэжым па змаўчанні</string> <string name="default_mode">Рэжым па змаўчанні</string>
<string name="empty_favourite_categories">Няма абраных катэгорый</string> <string name="empty_favourite_categories">Няма абраных катэгорый</string>
<string name="name">Назва</string> <string name="name">Назва</string>
<string name="edit">Змяніць</string> <string name="edit">Змяніць</string>
<string name="edit_category">Змяніць катэгорыю</string> <string name="edit_category">Змяніць катэгорыю</string>
<string name="bookmark_add">Дадаць закладку</string> <string name="bookmark_add">Дадаць закладку</string>
<string name="undo">Адмяніць</string> <string name="undo">Адмяніць</string>
<string name="disable_battery_optimization">Адключыць аптымізацыю акумулятара</string> <string name="disable_battery_optimization">Адключыць аптымізацыю акумулятара</string>
<string name="disable_battery_optimization_summary">Дапамагае з фонавай праверкай абнаўленняў</string> <string name="disable_battery_optimization_summary">Дапамагае з фонавай праверкай абнаўленняў</string>
<string name="crash_text">Штосьці пайшло не так. Калі ласка, адпраўце справаздачу пра памылку распрацоўшчыкам, каб дапамагчы нам яе выправіць.</string> <string name="crash_text">Штосьці пайшло не так. Калі ласка, адпраўце справаздачу пра памылку распрацоўшчыкам, каб дапамагчы нам яе выправіць.</string>
<string name="send">Адправіць</string> <string name="send">Адправіць</string>
<string name="invalid_domain_message">Памылковы дамен</string> <string name="invalid_domain_message">Памылковы дамен</string>
<string name="report">Справаздача</string> <string name="report">Справаздача</string>
<string name="tracking">Адсочванне</string> <string name="tracking">Адсочванне</string>
<string name="status_completed">Завершана</string> <string name="status_completed">Завершана</string>
<string name="status_on_hold">Адкладзена</string> <string name="status_on_hold">Адкладзена</string>
<string name="status_dropped">Кінута</string> <string name="status_dropped">Кінута</string>
<string name="show_reading_indicators">Паказваць індыкатары прагрэсу чытання</string> <string name="show_reading_indicators">Паказваць індыкатары прагрэсу чытання</string>
<string name="status_planned">Запланавана</string> <string name="status_planned">Запланавана</string>
<string name="status_reading">Чытаю</string> <string name="status_reading">Чытаю</string>
<string name="logout">Выйсці</string> <string name="logout">Выйсці</string>
<string name="show_reading_indicators_summary">Паказваць працэнт прачытанага ў гісторыі і абраных</string> <string name="show_reading_indicators_summary">Паказваць працэнт прачытанага ў гісторыі і абраных</string>
<string name="data_deletion">Выдаленне даных</string> <string name="data_deletion">Выдаленне даных</string>
<string name="show_all">Паказаць усе</string> <string name="show_all">Паказаць усе</string>
<string name="exclude_nsfw_from_history_summary">Манга, пазначаная як NSFW, ніколі не будзе дададзеная ў гісторыю і ваш прагрэс не будзе захаваны</string> <string name="exclude_nsfw_from_history_summary">Манга, пазначаная як NSFW, ніколі не будзе дададзеная ў гісторыю і ваш прагрэс не будзе захаваны</string>
<string name="clear_cookies_summary">Можа дапамагчы з некаторымі праблемам. Усе аўтарызацыі будуць ануляваныя</string> <string name="clear_cookies_summary">Можа дапамагчы з некаторымі праблемам. Усе аўтарызацыі будуць ануляваныя</string>
<string name="not_found_404">Змесціва не знойдзена ці выдалена</string> <string name="not_found_404">Змесціва не знойдзена ці выдалена</string>
<string name="status_re_reading">Перачытваю</string> <string name="status_re_reading">Перачытваю</string>
<string name="select_range">Выберыце дыяпазон</string> <string name="select_range">Выберыце дыяпазон</string>
<string name="nothing_here">Тут нічога няма</string> <string name="nothing_here">Тут нічога няма</string>
<string name="services">Службы</string> <string name="services">Службы</string>
<string name="theme_name_kanade">Канадзе</string> <string name="theme_name_kanade">Канадзе</string>
<string name="clear_all_history">Ачысціць усю гісторыю</string> <string name="clear_all_history">Ачысціць усю гісторыю</string>
<string name="history_cleared">Гісторыя ачышчана</string> <string name="history_cleared">Гісторыя ачышчана</string>
<string name="incognito_mode">Рэжым інкогніта</string> <string name="incognito_mode">Рэжым інкогніта</string>
<string name="categories_delete_confirm">Вы ўпэўнены, што хочаце выдаліць выбраныя абраныя катэгорыі\? <string name="categories_delete_confirm">Вы ўпэўнены, што хочаце выдаліць выбраныя абраныя катэгорыі\?
\nУся манга ў ім будзе страчана, і гэта нельга будзе адрабіць.</string> \nУся манга ў ім будзе страчана, і гэта нельга будзе адрабіць.</string>
<string name="no_bookmarks_summary">Вы можаце стварыць закладку падчас чытання мангі</string> <string name="no_bookmarks_summary">Вы можаце стварыць закладку падчас чытання мангі</string>
<string name="saved_manga">Захаваная манга</string> <string name="saved_manga">Захаваная манга</string>
<string name="theme_name_mamimi">Мамімі</string> <string name="theme_name_mamimi">Мамімі</string>
<string name="scrobbling_empty_hint">Каб адсочваць ход чытання, выберыце Меню → Адсочваць на экране падрабязнасцей мангі.</string> <string name="scrobbling_empty_hint">Каб адсочваць ход чытання, выберыце Меню → Адсочваць на экране падрабязнасцей мангі.</string>
<string name="server_error">Памылка сервера (%1$d). Калі ласка паспрабуйце зноў пазней</string> <string name="server_error">Памылка сервера (%1$d). Калі ласка паспрабуйце зноў пазней</string>
<string name="clear_new_chapters_counters">Таксама ачысціць інфармацыю аб новых раздзелах</string> <string name="clear_new_chapters_counters">Таксама ачысціць інфармацыю аб новых раздзелах</string>
<string name="compact">Кампактны</string> <string name="compact">Кампактны</string>
<string name="prefetch_content">Папярэдняя загрузка кантэнту</string> <string name="prefetch_content">Папярэдняя загрузка кантэнту</string>
<string name="mark_as_current">Пазначыць як бягучы</string> <string name="mark_as_current">Пазначыць як бягучы</string>
<string name="error_no_space_left">На прыладзе не засталося месца</string> <string name="error_no_space_left">На прыладзе не засталося месца</string>
<string name="different_languages">Розныя мовы</string> <string name="different_languages">Розныя мовы</string>
<string name="network_unavailable">Сетка недаступная</string> <string name="network_unavailable">Сетка недаступная</string>
<string name="network_unavailable_hint">Каб чытаць мангу онлайн, уключыце Wi-Fi або мабільную сетку</string> <string name="network_unavailable_hint">Каб чытаць мангу онлайн, уключыце Wi-Fi або мабільную сетку</string>
<string name="webtoon_zoom">Webtoon зум</string> <string name="webtoon_zoom">Webtoon зум</string>
<string name="theme_name_dynamic">Дынамічны</string> <string name="theme_name_dynamic">Дынамічны</string>
<string name="color_theme">Каляровая гама</string> <string name="color_theme">Каляровая гама</string>
<string name="language">Мова</string> <string name="language">Мова</string>
<string name="account_already_exists">Уліковы запіс ужо існуе</string> <string name="account_already_exists">Уліковы запіс ужо існуе</string>
<string name="back">Назад</string> <string name="back">Назад</string>
<string name="sync">Сінхранізацыя</string> <string name="sync">Сінхранізацыя</string>
<string name="sync_title">Сінхранізацыя вашых дадзеных</string> <string name="sync_title">Сінхранізацыя вашых дадзеных</string>
<string name="email_enter_hint">Каб працягнуць, увядзіце свой адрас электроннай пошты</string> <string name="email_enter_hint">Каб працягнуць, увядзіце свой адрас электроннай пошты</string>
<string name="import_completed_hint">Вы можаце выдаліць зыходны файл са сховішча, каб зэканоміць месца</string> <string name="import_completed_hint">Вы можаце выдаліць зыходны файл са сховішча, каб зэканоміць месца</string>
<string name="import_will_start_soon">Хутка пачнецца імпарт</string> <string name="import_will_start_soon">Хутка пачнецца імпарт</string>
<string name="manga_error_description_pattern">Дэталі памылкі:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Паспрабуйце &lt;a href=%2$s&gt;адкрыць мангу ў вэб-браўзеры&lt;/a&gt;, каб пераканацца, што яна даступная ў крыніцы&lt;br&gt;2. Упэўніцеся, што вы выкарыстоўваеце &lt;a href=kotatsu://about&gt;апошнюю версію Kotatsu&lt;/a&gt;&lt;br&gt;3. Калі ён даступны, адпраўце распрацоўнікам справаздачу аб памылцы.</string> <string name="manga_error_description_pattern">Дэталі памылкі:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Паспрабуйце &lt;a href=%2$s&gt;адкрыць мангу ў вэб-браўзеры&lt;/a&gt;, каб пераканацца, што яна даступная ў крыніцы&lt;br&gt;2. Упэўніцеся, што вы выкарыстоўваеце &lt;a href=kotatsu://about&gt;апошнюю версію Kotatsu&lt;/a&gt;&lt;br&gt;3. Калі ён даступны, адпраўце распрацоўнікам справаздачу аб памылцы.</string>
<string name="history_shortcuts">Паказаць апошнія ярлыкі мангі</string> <string name="history_shortcuts">Паказаць апошнія ярлыкі мангі</string>
<string name="history_shortcuts_summary">Зрабіце нядаўнюю мангу даступнай, доўга націскаючы на значок праграмы</string> <string name="history_shortcuts_summary">Зрабіце нядаўнюю мангу даступнай, доўга націскаючы на значок праграмы</string>
<string name="reader_control_ltr_summary">Дакрананне да правага краю або націсканне правай клавішы заўсёды пераключае на наступную старонку</string> <string name="reader_control_ltr_summary">Дакрананне да правага краю або націсканне правай клавішы заўсёды пераключае на наступную старонку</string>
<string name="reader_control_ltr">Эрганамічны упраўленне чытаннем</string> <string name="reader_control_ltr">Эрганамічны упраўленне чытаннем</string>
<string name="color_correction">Карэкцыя колеру</string> <string name="color_correction">Карэкцыя колеру</string>
<string name="brightness">Яркасць</string> <string name="brightness">Яркасць</string>
<string name="contrast">Кантраст</string> <string name="contrast">Кантраст</string>
<string name="reset">Скінуць</string> <string name="reset">Скінуць</string>
<string name="color_correction_hint">Выбраныя налады колеру будуць запомнены для гэтай мангі</string> <string name="color_correction_hint">Выбраныя налады колеру будуць запомнены для гэтай мангі</string>
<string name="text_unsaved_changes_prompt">Захаваць ці адхіліць незахаваныя змены\?</string> <string name="text_unsaved_changes_prompt">Захаваць ці адхіліць незахаваныя змены\?</string>
<string name="discard">Адмяніць</string> <string name="discard">Адмяніць</string>
<string name="enable_logging">Уключыць запіс</string> <string name="enable_logging">Уключыць запіс</string>
<string name="share_logs">Падзяліцца логамі</string> <string name="share_logs">Падзяліцца логамі</string>
<string name="enable_logging_summary">Запішыце некаторыя дзеянні для адладкі</string> <string name="enable_logging_summary">Запішыце некаторыя дзеянні для адладкі</string>
<string name="show_suspicious_content">Паказаць падазроны кантэнт</string> <string name="show_suspicious_content">Паказаць падазроны кантэнт</string>
<string name="text_shelf_holder_primary">Ваша манга будзе адлюстроўвацца тут</string> <string name="text_shelf_holder_primary">Ваша манга будзе адлюстроўвацца тут</string>
<string name="text_shelf_holder_secondary">Знайдзіце, што пачытаць, у раздзеле «Даследаваць»</string> <string name="text_shelf_holder_secondary">Знайдзіце, што пачытаць, у раздзеле «Даследаваць»</string>
<string name="canceled">Адменена</string> <string name="canceled">Адменена</string>
<string name="manage">Кіраваць</string> <string name="manage">Кіраваць</string>
<string name="available">Даступны</string> <string name="available">Даступны</string>
<string name="feed">Стужка</string> <string name="feed">Стужка</string>
<string name="reader_slider">Паказаць паўзунок пераключэння старонак</string> <string name="reader_slider">Паказаць паўзунок пераключэння старонак</string>
<string name="source_disabled">Крыніца адключана</string> <string name="source_disabled">Крыніца адключана</string>
<string name="show_in_grid_view">Паказаць у выглядзе сеткі</string> <string name="show_in_grid_view">Паказаць у выглядзе сеткі</string>
<string name="theme_name_miku">Міку</string> <string name="theme_name_miku">Міку</string>
<string name="theme_name_asuka">Аска</string> <string name="theme_name_asuka">Аска</string>
<string name="theme_name_mion">Міён</string> <string name="theme_name_mion">Міён</string>
<string name="theme_name_rikka">Рыка</string> <string name="theme_name_rikka">Рыка</string>
<string name="theme_name_sakura">Сакура</string> <string name="theme_name_sakura">Сакура</string>
<string name="no_chapters">Няма раздзелаў</string> <string name="no_chapters">Няма раздзелаў</string>
<string name="automatic_scroll">Аўтаматычная пракрутка</string> <string name="automatic_scroll">Аўтаматычная пракрутка</string>
<string name="reader_info_pattern">Разд. %1$d/%2$d Стар. %3$d/%4$d</string> <string name="reader_info_pattern">Разд. %1$d/%2$d Стар. %3$d/%4$d</string>
<string name="reader_info_bar">Паказаць інфармацыйную панэль у праграме чытання</string> <string name="reader_info_bar">Паказаць інфармацыйную панэль у праграме чытання</string>
<string name="comics_archive">Архіў коміксаў</string> <string name="comics_archive">Архіў коміксаў</string>
<string name="folder_with_images">Тэчка з малюнкамі</string> <string name="folder_with_images">Тэчка з малюнкамі</string>
<string name="importing_manga">Імпарт мангі</string> <string name="importing_manga">Імпарт мангі</string>
<string name="import_completed">Імпарт завершаны</string> <string name="import_completed">Імпарт завершаны</string>
<string name="last_2_hours">Апошнія 2 гадзіны</string> <string name="last_2_hours">Апошнія 2 гадзіны</string>
<string name="no_bookmarks_yet">Закладак пакуль няма</string> <string name="no_bookmarks_yet">Закладак пакуль няма</string>
<string name="bookmarks_removed">Закладкі выдалены</string> <string name="bookmarks_removed">Закладкі выдалены</string>
<string name="no_manga_sources">Няма крыніц мангі</string> <string name="no_manga_sources">Няма крыніц мангі</string>
<string name="no_manga_sources_text">Каб чытаць мангу онлайн, уключыце крыніцы мангі</string> <string name="no_manga_sources_text">Каб чытаць мангу онлайн, уключыце крыніцы мангі</string>
<string name="random">Выпадковы</string> <string name="random">Выпадковы</string>
<string name="reorder">Змяніць парадак</string> <string name="reorder">Змяніць парадак</string>
<string name="empty">Пуста</string> <string name="empty">Пуста</string>
<string name="explore">Дасьледуйце</string> <string name="explore">Дасьледуйце</string>
<string name="confirm_exit">Націсніце \"Назад\" яшчэ раз, каб выйсці</string> <string name="confirm_exit">Націсніце \"Назад\" яшчэ раз, каб выйсці</string>
<string name="exit_confirmation_summary">Двойчы націсніце \"Назад\", каб выйсці з праграмы</string> <string name="exit_confirmation_summary">Двойчы націсніце \"Назад\", каб выйсці з праграмы</string>
<string name="exit_confirmation">Пацверджанне выхаду</string> <string name="exit_confirmation">Пацверджанне выхаду</string>
<string name="pages_cache">Кэш старонак</string> <string name="pages_cache">Кэш старонак</string>
<string name="other_cache">Іншы кэш</string> <string name="other_cache">Іншы кэш</string>
<string name="storage_usage">Выкарыстанне памяці</string> <string name="storage_usage">Выкарыстанне памяці</string>
<string name="memory_usage_pattern">%s - %s</string> <string name="memory_usage_pattern">%s - %s</string>
<string name="removed_from_favourites">Выдалена з абраных</string> <string name="removed_from_favourites">Выдалена з абраных</string>
<string name="options">Параметры</string> <string name="options">Параметры</string>
<string name="user_agent">Загаловак UserAgent</string> <string name="user_agent">Загаловак UserAgent</string>
<string name="allow_unstable_updates">Дазволіць нестабільныя абнаўленні</string> <string name="allow_unstable_updates">Дазволіць нестабільныя абнаўленні</string>
<string name="allow_unstable_updates_summary">Прапануйце абнаўленні да бэта-версій праграмы</string> <string name="allow_unstable_updates_summary">Прапануйце абнаўленні да бэта-версій праграмы</string>
<string name="download_started">Спампоўка пачалася</string> <string name="download_started">Спампоўка пачалася</string>
<string name="settings_apply_restart_required">Калі ласка, перазапусціце праграму каб прымяніць змены</string> <string name="settings_apply_restart_required">Калі ласка, перазапусціце праграму каб прымяніць змены</string>
<string name="got_it">Зразумеў</string> <string name="got_it">Зразумеў</string>
<string name="sources_reorder_tip">Націсніце і ўтрымлівайце элемент, каб змяніць іх парадак</string> <string name="sources_reorder_tip">Націсніце і ўтрымлівайце элемент, каб змяніць іх парадак</string>
<string name="comics_archive_import_description">Вы можаце выбраць адзін або некалькі файлаў .cbz або .zip, кожны файл будзе распазнаны як асобная манга.</string> <string name="comics_archive_import_description">Вы можаце выбраць адзін або некалькі файлаў .cbz або .zip, кожны файл будзе распазнаны як асобная манга.</string>
<string name="folder_with_images_import_description">Вы можаце выбраць каталог з архівамі або выявамі. Кожны архіў (ці падкаталог) будзе прызнаны раздзелам.</string> <string name="folder_with_images_import_description">Вы можаце выбраць каталог з архівамі або выявамі. Кожны архіў (ці падкаталог) будзе прызнаны раздзелам.</string>
<string name="speed">Хуткасць</string> <string name="speed">Хуткасць</string>
<string name="restore_backup_description">Імпарт раней створанай рэзервовай копіі дадзеных карыстальніка</string> <string name="restore_backup_description">Імпарт раней створанай рэзервовай копіі дадзеных карыстальніка</string>
<string name="show_on_shelf">Паказаць на паліцы</string> <string name="show_on_shelf">Паказаць на паліцы</string>
<string name="find_similar">Знайсці падобныя</string> <string name="find_similar">Знайсці падобныя</string>
<string name="sync_auth_hint">Вы можаце ўвайсці ў існуючы ўліковы запіс або стварыць новы</string> <string name="sync_auth_hint">Вы можаце ўвайсці ў існуючы ўліковы запіс або стварыць новы</string>
<string name="sync_settings">Налады сінхранізацыі</string> <string name="sync_settings">Налады сінхранізацыі</string>
<string name="server_address">Адрас сервера</string> <string name="server_address">Адрас сервера</string>
<string name="mirror_switching">Выберыце люстэрка аўтаматычна</string> <string name="mirror_switching">Выберыце люстэрка аўтаматычна</string>
<string name="mirror_switching_summary">Аўтаматычна пераключаць дамены для аддаленых крыніц у выпадку памылак, калі даступныя люстэркі</string> <string name="mirror_switching_summary">Аўтаматычна пераключаць дамены для аддаленых крыніц у выпадку памылак, калі даступныя люстэркі</string>
<string name="ignore_ssl_errors">Ігнараваць памылкі SSL</string> <string name="ignore_ssl_errors">Ігнараваць памылкі SSL</string>
<string name="resume">Аднавіць</string> <string name="resume">Аднавіць</string>
<string name="paused">Прыпынена</string> <string name="paused">Прыпынена</string>
<string name="cancel_all">Адмяніць усё</string> <string name="cancel_all">Адмяніць усё</string>
<string name="downloads_wifi_only">Спампаваць толькі праз Wi-Fi</string> <string name="downloads_wifi_only">Спампаваць толькі праз Wi-Fi</string>
<string name="sync_host_description">Вы можаце выкарыстоўваць уласны сервер сінхранізацыі або сервер па змаўчанні. Не змяняйце гэта, калі вы не ўпэўненыя, што робіце.</string> <string name="sync_host_description">Вы можаце выкарыстоўваць уласны сервер сінхранізацыі або сервер па змаўчанні. Не змяняйце гэта, калі вы не ўпэўненыя, што робіце.</string>
<string name="pause">Паўза</string> <string name="pause">Паўза</string>
<string name="remove_completed">Выдаленне завершана</string> <string name="remove_completed">Выдаліць завершаныя</string>
<string name="downloads_wifi_only_summary">Спыніць загрузку пры пераключэнні на мабільную сетку</string> <string name="downloads_wifi_only_summary">Спыніць загрузку пры пераключэнні на мабільную сетку</string>
</resources> <string name="suggestions_notifications_summary">Часам паказваць апавяшчэнні з прапанаванай мангай</string>
<string name="more">Больш</string>
<string name="enable">Уключыць</string>
<string name="cancel_all_downloads_confirm">Усе актыўныя спампоўкі будуць адменены, часткова спампаваныя даныя будуць страчаны</string>
<string name="suggestions_enable_prompt">Хочаце атрымліваць персаналізаваныя прапановы мангі\?</string>
<string name="suggestion_manga">Прапанова: %s</string>
<string name="no_thanks">Не, дзякуй</string>
<string name="remove_completed_downloads_confirm">Ваша гісторыя спамповак будзе выдалена назаўсёды</string>
<string name="text_downloads_list_holder">У вас няма загрузак</string>
<string name="downloads_resumed">Спампоўкі аднавіліся</string>
<string name="downloads_paused">Спампоўкі прыпыненыя</string>
<string name="downloads_removed">Спампоўкі выдалены</string>
<string name="downloads_cancelled">Спампоўкі былі адменены</string>
<string name="translations">Пераклады</string>
<string name="web_view_unavailable">WebView недаступны: праверце, ці ўсталяваны пастаўшчык WebView</string>
</resources>

View File

@@ -1,31 +1,31 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<plurals name="pages"> <plurals name="pages">
<item quantity="one">Insgesamt %1$d Seite</item> <item quantity="one">Insgesamt %1$d Seite</item>
<item quantity="other">Insgesamt %1$d Seiten</item> <item quantity="other">Insgesamt %1$d Seiten</item>
</plurals> </plurals>
<plurals name="items"> <plurals name="items">
<item quantity="one">%1$d Element</item> <item quantity="one">%1$d Element</item>
<item quantity="other">%1$d Elemente</item> <item quantity="other">%1$d Elemente</item>
</plurals> </plurals>
<plurals name="new_chapters"> <plurals name="new_chapters">
<item quantity="one">%1$d neues Kapitel</item> <item quantity="one">%1$d neues Kapitel</item>
<item quantity="other">%1$d neue Kapitel</item> <item quantity="other">%1$d neue Kapitel</item>
</plurals> </plurals>
<plurals name="chapters"> <plurals name="chapters">
<item quantity="one">%1$d Kapitel</item> <item quantity="one">%1$d Kapitel</item>
<item quantity="other">%1$d Kapitel</item> <item quantity="other">%1$d Kapitel</item>
</plurals> </plurals>
<plurals name="minutes_ago"> <plurals name="minutes_ago">
<item quantity="one">Vor %1$d Minute</item> <item quantity="one">Vor %1$d Minute</item>
<item quantity="other">Vor %1$d Minuten</item> <item quantity="other">Vor %1$d Minuten</item>
</plurals> </plurals>
<plurals name="hours_ago"> <plurals name="hours_ago">
<item quantity="one">Vor %1$d Stunde</item> <item quantity="one">Vor %1$d Stunde</item>
<item quantity="other">Vor %1$d Stunden</item> <item quantity="other">Vor %1$d Stunden</item>
</plurals> </plurals>
<plurals name="days_ago"> <plurals name="days_ago">
<item quantity="one">Vor %1$d Tag</item> <item quantity="one">Vor %1$d Tag</item>
<item quantity="other">Vor %1$d Tage</item> <item quantity="other">Vor %1$d Tagen</item>
</plurals> </plurals>
</resources> </resources>

View File

@@ -1,402 +1,415 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="remove">Entfernen</string> <string name="remove">Entfernen</string>
<string name="text_clear_history_prompt">Gesamten Leseverlauf unwiderruflich löschen\?</string> <string name="text_clear_history_prompt">Gesamten Leseverlauf unwiderruflich löschen\?</string>
<string name="theme">Design</string> <string name="theme">Design</string>
<string name="pages">Seiten</string> <string name="pages">Seiten</string>
<string name="automatic">Wie System</string> <string name="automatic">Wie System</string>
<string name="dark">Dunkel</string> <string name="dark">Dunkel</string>
<string name="light">Hell</string> <string name="light">Hell</string>
<string name="filter">Filter</string> <string name="filter">Filter</string>
<string name="sort_order">Sortierreihenfolge</string> <string name="sort_order">Sortierreihenfolge</string>
<string name="by_rating">Bewertung</string> <string name="by_rating">Bewertung</string>
<string name="newest">Neuestes</string> <string name="newest">Neuestes</string>
<string name="popular">Beliebt</string> <string name="popular">Beliebt</string>
<string name="by_name">Name</string> <string name="by_name">Name</string>
<string name="downloads">Downloads</string> <string name="downloads">Downloads</string>
<string name="download_complete">Heruntergeladen</string> <string name="download_complete">Heruntergeladen</string>
<string name="search_manga">Manga suchen</string> <string name="search_manga">Manga suchen</string>
<string name="search">Suchen</string> <string name="search">Suchen</string>
<string name="share_s">Teilen %s</string> <string name="share_s">Teilen %s</string>
<string name="share">Teilen</string> <string name="share">Teilen</string>
<string name="save">Speichern</string> <string name="save">Speichern</string>
<string name="add">Hinzufügen</string> <string name="add">Hinzufügen</string>
<string name="add_new_category">Neue Kategorie</string> <string name="add_new_category">Neue Kategorie</string>
<string name="add_to_favourites">Zu Favoriten hinzufügen</string> <string name="add_to_favourites">Zu Favoriten hinzufügen</string>
<string name="you_have_not_favourites_yet">Noch keine Favoriten</string> <string name="you_have_not_favourites_yet">Noch keine Favoriten</string>
<string name="read">Lesen</string> <string name="read">Lesen</string>
<string name="history_is_empty">Noch kein Verlauf</string> <string name="history_is_empty">Noch kein Verlauf</string>
<string name="nothing_found">Nichts gefunden</string> <string name="nothing_found">Nichts gefunden</string>
<string name="clear_history">Verlauf löschen</string> <string name="clear_history">Verlauf löschen</string>
<string name="try_again">Erneut versuchen</string> <string name="try_again">Erneut versuchen</string>
<string name="close">Schließen</string> <string name="close">Schließen</string>
<string name="chapter_d_of_d">Kapitel %1$d von %2$d</string> <string name="chapter_d_of_d">Kapitel %1$d von %2$d</string>
<string name="remote_sources">Manga Quellen</string> <string name="remote_sources">Manga Quellen</string>
<string name="settings">Einstellungen</string> <string name="settings">Einstellungen</string>
<string name="list_mode">Listenmodus</string> <string name="list_mode">Listenmodus</string>
<string name="grid">Raster</string> <string name="grid">Raster</string>
<string name="text_clear_updates_feed_prompt">Den gesamte Aktualisierungsverlauf unwiderruflich löschen\?</string> <string name="text_clear_updates_feed_prompt">Den gesamte Aktualisierungsverlauf unwiderruflich löschen\?</string>
<string name="no_update_available">Keine Aktualisierungen verfügbar</string> <string name="no_update_available">Keine Aktualisierungen verfügbar</string>
<string name="check_for_updates">Nach Aktualisierungen suchen</string> <string name="check_for_updates">Nach Aktualisierungen suchen</string>
<string name="track_sources">Suche nach Aktualisierungen</string> <string name="track_sources">Suche nach Aktualisierungen</string>
<string name="feed_will_update_soon">Die Feed-Aktualisierung beginnt gleich</string> <string name="feed_will_update_soon">Die Feed-Aktualisierung beginnt gleich</string>
<string name="update">Aktualisieren</string> <string name="update">Aktualisieren</string>
<string name="updates_feed_cleared">Gelöscht</string> <string name="updates_feed_cleared">Gelöscht</string>
<string name="clear_updates_feed">Aktualisierungsfeed löschen</string> <string name="clear_updates_feed">Aktualisierungsfeed löschen</string>
<string name="updates">Aktualisierungen</string> <string name="updates">Aktualisierungen</string>
<string name="app_update_available">Eine neue Version der App ist verfügbar</string> <string name="app_update_available">Eine neue Version der App ist verfügbar</string>
<string name="updated">Aktualisiert</string> <string name="updated">Aktualisiert</string>
<string name="preparing_">Vorbereitung…</string> <string name="preparing_">Vorbereitung…</string>
<string name="text_empty_holder_primary">Hier ist es etwas leer…</string> <string name="text_empty_holder_primary">Hier ist es etwas leer…</string>
<string name="processing_">Verarbeiten…</string> <string name="processing_">Verarbeiten…</string>
<string name="manga_downloading_">Herunterladen…</string> <string name="manga_downloading_">Herunterladen…</string>
<string name="create_shortcut">Verknüpfung erstellen…</string> <string name="create_shortcut">Verknüpfung erstellen…</string>
<string name="loading_">Laden…</string> <string name="loading_">Laden…</string>
<string name="text_delete_local_manga">„%s“ unwiderruflich vom Gerät löschen\?</string> <string name="text_delete_local_manga">„%s“ unwiderruflich vom Gerät löschen\?</string>
<string name="_s_deleted_from_local_storage">„%s“ aus lokalem Speicher gelöscht</string> <string name="_s_deleted_from_local_storage">„%s“ aus lokalem Speicher gelöscht</string>
<string name="detailed_list">Detaillierte Liste</string> <string name="detailed_list">Detaillierte Liste</string>
<string name="list">Liste</string> <string name="list">Liste</string>
<string name="chapters">Kapitel</string> <string name="chapters">Kapitel</string>
<string name="details">Details</string> <string name="details">Details</string>
<string name="network_error">Netzwerkfehler</string> <string name="network_error">Netzwerkfehler</string>
<string name="error_occurred">Ein Fehler ist aufgetreten</string> <string name="error_occurred">Ein Fehler ist aufgetreten</string>
<string name="history">Verlauf</string> <string name="history">Verlauf</string>
<string name="favourites">Favoriten</string> <string name="favourites">Favoriten</string>
<string name="local_storage">Lokaler Speicher</string> <string name="local_storage">Lokaler Speicher</string>
<string name="manga_save_location">Ordner für Downloads</string> <string name="manga_save_location">Ordner für Downloads</string>
<string name="text_history_holder_primary">Die Manga, die du gerade liest, werden hier angezeigt</string> <string name="text_history_holder_primary">Die Manga, die du gerade liest, werden hier angezeigt</string>
<string name="zoom_mode_keep_start">Am Anfang ausrichten</string> <string name="zoom_mode_keep_start">Am Anfang ausrichten</string>
<string name="zoom_mode_fit_width">An Breite anpassen</string> <string name="zoom_mode_fit_width">An Breite anpassen</string>
<string name="zoom_mode_fit_height">An Höhe anpassen</string> <string name="zoom_mode_fit_height">An Höhe anpassen</string>
<string name="black_dark_theme_summary">Spart Energie bei AMOLED-Bildschirme</string> <string name="black_dark_theme_summary">Spart Energie auf AMOLED-Bildschirmen</string>
<string name="black_dark_theme">Reines Schwarz</string> <string name="black_dark_theme">Reines Schwarz</string>
<string name="right_to_left">Von rechts nach links</string> <string name="right_to_left">Von rechts nach links</string>
<string name="create_category">Neue Kategorie</string> <string name="create_category">Neue Kategorie</string>
<string name="backup_restore">Backup und Wiederherstellung</string> <string name="backup_restore">Backup und Wiederherstellung</string>
<string name="data_restored">Daten wiederhergestellt</string> <string name="data_restored">Daten wiederhergestellt</string>
<string name="restore_backup">Backup wiederherstellen</string> <string name="restore_backup">Backup wiederherstellen</string>
<string name="create_backup">Backup erstellen</string> <string name="create_backup">Backup erstellen</string>
<string name="file_not_found">Datei nicht gefunden</string> <string name="file_not_found">Datei nicht gefunden</string>
<string name="just_now">Gerade jetzt</string> <string name="just_now">Gerade jetzt</string>
<string name="group">Gruppe</string> <string name="group">Gruppe</string>
<string name="cookies_cleared">Alle Cookies wurden entfernt</string> <string name="cookies_cleared">Alle Cookies wurden entfernt</string>
<string name="clear_cookies">Cookies löschen</string> <string name="clear_cookies">Cookies löschen</string>
<string name="default_s">Standard: %s</string> <string name="default_s">Standard: %s</string>
<string name="auth_required">Melde dich an, um diesen Inhalt anzusehen</string> <string name="auth_required">Melde dich an, um diesen Inhalt anzusehen</string>
<string name="reverse">Umkehren</string> <string name="reverse">Umkehren</string>
<string name="check_for_new_chapters">Nach neuen Kapiteln suchen</string> <string name="check_for_new_chapters">Nach neuen Kapiteln suchen</string>
<string name="clear_feed">Feed löschen</string> <string name="clear_feed">Feed löschen</string>
<string name="sign_in">Anmelden</string> <string name="sign_in">Anmelden</string>
<string name="password_length_hint">Das Passwort muss mindestens 4 Zeichen lang sein</string> <string name="password_length_hint">Das Passwort muss mindestens 4 Zeichen lang sein</string>
<string name="confirm">Bestätigen</string> <string name="confirm">Bestätigen</string>
<string name="protect_application_subtitle">Gib ein Passwort ein, mit dem die App gestartet werden soll</string> <string name="protect_application_subtitle">Gib ein Passwort ein, mit dem die App gestartet werden soll</string>
<string name="next">Weiter</string> <string name="next">Weiter</string>
<string name="text_clear_search_history_prompt">Möchtest du wirklich alle letzten Suchanfragen entfernen\?</string> <string name="text_clear_search_history_prompt">Möchtest du alle letzten Suchanfragen unwiderruflich entfernen\?</string>
<string name="read_more">Mehr erfahren</string> <string name="read_more">Mehr erfahren</string>
<string name="tracker_warning">Einige Geräte haben ein anderes Systemverhalten, welches womöglich Hintergrundprozesse unterbricht.</string> <string name="tracker_warning">Einige Geräte haben ein anderes Systemverhalten, welches womöglich Hintergrundprozesse unterbricht.</string>
<string name="backup_saved">Sicherung erfolgreich gespeichert</string> <string name="backup_saved">Backup gespeichert</string>
<string name="welcome">Willkommen</string> <string name="welcome">Willkommen</string>
<string name="remove_category">Entfernen</string> <string name="remove_category">Entfernen</string>
<string name="rotate_screen">Bildschirm drehen</string> <string name="rotate_screen">Bildschirm drehen</string>
<string name="size_s">Größe: %s</string> <string name="size_s">Größe: %s</string>
<string name="new_version_s">Neue Version: %s</string> <string name="new_version_s">Neue Version: %s</string>
<string name="search_results">Suchergebnisse</string> <string name="search_results">Suchergebnisse</string>
<string name="text_feed_holder">Hier siehst du die neuen Kapitel des Mangas, den du gerade liest</string> <string name="text_feed_holder">Hier siehst du neue Kapitel der Mangas, die du liest</string>
<string name="read_later">Später lesen</string> <string name="read_later">Später lesen</string>
<string name="favourites_category_empty">Diese Kategorie ist leer</string> <string name="favourites_category_empty">Diese Kategorie ist leer</string>
<string name="all_favourites">Alle Favoriten</string> <string name="all_favourites">Alle Favoriten</string>
<string name="done">Fertig</string> <string name="done">Fertig</string>
<string name="other_storage">Sonstiger Speicherort</string> <string name="other_storage">Sonstiger Speicherort</string>
<string name="cannot_find_available_storage">Kein verfügbarer Speicher gefunden</string> <string name="cannot_find_available_storage">Kein verfügbarer Speicher gefunden</string>
<string name="not_available">Nicht verfügbar</string> <string name="not_available">Nicht verfügbar</string>
<string name="pages_animation">Seitenanimation</string> <string name="pages_animation">Seitenanimation</string>
<string name="recent_manga">Neueste Manga</string> <string name="recent_manga">Neueste Manga</string>
<string name="manga_shelf">Regal</string> <string name="manga_shelf">Regal</string>
<string name="text_local_holder_secondary">Speicher Manga aus Online-Quellen oder importiere Dateien.</string> <string name="text_local_holder_secondary">Speicher Manga aus Online-Quellen oder importiere Dateien.</string>
<string name="text_local_holder_primary">Speichere erst etwas</string> <string name="text_local_holder_primary">Speichere erst etwas</string>
<string name="text_history_holder_secondary">Was du lesen kannst, findest du im Seitenmenü.</string> <string name="text_history_holder_secondary">Was du lesen kannst, findest du im Seitenmenü.</string>
<string name="text_search_holder_secondary">Versuche, die Abfrage umzuformulieren.</string> <string name="text_search_holder_secondary">Versuche, die Anfrage umzuformulieren.</string>
<string name="favourites_categories">Favoriten-Kategorien</string> <string name="favourites_categories">Favoriten-Kategorien</string>
<string name="vibration">Vibration</string> <string name="vibration">Vibration</string>
<string name="light_indicator">LED-Anzeige</string> <string name="light_indicator">LED-Anzeige</string>
<string name="notification_sound">Benachrichtigungston</string> <string name="notification_sound">Benachrichtigungston</string>
<string name="notifications_settings">Benachrichtigungseinstellungen</string> <string name="notifications_settings">Benachrichtigungseinstellungen</string>
<string name="download">Herunterladen</string> <string name="download">Herunterladen</string>
<string name="new_chapters">Neue Kapitel</string> <string name="new_chapters">Neue Kapitel</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d von %2$d aktiviert</string> <string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d von %2$d aktiviert</string>
<string name="notifications">Benachrichtigungen</string> <string name="notifications">Benachrichtigungen</string>
<string name="save_manga">Manga speichern</string> <string name="save_manga">Manga speichern</string>
<string name="large_manga_save_confirm">Dieser Manga hat %s. Alles davon speichern\?</string> <string name="large_manga_save_confirm">Dieser Manga hat %s. Alles davon speichern\?</string>
<string name="open_in_browser">Im Browser öffnen</string> <string name="open_in_browser">Im Browser öffnen</string>
<string name="external_storage">Externer Speicher</string> <string name="external_storage">Externer Speicher</string>
<string name="internal_storage">Interner Speicher</string> <string name="internal_storage">Interner Speicher</string>
<string name="search_history_cleared">Suchverlauf gelöscht</string> <string name="search_history_cleared">Gelöscht</string>
<string name="clear_search_history">Suchverlauf löschen</string> <string name="clear_search_history">Suchverlauf löschen</string>
<string name="clear_thumbs_cache">Miniaturansichten Cache löschen</string> <string name="clear_thumbs_cache">Miniaturansichten Cache löschen</string>
<string name="error">Fehler</string> <string name="error">Fehler</string>
<string name="_continue">Weiter</string> <string name="_continue">Weiter</string>
<string name="volume_buttons">Lautstärketasten</string> <string name="volume_buttons">Lautstärketasten</string>
<string name="switch_pages">Seiten wechseln</string> <string name="switch_pages">Seiten wechseln</string>
<string name="reader_settings">Leseeinstellungen</string> <string name="reader_settings">Leseeinstellungen</string>
<string name="delete_manga">Manga löschen</string> <string name="delete_manga">Manga löschen</string>
<string name="search_on_s">Suche auf %s</string> <string name="search_on_s">Suche auf %s</string>
<string name="grid_size">Rastergröße</string> <string name="grid_size">Rastergröße</string>
<string name="read_mode">Lesemodus</string> <string name="read_mode">Lesemodus</string>
<string name="webtoon">Webtoon</string> <string name="webtoon">Webtoon</string>
<string name="standard">Standard</string> <string name="standard">Standard</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string> <string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="clear_pages_cache">Seitencache löschen</string> <string name="clear_pages_cache">Seitencache löschen</string>
<string name="history_and_cache">Verlauf und Cache</string> <string name="history_and_cache">Verlauf und Cache</string>
<string name="no_description">Keine Beschreibung</string> <string name="no_description">Keine Beschreibung</string>
<string name="text_file_not_supported">Wähle entweder eine ZIP- oder CBZ-Datei.</string> <string name="text_file_not_supported">Wähle entweder eine ZIP- oder CBZ-Datei.</string>
<string name="operation_not_supported">Dieser Vorgang wird nicht unterstützt</string> <string name="operation_not_supported">Dieser Vorgang wird nicht unterstützt</string>
<string name="delete">Löschen</string> <string name="delete">Löschen</string>
<string name="_import">Importieren</string> <string name="_import">Importieren</string>
<string name="share_image">Bild teilen</string> <string name="share_image">Bild teilen</string>
<string name="page_saved">Gespeichert</string> <string name="page_saved">Gespeichert</string>
<string name="save_page">Seite speichern</string> <string name="save_page">Seite speichern</string>
<string name="clear">Löschen</string> <string name="clear">Löschen</string>
<string name="taps_on_edges">Rand antippen</string> <string name="taps_on_edges">Rand antippen</string>
<string name="captcha_solve">Lösen</string> <string name="captcha_solve">Lösen</string>
<string name="captcha_required">CAPTCHA ist erforderlich</string> <string name="captcha_required">CAPTCHA erforderlich</string>
<string name="silent">Stumm</string> <string name="silent">Stumm</string>
<string name="reader_mode_hint">Die gewählte Konfiguration wird für diesen Manga gespeichert</string> <string name="reader_mode_hint">Die gewählte Konfiguration wird für diesen Manga gespeichert</string>
<string name="tap_to_try_again">Tippe, um es erneut zu versuchen</string> <string name="tap_to_try_again">Tippe, um es erneut zu versuchen</string>
<string name="today">Heute</string> <string name="today">Heute</string>
<string name="long_ago">Vor langer Zeit</string> <string name="long_ago">Vor langer Zeit</string>
<string name="yesterday">Gestern</string> <string name="yesterday">Gestern</string>
<string name="backup_information">Du kannst eine Sicherung deines Verlaufs und deiner Favoriten erstellen und diese wiederherstellen</string> <string name="backup_information">Du kannst ein Backup deines Verlaufs und deiner Favoriten erstellen und wiederherstellen</string>
<string name="data_restored_with_errors">Die Daten wurden wiederhergestellt, aber es gibt Fehler</string> <string name="data_restored_with_errors">Die Daten wurden wiederhergestellt, aber es gibt Fehler</string>
<string name="data_restored_success">Alle Daten wiederhergestellt</string> <string name="data_restored_success">Alle Daten wiederhergestellt</string>
<string name="zoom_mode_fit_center">An Zentrum anpassen</string> <string name="zoom_mode_fit_center">An Zentrum anpassen</string>
<string name="scale_mode">Skalierungsmodus</string> <string name="scale_mode">Skalierungsmodus</string>
<string name="app_version">Version %s</string> <string name="app_version">Version %s</string>
<string name="about">Über</string> <string name="about">Über</string>
<string name="passwords_mismatch">Passwörter stimmen nicht überein</string> <string name="passwords_mismatch">Passwörter stimmen nicht überein</string>
<string name="repeat_password">Wiederhole das Passwort</string> <string name="repeat_password">Wiederhole das Passwort</string>
<string name="protect_application_summary">Beim Start von Kotatsu nach Passwort fragen</string> <string name="protect_application_summary">Beim Start von Kotatsu nach Passwort fragen</string>
<string name="protect_application">App schützen</string> <string name="protect_application">App schützen</string>
<string name="wrong_password">Falsches Passwort</string> <string name="wrong_password">Falsches Passwort</string>
<string name="enter_password">Passwort eingeben</string> <string name="enter_password">Passwort eingeben</string>
<string name="dont_check">Nicht prüfen</string> <string name="dont_check">Nicht prüfen</string>
<string name="domain">Domäne</string> <string name="domain">Domäne</string>
<string name="gestures_only">Nur Gesten</string> <string name="gestures_only">Nur Gesten</string>
<string name="chapter_is_missing">Kapitel fehlt</string> <string name="chapter_is_missing">Das Kapitel fehlt</string>
<string name="chapter_is_missing_text">Lade dieses fehlende Kapitel herunter oder lese es online.</string> <string name="chapter_is_missing_text">Lade dieses fehlende Kapitel herunter oder lese es online.</string>
<string name="queued">In Warteschlange</string> <string name="queued">In Warteschlange</string>
<string name="about_app_translation">Übersetzung</string> <string name="about_app_translation">Übersetzung</string>
<string name="about_app_translation_summary">Übersetze diese App</string> <string name="about_app_translation_summary">Übersetze die App</string>
<string name="text_clear_cookies_prompt">Du wirst von allen Quellen abgemeldet</string> <string name="text_clear_cookies_prompt">Du wirst von allen Quellen abgemeldet</string>
<string name="genres">Genres</string> <string name="genres">Genres</string>
<string name="auth_not_supported_by">Anmeldung bei %s wird nicht unterstützt</string> <string name="auth_not_supported_by">Anmeldung bei %s wird nicht unterstützt</string>
<string name="auth_complete">Autorisierung abgeschlossen</string> <string name="auth_complete">Autorisierung abgeschlossen</string>
<string name="state_finished">Beendet</string> <string name="state_finished">Beendet</string>
<string name="state_ongoing">Fortlaufend</string> <string name="state_ongoing">Fortlaufend</string>
<string name="system_default">Standard</string> <string name="system_default">Standard</string>
<string name="exclude_nsfw_from_history">NSFW-Manga vom Verlauf ausschließen</string> <string name="exclude_nsfw_from_history">NSFW-Manga vom Verlauf ausschließen</string>
<string name="show_pages_numbers">Nummerierte Seiten</string> <string name="show_pages_numbers">Nummerierte Seiten</string>
<string name="enabled_sources">Verwendete Quellen</string> <string name="enabled_sources">Verwendete Quellen</string>
<string name="available_sources">Verfügbare Quellen</string> <string name="available_sources">Verfügbare Quellen</string>
<string name="computing_">Berechnen…</string> <string name="computing_">Berechnen…</string>
<string name="screenshots_allow">Erlauben</string> <string name="screenshots_allow">Erlauben</string>
<string name="screenshots_policy">Bildschirmfoto-Verhalten</string> <string name="screenshots_policy">Bildschirmfoto-Verhalten</string>
<string name="screenshots_block_nsfw">Für NSFW blockieren</string> <string name="screenshots_block_nsfw">Für NSFW blockieren</string>
<string name="screenshots_block_all">Immer blockieren</string> <string name="screenshots_block_all">Immer blockieren</string>
<string name="suggestions">Vorschläge</string> <string name="suggestions">Vorschläge</string>
<string name="suggestions_enable">Vorschläge einschalten</string> <string name="suggestions_enable">Vorschläge einschalten</string>
<string name="suggestions_summary">Schlage Manga basierend auf deinen Vorlieben vor</string> <string name="suggestions_summary">Schlage Manga basierend auf deinen Vorlieben vor</string>
<string name="suggestions_info">Alle Daten werden ausschließlich lokal auf diesem Gerät ausgewertet und nie weiter versendet.</string> <string name="suggestions_info">Alle Daten werden ausschließlich lokal auf diesem Gerät ausgewertet und nie weiter versendet.</string>
<string name="exclude_nsfw_from_suggestions">Keine NSFW-Manga vorschlagen</string> <string name="exclude_nsfw_from_suggestions">Keine NSFW-Manga vorschlagen</string>
<string name="enabled">Aktiviert</string> <string name="enabled">Aktiviert</string>
<string name="text_suggestion_holder">Beginne Manga zu lesen und du erhältst personalisierte Vorschläge</string> <string name="text_suggestion_holder">Beginne Manga zu lesen und du erhältst personalisierte Vorschläge</string>
<string name="disabled">Deaktiviert</string> <string name="disabled">Deaktiviert</string>
<string name="filter_load_error">Liste der Genres kann nicht geladen werden</string> <string name="filter_load_error">Liste der Genres kann nicht geladen werden</string>
<string name="never">Nie</string> <string name="never">Nie</string>
<string name="always">Immer</string> <string name="always">Immer</string>
<string name="preload_pages">Seiten vorladen</string> <string name="preload_pages">Seiten vorladen</string>
<string name="reset_filter">Filter zurücksetzen</string> <string name="reset_filter">Filter zurücksetzen</string>
<string name="find_genre">Genre finden</string> <string name="find_genre">Genre finden</string>
<string name="only_using_wifi">Nur über WLAN</string> <string name="only_using_wifi">Nur über WLAN</string>
<string name="onboard_text">Wähle die Sprachen aus, in denen du Mangas lesen möchten. Du kannst das später in den Einstellungen anpassen.</string> <string name="onboard_text">Wähle die Sprachen aus, in denen du Mangas lesen möchten. Du kannst das später in den Einstellungen anpassen.</string>
<string name="logged_in_as">Angemeldet als %s</string> <string name="logged_in_as">Angemeldet als %s</string>
<string name="nsfw">18+</string> <string name="nsfw">18+</string>
<string name="various_languages">Verschiedene Sprachen</string> <string name="various_languages">Verschiedene Sprachen</string>
<string name="search_chapters">Kapitel suchen</string> <string name="search_chapters">Kapitel suchen</string>
<string name="chapters_empty">Keine Kapitel in diesem Manga</string> <string name="chapters_empty">Keine Kapitel in diesem Manga</string>
<string name="percent_string_pattern">%1$s%%</string> <string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Aussehen</string> <string name="appearance">Aussehen</string>
<string name="content">Inhalt</string> <string name="content">Inhalt</string>
<string name="suggestions_updating">Vorschläge werden aktualisiert</string> <string name="suggestions_updating">Vorschläge werden aktualisiert</string>
<string name="suggestions_excluded_genres">Genres ausschließen</string> <string name="suggestions_excluded_genres">Genres ausschließen</string>
<string name="suggestions_excluded_genres_summary">Gebe Genres an, die du nicht in den Vorschlägen sehen möchtest</string> <string name="suggestions_excluded_genres_summary">Gebe Genres an, die du nicht in den Vorschlägen sehen möchtest</string>
<string name="text_delete_local_manga_batch">Ausgewählte Elemente unwiderruflich vom Gerät löschen\?</string> <string name="text_delete_local_manga_batch">Ausgewählte Elemente unwiderruflich vom Gerät löschen\?</string>
<string name="removal_completed">Entfernung abgeschlossen</string> <string name="removal_completed">Entfernung abgeschlossen</string>
<string name="download_slowdown">Download-Verzögerung</string> <string name="download_slowdown">Download-Verzögerung</string>
<string name="local_manga_processing">Manga-Verarbeitung gespeichert</string> <string name="local_manga_processing">Manga-Verarbeitung gespeichert</string>
<string name="download_slowdown_summary">Hilft, das Blockieren deiner IP-Adresse zu vermeiden</string> <string name="download_slowdown_summary">Hilft, das Blockieren deiner IP-Adresse zu vermeiden</string>
<string name="chapters_will_removed_background">Kapitel werden im Hintergrund entfernt</string> <string name="chapters_will_removed_background">Kapitel werden im Hintergrund entfernt</string>
<string name="hide">Ausblenden</string> <string name="hide">Ausblenden</string>
<string name="new_sources_text">Neue Manga-Quellen sind verfügbar</string> <string name="new_sources_text">Neue Manga-Quellen sind verfügbar</string>
<string name="check_new_chapters_title">Nach neuen Kapiteln suchen und benachrichtigt werden</string> <string name="check_new_chapters_title">Nach neuen Kapiteln suchen und benachrichtigt werden</string>
<string name="show_notification_new_chapters_on">Erhalte Benachrichtigungen bei Aktualisierungen der Manga, die du liest</string> <string name="show_notification_new_chapters_on">Erhalte Benachrichtigungen bei Aktualisierungen der Manga, die du liest</string>
<string name="notifications_enable">Benachrichtigungen einschalten</string> <string name="notifications_enable">Benachrichtigungen einschalten</string>
<string name="empty_favourite_categories">Keine bevorzugten Kategorien</string> <string name="empty_favourite_categories">Keine bevorzugten Kategorien</string>
<string name="name">Name</string> <string name="name">Name</string>
<string name="edit">Bearbeiten</string> <string name="edit">Bearbeiten</string>
<string name="show_notification_new_chapters_off">Du wirst keine Benachrichtigungen erhalten, aber neue Kapitel werden in den Listen hervorgehoben</string> <string name="show_notification_new_chapters_off">Du wirst keine Benachrichtigungen erhalten, aber neue Kapitel werden in den Listen hervorgehoben</string>
<string name="edit_category">Kategorie bearbeiten</string> <string name="edit_category">Kategorie bearbeiten</string>
<string name="bookmark_add">Lesezeichen hinzufügen</string> <string name="bookmark_add">Lesezeichen hinzufügen</string>
<string name="bookmarks">Lesezeichen</string> <string name="bookmarks">Lesezeichen</string>
<string name="bookmark_removed">Lesezeichen entfernt</string> <string name="bookmark_removed">Lesezeichen entfernt</string>
<string name="removed_from_history">Aus dem Verlauf entfernt</string> <string name="removed_from_history">Aus dem Verlauf entfernt</string>
<string name="bookmark_remove">Lesezeichen entfernen</string> <string name="bookmark_remove">Lesezeichen entfernen</string>
<string name="bookmark_added">Lesezeichen hinzugefügt</string> <string name="bookmark_added">Lesezeichen hinzugefügt</string>
<string name="undo">Rückgängig</string> <string name="undo">Rückgängig</string>
<string name="dns_over_https">DNS über HTTPS</string> <string name="dns_over_https">DNS über HTTPS</string>
<string name="default_mode">Standard-Modus</string> <string name="default_mode">Standard-Modus</string>
<string name="detect_reader_mode">Automatische Erkennung des Modus</string> <string name="detect_reader_mode">Automatische Erkennung des Modus</string>
<string name="detect_reader_mode_summary">Automatisch erkennen, ob ein Manga ein Webtoon ist</string> <string name="detect_reader_mode_summary">Automatisch erkennen, ob ein Manga ein Webtoon ist</string>
<string name="disable_battery_optimization">Akkuoptimierung deaktivieren</string> <string name="disable_battery_optimization">Akkuoptimierung deaktivieren</string>
<string name="disable_battery_optimization_summary">Hilft bei der Hintergrundaktualisierung</string> <string name="disable_battery_optimization_summary">Hilft bei der Hintergrundaktualisierung</string>
<string name="send">Senden</string> <string name="send">Senden</string>
<string name="crash_text">Etwas ist schief gelaufen. Bitte sende einen Fehlerbericht an die Entwickler, um uns bei der Behebung zu helfen.</string> <string name="crash_text">Etwas ist schief gelaufen. Bitte sende einen Fehlerbericht an die Entwickler, um uns bei der Behebung zu helfen.</string>
<string name="disable_all">Alle deaktivieren</string> <string name="disable_all">Alle deaktivieren</string>
<string name="use_fingerprint">Fingerabdruck verwenden, falls verfügbar</string> <string name="use_fingerprint">Fingerabdruck verwenden, falls verfügbar</string>
<string name="appwidget_shelf_description">Manga aus deinen Favoriten</string> <string name="appwidget_shelf_description">Manga aus deinen Favoriten</string>
<string name="appwidget_recent_description">Deine kürzlich gelesenen Manga</string> <string name="appwidget_recent_description">Deine kürzlich gelesenen Manga</string>
<string name="report">Melden</string> <string name="report">Melden</string>
<string name="tracking">Nachverfolgung</string> <string name="tracking">Nachverfolgung</string>
<string name="logout">Abmelden</string> <string name="logout">Abmelden</string>
<string name="status_planned">Geplant</string> <string name="status_planned">Geplant</string>
<string name="status_on_hold">In der Warteschleife</string> <string name="status_on_hold">In der Warteschleife</string>
<string name="show_reading_indicators">Indikatoren für den Lesefortschritt anzeigen</string> <string name="show_reading_indicators">Indikatoren für den Lesefortschritt anzeigen</string>
<string name="show_all">Alle anzeigen</string> <string name="show_all">Alle anzeigen</string>
<string name="show_reading_indicators_summary">Zeige gelesenen Prozentsatz in Verlauf und Favoriten</string> <string name="show_reading_indicators_summary">Zeige gelesenen Prozentsatz in Verlauf und Favoriten</string>
<string name="clear_cookies_summary">Kann bei einigen Probleme helfen. Alle Anmeldungen werden ungültig</string> <string name="clear_cookies_summary">Kann bei einigen Probleme helfen. Alle Anmeldungen werden ungültig</string>
<string name="status_completed">Abgeschlossen</string> <string name="status_completed">Abgeschlossen</string>
<string name="exclude_nsfw_from_history_summary">Als NSFW markierte Manga werden nicht dem Verlauf beigefügt und dein Lesefortschritt wird nicht gespeichert</string> <string name="exclude_nsfw_from_history_summary">Als NSFW markierte Manga werden nicht dem Verlauf beigefügt und dein Lesefortschritt wird nicht gespeichert</string>
<string name="data_deletion">Datenlöschung</string> <string name="data_deletion">Datenlöschung</string>
<string name="invalid_domain_message">Ungültige Domain</string> <string name="invalid_domain_message">Ungültige Domain</string>
<string name="status_reading">Lese</string> <string name="status_reading">Lese</string>
<string name="select_range">Bereich auswählen</string> <string name="select_range">Bereich auswählen</string>
<string name="not_found_404">Inhalt nicht gefunden oder entfernt</string> <string name="not_found_404">Inhalt nicht gefunden oder entfernt</string>
<string name="manga_error_description_pattern">Fehlerdetails:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Versuche, &lt;a href=%2$s&gt;den Manga in einem Webbrowser zu öffnen&lt;/a&gt;, um sicherzustellen, dass er bei seiner Quelle verfügbar ist&lt;br&gt;2. Stelle sicher, dass du die &lt;a href=kotatsu://about&gt;neueste Kotatsu-Version&lt;/a&gt;&lt;br&gt;3 benutzt. Wenn er verfügbar ist, sende einen Fehlerbericht an die Entwickler.</string> <string name="manga_error_description_pattern">Fehlerdetails:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Versuche, &lt;a href=%2$s&gt;den Manga in einem Webbrowser zu öffnen&lt;/a&gt;, um sicherzustellen, dass er bei seiner Quelle verfügbar ist&lt;br&gt;2. Stelle sicher, dass du die &lt;a href=kotatsu://about&gt;neueste Kotatsu-Version&lt;/a&gt;&lt;br&gt;3 benutzt. Wenn er verfügbar ist, sende einen Fehlerbericht an die Entwickler.</string>
<string name="no_bookmarks_yet">Noch keine Lesezeichen</string> <string name="no_bookmarks_yet">Noch keine Lesezeichen</string>
<string name="no_manga_sources">Keine Manga-Quellen</string> <string name="no_manga_sources">Keine Manga-Quellen</string>
<string name="no_manga_sources_text">Manga-Quellen aktivieren, um Manga online zu lesen</string> <string name="no_manga_sources_text">Manga-Quellen aktivieren, um Manga online zu lesen</string>
<string name="exit_confirmation">Beenden bestätigen</string> <string name="exit_confirmation">Beenden bestätigen</string>
<string name="saved_manga">Gespeicherte Manga</string> <string name="saved_manga">Gespeicherte Manga</string>
<string name="pages_cache">Seiten-Cache</string> <string name="pages_cache">Seiten-Cache</string>
<string name="other_cache">Anderer Cache</string> <string name="other_cache">Anderer Cache</string>
<string name="storage_usage">Speichernutzung</string> <string name="storage_usage">Speichernutzung</string>
<string name="available">Verfügbar</string> <string name="available">Verfügbar</string>
<string name="memory_usage_pattern">%s - %s</string> <string name="memory_usage_pattern">%s - %s</string>
<string name="removed_from_favourites">Aus den Favoriten entfernt</string> <string name="removed_from_favourites">Aus den Favoriten entfernt</string>
<string name="options">Optionen</string> <string name="options">Optionen</string>
<string name="automatic_scroll">Automatisches Blättern</string> <string name="automatic_scroll">Automatisches Blättern</string>
<string name="comics_archive">Comics-Archiv</string> <string name="comics_archive">Comics-Archiv</string>
<string name="reader_info_pattern">Kap. %1$d/%2$d S. %3$d/%4$d</string> <string name="reader_info_pattern">Kap. %1$d/%2$d S. %3$d/%4$d</string>
<string name="text_shelf_holder_primary">Deine Manga werden hier angezeigt</string> <string name="text_shelf_holder_primary">Deine Manga werden hier angezeigt</string>
<string name="text_shelf_holder_secondary">Finde etwas zu lesen in der Rubrik „Erkunden“</string> <string name="text_shelf_holder_secondary">Finde etwas zu lesen in der Rubrik „Erkunden“</string>
<string name="canceled">Abgebrochen</string> <string name="canceled">Abgebrochen</string>
<string name="account_already_exists">Konto existiert bereits</string> <string name="account_already_exists">Konto existiert bereits</string>
<string name="back">Zurück</string> <string name="back">Zurück</string>
<string name="sync">Synchronisierung</string> <string name="sync">Synchronisierung</string>
<string name="sync_title">Synchronisiere deine Daten</string> <string name="sync_title">Synchronisiere deine Daten</string>
<string name="email_enter_hint">Gib deine E-Mail-Adresse ein, um fortzufahren</string> <string name="email_enter_hint">Gib deine E-Mail-Adresse ein, um fortzufahren</string>
<string name="clear_all_history">Gesamten Verlauf löschen</string> <string name="clear_all_history">Gesamten Verlauf löschen</string>
<string name="last_2_hours">Letzte 2 Stunden</string> <string name="last_2_hours">Letzte 2 Stunden</string>
<string name="history_cleared">Verlauf gelöscht</string> <string name="history_cleared">Verlauf gelöscht</string>
<string name="manage">Verwalten</string> <string name="manage">Verwalten</string>
<string name="no_bookmarks_summary">Du kannst beim Lesen von Mangas Lesezeichen erstellen</string> <string name="no_bookmarks_summary">Du kannst beim Lesen von Mangas Lesezeichen erstellen</string>
<string name="bookmarks_removed">Lesezeichen entfernt</string> <string name="bookmarks_removed">Lesezeichen entfernt</string>
<string name="random">Zufällig</string> <string name="random">Zufällig</string>
<string name="categories_delete_confirm">Bist du sicher, dass du die ausgewählten Lieblingskategorien löschen möchtest\? <string name="categories_delete_confirm">Bist du sicher, dass du die ausgewählten Lieblingskategorien löschen möchtest\?
\nAlle darin enthaltenen Manga gehen verloren und das kann nicht rückgängig gemacht werden.</string> \nAlle darin enthaltenen Manga gehen verloren und das kann nicht rückgängig gemacht werden.</string>
<string name="reorder">Neu anordnen</string> <string name="reorder">Neu anordnen</string>
<string name="empty">Leer</string> <string name="empty">Leer</string>
<string name="explore">Erkunden</string> <string name="explore">Erkunden</string>
<string name="confirm_exit">Drücke zum Verlassen erneut auf Zurück</string> <string name="confirm_exit">Drücke zum Beenden erneut Zurück</string>
<string name="exit_confirmation_summary">Drücke zweimal Zurück, um die App zu beenden</string> <string name="exit_confirmation_summary">Drücke zweimal Zurück, um die App zu beenden</string>
<string name="feed">Feed</string> <string name="feed">Feed</string>
<string name="incognito_mode">Inkognito-Modus</string> <string name="incognito_mode">Inkognito-Modus</string>
<string name="no_chapters">Keine Kapitel</string> <string name="no_chapters">Keine Kapitel</string>
<string name="reader_info_bar">Zeige Informationsleiste beim Lesen</string> <string name="reader_info_bar">Zeige Informationsleiste beim Lesen</string>
<string name="folder_with_images">Ordner mit Bildern</string> <string name="folder_with_images">Ordner mit Bildern</string>
<string name="importing_manga">Importiere Manga</string> <string name="importing_manga">Importiere Manga</string>
<string name="import_completed">Import abgeschlossen</string> <string name="import_completed">Import abgeschlossen</string>
<string name="import_completed_hint">Du kannst die Originaldatei aus dem Speicher löschen, um Platz zu sparen</string> <string name="import_completed_hint">Du kannst die Originaldatei aus dem Speicher löschen, um Platz zu sparen</string>
<string name="import_will_start_soon">Import wird bald beginnen</string> <string name="import_will_start_soon">Import wird bald beginnen</string>
<string name="server_error">Serverseitiger Fehler (%1$d). Bitte versuche es später erneut</string> <string name="server_error">Serverseitiger Fehler (%1$d). Bitte versuche es später erneut</string>
<string name="compact">Kompakt</string> <string name="compact">Kompakt</string>
<string name="contrast">Kontrast</string> <string name="contrast">Kontrast</string>
<string name="network_unavailable_hint">Schalte WLAN oder mobile Daten ein, um Manga online zu lesen</string> <string name="network_unavailable_hint">Schalte WLAN oder mobile Daten ein, um Manga online zu lesen</string>
<string name="clear_new_chapters_counters">Auch Informationen über neue Kapitel löschen</string> <string name="clear_new_chapters_counters">Auch Informationen über neue Kapitel löschen</string>
<string name="text_unsaved_changes_prompt">Ungespeicherte Änderungen speichern oder verwerfen\?</string> <string name="text_unsaved_changes_prompt">Ungespeicherte Änderungen speichern oder verwerfen\?</string>
<string name="discard">Verwerfen</string> <string name="discard">Verwerfen</string>
<string name="reset">Zurücksetzen</string> <string name="reset">Zurücksetzen</string>
<string name="brightness">Helligkeit</string> <string name="brightness">Helligkeit</string>
<string name="color_correction_hint">Die gewählten Farbeinstellungen werden für diesen Manga beibehalten</string> <string name="color_correction_hint">Die gewählten Farbeinstellungen werden für diesen Manga beibehalten</string>
<string name="color_correction">Farbkorrektur</string> <string name="color_correction">Farbkorrektur</string>
<string name="error_no_space_left">Kein Platz übrig auf dem Gerät</string> <string name="error_no_space_left">Kein Platz übrig auf dem Gerät</string>
<string name="different_languages">Verschiedene Sprachen</string> <string name="different_languages">Verschiedene Sprachen</string>
<string name="network_unavailable">Netzwerk ist nicht verfügbar</string> <string name="network_unavailable">Netzwerk ist nicht verfügbar</string>
<string name="reader_control_ltr">Ergonomische Lesekontrolle</string> <string name="reader_control_ltr">Ergonomische Lesekontrolle</string>
<string name="reader_control_ltr_summary">Tippe auf den rechten Rand oder drücke die rechte Taste, um immer zur nächsten Seite zu wechseln</string> <string name="reader_control_ltr_summary">Tippe auf den rechten Rand oder drücke die rechte Taste, um immer zur nächsten Seite zu wechseln</string>
<string name="reader_slider">Zeige Seitenwechsel-Schieber</string> <string name="reader_slider">Zeige Seitenwechsel-Schieber</string>
<string name="source_disabled">Quelle deaktiviert</string> <string name="source_disabled">Quelle deaktiviert</string>
<string name="prefetch_content">Inhalte vorladen</string> <string name="prefetch_content">Inhalte vorladen</string>
<string name="mark_as_current">Als aktuell markieren</string> <string name="mark_as_current">Als aktuell markieren</string>
<string name="webtoon_zoom">Webtoon-Zoom</string> <string name="webtoon_zoom">Webtoon-Zoom</string>
<string name="share_logs">Protokolle teilen</string> <string name="share_logs">Protokolle teilen</string>
<string name="enable_logging">Protokollierung aktivieren</string> <string name="enable_logging">Protokollierung aktivieren</string>
<string name="language">Sprache</string> <string name="language">Sprache</string>
<string name="enable_logging_summary">Einige Aktionen zu Debug-Zwecken aufzeichnen</string> <string name="enable_logging_summary">Einige Aktionen zu Debug-Zwecken aufzeichnen</string>
<string name="history_shortcuts">Zeige Verknüpfungen zu aktuellen Manga</string> <string name="history_shortcuts">Zeige Verknüpfungen zu aktuellen Manga</string>
<string name="history_shortcuts_summary">Neueste Manga durch langes Drücken auf das Anwendungssymbol verfügbar machen</string> <string name="history_shortcuts_summary">Neueste Manga durch langes Drücken auf das Anwendungssymbol verfügbar machen</string>
<string name="show_suspicious_content">Verdächtige Inhalte anzeigen</string> <string name="show_suspicious_content">Verdächtige Inhalte anzeigen</string>
<string name="status_dropped">Abgebrochen</string> <string name="status_dropped">Abgebrochen</string>
<string name="color_theme">Farbschema</string> <string name="color_theme">Farbschema</string>
<string name="theme_name_dynamic">Dynamisch</string> <string name="theme_name_dynamic">Dynamisch</string>
<string name="theme_name_mamimi">Mamimi</string> <string name="theme_name_mamimi">Mamimi</string>
<string name="nothing_here">Hier ist nichts</string> <string name="nothing_here">Hier ist nichts</string>
<string name="services">Dienste</string> <string name="services">Dienste</string>
<string name="theme_name_kanade">Kanade</string> <string name="theme_name_kanade">Kanade</string>
<string name="scrobbling_empty_hint">Um deinen Lesefortschritt nachzuverfolgen, wähle Menu → Track auf dem Manga Details Bildschirm.</string> <string name="scrobbling_empty_hint">Um deinen Lesefortschritt nachzuverfolgen, wähle Menu → Track auf dem Manga Details Bildschirm.</string>
<string name="find_similar">Ähnliche finden</string> <string name="find_similar">Ähnliche finden</string>
<string name="theme_name_sakura">Sakura</string> <string name="theme_name_sakura">Sakura</string>
<string name="allow_unstable_updates_summary">Schlage Updates zu Beta-Versionen der App vor</string> <string name="allow_unstable_updates_summary">Schlage Updates zu Beta-Versionen der App vor</string>
<string name="allow_unstable_updates">Erlaube instabile Updates</string> <string name="allow_unstable_updates">Erlaube instabile Updates</string>
<string name="got_it">Alles klar</string> <string name="got_it">Alles klar</string>
<string name="sources_reorder_tip">Drücke und halte eine Quelle, um diese umzusortieren</string> <string name="sources_reorder_tip">Drücke und halte eine Quelle, um diese umzusortieren</string>
<string name="settings_apply_restart_required">Bitte starte die App neu, um die Änderungen anzuwenden</string> <string name="settings_apply_restart_required">Bitte starte die App neu, um die Änderungen anzuwenden</string>
<string name="comics_archive_import_description">Du kannst eine oder mehrere .cbz oder .zip Dateien auswählen, jede Datei wird als einzelner Manga erkannt.</string> <string name="comics_archive_import_description">Du kannst eine oder mehrere .cbz oder .zip Dateien auswählen, jede Datei wird als einzelner Manga erkannt.</string>
<string name="folder_with_images_import_description">Du kannst einen Ordner mit Archiven oder Bildern auswählen. Jedes Archiv (oder Unterverzeichnis) wird als ein Kapitel erkannt.</string> <string name="folder_with_images_import_description">Du kannst einen Ordner mit Archiven oder Bildern auswählen. Jedes Archiv (oder Unterverzeichnis) wird als ein Kapitel erkannt.</string>
<string name="speed">Geschwindigkeit</string> <string name="speed">Geschwindigkeit</string>
<string name="restore_backup_description">Importiere ein zuvor erstelltes Nutzerdaten-Backup</string> <string name="restore_backup_description">Importiere ein zuvor erstelltes Nutzerdaten-Backup</string>
<string name="show_on_shelf">Im Regal anzeigen</string> <string name="show_on_shelf">Im Regal anzeigen</string>
<string name="theme_name_miku">Miku</string> <string name="theme_name_miku">Miku</string>
<string name="theme_name_asuka">Asuka</string> <string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string> <string name="theme_name_mion">Mion</string>
<string name="theme_name_rikka">Rikka</string> <string name="theme_name_rikka">Rikka</string>
<string name="show_in_grid_view">In Raster-Ansicht anzeigen</string> <string name="show_in_grid_view">In Raster-Ansicht anzeigen</string>
<string name="server_address">Serveradresse</string> <string name="server_address">Serveradresse</string>
<string name="mirror_switching">Wähle Mirror automatisch</string> <string name="mirror_switching">Wähle Mirror automatisch</string>
<string name="download_started">Download gestartet</string> <string name="download_started">Download gestartet</string>
<string name="sync_settings">Synchronisationseinstellungen</string> <string name="sync_settings">Synchronisationseinstellungen</string>
<string name="sync_host_description">Du kannst einen Standard- oder einen selbst gehosteten Synchronisations-Server verwenden. Ändere diese Einstellungen nicht, wenn du dich nicht auskennst.</string> <string name="sync_host_description">Du kannst einen Standard- oder einen selbst gehosteten Synchronisations-Server verwenden. Ändere diese Einstellungen nicht, wenn du dich nicht auskennst.</string>
<string name="ignore_ssl_errors">Ignoriere SSL Errors</string> <string name="ignore_ssl_errors">Ignoriere SSL Errors</string>
<string name="mirror_switching_summary">Wechsel bei Fehlern automatisch die Domains für Manga-Quellen, falls Mirrors verfügbar sind</string> <string name="mirror_switching_summary">Wechsel bei Fehlern automatisch die Domains für Manga-Quellen, falls Mirrors verfügbar sind</string>
<string name="status_re_reading">Lese erneut</string> <string name="status_re_reading">Lese erneut</string>
<string name="sync_auth_hint">Du kannst dich mit einem bestehenden Account anmelden oder einen neuen erstellen</string> <string name="sync_auth_hint">Du kannst dich mit einem bestehenden Account anmelden oder einen neuen erstellen</string>
<string name="user_agent">UserAgent-Kopfzeile</string> <string name="user_agent">UserAgent-Kopfzeile</string>
<string name="enable">Aktivieren</string> <string name="enable">Aktivieren</string>
<string name="no_thanks">Nein danke</string> <string name="no_thanks">Nein danke</string>
<string name="pause">Pausieren</string> <string name="pause">Pausieren</string>
<string name="resume">Fortsetzen</string> <string name="resume">Fortsetzen</string>
<string name="paused">Pausiert</string> <string name="paused">Pausiert</string>
<string name="remove_completed">Entfernung abgeschlossen</string> <string name="remove_completed">Entfernung abgeschlossen</string>
<string name="cancel_all">Alle abbrechen</string> <string name="cancel_all">Alle abbrechen</string>
<string name="downloads_wifi_only">Nur über Wi-Fi herunterladen</string> <string name="downloads_wifi_only">Nur über Wi-Fi herunterladen</string>
<string name="downloads_wifi_only_summary">Beenden des Herunterladens beim Wechsel zu einem Mobilfunknetz</string> <string name="downloads_wifi_only_summary">Beende das Herunterladen beim Wechsel zu einem Mobilfunknetz</string>
</resources> <string name="suggestions_notifications_summary">Zeige ab und zu Benachrichtigungen mit Manga-Vorschlägen</string>
<string name="downloads_removed">Downloads wurden entfernt</string>
<string name="suggestion_manga">Vorschlag: %s</string>
<string name="more">Mehr</string>
<string name="cancel_all_downloads_confirm">Alle Downloads werden abgebrochen, teilweise heruntergeladene Dateien gehen verloren</string>
<string name="remove_completed_downloads_confirm">Dein Downloads-Verlauf wird unwiderruflich gelöscht</string>
<string name="text_downloads_list_holder">Du hast keine Downloads</string>
<string name="downloads_resumed">Downloads wurden fortgesetzt</string>
<string name="downloads_paused">Downloads wurden pausiert</string>
<string name="downloads_cancelled">Downloads wurden abgebrochen</string>
<string name="suggestions_enable_prompt">Willst du personalisierte Manga-Vorschläge erhalten\?</string>
<string name="translations">Übersetzungen</string>
<string name="web_view_unavailable">WebView nicht verfügbar: überprüfe, ob WebView installiert ist</string>
</resources>

View File

@@ -1,31 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<plurals name="pages"> <plurals name="pages">
<item quantity="one">Total %1$d página</item> <item quantity="one">Total de %1$d página</item>
<item quantity="other">Total %1$d páginas</item> <item quantity="many">Total de %1$d páginas</item>
</plurals> <item quantity="other">Total de %1$d páginas</item>
<plurals name="items"> </plurals>
<item quantity="one">%1$d elemento</item> <plurals name="items">
<item quantity="other">%1$d elementos</item> <item quantity="one">%1$d elemento</item>
</plurals> <item quantity="many">%1$d elementos</item>
<plurals name="new_chapters"> <item quantity="other">%1$d elementos</item>
<item quantity="one">%1$d nuevo capítulo</item> </plurals>
<item quantity="other">%1$d nuevos capítulos</item> <plurals name="new_chapters">
</plurals> <item quantity="one">%1$d nuevo capítulo</item>
<plurals name="chapters"> <item quantity="many">%1$d nuevos capítulos</item>
<item quantity="one">%1$d capítulo</item> <item quantity="other">%1$d nuevos capítulos</item>
<item quantity="other">%1$d capítulos</item> </plurals>
</plurals> <plurals name="chapters">
<plurals name="minutes_ago"> <item quantity="one">%1$d capítulo</item>
<item quantity="one">hace %1$d minuto</item> <item quantity="many">%1$d capítulos</item>
<item quantity="other">hace %1$d minutos</item> <item quantity="other">%1$d capítulos</item>
</plurals> </plurals>
<plurals name="hours_ago"> <plurals name="minutes_ago">
<item quantity="one">hace %1$d hora</item> <item quantity="one">hace %1$d minuto</item>
<item quantity="other">hace %1$d horas</item> <item quantity="many">hace %1$d minutos</item>
</plurals> <item quantity="other">hace %1$d minutos</item>
<plurals name="days_ago"> </plurals>
<item quantity="one">hace %1$d día</item> <plurals name="hours_ago">
<item quantity="other">hace %1$d días</item> <item quantity="one">hace %1$d hora</item>
</plurals> <item quantity="many">hace %1$d horas</item>
</resources> <item quantity="other">hace %1$d horas</item>
</plurals>
<plurals name="days_ago">
<item quantity="one">hace %1$d día</item>
<item quantity="many">hace %1$d días</item>
<item quantity="other">hace %1$d días</item>
</plurals>
</resources>

View File

@@ -1,402 +1,415 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="local_storage">Dispositivo</string> <string name="local_storage">Dispositivo</string>
<string name="favourites">Favoritos</string> <string name="favourites">Favoritos</string>
<string name="history">Historial</string> <string name="history">Historial</string>
<string name="error_occurred">Ocurrió un error</string> <string name="error_occurred">Ocurrió un error</string>
<string name="network_error">Error en la red</string> <string name="network_error">Error en la red</string>
<string name="details">Detalles</string> <string name="details">Detalles</string>
<string name="chapters">Capítulos</string> <string name="chapters">Capítulos</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="detailed_list">Lista detallada</string> <string name="detailed_list">Lista detallada</string>
<string name="grid">Cuadrículas</string> <string name="grid">Cuadrículas</string>
<string name="list_mode">Vista de lista</string> <string name="list_mode">Vista de lista</string>
<string name="settings">Ajustes</string> <string name="settings">Ajustes</string>
<string name="remote_sources">Fuentes del manga</string> <string name="remote_sources">Fuentes del manga</string>
<string name="loading_">Cargando…</string> <string name="loading_">Cargando…</string>
<string name="chapter_d_of_d">Capítulo %1$d de %2$d</string> <string name="chapter_d_of_d">Capítulo %1$d de %2$d</string>
<string name="close">Cerrar</string> <string name="close">Cerrar</string>
<string name="try_again">Reintentar</string> <string name="try_again">Reintentar</string>
<string name="clear_history">Borrar historial</string> <string name="clear_history">Borrar historial</string>
<string name="nothing_found">No se encontró nada</string> <string name="nothing_found">No se encontró nada</string>
<string name="history_is_empty">Aún sin historial</string> <string name="history_is_empty">Aún sin historial</string>
<string name="read">Leer</string> <string name="read">Leer</string>
<string name="you_have_not_favourites_yet">Aún no hay favoritos</string> <string name="you_have_not_favourites_yet">Aún no hay favoritos</string>
<string name="add_to_favourites">Añadir a favoritos</string> <string name="add_to_favourites">Añadir a favoritos</string>
<string name="add_new_category">Nueva categoría</string> <string name="add_new_category">Nueva categoría</string>
<string name="add">Añadir</string> <string name="add">Añadir</string>
<string name="save">Guardar</string> <string name="save">Guardar</string>
<string name="share">Compartir</string> <string name="share">Compartir</string>
<string name="create_shortcut">Crear acceso directo…</string> <string name="create_shortcut">Crear acceso directo…</string>
<string name="share_s">Compartir %s</string> <string name="share_s">Compartir %s</string>
<string name="search">Buscar</string> <string name="search">Buscar</string>
<string name="search_manga">Buscar manga</string> <string name="search_manga">Buscar manga</string>
<string name="manga_downloading_">Descargando…</string> <string name="manga_downloading_">Descargando…</string>
<string name="processing_">Procesando…</string> <string name="processing_">Procesando…</string>
<string name="download_complete">Descargado</string> <string name="download_complete">Descargado</string>
<string name="downloads">Descargas</string> <string name="downloads">Descargas</string>
<string name="by_name">Nombre</string> <string name="by_name">Nombre</string>
<string name="popular">Popularidad</string> <string name="popular">Popularidad</string>
<string name="updated">Actualización</string> <string name="updated">Actualización</string>
<string name="newest">Recientes</string> <string name="newest">Recientes</string>
<string name="by_rating">Calificación</string> <string name="by_rating">Calificación</string>
<string name="sort_order">Orden de clasificación</string> <string name="sort_order">Orden de clasificación</string>
<string name="filter">Filtrar</string> <string name="filter">Filtrar</string>
<string name="theme">Tema</string> <string name="theme">Tema</string>
<string name="light">Claro</string> <string name="light">Claro</string>
<string name="dark">Oscuro</string> <string name="dark">Oscuro</string>
<string name="automatic">De acuerdo al sistema</string> <string name="automatic">De acuerdo al sistema</string>
<string name="pages">Páginas</string> <string name="pages">Páginas</string>
<string name="clear">Borrar</string> <string name="clear">Borrar</string>
<string name="text_clear_history_prompt">Borrar todo el historial de lectura de forma permanente\?</string> <string name="text_clear_history_prompt">Borrar todo el historial de lectura de forma permanente\?</string>
<string name="remove">Eliminar</string> <string name="remove">Eliminar</string>
<string name="_s_deleted_from_local_storage">«%s» borrado del almacenamiento local</string> <string name="_s_deleted_from_local_storage">«%s» borrado del almacenamiento local</string>
<string name="save_page">Guardar página</string> <string name="save_page">Guardar página</string>
<string name="page_saved">Guardado</string> <string name="page_saved">Guardado</string>
<string name="share_image">Compartir imagen</string> <string name="share_image">Compartir imagen</string>
<string name="_import">Importar</string> <string name="_import">Importar</string>
<string name="delete">Borrar</string> <string name="delete">Borrar</string>
<string name="operation_not_supported">Esta operación no está admitida</string> <string name="operation_not_supported">Esta operación no está admitida</string>
<string name="text_file_not_supported">Elija un archivo ZIP o bien un archivo CBZ.</string> <string name="text_file_not_supported">Elija un archivo ZIP o bien un archivo CBZ.</string>
<string name="no_description">Sin descripción</string> <string name="no_description">Sin descripción</string>
<string name="history_and_cache">Historial y caché</string> <string name="history_and_cache">Historial y caché</string>
<string name="clear_pages_cache">Borrar caché de página</string> <string name="clear_pages_cache">Borrar caché de página</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string> <string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="standard">Estándar</string> <string name="standard">Estándar</string>
<string name="webtoon">Sitio web</string> <string name="webtoon">Sitio web</string>
<string name="read_mode">Modo de lectura</string> <string name="read_mode">Modo de lectura</string>
<string name="grid_size">Tamaño de la cuadrícula</string> <string name="grid_size">Tamaño de la cuadrícula</string>
<string name="search_on_s">Buscar en %s</string> <string name="search_on_s">Buscar en %s</string>
<string name="delete_manga">Borrar manga</string> <string name="delete_manga">Borrar manga</string>
<string name="text_delete_local_manga">¿Borrar \"%s\" del dispositivo permanentemente\?</string> <string name="text_delete_local_manga">¿Borrar \"%s\" del dispositivo permanentemente\?</string>
<string name="reader_settings">Ajustes del lector</string> <string name="reader_settings">Ajustes del lector</string>
<string name="switch_pages">Cambiar de página</string> <string name="switch_pages">Cambiar de página</string>
<string name="taps_on_edges">Toques de borde</string> <string name="taps_on_edges">Toques de borde</string>
<string name="volume_buttons">Botones de volumen</string> <string name="volume_buttons">Botones de volumen</string>
<string name="_continue">Continuar</string> <string name="_continue">Continuar</string>
<string name="error">Error</string> <string name="error">Error</string>
<string name="clear_thumbs_cache">Borrar la caché de miniaturas</string> <string name="clear_thumbs_cache">Borrar la caché de miniaturas</string>
<string name="clear_search_history">Borrar el historial de búsqueda</string> <string name="clear_search_history">Borrar el historial de búsqueda</string>
<string name="search_history_cleared">Historial de búsqueda borrado</string> <string name="search_history_cleared">Historial de búsqueda borrado</string>
<string name="gestures_only">Sólo gestos</string> <string name="gestures_only">Sólo gestos</string>
<string name="internal_storage">Almacenamiento interno</string> <string name="internal_storage">Almacenamiento interno</string>
<string name="external_storage">Almacenamiento externo</string> <string name="external_storage">Almacenamiento externo</string>
<string name="domain">Dominio</string> <string name="domain">Dominio</string>
<string name="app_update_available">Una nueva versión de la aplicación está disponible</string> <string name="app_update_available">Una nueva versión de la aplicación está disponible</string>
<string name="open_in_browser">Abrir en navegador web</string> <string name="open_in_browser">Abrir en navegador web</string>
<string name="large_manga_save_confirm">Este manga tiene %s. ¿Quieres guardarlo todo\?</string> <string name="large_manga_save_confirm">Este manga tiene %s. ¿Quieres guardarlo todo\?</string>
<string name="save_manga">Guardar</string> <string name="save_manga">Guardar</string>
<string name="notifications">Notificaciones</string> <string name="notifications">Notificaciones</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Activado %1$d de %2$d</string> <string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Activado %1$d de %2$d</string>
<string name="new_chapters">Nuevos capítulos</string> <string name="new_chapters">Nuevos capítulos</string>
<string name="download">Descargar</string> <string name="download">Descargar</string>
<string name="notifications_settings">Configuración de las notificaciones</string> <string name="notifications_settings">Configuración de las notificaciones</string>
<string name="notification_sound">Sonido de las notificaciones</string> <string name="notification_sound">Sonido de las notificaciones</string>
<string name="light_indicator">Indicador LED</string> <string name="light_indicator">Indicador LED</string>
<string name="vibration">Vibración</string> <string name="vibration">Vibración</string>
<string name="favourites_categories">Categorías favoritas</string> <string name="favourites_categories">Categorías favoritas</string>
<string name="remove_category">Remover</string> <string name="remove_category">Remover</string>
<string name="manga_shelf">Estante</string> <string name="manga_shelf">Estante</string>
<string name="recent_manga">Reciente</string> <string name="recent_manga">Reciente</string>
<string name="pages_animation">Animación de página</string> <string name="pages_animation">Animación de página</string>
<string name="manga_save_location">Carpeta para descargas</string> <string name="manga_save_location">Carpeta para descargas</string>
<string name="not_available">No disponible</string> <string name="not_available">No disponible</string>
<string name="cannot_find_available_storage">No hay almacenamiento disponible</string> <string name="cannot_find_available_storage">No hay almacenamiento disponible</string>
<string name="other_storage">Otro almacenamiento</string> <string name="other_storage">Otro almacenamiento</string>
<string name="done">Aceptar</string> <string name="done">Aceptar</string>
<string name="all_favourites">Todos los favoritos</string> <string name="all_favourites">Todos los favoritos</string>
<string name="favourites_category_empty">Categoría vacía</string> <string name="favourites_category_empty">Categoría vacía</string>
<string name="read_later">Leer más tarde</string> <string name="read_later">Leer más tarde</string>
<string name="updates">Actualizaciones</string> <string name="updates">Actualizaciones</string>
<string name="text_feed_holder">Aquí verás los nuevos episodios del manga que estás leyendo</string> <string name="text_feed_holder">Aquí verás los nuevos episodios del manga que estás leyendo</string>
<string name="search_results">Resultados de la búsqueda</string> <string name="search_results">Resultados de la búsqueda</string>
<string name="new_version_s">Nueva versión: %s</string> <string name="new_version_s">Nueva versión: %s</string>
<string name="size_s">Tamaño: %s</string> <string name="size_s">Tamaño: %s</string>
<string name="clear_updates_feed">Borrar actualizaciones</string> <string name="clear_updates_feed">Borrar actualizaciones</string>
<string name="updates_feed_cleared">Borrar el feed de actualizaciones</string> <string name="updates_feed_cleared">Borrar el feed de actualizaciones</string>
<string name="rotate_screen">Girar pantalla</string> <string name="rotate_screen">Girar pantalla</string>
<string name="update">Actualizar</string> <string name="update">Actualizar</string>
<string name="feed_will_update_soon">La actualización de la alimentación comenzará pronto</string> <string name="feed_will_update_soon">La actualización de la alimentación comenzará pronto</string>
<string name="track_sources">Comprueba las actualizaciones del manga</string> <string name="track_sources">Comprueba las actualizaciones del manga</string>
<string name="dont_check">No comprobar</string> <string name="dont_check">No comprobar</string>
<string name="enter_password">Introducir contraseña</string> <string name="enter_password">Introducir contraseña</string>
<string name="wrong_password">Contraseña incorrecta</string> <string name="wrong_password">Contraseña incorrecta</string>
<string name="protect_application">Proteger aplicación</string> <string name="protect_application">Proteger aplicación</string>
<string name="protect_application_summary">Pedir una contraseña al iniciar Kotatsu</string> <string name="protect_application_summary">Pedir una contraseña al iniciar Kotatsu</string>
<string name="repeat_password">Repite la contraseña</string> <string name="repeat_password">Repite la contraseña</string>
<string name="passwords_mismatch">Las contraseñas no coinciden</string> <string name="passwords_mismatch">Las contraseñas no coinciden</string>
<string name="about">Acerca de</string> <string name="about">Acerca de</string>
<string name="app_version">Versión %s</string> <string name="app_version">Versión %s</string>
<string name="check_for_updates">Comprobar actualizaciones</string> <string name="check_for_updates">Comprobar actualizaciones</string>
<string name="no_update_available">No hay actualizaciones disponibles</string> <string name="no_update_available">No hay actualizaciones disponibles</string>
<string name="right_to_left">De derecha a izquierda</string> <string name="right_to_left">De derecha a izquierda</string>
<string name="create_category">Nueva categoría</string> <string name="create_category">Nueva categoría</string>
<string name="scale_mode">Modo de escala</string> <string name="scale_mode">Modo de escala</string>
<string name="zoom_mode_fit_center">Ajuste al centro</string> <string name="zoom_mode_fit_center">Ajuste al centro</string>
<string name="zoom_mode_fit_height">Ajuste a la altura</string> <string name="zoom_mode_fit_height">Ajuste a la altura</string>
<string name="zoom_mode_fit_width">Ajuste a la anchura</string> <string name="zoom_mode_fit_width">Ajuste a la anchura</string>
<string name="zoom_mode_keep_start">Mantener al iniciar</string> <string name="zoom_mode_keep_start">Mantener al iniciar</string>
<string name="black_dark_theme">Tema oscuro auténtico</string> <string name="black_dark_theme">Tema oscuro auténtico</string>
<string name="black_dark_theme_summary">Útil para pantallas AMOLED</string> <string name="black_dark_theme_summary">Útil para pantallas AMOLED</string>
<string name="backup_restore">Respaldo y restauración</string> <string name="backup_restore">Respaldo y restauración</string>
<string name="create_backup">Crear copia de seguridad de datos</string> <string name="create_backup">Crear copia de seguridad de datos</string>
<string name="restore_backup">Restaurar desde la copia de seguridad</string> <string name="restore_backup">Restaurar desde la copia de seguridad</string>
<string name="data_restored">Datos restaurados</string> <string name="data_restored">Datos restaurados</string>
<string name="preparing_">Preparando…</string> <string name="preparing_">Preparando…</string>
<string name="file_not_found">Archivo no encontrado</string> <string name="file_not_found">Archivo no encontrado</string>
<string name="data_restored_success">Todos los datos fueron restaurados con éxito</string> <string name="data_restored_success">Todos los datos fueron restaurados con éxito</string>
<string name="data_restored_with_errors">Los datos fueron restaurados, pero hay errores</string> <string name="data_restored_with_errors">Los datos fueron restaurados, pero hay errores</string>
<string name="backup_information">Puedes crear una copia de seguridad de tu historial y favoritos para restaurarla</string> <string name="backup_information">Puedes crear una copia de seguridad de tu historial y favoritos para restaurarla</string>
<string name="just_now">Ahora mismo</string> <string name="just_now">Ahora mismo</string>
<string name="yesterday">Ayer</string> <string name="yesterday">Ayer</string>
<string name="long_ago">Hace mucho tiempo</string> <string name="long_ago">Hace mucho tiempo</string>
<string name="group">Grupo</string> <string name="group">Grupo</string>
<string name="today">Hoy</string> <string name="today">Hoy</string>
<string name="tap_to_try_again">Toca para volver a intentar</string> <string name="tap_to_try_again">Toca para volver a intentar</string>
<string name="reader_mode_hint">Se recordará la configuración elegida para este manga</string> <string name="reader_mode_hint">Se recordará la configuración elegida para este manga</string>
<string name="silent">Silenciar</string> <string name="silent">Silenciar</string>
<string name="captcha_required">El captcha es obligatorio</string> <string name="captcha_required">El captcha es obligatorio</string>
<string name="captcha_solve">Resolver</string> <string name="captcha_solve">Resolver</string>
<string name="clear_cookies">Borrar cookies</string> <string name="clear_cookies">Borrar cookies</string>
<string name="cookies_cleared">Se han eliminado todas las cookies</string> <string name="cookies_cleared">Se han eliminado todas las cookies</string>
<string name="clear_feed">Limpiar feed</string> <string name="clear_feed">Limpiar feed</string>
<string name="text_clear_updates_feed_prompt">Todo el historial de actualizaciones se borrará y esta acción no se puede deshacer. ¿Está seguro\?</string> <string name="text_clear_updates_feed_prompt">Todo el historial de actualizaciones se borrará y esta acción no se puede deshacer. ¿Está seguro\?</string>
<string name="check_for_new_chapters">Comprobación de nuevos capítulos</string> <string name="check_for_new_chapters">Comprobación de nuevos capítulos</string>
<string name="reverse">Invertir</string> <string name="reverse">Invertir</string>
<string name="sign_in">Iniciar sesión</string> <string name="sign_in">Iniciar sesión</string>
<string name="auth_required">Debes autorizar para ver este contenido</string> <string name="auth_required">Debes autorizar para ver este contenido</string>
<string name="default_s">Por defecto: %s</string> <string name="default_s">Por defecto: %s</string>
<string name="next">Siguiente</string> <string name="next">Siguiente</string>
<string name="protect_application_subtitle">Introduce la contraseña que se requerirá cuando se inicie la aplicación</string> <string name="protect_application_subtitle">Introduce la contraseña que se requerirá cuando se inicie la aplicación</string>
<string name="confirm">Confirmar</string> <string name="confirm">Confirmar</string>
<string name="password_length_hint">La contraseña debe tener al menos 4 caracteres</string> <string name="password_length_hint">La contraseña debe tener al menos 4 caracteres</string>
<string name="text_local_holder_secondary">Puedes guardarlo desde fuentes in línea o importarlo desde un archivo.</string> <string name="text_local_holder_secondary">Puedes guardarlo desde fuentes in línea o importarlo desde un archivo.</string>
<string name="text_local_holder_primary">Todavía no tienes ningún manga guardado</string> <string name="text_local_holder_primary">Todavía no tienes ningún manga guardado</string>
<string name="text_history_holder_secondary">Encuentra qué leer en el menú lateral.</string> <string name="text_history_holder_secondary">Encuentra qué leer en el menú lateral.</string>
<string name="text_history_holder_primary">Lo que leas se mostrará aquí</string> <string name="text_history_holder_primary">Lo que leas se mostrará aquí</string>
<string name="text_empty_holder_primary">Está un poco vacío aquí…</string> <string name="text_empty_holder_primary">Está un poco vacío aquí…</string>
<string name="chapter_is_missing">Falta un capítulo</string> <string name="chapter_is_missing">Falta un capítulo</string>
<string name="about_app_translation_summary">Traducir esta aplicación</string> <string name="about_app_translation_summary">Traducir esta aplicación</string>
<string name="about_app_translation">Traducción</string> <string name="about_app_translation">Traducción</string>
<string name="queued">En la cola</string> <string name="queued">En la cola</string>
<string name="read_more">Leer más</string> <string name="read_more">Leer más</string>
<string name="backup_saved">Copia de seguridad guardada correctamente</string> <string name="backup_saved">Copia de seguridad guardada correctamente</string>
<string name="welcome">Bienvenido/a</string> <string name="welcome">Bienvenido/a</string>
<string name="genres">Géneros</string> <string name="genres">Géneros</string>
<string name="text_search_holder_secondary">Intenta reformular la consulta.</string> <string name="text_search_holder_secondary">Intenta reformular la consulta.</string>
<string name="text_clear_search_history_prompt">¿Realmente quiere eliminar todas las consultas de búsqueda recientes\?</string> <string name="text_clear_search_history_prompt">¿Realmente quiere eliminar todas las consultas de búsqueda recientes\?</string>
<string name="state_finished">Terminado</string> <string name="state_finished">Terminado</string>
<string name="state_ongoing">En curso</string> <string name="state_ongoing">En curso</string>
<string name="chapter_is_missing_text">Este capítulo no aparece en su dispositivo. Descárguelo o léalo en línea.</string> <string name="chapter_is_missing_text">Este capítulo no aparece en su dispositivo. Descárguelo o léalo en línea.</string>
<string name="auth_complete">Autorizado</string> <string name="auth_complete">Autorizado</string>
<string name="system_default">Por defecto</string> <string name="system_default">Por defecto</string>
<string name="tracker_warning">Algunos fabricantes pueden cambiar el comportamiento del sistema, lo que podría interrumpir las tareas en segundo plano.</string> <string name="tracker_warning">Algunos fabricantes pueden cambiar el comportamiento del sistema, lo que podría interrumpir las tareas en segundo plano.</string>
<string name="auth_not_supported_by">No se admite iniciar sesión en %s</string> <string name="auth_not_supported_by">No se admite iniciar sesión en %s</string>
<string name="text_clear_cookies_prompt">Serás desconectado de todas las fuentes</string> <string name="text_clear_cookies_prompt">Serás desconectado de todas las fuentes</string>
<string name="exclude_nsfw_from_history">Excluye manga NSFW del historial</string> <string name="exclude_nsfw_from_history">Excluye manga NSFW del historial</string>
<string name="show_pages_numbers">Mostrar los números de páginas</string> <string name="show_pages_numbers">Mostrar los números de páginas</string>
<string name="enabled_sources">Fuentes activadas</string> <string name="enabled_sources">Fuentes activadas</string>
<string name="available_sources">Fuentes disponibles</string> <string name="available_sources">Fuentes disponibles</string>
<string name="computing_">Informática…</string> <string name="computing_">Informática…</string>
<string name="screenshots_policy">Política de capturas de pantalla</string> <string name="screenshots_policy">Política de capturas de pantalla</string>
<string name="screenshots_allow">Permitir</string> <string name="screenshots_allow">Permitir</string>
<string name="screenshots_block_all">Bloquear siempre</string> <string name="screenshots_block_all">Bloquear siempre</string>
<string name="suggestions">Sugerencias</string> <string name="suggestions">Sugerencias</string>
<string name="suggestions_enable">Activar sugerencias</string> <string name="suggestions_enable">Activar sugerencias</string>
<string name="suggestions_summary">Sugiere mangas según tus preferencias</string> <string name="suggestions_summary">Sugiere mangas según tus preferencias</string>
<string name="suggestions_info">Todos los datos sólo se analizan localmente en este dispositivo y nunca se envían a ninguna parte.</string> <string name="suggestions_info">Todos los datos sólo se analizan localmente en este dispositivo y nunca se envían a ninguna parte.</string>
<string name="text_suggestion_holder">Empieza a leer manga y recibirás sugerencias personalizadas</string> <string name="text_suggestion_holder">Empieza a leer manga y recibirás sugerencias personalizadas</string>
<string name="exclude_nsfw_from_suggestions">No sugerir manga NSFW</string> <string name="exclude_nsfw_from_suggestions">No sugerir manga NSFW</string>
<string name="enabled">Activado</string> <string name="enabled">Activado</string>
<string name="disabled">Desactivado</string> <string name="disabled">Desactivado</string>
<string name="filter_load_error">No se puede cargar la lista de géneros</string> <string name="filter_load_error">No se puede cargar la lista de géneros</string>
<string name="screenshots_block_nsfw">Bloqueo en NSFW</string> <string name="screenshots_block_nsfw">Bloqueo en NSFW</string>
<string name="logged_in_as">Conectado como %s</string> <string name="logged_in_as">Conectado como %s</string>
<string name="find_genre">Encontrar el género</string> <string name="find_genre">Encontrar el género</string>
<string name="onboard_text">Selecciona los idiomas en los que quieres leer mangas. Puedes cambiarlo más tarde en los ajustes.</string> <string name="onboard_text">Selecciona los idiomas en los que quieres leer mangas. Puedes cambiarlo más tarde en los ajustes.</string>
<string name="reset_filter">Reiniciar el filtro</string> <string name="reset_filter">Reiniciar el filtro</string>
<string name="never">Nunca</string> <string name="never">Nunca</string>
<string name="nsfw">18+</string> <string name="nsfw">18+</string>
<string name="always">Siempre</string> <string name="always">Siempre</string>
<string name="preload_pages">Precargar las páginas</string> <string name="preload_pages">Precargar las páginas</string>
<string name="only_using_wifi">Sólo en Wi-Fi</string> <string name="only_using_wifi">Sólo en Wi-Fi</string>
<string name="various_languages">Varios idiomas</string> <string name="various_languages">Varios idiomas</string>
<string name="search_chapters">Buscar capítulo</string> <string name="search_chapters">Buscar capítulo</string>
<string name="chapters_empty">No hay capítulos en este manga</string> <string name="chapters_empty">No hay capítulos en este manga</string>
<string name="percent_string_pattern">%1$s%%</string> <string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Aspecto</string> <string name="appearance">Aspecto</string>
<string name="content">Contenido</string> <string name="content">Contenido</string>
<string name="suggestions_updating">Actualización de las sugerencias</string> <string name="suggestions_updating">Actualización de las sugerencias</string>
<string name="suggestions_excluded_genres">Excluir géneros</string> <string name="suggestions_excluded_genres">Excluir géneros</string>
<string name="suggestions_excluded_genres_summary">Especifica los géneros que no quieres ver en las sugerencias</string> <string name="suggestions_excluded_genres_summary">Especifica los géneros que no quieres ver en las sugerencias</string>
<string name="removal_completed">Remoción completada</string> <string name="removal_completed">Remoción completada</string>
<string name="text_delete_local_manga_batch">¿Eliminar elementos seleccionados del dispositivo de forma permanente\?</string> <string name="text_delete_local_manga_batch">¿Eliminar elementos seleccionados del dispositivo de forma permanente\?</string>
<string name="hide">Ocultar</string> <string name="hide">Ocultar</string>
<string name="download_slowdown">Ralentización de la descarga</string> <string name="download_slowdown">Ralentización de la descarga</string>
<string name="new_sources_text">Nuevas fuentes de manga son disponibles</string> <string name="new_sources_text">Nuevas fuentes de manga son disponibles</string>
<string name="download_slowdown_summary">Ayuda a evitar el bloqueo de tu dirección IP</string> <string name="download_slowdown_summary">Ayuda a evitar el bloqueo de tu dirección IP</string>
<string name="local_manga_processing">Procesamiento de manga guardado</string> <string name="local_manga_processing">Procesamiento de manga guardado</string>
<string name="check_new_chapters_title">Comprueba si hay nuevos capítulos y notifica sobre ellos</string> <string name="check_new_chapters_title">Comprueba si hay nuevos capítulos y notifica sobre ellos</string>
<string name="show_notification_new_chapters_on">Recibirás notificaciones sobre las actualizaciones del manga que estés leyendo</string> <string name="show_notification_new_chapters_on">Recibirás notificaciones sobre las actualizaciones del manga que estés leyendo</string>
<string name="bookmark_add">Añadir marcador</string> <string name="bookmark_add">Añadir marcador</string>
<string name="bookmarks">Marcadores</string> <string name="bookmarks">Marcadores</string>
<string name="undo">Deshacer</string> <string name="undo">Deshacer</string>
<string name="bookmark_removed">Marcador eliminado</string> <string name="bookmark_removed">Marcador eliminado</string>
<string name="removed_from_history">Eliminado del historial</string> <string name="removed_from_history">Eliminado del historial</string>
<string name="bookmark_remove">Eliminar marcador</string> <string name="bookmark_remove">Eliminar marcador</string>
<string name="bookmark_added">Añadido a favoritos</string> <string name="bookmark_added">Añadido a favoritos</string>
<string name="dns_over_https">DNS mediante HTTPS</string> <string name="dns_over_https">DNS mediante HTTPS</string>
<string name="default_mode">Modo predeterminado</string> <string name="default_mode">Modo predeterminado</string>
<string name="detect_reader_mode">Autodetectar modo de lectura</string> <string name="detect_reader_mode">Autodetectar modo de lectura</string>
<string name="detect_reader_mode_summary">Detecta automáticamente si el manga es un webtoon</string> <string name="detect_reader_mode_summary">Detecta automáticamente si el manga es un webtoon</string>
<string name="chapters_will_removed_background">Los capítulos se eliminarán en segundo plano</string> <string name="chapters_will_removed_background">Los capítulos se eliminarán en segundo plano</string>
<string name="show_notification_new_chapters_off">No recibirás notificaciones, pero los nuevos capítulos aparecerán destacados en las listas</string> <string name="show_notification_new_chapters_off">No recibirás notificaciones, pero los nuevos capítulos aparecerán destacados en las listas</string>
<string name="notifications_enable">Activar las notificaciones</string> <string name="notifications_enable">Activar las notificaciones</string>
<string name="empty_favourite_categories">No hay categorías favoritas</string> <string name="empty_favourite_categories">No hay categorías favoritas</string>
<string name="name">Nombre</string> <string name="name">Nombre</string>
<string name="edit">Editar</string> <string name="edit">Editar</string>
<string name="edit_category">Editar categoría</string> <string name="edit_category">Editar categoría</string>
<string name="disable_all">Desactivar todo</string> <string name="disable_all">Desactivar todo</string>
<string name="disable_battery_optimization">Desactivar la optimización de la batería</string> <string name="disable_battery_optimization">Desactivar la optimización de la batería</string>
<string name="send">Enviar</string> <string name="send">Enviar</string>
<string name="crash_text">Algo ha ido mal. Por favor, envía un informe de errores a los desarrolladores para ayudarnos a solucionarlo.</string> <string name="crash_text">Algo ha ido mal. Por favor, envía un informe de errores a los desarrolladores para ayudarnos a solucionarlo.</string>
<string name="use_fingerprint">Utilizar la huella dactilar si está disponible</string> <string name="use_fingerprint">Utilizar la huella dactilar si está disponible</string>
<string name="appwidget_shelf_description">Mangas de tus favoritos</string> <string name="appwidget_shelf_description">Mangas de tus favoritos</string>
<string name="appwidget_recent_description">Sus mangas recientemente leídos</string> <string name="appwidget_recent_description">Sus mangas recientemente leídos</string>
<string name="logout">Cerrar sesión</string> <string name="logout">Cerrar sesión</string>
<string name="status_planned">Planeado</string> <string name="status_planned">Planeado</string>
<string name="status_reading">Lectura</string> <string name="status_reading">Lectura</string>
<string name="status_dropped">Abandonado</string> <string name="status_dropped">Abandonado</string>
<string name="status_on_hold">En espera</string> <string name="status_on_hold">En espera</string>
<string name="report">Informar</string> <string name="report">Informar</string>
<string name="tracking">Seguimiento</string> <string name="tracking">Seguimiento</string>
<string name="disable_battery_optimization_summary">Ayuda con las comprobaciones de las actualizaciones en segundo plano</string> <string name="disable_battery_optimization_summary">Ayuda con las comprobaciones de las actualizaciones en segundo plano</string>
<string name="status_re_reading">Relectura</string> <string name="status_re_reading">Relectura</string>
<string name="status_completed">Completado</string> <string name="status_completed">Completado</string>
<string name="show_reading_indicators">Mostrar indicadores de progreso en la lectura</string> <string name="show_reading_indicators">Mostrar indicadores de progreso en la lectura</string>
<string name="data_deletion">Eliminación de datos</string> <string name="data_deletion">Eliminación de datos</string>
<string name="show_reading_indicators_summary">Mostrar porcentaje de lectura en el historial y en los favoritos</string> <string name="show_reading_indicators_summary">Mostrar porcentaje de lectura en el historial y en los favoritos</string>
<string name="exclude_nsfw_from_history_summary">El manga marcado como NSFW nunca se añadirá al historial y no se guardará tu progreso</string> <string name="exclude_nsfw_from_history_summary">El manga marcado como NSFW nunca se añadirá al historial y no se guardará tu progreso</string>
<string name="clear_cookies_summary">Puede ayudar en caso de algunos problemas. Todas las autorizaciones serán invalidadas</string> <string name="clear_cookies_summary">Puede ayudar en caso de algunos problemas. Todas las autorizaciones serán invalidadas</string>
<string name="show_all">Mostrar todo</string> <string name="show_all">Mostrar todo</string>
<string name="invalid_domain_message">Dominio no válido</string> <string name="invalid_domain_message">Dominio no válido</string>
<string name="text_shelf_holder_secondary">Encuentra qué leer en la sección «Explorar»</string> <string name="text_shelf_holder_secondary">Encuentra qué leer en la sección «Explorar»</string>
<string name="account_already_exists">La cuenta ya existe</string> <string name="account_already_exists">La cuenta ya existe</string>
<string name="sync">Sincronización</string> <string name="sync">Sincronización</string>
<string name="email_enter_hint">Introduce tu correo electrónico para continuar</string> <string name="email_enter_hint">Introduce tu correo electrónico para continuar</string>
<string name="last_2_hours">Últimas 2 horas</string> <string name="last_2_hours">Últimas 2 horas</string>
<string name="no_bookmarks_yet">Todavía no hay marcadores</string> <string name="no_bookmarks_yet">Todavía no hay marcadores</string>
<string name="no_bookmarks_summary">Puedes crear marcadores mientras lees el manga</string> <string name="no_bookmarks_summary">Puedes crear marcadores mientras lees el manga</string>
<string name="bookmarks_removed">Marcadores eliminados</string> <string name="bookmarks_removed">Marcadores eliminados</string>
<string name="no_manga_sources_text">Habilitar las fuentes de manga para leer manga en línea</string> <string name="no_manga_sources_text">Habilitar las fuentes de manga para leer manga en línea</string>
<string name="random">Aleatorio</string> <string name="random">Aleatorio</string>
<string name="reorder">Reordenar</string> <string name="reorder">Reordenar</string>
<string name="empty">Vacío</string> <string name="empty">Vacío</string>
<string name="other_cache">Otro caché</string> <string name="other_cache">Otro caché</string>
<string name="storage_usage">Uso del almacenamiento</string> <string name="storage_usage">Uso del almacenamiento</string>
<string name="available">Disponible</string> <string name="available">Disponible</string>
<string name="removed_from_favourites">Eliminado de los favoritos</string> <string name="removed_from_favourites">Eliminado de los favoritos</string>
<string name="options">Opciones</string> <string name="options">Opciones</string>
<string name="incognito_mode">Modo incógnito</string> <string name="incognito_mode">Modo incógnito</string>
<string name="no_chapters">No hay capítulos</string> <string name="no_chapters">No hay capítulos</string>
<string name="reader_info_bar">Mostrar la barra de información en el lector</string> <string name="reader_info_bar">Mostrar la barra de información en el lector</string>
<string name="importing_manga">Importando el manga</string> <string name="importing_manga">Importando el manga</string>
<string name="import_completed">Importación completada</string> <string name="import_completed">Importación completada</string>
<string name="import_will_start_soon">La importación comenzará pronto</string> <string name="import_will_start_soon">La importación comenzará pronto</string>
<string name="canceled">Cancelado</string> <string name="canceled">Cancelado</string>
<string name="back">Atrás</string> <string name="back">Atrás</string>
<string name="sync_title">Sincronizar tus datos</string> <string name="sync_title">Sincronizar tus datos</string>
<string name="text_shelf_holder_primary">Tu manga se mostrará aquí</string> <string name="text_shelf_holder_primary">Tu manga se mostrará aquí</string>
<string name="clear_all_history">Borrar todo el historial</string> <string name="clear_all_history">Borrar todo el historial</string>
<string name="no_manga_sources">Sin fuentes de manga</string> <string name="no_manga_sources">Sin fuentes de manga</string>
<string name="history_cleared">Historial borrado</string> <string name="history_cleared">Historial borrado</string>
<string name="manage">Gestionar</string> <string name="manage">Gestionar</string>
<string name="confirm_exit">Pulsa de nuevo «Atrás» para salir</string> <string name="confirm_exit">Pulsa de nuevo «Atrás» para salir</string>
<string name="folder_with_images">Carpeta con imágenes</string> <string name="folder_with_images">Carpeta con imágenes</string>
<string name="categories_delete_confirm">¿Estás seguro de que quieres eliminar las categorías favoritas seleccionadas\? <string name="categories_delete_confirm">¿Estás seguro de que quieres eliminar las categorías favoritas seleccionadas\?
\nTodos los mangas en ella se perderán y esto no se puede deshacer.</string> \nTodos los mangas en ella se perderán y esto no se puede deshacer.</string>
<string name="explore">Explorar</string> <string name="explore">Explorar</string>
<string name="memory_usage_pattern">%s - %s</string> <string name="memory_usage_pattern">%s - %s</string>
<string name="exit_confirmation_summary">Pulse dos veces «Atrás» para salir de la aplicación</string> <string name="exit_confirmation_summary">Pulse dos veces «Atrás» para salir de la aplicación</string>
<string name="exit_confirmation">Confirmación de salida</string> <string name="exit_confirmation">Confirmación de salida</string>
<string name="pages_cache">Caché de páginas</string> <string name="pages_cache">Caché de páginas</string>
<string name="reader_info_pattern">Cap.%1$d/%2$d Pg.%3$d/%4$d</string> <string name="reader_info_pattern">Cap.%1$d/%2$d Pg.%3$d/%4$d</string>
<string name="saved_manga">Manga guardado</string> <string name="saved_manga">Manga guardado</string>
<string name="automatic_scroll">Desplazamiento automático</string> <string name="automatic_scroll">Desplazamiento automático</string>
<string name="comics_archive">Archivo de cómics</string> <string name="comics_archive">Archivo de cómics</string>
<string name="import_completed_hint">Puedes eliminar el archivo original del almacenamiento para ahorrar espacio</string> <string name="import_completed_hint">Puedes eliminar el archivo original del almacenamiento para ahorrar espacio</string>
<string name="select_range">Selecciona el rango</string> <string name="select_range">Selecciona el rango</string>
<string name="not_found_404">Contenido no encontrado o eliminado</string> <string name="not_found_404">Contenido no encontrado o eliminado</string>
<string name="manga_error_description_pattern">Detalles del error:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Intenta &lt;a href=%2$s&gt;abrir el manga en un navegador web&lt;/a&gt; para asegurarte de que esté disponible en tu fuente&lt;br&gt;2. Asegúrete de estar utilizando la &lt;a href=kotatsu://about&gt;última versión de Kotatsu&lt;/a&gt;&lt;br&gt;3. Si está disponible, envía un informe de error a los desarrolladores.</string> <string name="manga_error_description_pattern">Detalles del error:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Intenta &lt;a href=%2$s&gt;abrir el manga en un navegador web&lt;/a&gt; para asegurarte de que esté disponible en tu fuente&lt;br&gt;2. Asegúrete de estar utilizando la &lt;a href=kotatsu://about&gt;última versión de Kotatsu&lt;/a&gt;&lt;br&gt;3. Si está disponible, envía un informe de error a los desarrolladores.</string>
<string name="history_shortcuts_summary">Hacer que los mangas recientes estén disponibles mediante una pulsación larga en el icono de la aplicación</string> <string name="history_shortcuts_summary">Hacer que los mangas recientes estén disponibles mediante una pulsación larga en el icono de la aplicación</string>
<string name="color_correction_hint">Los ajustes de color elegidos serán recordados para este manga</string> <string name="color_correction_hint">Los ajustes de color elegidos serán recordados para este manga</string>
<string name="feed">Fuente</string> <string name="feed">Fuente</string>
<string name="history_shortcuts">Mostrar los accesos directos a los mangas recientes</string> <string name="history_shortcuts">Mostrar los accesos directos a los mangas recientes</string>
<string name="reader_control_ltr_summary">Tocando el borde derecho o pulsando la tecla derecha se pasa siempre a la página siguiente</string> <string name="reader_control_ltr_summary">Tocando el borde derecho o pulsando la tecla derecha se pasa siempre a la página siguiente</string>
<string name="reader_control_ltr">Control ergonómico del lector</string> <string name="reader_control_ltr">Control ergonómico del lector</string>
<string name="color_correction">Corrección del color</string> <string name="color_correction">Corrección del color</string>
<string name="brightness">Brillo</string> <string name="brightness">Brillo</string>
<string name="contrast">Contraste</string> <string name="contrast">Contraste</string>
<string name="reset">Restablecer</string> <string name="reset">Restablecer</string>
<string name="text_unsaved_changes_prompt">¿Guardar o descartar los cambios no guardados\?</string> <string name="text_unsaved_changes_prompt">¿Guardar o descartar los cambios no guardados\?</string>
<string name="discard">Descartar</string> <string name="discard">Descartar</string>
<string name="error_no_space_left">Sin espacio en dispositivo</string> <string name="error_no_space_left">Sin espacio en dispositivo</string>
<string name="webtoon_zoom">Zoom de webtoon</string> <string name="webtoon_zoom">Zoom de webtoon</string>
<string name="reader_slider">Mostrar el deslizador de cambio de página</string> <string name="reader_slider">Mostrar el deslizador de cambio de página</string>
<string name="server_error">Error del servidor (%1$d). Vuelva a intentarlo más tarde</string> <string name="server_error">Error del servidor (%1$d). Vuelva a intentarlo más tarde</string>
<string name="clear_new_chapters_counters">Información clara sobre los nuevos capítulos</string> <string name="clear_new_chapters_counters">Información clara sobre los nuevos capítulos</string>
<string name="different_languages">Diferentes idiomas</string> <string name="different_languages">Diferentes idiomas</string>
<string name="network_unavailable">La red no está disponible</string> <string name="network_unavailable">La red no está disponible</string>
<string name="compact">Compacta</string> <string name="compact">Compacta</string>
<string name="network_unavailable_hint">Enciende la Wi-Fi o la red móvil para leer los mangas en línea</string> <string name="network_unavailable_hint">Enciende la Wi-Fi o la red móvil para leer los mangas en línea</string>
<string name="source_disabled">Fuente desactivada</string> <string name="source_disabled">Fuente desactivada</string>
<string name="prefetch_content">Precargar el contenido</string> <string name="prefetch_content">Precargar el contenido</string>
<string name="mark_as_current">Marcar como actual</string> <string name="mark_as_current">Marcar como actual</string>
<string name="language">Idioma</string> <string name="language">Idioma</string>
<string name="share_logs">Compartir los registros</string> <string name="share_logs">Compartir los registros</string>
<string name="enable_logging_summary">Grabar algunas acciones para depurar</string> <string name="enable_logging_summary">Grabar algunas acciones para depurar</string>
<string name="enable_logging">Activar el registro</string> <string name="enable_logging">Activar el registro</string>
<string name="show_suspicious_content">Mostrar contenido sospechoso</string> <string name="show_suspicious_content">Mostrar contenido sospechoso</string>
<string name="theme_name_dynamic">Dinámico</string> <string name="theme_name_dynamic">Dinámico</string>
<string name="color_theme">Esquema de colores</string> <string name="color_theme">Esquema de colores</string>
<string name="show_in_grid_view">Mostrar en vista de cuadrícula</string> <string name="show_in_grid_view">Mostrar en vista de cuadrícula</string>
<string name="theme_name_asuka">Asuka</string> <string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string> <string name="theme_name_mion">Mion</string>
<string name="theme_name_rikka">Rikka</string> <string name="theme_name_rikka">Rikka</string>
<string name="theme_name_sakura">Sakura</string> <string name="theme_name_sakura">Sakura</string>
<string name="theme_name_miku">Miku</string> <string name="theme_name_miku">Miku</string>
<string name="nothing_here">No hay nada aquí</string> <string name="nothing_here">No hay nada aquí</string>
<string name="theme_name_mamimi">Mamimi</string> <string name="theme_name_mamimi">Mamimi</string>
<string name="theme_name_kanade">Canadé</string> <string name="theme_name_kanade">Canadé</string>
<string name="scrobbling_empty_hint">Para realizar un seguimiento del progreso de la lectura, seleccione Menú → Seguimiento en la pantalla de detalles del manga.</string> <string name="scrobbling_empty_hint">Para realizar un seguimiento del progreso de la lectura, seleccione Menú → Seguimiento en la pantalla de detalles del manga.</string>
<string name="services">Servicios</string> <string name="services">Servicios</string>
<string name="allow_unstable_updates_summary">Actualizaciones propuestas para las versiones beta de la aplicación</string> <string name="allow_unstable_updates_summary">Actualizaciones propuestas para las versiones beta de la aplicación</string>
<string name="allow_unstable_updates">Permitir actualizaciones inestables</string> <string name="allow_unstable_updates">Permitir actualizaciones inestables</string>
<string name="download_started">Descarga iniciada</string> <string name="download_started">Descarga iniciada</string>
<string name="user_agent">Encabezado del agente de usuario</string> <string name="user_agent">Encabezado del agente de usuario</string>
<string name="settings_apply_restart_required">Por favor, reinicie la aplicación para aplicar estos cambios</string> <string name="settings_apply_restart_required">Por favor, reinicie la aplicación para aplicar estos cambios</string>
<string name="sources_reorder_tip">Mantén pulsado un elemento para reordenarlos</string> <string name="sources_reorder_tip">Mantén pulsado un elemento para reordenarlos</string>
<string name="comics_archive_import_description">Puedes seleccionar uno o más archivos .cbz o .zip, cada archivo será reconocido como un manga independiente.</string> <string name="comics_archive_import_description">Puedes seleccionar uno o más archivos .cbz o .zip, cada archivo será reconocido como un manga independiente.</string>
<string name="folder_with_images_import_description">Puedes seleccionar un directorio con unos archivos o imágenes. Cada archivo (o subdirectorio) se reconocerá como un capítulo.</string> <string name="folder_with_images_import_description">Puedes seleccionar un directorio con unos archivos o imágenes. Cada archivo (o subdirectorio) se reconocerá como un capítulo.</string>
<string name="speed">Velocidad</string> <string name="speed">Velocidad</string>
<string name="restore_backup_description">Importar una copia de seguridad de los datos del usuario creada previamente</string> <string name="restore_backup_description">Importar una copia de seguridad de los datos del usuario creada previamente</string>
<string name="show_on_shelf">Mostrar en la estantería</string> <string name="show_on_shelf">Mostrar en la estantería</string>
<string name="got_it">Entendido</string> <string name="got_it">Entendido</string>
<string name="sync_auth_hint">Puedes acceder a una cuenta existente o crear una nueva</string> <string name="sync_auth_hint">Puedes acceder a una cuenta existente o crear una nueva</string>
<string name="find_similar">Buscar similares</string> <string name="find_similar">Buscar similares</string>
<string name="sync_settings">Parámetros de sincronización</string> <string name="sync_settings">Parámetros de sincronización</string>
<string name="server_address">Dirección del servidor</string> <string name="server_address">Dirección del servidor</string>
<string name="ignore_ssl_errors">Ignorar los errores SSL</string> <string name="ignore_ssl_errors">Ignorar los errores SSL</string>
<string name="mirror_switching">Elige un espejo automáticamente</string> <string name="mirror_switching">Elige un espejo automáticamente</string>
<string name="mirror_switching_summary">Cambio automático de dominios para las fuentes remotas en caso de error si hay réplicas disponibles</string> <string name="mirror_switching_summary">Cambio automático de dominios para las fuentes remotas en caso de error si hay réplicas disponibles</string>
<string name="pause">Pausar</string> <string name="pause">Pausar</string>
<string name="resume">Reanudar</string> <string name="resume">Reanudar</string>
<string name="remove_completed">Eliminación completa</string> <string name="remove_completed">Eliminación completa</string>
<string name="cancel_all">Cancelar todo</string> <string name="cancel_all">Cancelar todo</string>
<string name="downloads_wifi_only">Descargar solo por WiFi</string> <string name="downloads_wifi_only">Descargar solo por WiFi</string>
<string name="downloads_wifi_only_summary">Detener la descarga al cambiar a una red móvil</string> <string name="downloads_wifi_only_summary">Detener la descarga al cambiar a una red móvil</string>
<string name="sync_host_description">Puedes utilizar un servidor de sincronización propio o uno predeterminado. No cambies esto si no estás seguro de lo que haces.</string> <string name="sync_host_description">Puedes utilizar un servidor de sincronización propio o uno predeterminado. No cambies esto si no estás seguro de lo que haces.</string>
<string name="paused">Pausado</string> <string name="paused">Pausado</string>
<string name="enable">Activar</string> <string name="enable">Activar</string>
<string name="no_thanks">No, gracias</string> <string name="no_thanks">No, gracias</string>
</resources> <string name="text_downloads_list_holder">No tienes descargas</string>
<string name="suggestion_manga">Sugerencia: %s</string>
<string name="suggestions_notifications_summary">Algunas veces muestra las notificaciones con el manga sugerido</string>
<string name="downloads_resumed">Las descargas se han reanudado</string>
<string name="more">Más</string>
<string name="cancel_all_downloads_confirm">Todas las descargas activas se cancelarán, los datos descargados parcialmente se perderán</string>
<string name="remove_completed_downloads_confirm">Tu historial de descargas se borrará permanentemente</string>
<string name="downloads_paused">Se han pausado las descargas</string>
<string name="downloads_removed">Las descargas se han eliminado</string>
<string name="downloads_cancelled">Las descargas se han cancelado</string>
<string name="suggestions_enable_prompt">¿Quieres recibir sugerencias sobre mangas personalizadas\?</string>
<string name="translations">Traducciones</string>
<string name="web_view_unavailable">WebView no está disponible: comprueba si el proveedor de WebView está instalado</string>
</resources>

View File

@@ -1,402 +1,413 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="read_more">Lire la suite</string> <string name="read_more">Lire la suite</string>
<string name="tracker_warning">Certains appareils ont un comportement différent du système, ce qui peut interrompre les tâches d\'arrière-plan.</string> <string name="tracker_warning">Certains appareils ont un comportement différent du système, ce qui peut interrompre les tâches d\'arrière-plan.</string>
<string name="backup_saved">Sauvegarde enregistrée</string> <string name="backup_saved">Sauvegarde enregistrée</string>
<string name="welcome">Bienvenue</string> <string name="welcome">Bienvenue</string>
<string name="text_clear_search_history_prompt">Supprimer définitivement toutes les requêtes de recherche récentes \?</string> <string name="text_clear_search_history_prompt">Supprimer définitivement toutes les requêtes de recherche récentes \?</string>
<string name="password_length_hint">Le mot de passe doit comporter 4 caractères ou plus</string> <string name="password_length_hint">Le mot de passe doit comporter 4 caractères ou plus</string>
<string name="confirm">Confirmer</string> <string name="confirm">Confirmer</string>
<string name="protect_application_subtitle">Entrez un mot de passe pour démarrer l\'application avec</string> <string name="protect_application_subtitle">Entrez un mot de passe pour démarrer l\'application avec</string>
<string name="next">Suivant</string> <string name="next">Suivant</string>
<string name="default_s">Par défaut : %s</string> <string name="default_s">Par défaut : %s</string>
<string name="auth_required">Connectez-vous pour voir ce contenu</string> <string name="auth_required">Connectez-vous pour voir ce contenu</string>
<string name="sign_in">Se connecter</string> <string name="sign_in">Se connecter</string>
<string name="reverse">Inverser</string> <string name="reverse">Inverser</string>
<string name="check_for_new_chapters">À la recherche de nouveaux chapitres</string> <string name="check_for_new_chapters">À la recherche de nouveaux chapitres</string>
<string name="text_clear_updates_feed_prompt">Effacer définitivement l\'historique des mises à jour \?</string> <string name="text_clear_updates_feed_prompt">Effacer définitivement l\'historique des mises à jour \?</string>
<string name="clear_feed">Effacer le flux</string> <string name="clear_feed">Effacer le flux</string>
<string name="cookies_cleared">Tous les cookies ont été retirés</string> <string name="cookies_cleared">Tous les cookies ont été retirés</string>
<string name="clear_cookies">Effacer les cookies</string> <string name="clear_cookies">Effacer les cookies</string>
<string name="captcha_solve">Résoudre</string> <string name="captcha_solve">Résoudre</string>
<string name="captcha_required">CAPTCHA requis</string> <string name="captcha_required">CAPTCHA requis</string>
<string name="silent">Silencieux</string> <string name="silent">Silencieux</string>
<string name="reader_mode_hint">On se souviendra de la configuration choisie pour ce manga</string> <string name="reader_mode_hint">On se souviendra de la configuration choisie pour ce manga</string>
<string name="tap_to_try_again">Appuyez pour réessayer</string> <string name="tap_to_try_again">Appuyez pour réessayer</string>
<string name="today">Aujourd\'hui</string> <string name="today">Aujourd\'hui</string>
<string name="group">Groupe</string> <string name="group">Groupe</string>
<string name="long_ago">Il y a longtemps</string> <string name="long_ago">Il y a longtemps</string>
<string name="yesterday">Hier</string> <string name="yesterday">Hier</string>
<string name="just_now">À l\'instant</string> <string name="just_now">À l\'instant</string>
<string name="backup_information">Vous pouvez créer une sauvegarde de votre historique et de vos favoris et la restaurer</string> <string name="backup_information">Vous pouvez créer une sauvegarde de votre historique et de vos favoris et la restaurer</string>
<string name="data_restored_with_errors">Les données ont été restaurées, mais il y a des erreurs</string> <string name="data_restored_with_errors">Les données ont été restaurées, mais il y a des erreurs</string>
<string name="data_restored_success">Toutes les données ont été restaurées</string> <string name="data_restored_success">Toutes les données ont été restaurées</string>
<string name="file_not_found">Fichier introuvable</string> <string name="file_not_found">Fichier introuvable</string>
<string name="preparing_">Préparation…</string> <string name="preparing_">Préparation…</string>
<string name="data_restored">Restauré</string> <string name="data_restored">Restauré</string>
<string name="restore_backup">Restaurer à partir d\'une sauvegarde</string> <string name="restore_backup">Restaurer à partir d\'une sauvegarde</string>
<string name="create_backup">Créer une sauvegarde des données</string> <string name="create_backup">Créer une sauvegarde des données</string>
<string name="backup_restore">Sauvegarde et restauration</string> <string name="backup_restore">Sauvegarde et restauration</string>
<string name="black_dark_theme_summary">Utilise moins d\'énergie pour les écrans AMOLED</string> <string name="black_dark_theme_summary">Utilise moins d\'énergie pour les écrans AMOLED</string>
<string name="black_dark_theme">Noir</string> <string name="black_dark_theme">Noir</string>
<string name="zoom_mode_keep_start">Garder au début</string> <string name="zoom_mode_keep_start">Garder au début</string>
<string name="zoom_mode_fit_width">Ajuster à la largeur</string> <string name="zoom_mode_fit_width">Ajuster à la largeur</string>
<string name="zoom_mode_fit_height">Ajuster à la hauteur</string> <string name="zoom_mode_fit_height">Ajuster à la hauteur</string>
<string name="zoom_mode_fit_center">Ajuster au centre</string> <string name="zoom_mode_fit_center">Ajuster au centre</string>
<string name="scale_mode">Mode mise à l\'échelle</string> <string name="scale_mode">Mode mise à l\'échelle</string>
<string name="create_category">Nouvelle catégorie</string> <string name="create_category">Nouvelle catégorie</string>
<string name="right_to_left">De droite à gauche</string> <string name="right_to_left">De droite à gauche</string>
<string name="no_update_available">Aucune mise à jour disponible</string> <string name="no_update_available">Aucune mise à jour disponible</string>
<string name="check_for_updates">Vérifier les mises à jour</string> <string name="check_for_updates">Vérifier les mises à jour</string>
<string name="app_version">Version %s</string> <string name="app_version">Version %s</string>
<string name="about">À propos</string> <string name="about">À propos</string>
<string name="passwords_mismatch">Les mots de passe ne correspondent pas</string> <string name="passwords_mismatch">Les mots de passe ne correspondent pas</string>
<string name="repeat_password">Répéter le mot de passe</string> <string name="repeat_password">Répéter le mot de passe</string>
<string name="protect_application_summary">Demander le mot de passe au démarrage de Kotatsu</string> <string name="protect_application_summary">Demander le mot de passe au démarrage de Kotatsu</string>
<string name="protect_application">Protéger l\'application</string> <string name="protect_application">Protéger l\'application</string>
<string name="wrong_password">Mot de passe erroné</string> <string name="wrong_password">Mot de passe erroné</string>
<string name="enter_password">Entrez le mot de passe</string> <string name="enter_password">Entrez le mot de passe</string>
<string name="dont_check">Ne pas vérifier</string> <string name="dont_check">Ne pas vérifier</string>
<string name="track_sources">Rechercher les mises à jour</string> <string name="track_sources">Rechercher les mises à jour</string>
<string name="feed_will_update_soon">La mise à jour des flux commencera bientôt</string> <string name="feed_will_update_soon">La mise à jour des flux commencera bientôt</string>
<string name="update">Mettre à Jour</string> <string name="update">Mettre à Jour</string>
<string name="rotate_screen">Faire pivoter l\'écran</string> <string name="rotate_screen">Faire pivoter l\'écran</string>
<string name="updates_feed_cleared">Effacé</string> <string name="updates_feed_cleared">Effacé</string>
<string name="clear_updates_feed">Effacer le flux des mises à jour</string> <string name="clear_updates_feed">Effacer le flux des mises à jour</string>
<string name="size_s">Taille : %s</string> <string name="size_s">Taille : %s</string>
<string name="new_version_s">Nouvelle version : %s</string> <string name="new_version_s">Nouvelle version : %s</string>
<string name="search_results">Résultats de la recherche</string> <string name="search_results">Résultats de la recherche</string>
<string name="text_feed_holder">Les nouveaux chapitres de ce que vous lisez sont présentés ici</string> <string name="text_feed_holder">Les nouveaux chapitres de ce que vous lisez sont présentés ici</string>
<string name="updates">Mises à jour</string> <string name="updates">Mises à jour</string>
<string name="read_later">Lire plus tard</string> <string name="read_later">Lire plus tard</string>
<string name="favourites_category_empty">Catégorie vide</string> <string name="favourites_category_empty">Catégorie vide</string>
<string name="all_favourites">Tous les favoris</string> <string name="all_favourites">Tous les favoris</string>
<string name="done">Terminé</string> <string name="done">Terminé</string>
<string name="other_storage">Autre stockage</string> <string name="other_storage">Autre stockage</string>
<string name="cannot_find_available_storage">Pas de stockage disponible</string> <string name="cannot_find_available_storage">Pas de stockage disponible</string>
<string name="not_available">Non disponible</string> <string name="not_available">Non disponible</string>
<string name="manga_save_location">Dossier pour les téléchargements</string> <string name="manga_save_location">Dossier pour les téléchargements</string>
<string name="pages_animation">Animation de page</string> <string name="pages_animation">Animation de page</string>
<string name="recent_manga">Récents</string> <string name="recent_manga">Récents</string>
<string name="manga_shelf">Étagère</string> <string name="manga_shelf">Étagère</string>
<string name="text_local_holder_secondary">Enregistrez-le à partir de sources en ligne ou importez des fichiers.</string> <string name="text_local_holder_secondary">Enregistrez-le à partir de sources en ligne ou importez des fichiers.</string>
<string name="text_local_holder_primary">Sauvegardez d\'abord quelque chose</string> <string name="text_local_holder_primary">Sauvegardez d\'abord quelque chose</string>
<string name="text_history_holder_secondary">Trouvez ce que vous voulez lire dans le menu latéral.</string> <string name="text_history_holder_secondary">Trouvez ce que vous voulez lire dans le menu latéral.</string>
<string name="text_history_holder_primary">Ce que vous lisez sera affiché ici</string> <string name="text_history_holder_primary">Ce que vous lisez sera affiché ici</string>
<string name="text_search_holder_secondary">Essayez de reformuler la requête.</string> <string name="text_search_holder_secondary">Essayez de reformuler la requête.</string>
<string name="text_empty_holder_primary">C\'est un peu vide ici…</string> <string name="text_empty_holder_primary">C\'est un peu vide ici…</string>
<string name="remove_category">Retirer</string> <string name="remove_category">Retirer</string>
<string name="favourites_categories">Catégories favorites</string> <string name="favourites_categories">Catégories favorites</string>
<string name="vibration">Vibration</string> <string name="vibration">Vibration</string>
<string name="light_indicator">Indicateur lumineux</string> <string name="light_indicator">Indicateur lumineux</string>
<string name="notification_sound">Son de notification</string> <string name="notification_sound">Son de notification</string>
<string name="notifications_settings">Paramètres des notifications</string> <string name="notifications_settings">Paramètres des notifications</string>
<string name="download">Télécharger</string> <string name="download">Télécharger</string>
<string name="new_chapters">Nouveaux chapitres</string> <string name="new_chapters">Nouveaux chapitres</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d de %2$d activé(s)</string> <string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d de %2$d activé(s)</string>
<string name="notifications">Notifications</string> <string name="notifications">Notifications</string>
<string name="large_manga_save_confirm">Ce manga a %s. Tout sauvegarder \?</string> <string name="large_manga_save_confirm">Ce manga a %s. Tout sauvegarder \?</string>
<string name="save_manga">Enregistrer</string> <string name="save_manga">Enregistrer</string>
<string name="open_in_browser">Ouvrir dans le navigateur</string> <string name="open_in_browser">Ouvrir dans le navigateur</string>
<string name="app_update_available">Une nouvelle version de l\'application est disponible</string> <string name="app_update_available">Une nouvelle version de l\'application est disponible</string>
<string name="domain">Domaine</string> <string name="domain">Domaine</string>
<string name="external_storage">Stockage externe</string> <string name="external_storage">Stockage externe</string>
<string name="internal_storage">Stockage interne</string> <string name="internal_storage">Stockage interne</string>
<string name="gestures_only">Gestes uniquement</string> <string name="gestures_only">Gestes uniquement</string>
<string name="search_history_cleared">Effacé</string> <string name="search_history_cleared">Effacé</string>
<string name="clear_search_history">Effacer l\'historique de recherche</string> <string name="clear_search_history">Effacer l\'historique de recherche</string>
<string name="clear_thumbs_cache">Vider le cache des miniatures</string> <string name="clear_thumbs_cache">Vider le cache des miniatures</string>
<string name="error">Erreur</string> <string name="error">Erreur</string>
<string name="_continue">Continuer</string> <string name="_continue">Continuer</string>
<string name="volume_buttons">Boutons de volume</string> <string name="volume_buttons">Boutons de volume</string>
<string name="taps_on_edges">Appuis au bord</string> <string name="taps_on_edges">Appuis au bord</string>
<string name="switch_pages">Changer de pages</string> <string name="switch_pages">Changer de pages</string>
<string name="reader_settings">Paramètres du lecteur</string> <string name="reader_settings">Paramètres du lecteur</string>
<string name="text_delete_local_manga">Supprimer « %s » de l\'appareil de façon permanente \?</string> <string name="text_delete_local_manga">Supprimer « %s » de l\'appareil de façon permanente \?</string>
<string name="delete_manga">Supprimer le manga</string> <string name="delete_manga">Supprimer le manga</string>
<string name="search_on_s">Rechercher sur %s</string> <string name="search_on_s">Rechercher sur %s</string>
<string name="grid_size">Taille de la grille</string> <string name="grid_size">Taille de la grille</string>
<string name="read_mode">Mode lecture</string> <string name="read_mode">Mode lecture</string>
<string name="webtoon">Webtoon</string> <string name="webtoon">Webtoon</string>
<string name="standard">Standard</string> <string name="standard">Standard</string>
<string name="text_file_sizes">o|ko|Mo|Go|To</string> <string name="text_file_sizes">o|ko|Mo|Go|To</string>
<string name="clear_pages_cache">Vider le cache de la page</string> <string name="clear_pages_cache">Vider le cache de la page</string>
<string name="history_and_cache">Historique et cache</string> <string name="history_and_cache">Historique et cache</string>
<string name="no_description">Aucune description</string> <string name="no_description">Aucune description</string>
<string name="text_file_not_supported">Choisissez un fichier ZIP ou CBZ.</string> <string name="text_file_not_supported">Choisissez un fichier ZIP ou CBZ.</string>
<string name="operation_not_supported">Cette opération n\'est pas prise en charge</string> <string name="operation_not_supported">Cette opération n\'est pas prise en charge</string>
<string name="delete">Supprimer</string> <string name="delete">Supprimer</string>
<string name="_import">Importer</string> <string name="_import">Importer</string>
<string name="share_image">Partager l\'image</string> <string name="share_image">Partager l\'image</string>
<string name="page_saved">Sauvegardé</string> <string name="page_saved">Sauvegardé</string>
<string name="save_page">Sauvegarder la page</string> <string name="save_page">Sauvegarder la page</string>
<string name="_s_deleted_from_local_storage">« %s » supprimé du stockage local</string> <string name="_s_deleted_from_local_storage">« %s » supprimé du stockage local</string>
<string name="remove">Retirer</string> <string name="remove">Retirer</string>
<string name="text_clear_history_prompt">Effacer définitivement l\'historique de lecture \?</string> <string name="text_clear_history_prompt">Effacer définitivement l\'historique de lecture \?</string>
<string name="clear">Effacer</string> <string name="clear">Effacer</string>
<string name="pages">Pages</string> <string name="pages">Pages</string>
<string name="automatic">Suivre le système</string> <string name="automatic">Suivre le système</string>
<string name="dark">Sombre</string> <string name="dark">Sombre</string>
<string name="light">Clair</string> <string name="light">Clair</string>
<string name="theme">Thème</string> <string name="theme">Thème</string>
<string name="filter">Filtre</string> <string name="filter">Filtre</string>
<string name="sort_order">Ordre de tri</string> <string name="sort_order">Ordre de tri</string>
<string name="by_rating">Évaluation</string> <string name="by_rating">Évaluation</string>
<string name="newest">Le plus récent</string> <string name="newest">Le plus récent</string>
<string name="updated">Mis à jour</string> <string name="updated">Mis à jour</string>
<string name="popular">Populaire</string> <string name="popular">Populaire</string>
<string name="by_name">Nom</string> <string name="by_name">Nom</string>
<string name="downloads">Téléchargements</string> <string name="downloads">Téléchargements</string>
<string name="download_complete">Téléchargé</string> <string name="download_complete">Téléchargé</string>
<string name="processing_">Traitement…</string> <string name="processing_">Traitement…</string>
<string name="manga_downloading_">Téléchargement…</string> <string name="manga_downloading_">Téléchargement…</string>
<string name="search_manga">Rechercher un manga</string> <string name="search_manga">Rechercher un manga</string>
<string name="search">Rechercher</string> <string name="search">Rechercher</string>
<string name="share_s">Partager %s</string> <string name="share_s">Partager %s</string>
<string name="create_shortcut">Créer un raccourci…</string> <string name="create_shortcut">Créer un raccourci…</string>
<string name="share">Partager</string> <string name="share">Partager</string>
<string name="save">Enregistrer</string> <string name="save">Enregistrer</string>
<string name="add">Ajouter</string> <string name="add">Ajouter</string>
<string name="add_new_category">Nouvelle catégorie</string> <string name="add_new_category">Nouvelle catégorie</string>
<string name="add_to_favourites">Ajouter aux favoris</string> <string name="add_to_favourites">Ajouter aux favoris</string>
<string name="you_have_not_favourites_yet">Aucun favori pour le moment</string> <string name="you_have_not_favourites_yet">Aucun favori pour le moment</string>
<string name="read">Lire</string> <string name="read">Lire</string>
<string name="history_is_empty">Pas encore d\'historique</string> <string name="history_is_empty">Pas encore d\'historique</string>
<string name="nothing_found">Rien n\'a été trouvé</string> <string name="nothing_found">Rien n\'a été trouvé</string>
<string name="clear_history">Effacer l\'historique</string> <string name="clear_history">Effacer l\'historique</string>
<string name="try_again">Réessayer</string> <string name="try_again">Réessayer</string>
<string name="close">Fermer</string> <string name="close">Fermer</string>
<string name="chapter_d_of_d">Chapitre %1$d sur %2$d</string> <string name="chapter_d_of_d">Chapitre %1$d sur %2$d</string>
<string name="loading_">Chargement…</string> <string name="loading_">Chargement…</string>
<string name="remote_sources">Sources des mangas</string> <string name="remote_sources">Sources des mangas</string>
<string name="settings">Paramètres</string> <string name="settings">Paramètres</string>
<string name="list_mode">Mode liste</string> <string name="list_mode">Mode liste</string>
<string name="grid">Grille</string> <string name="grid">Grille</string>
<string name="detailed_list">Liste détaillée</string> <string name="detailed_list">Liste détaillée</string>
<string name="list">Liste</string> <string name="list">Liste</string>
<string name="chapters">Chapitres</string> <string name="chapters">Chapitres</string>
<string name="details">Détails</string> <string name="details">Détails</string>
<string name="network_error">Erreur réseau</string> <string name="network_error">Erreur réseau</string>
<string name="error_occurred">Une erreur s\'est produite</string> <string name="error_occurred">Une erreur s\'est produite</string>
<string name="history">Historique</string> <string name="history">Historique</string>
<string name="favourites">Favoris</string> <string name="favourites">Favoris</string>
<string name="local_storage">Stockage local</string> <string name="local_storage">Stockage local</string>
<string name="chapter_is_missing">Le chapitre est manquant</string> <string name="chapter_is_missing">Le chapitre est manquant</string>
<string name="chapter_is_missing_text">Téléchargez ou lisez ce chapitre manquant en ligne.</string> <string name="chapter_is_missing_text">Téléchargez ou lisez ce chapitre manquant en ligne.</string>
<string name="queued">En file d\'attente</string> <string name="queued">En file d\'attente</string>
<string name="about_app_translation">Traduction</string> <string name="about_app_translation">Traduction</string>
<string name="about_app_translation_summary">Traduire cette application</string> <string name="about_app_translation_summary">Traduire cette application</string>
<string name="genres">Genres</string> <string name="genres">Genres</string>
<string name="text_clear_cookies_prompt">Vous serez déconnecté de toutes les sources</string> <string name="text_clear_cookies_prompt">Vous serez déconnecté de toutes les sources</string>
<string name="auth_not_supported_by">La connexion sur %s n\'est pas prise en charge</string> <string name="auth_not_supported_by">La connexion sur %s n\'est pas prise en charge</string>
<string name="auth_complete">Autorisé</string> <string name="auth_complete">Autorisé</string>
<string name="state_finished">Terminé</string> <string name="state_finished">Terminé</string>
<string name="state_ongoing">En cours</string> <string name="state_ongoing">En cours</string>
<string name="system_default">Par défaut</string> <string name="system_default">Par défaut</string>
<string name="exclude_nsfw_from_history">Exclure les mangas osés de l\'historique</string> <string name="exclude_nsfw_from_history">Exclure les mangas osés de l\'historique</string>
<string name="show_pages_numbers">Pages numérotées</string> <string name="show_pages_numbers">Pages numérotées</string>
<string name="enabled_sources">Sources utilisées</string> <string name="enabled_sources">Sources utilisées</string>
<string name="available_sources">Sources disponibles</string> <string name="available_sources">Sources disponibles</string>
<string name="computing_">Calcul…</string> <string name="computing_">Calcul…</string>
<string name="screenshots_block_nsfw">Bloquer pour contenu sensible</string> <string name="screenshots_block_nsfw">Bloquer pour contenu sensible</string>
<string name="screenshots_block_all">Toujours bloquer</string> <string name="screenshots_block_all">Toujours bloquer</string>
<string name="screenshots_policy">Politique relative aux captures d\'écran</string> <string name="screenshots_policy">Politique relative aux captures d\'écran</string>
<string name="screenshots_allow">Autoriser</string> <string name="screenshots_allow">Autoriser</string>
<string name="suggestions">Suggestions</string> <string name="suggestions">Suggestions</string>
<string name="exclude_nsfw_from_suggestions">Ne pas suggérer de mangas osés</string> <string name="exclude_nsfw_from_suggestions">Ne pas suggérer de mangas osés</string>
<string name="suggestions_enable">Activer les suggestions</string> <string name="suggestions_enable">Activer les suggestions</string>
<string name="suggestions_summary">Suggérer des mangas en fonction de vos préférences</string> <string name="suggestions_summary">Suggérer des mangas en fonction de vos préférences</string>
<string name="suggestions_info">Toutes les données sont analysées localement sur cet appareil et ne sont jamais envoyées ailleurs.</string> <string name="suggestions_info">Toutes les données sont analysées localement sur cet appareil et ne sont jamais envoyées ailleurs.</string>
<string name="text_suggestion_holder">Commencez à lire des mangas et vous recevrez des suggestions personnalisées</string> <string name="text_suggestion_holder">Commencez à lire des mangas et vous recevrez des suggestions personnalisées</string>
<string name="filter_load_error">Impossible de charger la liste des genres</string> <string name="filter_load_error">Impossible de charger la liste des genres</string>
<string name="enabled">Activé</string> <string name="enabled">Activé</string>
<string name="disabled">Désactivé</string> <string name="disabled">Désactivé</string>
<string name="only_using_wifi">Uniquement en Wi-Fi</string> <string name="only_using_wifi">Uniquement en Wi-Fi</string>
<string name="always">Toujours</string> <string name="always">Toujours</string>
<string name="preload_pages">Précharger les pages</string> <string name="preload_pages">Précharger les pages</string>
<string name="find_genre">Trouver le genre</string> <string name="find_genre">Trouver le genre</string>
<string name="never">Jamais</string> <string name="never">Jamais</string>
<string name="reset_filter">Réinitialiser le filtre</string> <string name="reset_filter">Réinitialiser le filtre</string>
<string name="onboard_text">Sélectionnez les langues dans lesquelles vous souhaitez lire les mangas. Vous pouvez le changer plus tard dans les paramètres.</string> <string name="onboard_text">Sélectionnez les langues dans lesquelles vous souhaitez lire les mangas. Vous pouvez le changer plus tard dans les paramètres.</string>
<string name="logged_in_as">Connecté en tant que %s</string> <string name="logged_in_as">Connecté en tant que %s</string>
<string name="nsfw">18+</string> <string name="nsfw">18+</string>
<string name="various_languages">Langues diverses</string> <string name="various_languages">Langues diverses</string>
<string name="search_chapters">Trouver un chapitre</string> <string name="search_chapters">Trouver un chapitre</string>
<string name="chapters_empty">Pas de chapitres dans ce manga</string> <string name="chapters_empty">Pas de chapitres dans ce manga</string>
<string name="percent_string_pattern">%1$s%%</string> <string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Apparence</string> <string name="appearance">Apparence</string>
<string name="content">Contenu</string> <string name="content">Contenu</string>
<string name="suggestions_updating">Mise à jour des suggestions</string> <string name="suggestions_updating">Mise à jour des suggestions</string>
<string name="suggestions_excluded_genres">Exclure des genres</string> <string name="suggestions_excluded_genres">Exclure des genres</string>
<string name="suggestions_excluded_genres_summary">Spécifiez les genres que vous ne voulez pas voir apparaître dans les suggestions</string> <string name="suggestions_excluded_genres_summary">Spécifiez les genres que vous ne voulez pas voir apparaître dans les suggestions</string>
<string name="text_delete_local_manga_batch">Supprimer définitivement les éléments sélectionnés de l\'appareil \?</string> <string name="text_delete_local_manga_batch">Supprimer définitivement les éléments sélectionnés de l\'appareil \?</string>
<string name="removal_completed">Suppression terminée</string> <string name="removal_completed">Suppression terminée</string>
<string name="download_slowdown">Ralentissement du téléchargement</string> <string name="download_slowdown">Ralentissement du téléchargement</string>
<string name="download_slowdown_summary">Permet d\'éviter le blocage de votre adresse IP</string> <string name="download_slowdown_summary">Permet d\'éviter le blocage de votre adresse IP</string>
<string name="chapters_will_removed_background">Les chapitres seront supprimés en arrière-plan</string> <string name="chapters_will_removed_background">Les chapitres seront supprimés en arrière-plan</string>
<string name="local_manga_processing">Traitement des mangas sauvegardés</string> <string name="local_manga_processing">Traitement des mangas sauvegardés</string>
<string name="hide">Masquer</string> <string name="hide">Masquer</string>
<string name="new_sources_text">De nouvelles sources de mangas sont disponibles</string> <string name="new_sources_text">De nouvelles sources de mangas sont disponibles</string>
<string name="check_new_chapters_title">Vérifier les nouveaux chapitres et les notifier</string> <string name="check_new_chapters_title">Vérifier les nouveaux chapitres et les notifier</string>
<string name="notifications_enable">Activer les notifications</string> <string name="notifications_enable">Activer les notifications</string>
<string name="show_notification_new_chapters_on">Vous recevrez des notifications sur les mises à jour des mangas que vous lisez</string> <string name="show_notification_new_chapters_on">Vous recevrez des notifications sur les mises à jour des mangas que vous lisez</string>
<string name="show_notification_new_chapters_off">Vous ne recevrez pas de notifications mais les nouveaux chapitres seront mis en évidence dans les listes</string> <string name="show_notification_new_chapters_off">Vous ne recevrez pas de notifications mais les nouveaux chapitres seront mis en évidence dans les listes</string>
<string name="empty_favourite_categories">Pas de catégories préférées</string> <string name="empty_favourite_categories">Pas de catégories préférées</string>
<string name="name">Nom</string> <string name="name">Nom</string>
<string name="edit">Modifier</string> <string name="edit">Modifier</string>
<string name="edit_category">Modifier la catégorie</string> <string name="edit_category">Modifier la catégorie</string>
<string name="bookmark_add">Ajouter un marque-page</string> <string name="bookmark_add">Ajouter un marque-page</string>
<string name="bookmark_remove">Retirer le marque-page</string> <string name="bookmark_remove">Retirer le marque-page</string>
<string name="bookmarks">Marque-pages</string> <string name="bookmarks">Marque-pages</string>
<string name="bookmark_added">Marque-page ajouté</string> <string name="bookmark_added">Marque-page ajouté</string>
<string name="bookmark_removed">Marque-page retiré</string> <string name="bookmark_removed">Marque-page retiré</string>
<string name="undo">Annuler</string> <string name="undo">Annuler</string>
<string name="removed_from_history">Retiré de l\'historique</string> <string name="removed_from_history">Retiré de l\'historique</string>
<string name="dns_over_https">DNS sur HTTPS</string> <string name="dns_over_https">DNS sur HTTPS</string>
<string name="default_mode">Mode par défaut</string> <string name="default_mode">Mode par défaut</string>
<string name="detect_reader_mode">Mode de détection automatique du lecteur</string> <string name="detect_reader_mode">Mode de détection automatique du lecteur</string>
<string name="detect_reader_mode_summary">Détecter automatiquement si un manga est un webtoon</string> <string name="detect_reader_mode_summary">Détecter automatiquement si un manga est un webtoon</string>
<string name="disable_battery_optimization">Désactiver l\'optimisation de la batterie</string> <string name="disable_battery_optimization">Désactiver l\'optimisation de la batterie</string>
<string name="disable_battery_optimization_summary">Aide à la vérification des mises à jour des antécédents</string> <string name="disable_battery_optimization_summary">Aide à la vérification des mises à jour des antécédents</string>
<string name="crash_text">Un problème est survenu. Veuillez soumettre un rapport de bogue aux développeurs pour nous aider à le corriger.</string> <string name="crash_text">Un problème est survenu. Veuillez soumettre un rapport de bogue aux développeurs pour nous aider à le corriger.</string>
<string name="send">Envoyer</string> <string name="send">Envoyer</string>
<string name="disable_all">Tout désactiver</string> <string name="disable_all">Tout désactiver</string>
<string name="use_fingerprint">Utiliser l\'empreinte digitale si elle est disponible</string> <string name="use_fingerprint">Utiliser l\'empreinte digitale si elle est disponible</string>
<string name="appwidget_recent_description">Vos mangas récemment lus</string> <string name="appwidget_recent_description">Vos mangas récemment lus</string>
<string name="appwidget_shelf_description">Les mangas de vos favoris</string> <string name="appwidget_shelf_description">Les mangas de vos favoris</string>
<string name="report">Signaler</string> <string name="report">Signaler</string>
<string name="tracking">Suivi</string> <string name="tracking">Suivi</string>
<string name="status_planned">Planifié</string> <string name="status_planned">Planifié</string>
<string name="status_reading">Lecture</string> <string name="status_reading">Lecture</string>
<string name="show_reading_indicators">Afficher les indicateurs de progression de lecture</string> <string name="show_reading_indicators">Afficher les indicateurs de progression de lecture</string>
<string name="show_reading_indicators_summary">Afficher le pourcentage de lecture dans l\'historique et les favoris</string> <string name="show_reading_indicators_summary">Afficher le pourcentage de lecture dans l\'historique et les favoris</string>
<string name="exclude_nsfw_from_history_summary">Les mangas marqués comme étant pour adultes ne seront jamais ajoutés à l\'historique et votre progression ne sera pas sauvegardée</string> <string name="exclude_nsfw_from_history_summary">Les mangas marqués comme étant pour adultes ne seront jamais ajoutés à l\'historique et votre progression ne sera pas sauvegardée</string>
<string name="clear_cookies_summary">Peut aider en cas de problème. Toutes les autorisations seront invalidées</string> <string name="clear_cookies_summary">Peut aider en cas de problème. Toutes les autorisations seront invalidées</string>
<string name="show_all">Tout afficher</string> <string name="show_all">Tout afficher</string>
<string name="status_on_hold">En attente</string> <string name="status_on_hold">En attente</string>
<string name="status_dropped">Abandonné</string> <string name="status_dropped">Abandonné</string>
<string name="data_deletion">Suppression des données</string> <string name="data_deletion">Suppression des données</string>
<string name="logout">Se déconnecter</string> <string name="logout">Se déconnecter</string>
<string name="status_completed">Terminé</string> <string name="status_completed">Terminé</string>
<string name="status_re_reading">Relecture</string> <string name="status_re_reading">Relecture</string>
<string name="invalid_domain_message">Domaine invalide</string> <string name="invalid_domain_message">Domaine invalide</string>
<string name="select_range">Sélectionner une plage</string> <string name="select_range">Sélectionner une plage</string>
<string name="not_found_404">Contenu non trouvé ou supprimé</string> <string name="not_found_404">Contenu non trouvé ou supprimé</string>
<string name="manga_error_description_pattern">Détails de l\'erreur:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Essayez d\'&lt;a href=%2$s&gt;ouvrir le manga dans un navigateur web&lt;/a&gt; pour vous assurer qu\'il est disponible sur sa source&lt;br&gt;2. Assurez-vous que vous utilisez la &lt;a href=kotatsu://about&gt;dernière version de Kotatsu&lt;/a&gt;&lt;br&gt;3. Si elle est disponible, envoyez un rapport d\'erreur aux développeurs.</string> <string name="manga_error_description_pattern">Détails de l\'erreur:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Essayez d\'&lt;a href=%2$s&gt;ouvrir le manga dans un navigateur web&lt;/a&gt; pour vous assurer qu\'il est disponible sur sa source&lt;br&gt;2. Assurez-vous que vous utilisez la &lt;a href=kotatsu://about&gt;dernière version de Kotatsu&lt;/a&gt;&lt;br&gt;3. Si elle est disponible, envoyez un rapport d\'erreur aux développeurs.</string>
<string name="confirm_exit">Rappuyez sur Retour pour quitter</string> <string name="confirm_exit">Rappuyez sur Retour pour quitter</string>
<string name="categories_delete_confirm">Êtes-vous sûr·e de vouloir supprimer les catégories de favoris sélectionnées \? <string name="categories_delete_confirm">Êtes-vous sûr·e de vouloir supprimer les catégories de favoris sélectionnées \?
\nTous les mangas qui s\'y trouvent seront perdus et ceci ne peut pas être annulé.</string> \nTous les mangas qui s\'y trouvent seront perdus et ceci ne peut pas être annulé.</string>
<string name="exit_confirmation_summary">Appuyez deux fois sur la touche Retour pour quitter l\'appli</string> <string name="exit_confirmation_summary">Appuyez deux fois sur la touche Retour pour quitter l\'appli</string>
<string name="available">Disponible</string> <string name="available">Disponible</string>
<string name="exit_confirmation">Confirmation de sortie</string> <string name="exit_confirmation">Confirmation de sortie</string>
<string name="memory_usage_pattern">%s - %s</string> <string name="memory_usage_pattern">%s - %s</string>
<string name="feed">Flux</string> <string name="feed">Flux</string>
<string name="importing_manga">Importation de mangas</string> <string name="importing_manga">Importation de mangas</string>
<string name="removed_from_favourites">Retiré des favoris</string> <string name="removed_from_favourites">Retiré des favoris</string>
<string name="clear_all_history">Effacer tout l\'historique</string> <string name="clear_all_history">Effacer tout l\'historique</string>
<string name="last_2_hours">Les 2 dernières heures</string> <string name="last_2_hours">Les 2 dernières heures</string>
<string name="history_cleared">Historique effacé</string> <string name="history_cleared">Historique effacé</string>
<string name="manage">Gérer</string> <string name="manage">Gérer</string>
<string name="no_bookmarks_yet">Aucun marque-page</string> <string name="no_bookmarks_yet">Aucun marque-page</string>
<string name="no_bookmarks_summary">Vous pouvez créer un marque-page pendant la lecture d\'un manga</string> <string name="no_bookmarks_summary">Vous pouvez créer un marque-page pendant la lecture d\'un manga</string>
<string name="bookmarks_removed">Marque-pages supprimés</string> <string name="bookmarks_removed">Marque-pages supprimés</string>
<string name="no_manga_sources">Aucune source de mangas</string> <string name="no_manga_sources">Aucune source de mangas</string>
<string name="no_manga_sources_text">Autoriser les sources de mangas de lire des mangas en ligne</string> <string name="no_manga_sources_text">Autoriser les sources de mangas de lire des mangas en ligne</string>
<string name="random">Aléatoire</string> <string name="random">Aléatoire</string>
<string name="reorder">Réordonner</string> <string name="reorder">Réordonner</string>
<string name="empty">Vide</string> <string name="empty">Vide</string>
<string name="explore">Explorer</string> <string name="explore">Explorer</string>
<string name="text_shelf_holder_primary">Vos mangas seront affichés ici</string> <string name="text_shelf_holder_primary">Vos mangas seront affichés ici</string>
<string name="text_shelf_holder_secondary">Trouvez ce que vous voulez lire dans la section « Explorer »</string> <string name="text_shelf_holder_secondary">Trouvez ce que vous voulez lire dans la section « Explorer »</string>
<string name="canceled">Annulé</string> <string name="canceled">Annulé</string>
<string name="account_already_exists">Le compte existe déjà</string> <string name="account_already_exists">Le compte existe déjà</string>
<string name="back">Retour</string> <string name="back">Retour</string>
<string name="sync">Synchronisation</string> <string name="sync">Synchronisation</string>
<string name="sync_title">Synchronisez vos données</string> <string name="sync_title">Synchronisez vos données</string>
<string name="email_enter_hint">Entrez votre courriel pour continuer</string> <string name="email_enter_hint">Entrez votre courriel pour continuer</string>
<string name="saved_manga">Mangas sauvegardés</string> <string name="saved_manga">Mangas sauvegardés</string>
<string name="pages_cache">Cache des pages</string> <string name="pages_cache">Cache des pages</string>
<string name="other_cache">Autre cache</string> <string name="other_cache">Autre cache</string>
<string name="storage_usage">Utilisation du stockage</string> <string name="storage_usage">Utilisation du stockage</string>
<string name="options">Options</string> <string name="options">Options</string>
<string name="incognito_mode">Mode incognito</string> <string name="incognito_mode">Mode incognito</string>
<string name="no_chapters">Aucun chapitre</string> <string name="no_chapters">Aucun chapitre</string>
<string name="automatic_scroll">Défilement automatique</string> <string name="automatic_scroll">Défilement automatique</string>
<string name="reader_info_pattern">Ch. %1$d/%2$d Pg. %3$d/%4$d</string> <string name="reader_info_pattern">Ch. %1$d/%2$d Pg. %3$d/%4$d</string>
<string name="reader_info_bar">Afficher la barre d\'infos dans le lecteur</string> <string name="reader_info_bar">Afficher la barre d\'infos dans le lecteur</string>
<string name="comics_archive">Archives des BD</string> <string name="comics_archive">Archives des BD</string>
<string name="folder_with_images">Dossier avec des images</string> <string name="folder_with_images">Dossier avec des images</string>
<string name="import_completed">Importation terminée</string> <string name="import_completed">Importation terminée</string>
<string name="import_completed_hint">Vous pouvez supprimer le fichier original du stockage pour gagner de l\'espace</string> <string name="import_completed_hint">Vous pouvez supprimer le fichier original du stockage pour gagner de l\'espace</string>
<string name="import_will_start_soon">L\'importation va bientôt commencer</string> <string name="import_will_start_soon">L\'importation va bientôt commencer</string>
<string name="text_unsaved_changes_prompt">Sauvegarde ou abandon des modifications non sauvegardées \?</string> <string name="text_unsaved_changes_prompt">Sauvegarde ou abandon des modifications non sauvegardées \?</string>
<string name="discard">Abandonner</string> <string name="discard">Abandonner</string>
<string name="history_shortcuts_summary">Rendre les mangas récents disponibles en appuyant longuement sur l\'icône de l\'application</string> <string name="history_shortcuts_summary">Rendre les mangas récents disponibles en appuyant longuement sur l\'icône de l\'application</string>
<string name="reader_control_ltr_summary">Taper sur le bord droit ou appuyer sur la touche droite permet toujours de passer à la page suivante</string> <string name="reader_control_ltr_summary">Taper sur le bord droit ou appuyer sur la touche droite permet toujours de passer à la page suivante</string>
<string name="reader_control_ltr">Contrôle ergonomique du lecteur</string> <string name="reader_control_ltr">Contrôle ergonomique du lecteur</string>
<string name="history_shortcuts">Afficher les raccourcis des mangas récents</string> <string name="history_shortcuts">Afficher les raccourcis des mangas récents</string>
<string name="color_correction">Correction des couleurs</string> <string name="color_correction">Correction des couleurs</string>
<string name="brightness">Luminosité</string> <string name="brightness">Luminosité</string>
<string name="contrast">Contraste</string> <string name="contrast">Contraste</string>
<string name="reset">Réinitialiser</string> <string name="reset">Réinitialiser</string>
<string name="color_correction_hint">Les paramètres de couleurs choisis seront sauvegardés pour ce manga</string> <string name="color_correction_hint">Les paramètres de couleurs choisis seront sauvegardés pour ce manga</string>
<string name="error_no_space_left">Il n\'y a plus d\'espace sur l\'appareil</string> <string name="error_no_space_left">Il n\'y a plus d\'espace sur l\'appareil</string>
<string name="reader_slider">Afficher le curseur de changement de page</string> <string name="reader_slider">Afficher le curseur de changement de page</string>
<string name="webtoon_zoom">Zoom Webtoon</string> <string name="webtoon_zoom">Zoom Webtoon</string>
<string name="network_unavailable_hint">Activez le Wi-Fi ou le réseau mobile pour lire les mangas en ligne</string> <string name="network_unavailable_hint">Activez le Wi-Fi ou le réseau mobile pour lire les mangas en ligne</string>
<string name="different_languages">Différentes langues</string> <string name="different_languages">Différentes langues</string>
<string name="network_unavailable">Le réseau n\'est pas disponible</string> <string name="network_unavailable">Le réseau n\'est pas disponible</string>
<string name="compact">Compact</string> <string name="compact">Compact</string>
<string name="server_error">Erreur côté serveur (%1$d). Veuillez réessayer plus tard</string> <string name="server_error">Erreur côté serveur (%1$d). Veuillez réessayer plus tard</string>
<string name="clear_new_chapters_counters">Effacer aussi les informations sur les nouveaux chapitres</string> <string name="clear_new_chapters_counters">Effacer aussi les informations sur les nouveaux chapitres</string>
<string name="source_disabled">Source désactivée</string> <string name="source_disabled">Source désactivée</string>
<string name="prefetch_content">Préchargement du contenu</string> <string name="prefetch_content">Préchargement du contenu</string>
<string name="mark_as_current">Marquer comme actuel</string> <string name="mark_as_current">Marquer comme actuel</string>
<string name="share_logs">Partager les journaux</string> <string name="share_logs">Partager les journaux</string>
<string name="enable_logging">Activer la journalisation</string> <string name="enable_logging">Activer la journalisation</string>
<string name="enable_logging_summary">Enregistrer certaines actions à des fins de débogage</string> <string name="enable_logging_summary">Enregistrer certaines actions à des fins de débogage</string>
<string name="language">Langue</string> <string name="language">Langue</string>
<string name="show_suspicious_content">Afficher le contenu suspect</string> <string name="show_suspicious_content">Afficher le contenu suspect</string>
<string name="theme_name_dynamic">Dynamique</string> <string name="theme_name_dynamic">Dynamique</string>
<string name="color_theme">Schéma de couleurs</string> <string name="color_theme">Schéma de couleurs</string>
<string name="show_in_grid_view">Afficher en vue grille</string> <string name="show_in_grid_view">Afficher en vue grille</string>
<string name="scrobbling_empty_hint">Pour suivre la progression de la lecture, sélectionnez Menu → Suivre sur l\'écran des détails du manga.</string> <string name="scrobbling_empty_hint">Pour suivre la progression de la lecture, sélectionnez Menu → Suivre sur l\'écran des détails du manga.</string>
<string name="services">Prestations de service</string> <string name="services">Prestations de service</string>
<string name="nothing_here">Il n\'y a rien ici</string> <string name="nothing_here">Il n\'y a rien ici</string>
<string name="theme_name_sakura">Sakura</string> <string name="theme_name_sakura">Sakura</string>
<string name="theme_name_rikka">Rikka</string> <string name="theme_name_rikka">Rikka</string>
<string name="theme_name_miku">Miku</string> <string name="theme_name_miku">Miku</string>
<string name="theme_name_asuka">Asuka</string> <string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string> <string name="theme_name_mion">Mion</string>
<string name="theme_name_mamimi">Mamimi</string> <string name="theme_name_mamimi">Mamimi</string>
<string name="allow_unstable_updates">Autoriser les mises à jour instables</string> <string name="allow_unstable_updates">Autoriser les mises à jour instables</string>
<string name="download_started">Téléchargement commencé</string> <string name="download_started">Téléchargement commencé</string>
<string name="theme_name_kanade">Kanade</string> <string name="theme_name_kanade">Kanade</string>
<string name="allow_unstable_updates_summary">Proposer des mises à jour des versions bêta de l\'application</string> <string name="allow_unstable_updates_summary">Proposer des mises à jour des versions bêta de l\'application</string>
<string name="user_agent">En-tête UserAgent</string> <string name="user_agent">En-tête UserAgent</string>
<string name="settings_apply_restart_required">Veuillez redémarrer l\'application pour appliquer ces changements</string> <string name="settings_apply_restart_required">Veuillez redémarrer l\'application pour appliquer ces changements</string>
<string name="got_it">Compris</string> <string name="got_it">Compris</string>
<string name="speed">Vitesse</string> <string name="speed">Vitesse</string>
<string name="restore_backup_description">Importer une sauvegarde des données de l\'utilisateur créée précédemment</string> <string name="restore_backup_description">Importer une sauvegarde des données de l\'utilisateur créée précédemment</string>
<string name="folder_with_images_import_description">Vous pouvez sélectionner un répertoire contenant des archives ou des images. Chaque archive (ou sous-répertoire) sera reconnue comme un chapitre.</string> <string name="folder_with_images_import_description">Vous pouvez sélectionner un répertoire contenant des archives ou des images. Chaque archive (ou sous-répertoire) sera reconnue comme un chapitre.</string>
<string name="comics_archive_import_description">Vous pouvez sélectionner un ou plusieurs fichiers .cbz ou .zip, chaque fichier sera reconnu comme un manga séparé.</string> <string name="comics_archive_import_description">Vous pouvez sélectionner un ou plusieurs fichiers .cbz ou .zip, chaque fichier sera reconnu comme un manga séparé.</string>
<string name="show_on_shelf">Afficher sur l\'étagère</string> <string name="show_on_shelf">Afficher sur l\'étagère</string>
<string name="sources_reorder_tip">Appuyez sur un élément et maintenez-le enfoncé pour le réorganiser</string> <string name="sources_reorder_tip">Appuyez sur un élément et maintenez-le enfoncé pour le réorganiser</string>
<string name="find_similar">Trouver des similaires</string> <string name="find_similar">Trouver des similaires</string>
<string name="downloads_wifi_only_summary">Arrêter le téléchargement lors du passage à un réseau mobile</string> <string name="downloads_wifi_only_summary">Arrêter le téléchargement lors du passage à un réseau mobile</string>
<string name="sync_auth_hint">Vous pouvez vous connecter à un compte existant ou en créer un nouveau</string> <string name="sync_auth_hint">Vous pouvez vous connecter à un compte existant ou en créer un nouveau</string>
<string name="server_address">Adresse du serveur</string> <string name="server_address">Adresse du serveur</string>
<string name="sync_host_description">Vous pouvez utiliser un serveur de synchronisation autohébergé ou un serveur par défaut. Ne modifiez pas ce paramètre si vous n\'êtes pas sûr·e de ce que vous faites.</string> <string name="sync_host_description">Vous pouvez utiliser un serveur de synchronisation autohébergé ou un serveur par défaut. Ne modifiez pas ce paramètre si vous n\'êtes pas sûr·e de ce que vous faites.</string>
<string name="remove_completed">Retrait terminé</string> <string name="remove_completed">Retrait terminé</string>
<string name="enable">Activer</string> <string name="enable">Activer</string>
<string name="no_thanks">Non merci</string> <string name="no_thanks">Non merci</string>
<string name="sync_settings">Paramètres de synchronisation</string> <string name="sync_settings">Paramètres de synchronisation</string>
<string name="ignore_ssl_errors">Ignorer les erreurs SSL</string> <string name="ignore_ssl_errors">Ignorer les erreurs SSL</string>
<string name="mirror_switching">Choisir le miroir automatiquement</string> <string name="mirror_switching">Choisir le miroir automatiquement</string>
<string name="mirror_switching_summary">Changement automatique de domaine pour les sources distantes en cas d\'erreur si des miroirs sont disponibles</string> <string name="mirror_switching_summary">Changement automatique de domaine pour les sources distantes en cas d\'erreur si des miroirs sont disponibles</string>
<string name="pause">Mettre en pause</string> <string name="pause">Mettre en pause</string>
<string name="resume">Reprendre</string> <string name="resume">Reprendre</string>
<string name="paused">En pause</string> <string name="paused">En pause</string>
<string name="cancel_all">Tout annuler</string> <string name="cancel_all">Tout annuler</string>
<string name="downloads_wifi_only">Téléchargement uniquement via Wi-Fi</string> <string name="downloads_wifi_only">Téléchargement uniquement via Wi-Fi</string>
</resources> <string name="remove_completed_downloads_confirm">L\'historique de vos téléchargements sera définitivement supprimé</string>
<string name="suggestions_notifications_summary">Notifications parfois affichées avec des mangas suggérés</string>
<string name="cancel_all_downloads_confirm">Tous les téléchargements actifs seront annulés, les données partiellement téléchargées seront perdues</string>
<string name="downloads_paused">Les téléchargements ont été interrompus</string>
<string name="suggestion_manga">Suggestion : %s</string>
<string name="more">Plus</string>
<string name="text_downloads_list_holder">Vous n\'avez pas de téléchargements</string>
<string name="downloads_resumed">Les téléchargements ont repris</string>
<string name="downloads_removed">Les téléchargements ont été supprimés</string>
<string name="downloads_cancelled">Les téléchargements ont été annulés</string>
<string name="suggestions_enable_prompt">Voulez-vous recevoir des suggestions de mangas personnalisées \?</string>
</resources>

View File

@@ -1,386 +1,413 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="local_storage">Sumber lokal</string> <string name="local_storage">Lokal</string>
<string name="favourites">Favorit</string> <string name="favourites">Favorit</string>
<string name="history">Riwayat</string> <string name="history">Riwayat</string>
<string name="error_occurred">Terjadi kesalahan</string> <string name="error_occurred">Terjadi kesalahan</string>
<string name="network_error">Kesalahan jaringan</string> <string name="network_error">Kesalahan jaringan</string>
<string name="details">Detail</string> <string name="details">Detail</string>
<string name="grid">Kisi</string> <string name="grid">Kisi</string>
<string name="list_mode">Mode daftar</string> <string name="list_mode">Mode daftar</string>
<string name="settings">Pengaturan</string> <string name="settings">Pengaturan</string>
<string name="remote_sources">Sumber jarak jauh</string> <string name="remote_sources">Sumber jarak jauh</string>
<string name="loading_">Memuat…</string> <string name="loading_">Memuat…</string>
<string name="computing_">Menghitung…</string> <string name="computing_">Menghitung…</string>
<string name="chapter_d_of_d">Bab %1$d dari %2$d</string> <string name="chapter_d_of_d">Bab %1$d dari %2$d</string>
<string name="close">Tutup</string> <string name="close">Tutup</string>
<string name="try_again">Coba lagi</string> <string name="try_again">Coba lagi</string>
<string name="nothing_found">Nihil</string> <string name="nothing_found">Nihil</string>
<string name="history_is_empty">Belum ada riwayat</string> <string name="history_is_empty">Belum ada riwayat</string>
<string name="read">Baca</string> <string name="read">Baca</string>
<string name="you_have_not_favourites_yet">Belum ada favorit</string> <string name="you_have_not_favourites_yet">Belum ada favorit</string>
<string name="add_to_favourites">Favoritkan ini</string> <string name="add_to_favourites">Favoritkan ini</string>
<string name="add_new_category">Kategori baru</string> <string name="add_new_category">Kategori baru</string>
<string name="add">Tambah</string> <string name="add">Tambah</string>
<string name="save">Simpan</string> <string name="save">Simpan</string>
<string name="share">Bagikan</string> <string name="share">Bagikan</string>
<string name="create_shortcut">Buat pintasan…</string> <string name="create_shortcut">Buat pintasan…</string>
<string name="share_s">Bagikan %s</string> <string name="share_s">Bagikan %s</string>
<string name="search">Cari</string> <string name="search">Cari</string>
<string name="search_manga">Cari komik</string> <string name="search_manga">Cari komik</string>
<string name="manga_downloading_">Mengunduh…</string> <string name="manga_downloading_">Mengunduh…</string>
<string name="processing_">Memproses…</string> <string name="processing_">Memproses…</string>
<string name="download_complete">Diunduh</string> <string name="download_complete">Diunduh</string>
<string name="downloads">Unduhan</string> <string name="downloads">Unduhan</string>
<string name="by_name">Nama</string> <string name="by_name">Nama</string>
<string name="popular">Populer</string> <string name="popular">Populer</string>
<string name="updated">Diperbarui</string> <string name="updated">Diperbarui</string>
<string name="newest">Terbaru</string> <string name="newest">Terbaru</string>
<string name="by_rating">Peringkat</string> <string name="by_rating">Peringkat</string>
<string name="sort_order">Urutan penyortiran</string> <string name="sort_order">Urutan penyortiran</string>
<string name="filter">Saring</string> <string name="filter">Saring</string>
<string name="theme">Tema</string> <string name="theme">Tema</string>
<string name="light">Terang</string> <string name="light">Terang</string>
<string name="dark">Gelap</string> <string name="dark">Gelap</string>
<string name="automatic">Ikuti sistem</string> <string name="automatic">Ikuti sistem</string>
<string name="pages">Halaman</string> <string name="pages">Halaman</string>
<string name="clear">Bersihkan</string> <string name="clear">Bersihkan</string>
<string name="remove">Hapus</string> <string name="remove">Hapus</string>
<string name="clear_history">Bersihkan riwayat</string> <string name="clear_history">Bersihkan riwayat</string>
<string name="delete">Hapus</string> <string name="delete">Hapus</string>
<string name="operation_not_supported">Tindakan ini tidak didukung</string> <string name="operation_not_supported">Tindakan ini tidak didukung</string>
<string name="text_file_not_supported">Pilih antara berkas ZIP atau CBZ.</string> <string name="text_file_not_supported">Pilih antara berkas ZIP atau CBZ.</string>
<string name="no_description">Tidak ada deskripsi</string> <string name="no_description">Tidak ada deskripsi</string>
<string name="_s_deleted_from_local_storage">\"%s\" dihapus dari penyimpanan lokal</string> <string name="_s_deleted_from_local_storage">\"%s\" dihapus dari penyimpanan lokal</string>
<string name="save_page">Simpan halaman</string> <string name="save_page">Simpan halaman</string>
<string name="page_saved">Disimpan</string> <string name="page_saved">Disimpan</string>
<string name="share_image">Bagikan gambar</string> <string name="share_image">Bagikan gambar</string>
<string name="_import">Impor</string> <string name="_import">Impor</string>
<string name="history_and_cache">Riwayat dan cache</string> <string name="history_and_cache">Riwayat dan cache</string>
<string name="clear_pages_cache">Bersihkan cache halaman</string> <string name="clear_pages_cache">Bersihkan cache halaman</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string> <string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="standard">Standar</string> <string name="standard">Standar</string>
<string name="grid_size">Ukuran kisi</string> <string name="grid_size">Ukuran kisi</string>
<string name="search_on_s">Cari di %s</string> <string name="search_on_s">Cari di %s</string>
<string name="delete_manga">Hapus komik</string> <string name="delete_manga">Hapus komik</string>
<string name="text_delete_local_manga">Hapus \"%s\" dari perangkat secara permanen\?</string> <string name="text_delete_local_manga">Hapus \"%s\" dari perangkat secara permanen\?</string>
<string name="reader_settings">Pengaturan pembaca</string> <string name="reader_settings">Pengaturan pembaca</string>
<string name="switch_pages">Ganti halaman</string> <string name="switch_pages">Ganti halaman</string>
<string name="chapters">Bab</string> <string name="chapters">Bab</string>
<string name="list">Daftar</string> <string name="list">Daftar</string>
<string name="detailed_list">Daftar terperinci</string> <string name="detailed_list">Daftar terperinci</string>
<string name="text_clear_history_prompt">Bersihkan semua riwayat baca secara permanen\?</string> <string name="text_clear_history_prompt">Bersihkan semua riwayat baca secara permanen\?</string>
<string name="webtoon">Webtoon</string> <string name="webtoon">Webtoon</string>
<string name="read_mode">Mode baca</string> <string name="read_mode">Mode baca</string>
<string name="volume_buttons">Tombol volume</string> <string name="volume_buttons">Tombol volume</string>
<string name="_continue">Lanjut</string> <string name="_continue">Lanjut</string>
<string name="clear_thumbs_cache">Bersihkan cache gambar mini</string> <string name="clear_thumbs_cache">Bersihkan cache gambar mini</string>
<string name="clear_search_history">Bersihkan riwayat pencarian</string> <string name="clear_search_history">Bersihkan riwayat pencarian</string>
<string name="search_history_cleared">Dibersihkan</string> <string name="search_history_cleared">Dibersihkan</string>
<string name="domain">Domain</string> <string name="domain">Domain</string>
<string name="app_update_available">Versi baru aplikasi tersedia</string> <string name="app_update_available">Versi baru aplikasi tersedia</string>
<string name="open_in_browser">Buka di peramban web</string> <string name="open_in_browser">Buka di peramban web</string>
<string name="save_manga">Simpan</string> <string name="save_manga">Simpan</string>
<string name="notifications">Pemberitahuan</string> <string name="notifications">Pemberitahuan</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d dari %2$d diaktifkan</string> <string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d dari %2$d diaktifkan</string>
<string name="new_chapters">Bab baru</string> <string name="new_chapters">Bab baru</string>
<string name="download">Unduh</string> <string name="download">Unduh</string>
<string name="notifications_settings">Pengaturan pemberitahuan</string> <string name="notifications_settings">Pengaturan pemberitahuan</string>
<string name="notification_sound">Suara pemberitahuan</string> <string name="notification_sound">Suara pemberitahuan</string>
<string name="text_empty_holder_primary">Sepi juga di sini…</string> <string name="text_empty_holder_primary">Sepi juga di sini…</string>
<string name="text_history_holder_primary">Apa yang Anda baca akan ditampilkan di sini</string> <string name="text_history_holder_primary">Apa yang Anda baca akan ditampilkan di sini</string>
<string name="text_history_holder_secondary">Cari apa untuk di baca di bilah samping.</string> <string name="text_history_holder_secondary">Cari apa untuk di baca di bilah samping.</string>
<string name="text_local_holder_primary">Simpan sesuatu dulu</string> <string name="text_local_holder_primary">Simpan sesuatu dulu</string>
<string name="manga_shelf">Rak</string> <string name="manga_shelf">Rak</string>
<string name="recent_manga">Baru-baru ini</string> <string name="recent_manga">Baru-baru ini</string>
<string name="pages_animation">Animasi halaman</string> <string name="pages_animation">Animasi halaman</string>
<string name="manga_save_location">Folder unduhan</string> <string name="manga_save_location">Folder unduhan</string>
<string name="not_available">Tidak tersedia</string> <string name="not_available">Tidak tersedia</string>
<string name="cannot_find_available_storage">Tidak ada penyimpanan yang tersedia</string> <string name="cannot_find_available_storage">Tidak ada penyimpanan yang tersedia</string>
<string name="other_storage">Penyimpanan lain</string> <string name="other_storage">Penyimpanan lain</string>
<string name="done">Selesai</string> <string name="done">Selesai</string>
<string name="all_favourites">Semua favorit</string> <string name="all_favourites">Semua favorit</string>
<string name="favourites_category_empty">Kategori kosong</string> <string name="favourites_category_empty">Kategori kosong</string>
<string name="read_later">Baca nanti</string> <string name="read_later">Baca nanti</string>
<string name="updates">Pembaruan</string> <string name="updates">Pembaruan</string>
<string name="text_feed_holder">Bab baru dari apa yang Anda baca ditampilkan di sini</string> <string name="text_feed_holder">Bab baru dari apa yang Anda baca ditampilkan di sini</string>
<string name="search_results">Hasil pencarian</string> <string name="search_results">Hasil pencarian</string>
<string name="new_version_s">Versi baru: %s</string> <string name="new_version_s">Versi baru: %s</string>
<string name="size_s">Ukuran: %s</string> <string name="size_s">Ukuran: %s</string>
<string name="updates_feed_cleared">Dibersihkan</string> <string name="updates_feed_cleared">Dibersihkan</string>
<string name="update">Pembaruan</string> <string name="update">Pembaruan</string>
<string name="track_sources">Mencari pembaruan</string> <string name="track_sources">Mencari pembaruan</string>
<string name="dont_check">Jangan periksa</string> <string name="dont_check">Jangan periksa</string>
<string name="wrong_password">Kata sandi salah</string> <string name="wrong_password">Kata sandi salah</string>
<string name="protect_application">Lindungi aplikasi</string> <string name="protect_application">Lindungi aplikasi</string>
<string name="repeat_password">Ulangi kata sandi</string> <string name="repeat_password">Ulangi kata sandi</string>
<string name="scale_mode">Mode skala</string> <string name="scale_mode">Mode skala</string>
<string name="create_backup">Buat cadangan data</string> <string name="create_backup">Buat cadangan data</string>
<string name="data_restored">Dipulihkan</string> <string name="data_restored">Dipulihkan</string>
<string name="data_restored_success">Semua data dipulihkan</string> <string name="data_restored_success">Semua data dipulihkan</string>
<string name="data_restored_with_errors">Data berhasil dipulihkan, tapi ada kesalahan</string> <string name="data_restored_with_errors">Data berhasil dipulihkan, tapi ada kesalahan</string>
<string name="backup_information">Anda dapat membuat cadangan riwayat dan favorit Anda dan memulihkannya</string> <string name="backup_information">Anda dapat membuat cadangan riwayat dan favorit Anda dan memulihkannya</string>
<string name="just_now">Baru saja</string> <string name="just_now">Baru saja</string>
<string name="long_ago">Lama</string> <string name="long_ago">Lama</string>
<string name="group">Kelompok</string> <string name="group">Kelompok</string>
<string name="today">Hari ini</string> <string name="today">Hari ini</string>
<string name="tap_to_try_again">Ketuk untuk coba lagi</string> <string name="tap_to_try_again">Ketuk untuk coba lagi</string>
<string name="reader_mode_hint">Konfigurasi yang dipilih akan diingat untuk komik ini</string> <string name="reader_mode_hint">Konfigurasi yang dipilih akan diingat untuk komik ini</string>
<string name="silent">Diam</string> <string name="silent">Diam</string>
<string name="captcha_required">CAPTCHA diperlukan</string> <string name="captcha_required">CAPTCHA diperlukan</string>
<string name="captcha_solve">Selesaikan</string> <string name="captcha_solve">Selesaikan</string>
<string name="clear_cookies">Bersihkan kuki</string> <string name="clear_cookies">Bersihkan kuki</string>
<string name="cookies_cleared">Semua kuki telah dihapus</string> <string name="cookies_cleared">Semua kuki telah dihapus</string>
<string name="clear_feed">Bersihkan umpan</string> <string name="clear_feed">Bersihkan umpan</string>
<string name="check_for_new_chapters">Periksa bab baru</string> <string name="check_for_new_chapters">Periksa bab baru</string>
<string name="auth_required">Masuk untuk melihat konten ini</string> <string name="auth_required">Masuk untuk melihat konten ini</string>
<string name="next">Selanjutnya</string> <string name="next">Selanjutnya</string>
<string name="protect_application_subtitle">Masukkan kata sandi untuk memulai aplikasi</string> <string name="protect_application_subtitle">Masukkan kata sandi untuk memulai aplikasi</string>
<string name="confirm">Konfirmasi</string> <string name="confirm">Konfirmasi</string>
<string name="text_clear_search_history_prompt">Hapus semua kueri pencarian baru-baru ini secara permanen\?</string> <string name="text_clear_search_history_prompt">Hapus semua kueri pencarian baru-baru ini secara permanen\?</string>
<string name="welcome">Selamat Datang</string> <string name="welcome">Selamat Datang</string>
<string name="backup_saved">Cadangan disimpan</string> <string name="backup_saved">Cadangan disimpan</string>
<string name="tracker_warning">Beberapa perangkat mempunyai perilaku sistem yang berbeda, yang mungkin akan merusak tugas latar belakang.</string> <string name="tracker_warning">Beberapa perangkat mempunyai perilaku sistem yang berbeda, yang mungkin akan merusak tugas latar belakang.</string>
<string name="read_more">Baca lebih lanjut</string> <string name="read_more">Baca lebih lanjut</string>
<string name="chapter_is_missing">Bab ini menghilang</string> <string name="chapter_is_missing">Bab ini menghilang</string>
<string name="about_app_translation">Terjemahan</string> <string name="about_app_translation">Terjemahan</string>
<string name="auth_not_supported_by">Masuk pada %s tidak didukung</string> <string name="auth_not_supported_by">Masuk pada %s tidak didukung</string>
<string name="text_clear_cookies_prompt">Anda akan keluar dari semua sumber</string> <string name="text_clear_cookies_prompt">Anda akan keluar dari semua sumber</string>
<string name="genres">Genre</string> <string name="genres">Genre</string>
<string name="state_finished">Selesai</string> <string name="state_finished">Selesai</string>
<string name="state_ongoing">Berlanjut</string> <string name="state_ongoing">Berlanjut</string>
<string name="system_default">Standar</string> <string name="system_default">Standar</string>
<string name="exclude_nsfw_from_history">Kecualikan komik NSFW dari riwayat</string> <string name="exclude_nsfw_from_history">Kecualikan komik NSFW dari riwayat</string>
<string name="show_pages_numbers">Nomor halaman</string> <string name="show_pages_numbers">Nomor halaman</string>
<string name="enabled_sources">Sumber yang digunakan</string> <string name="enabled_sources">Sumber yang digunakan</string>
<string name="available_sources">Sumber yang tersedia</string> <string name="available_sources">Sumber yang tersedia</string>
<string name="screenshots_policy">Kebijakan tangkapan layar</string> <string name="screenshots_policy">Kebijakan tangkapan layar</string>
<string name="screenshots_allow">Bolehkan</string> <string name="screenshots_allow">Bolehkan</string>
<string name="screenshots_block_nsfw">Blokir pada NSFW</string> <string name="screenshots_block_nsfw">Blokir pada NSFW</string>
<string name="screenshots_block_all">Selalu blokir</string> <string name="screenshots_block_all">Selalu blokir</string>
<string name="suggestions">Saran</string> <string name="suggestions">Saran</string>
<string name="suggestions_enable">Aktifkan saran</string> <string name="suggestions_enable">Aktifkan saran</string>
<string name="suggestions_summary">Sarankan komik berdasarkan preferensi Anda</string> <string name="suggestions_summary">Sarankan komik berdasarkan preferensi Anda</string>
<string name="suggestions_info">Semua data hanya dianalisis secara lokal pada perangkat ini dan tidak pernah dikirim ke mana pun.</string> <string name="suggestions_info">Semua data hanya dianalisis secara lokal pada perangkat ini dan tidak pernah dikirim ke mana pun.</string>
<string name="text_suggestion_holder">Mulai membaca komik dan Anda akan mendapatkan saran yang dipersonalisasi</string> <string name="text_suggestion_holder">Mulai membaca komik dan Anda akan mendapatkan saran yang dipersonalisasi</string>
<string name="exclude_nsfw_from_suggestions">Jangan menyarankan komik NSFW</string> <string name="exclude_nsfw_from_suggestions">Jangan menyarankan komik NSFW</string>
<string name="always">Selalu</string> <string name="always">Selalu</string>
<string name="preload_pages">Muat ulang halaman</string> <string name="preload_pages">Muat ulang halaman</string>
<string name="logged_in_as">Masuk sebagai %s</string> <string name="logged_in_as">Masuk sebagai %s</string>
<string name="enabled">Diaktifkan</string> <string name="enabled">Diaktifkan</string>
<string name="disabled">Dinonaktifkan</string> <string name="disabled">Dinonaktifkan</string>
<string name="filter_load_error">Tidak bisa memuat daftar genre</string> <string name="filter_load_error">Tidak bisa memuat daftar genre</string>
<string name="reset_filter">Atur ulang filter</string> <string name="reset_filter">Atur ulang filter</string>
<string name="find_genre">Cari genre</string> <string name="find_genre">Cari genre</string>
<string name="onboard_text">Pilih bahasa komik yang ingin Anda baca. Anda bisa mengubahnya nanti di pengaturan.</string> <string name="onboard_text">Pilih bahasa komik yang ingin Anda baca. Anda bisa mengubahnya nanti di pengaturan.</string>
<string name="never">Jangan Pernah</string> <string name="never">Jangan Pernah</string>
<string name="only_using_wifi">Hanya di Wi-Fi</string> <string name="only_using_wifi">Hanya di Wi-Fi</string>
<string name="nsfw">18+</string> <string name="nsfw">18+</string>
<string name="various_languages">Berbagai bahasa</string> <string name="various_languages">Berbagai bahasa</string>
<string name="search_chapters">Cari bab</string> <string name="search_chapters">Cari bab</string>
<string name="chapters_empty">Tidak ada bab di komik ini</string> <string name="chapters_empty">Tidak ada bab di komik ini</string>
<string name="percent_string_pattern">%1$s%%</string> <string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Tampilan</string> <string name="appearance">Tampilan</string>
<string name="content">Konten</string> <string name="content">Konten</string>
<string name="suggestions_excluded_genres">Kecualikan genre</string> <string name="suggestions_excluded_genres">Kecualikan genre</string>
<string name="suggestions_excluded_genres_summary">Tentukan genre yang Anda tidak ingin lihat di saran</string> <string name="suggestions_excluded_genres_summary">Tentukan genre yang Anda tidak ingin lihat di saran</string>
<string name="text_delete_local_manga_batch">Hapus yang dipilih dari perangkat secara permanen\?</string> <string name="text_delete_local_manga_batch">Hapus yang dipilih dari perangkat secara permanen\?</string>
<string name="removal_completed">Selesai menghapus</string> <string name="removal_completed">Selesai menghapus</string>
<string name="download_slowdown">Perlambat unduhan</string> <string name="download_slowdown">Perlambat unduhan</string>
<string name="suggestions_updating">Pembaruan saran</string> <string name="suggestions_updating">Pembaruan saran</string>
<string name="download_slowdown_summary">Membantu menghidari pemblokiran alamat IP Anda</string> <string name="download_slowdown_summary">Membantu menghidari pemblokiran alamat IP Anda</string>
<string name="chapters_will_removed_background">Bab akan dihapus di latar belakang</string> <string name="chapters_will_removed_background">Bab akan dihapus di latar belakang</string>
<string name="hide">Sembunyikan</string> <string name="hide">Sembunyikan</string>
<string name="new_sources_text">Tersedia sumber komik baru</string> <string name="new_sources_text">Tersedia sumber komik baru</string>
<string name="check_new_chapters_title">Periksa bab baru dan beri tahu tentang itu</string> <string name="check_new_chapters_title">Periksa bab baru dan beri tahu tentang itu</string>
<string name="show_notification_new_chapters_on">Anda akan menerima pemberitahuan tentang pembaruan komik yang Anda baca</string> <string name="show_notification_new_chapters_on">Anda akan menerima pemberitahuan tentang pembaruan komik yang Anda baca</string>
<string name="show_notification_new_chapters_off">Anda tidak akan menerima pemberitahuan, tapi bab baru akan disorot di daftar</string> <string name="show_notification_new_chapters_off">Anda tidak akan menerima pemberitahuan, tapi bab baru akan disorot di daftar</string>
<string name="notifications_enable">Aktifkan pemberitahuan</string> <string name="notifications_enable">Aktifkan pemberitahuan</string>
<string name="name">Nama</string> <string name="name">Nama</string>
<string name="edit">Sunting</string> <string name="edit">Sunting</string>
<string name="edit_category">Sunting kategori</string> <string name="edit_category">Sunting kategori</string>
<string name="empty_favourite_categories">Tidak ada kategori favorit</string> <string name="empty_favourite_categories">Tidak ada kategori favorit</string>
<string name="bookmark_add">Tambah markah</string> <string name="bookmark_add">Tambah markah</string>
<string name="bookmark_remove">Hapus markah</string> <string name="bookmark_remove">Hapus markah</string>
<string name="bookmarks">Markah</string> <string name="bookmarks">Markah</string>
<string name="bookmark_removed">Markah dihapus</string> <string name="bookmark_removed">Markah dihapus</string>
<string name="bookmark_added">Markah ditambahkan</string> <string name="bookmark_added">Markah ditambahkan</string>
<string name="undo">Urung</string> <string name="undo">Urung</string>
<string name="removed_from_history">Dihapus dari riwayat</string> <string name="removed_from_history">Dihapus dari riwayat</string>
<string name="default_mode">Mode baca</string> <string name="default_mode">Mode baca</string>
<string name="detect_reader_mode">Otomatis deteksi mode pembaca</string> <string name="detect_reader_mode">Otomatis deteksi mode pembaca</string>
<string name="detect_reader_mode_summary">Secara otomatis mendeteksi jika komik itu webtoon</string> <string name="detect_reader_mode_summary">Secara otomatis mendeteksi jika komik itu webtoon</string>
<string name="create_category">Kategori baru</string> <string name="create_category">Kategori baru</string>
<string name="light_indicator">Indikator LED</string> <string name="light_indicator">Indikator LED</string>
<string name="vibration">Getaran</string> <string name="vibration">Getaran</string>
<string name="favourites_categories">Kategori favorit</string> <string name="favourites_categories">Kategori favorit</string>
<string name="remove_category">Hapus</string> <string name="remove_category">Hapus</string>
<string name="clear_updates_feed">Bersihkan umpan pembaruan</string> <string name="clear_updates_feed">Bersihkan umpan pembaruan</string>
<string name="right_to_left">Kanan ke kiri</string> <string name="right_to_left">Kanan ke kiri</string>
<string name="rotate_screen">Putar layar</string> <string name="rotate_screen">Putar layar</string>
<string name="feed_will_update_soon">Pembaruan umpan akan dimulai</string> <string name="feed_will_update_soon">Pembaruan umpan akan dimulai</string>
<string name="enter_password">Masukkan kata sandi</string> <string name="enter_password">Masukkan kata sandi</string>
<string name="protect_application_summary">Tanya kata sandi ketika memulai Kotatsu</string> <string name="protect_application_summary">Tanya kata sandi ketika memulai Kotatsu</string>
<string name="about">Tentang</string> <string name="about">Tentang</string>
<string name="check_for_updates">Periksa pembaruan</string> <string name="check_for_updates">Periksa pembaruan</string>
<string name="passwords_mismatch">Kata sandi tidak sama</string> <string name="passwords_mismatch">Kata sandi tidak sama</string>
<string name="app_version">Versi %s</string> <string name="app_version">Versi %s</string>
<string name="internal_storage">Penyimpanan internal</string> <string name="internal_storage">Penyimpanan internal</string>
<string name="external_storage">Penyimpanan eksternal</string> <string name="external_storage">Penyimpanan eksternal</string>
<string name="error">Kesalahan</string> <string name="error">Kesalahan</string>
<string name="no_update_available">Tidak ada pembaruan yang tersedia</string> <string name="no_update_available">Tidak ada pembaruan yang tersedia</string>
<string name="black_dark_theme_summary">Menggunakan daya lebih sedikit pada layar AMOLED</string> <string name="black_dark_theme_summary">Menggunakan daya lebih sedikit pada layar AMOLED</string>
<string name="black_dark_theme">Hitam</string> <string name="black_dark_theme">Hitam</string>
<string name="backup_restore">Pencadangan dan pemulihan</string> <string name="backup_restore">Pencadangan dan pemulihan</string>
<string name="yesterday">Kemarin</string> <string name="yesterday">Kemarin</string>
<string name="restore_backup">Pulihkan dari cadangan</string> <string name="restore_backup">Pulihkan dari cadangan</string>
<string name="file_not_found">Berkas tidak ditemukan</string> <string name="file_not_found">Berkas tidak ditemukan</string>
<string name="password_length_hint">Kata sandi harus 4 karakter atau lebih</string> <string name="password_length_hint">Kata sandi harus 4 karakter atau lebih</string>
<string name="preparing_">Mempersiapkan…</string> <string name="preparing_">Mempersiapkan…</string>
<string name="text_clear_updates_feed_prompt">Bersihkan semua riwayat pembaruan secara permanen\?</string> <string name="text_clear_updates_feed_prompt">Bersihkan semua riwayat pembaruan secara permanen\?</string>
<string name="sign_in">Masuk</string> <string name="sign_in">Masuk</string>
<string name="default_s">Standar: %s</string> <string name="default_s">Standar: %s</string>
<string name="chapter_is_missing_text">Unduh atau baca bab yang hilang ini secara daring.</string> <string name="chapter_is_missing_text">Unduh atau baca bab yang hilang ini secara daring.</string>
<string name="about_app_translation_summary">Terjemahkan aplikasi ini</string> <string name="about_app_translation_summary">Terjemahkan aplikasi ini</string>
<string name="taps_on_edges">Tekan di tepi</string> <string name="taps_on_edges">Tekan di tepi</string>
<string name="large_manga_save_confirm">Komik ini memiliki %s. Simpan semuanya\?</string> <string name="large_manga_save_confirm">Komik ini memiliki %s. Simpan semuanya\?</string>
<string name="zoom_mode_fit_center">Pas tengah</string> <string name="zoom_mode_fit_center">Pas tengah</string>
<string name="zoom_mode_fit_height">Pas tinggi</string> <string name="zoom_mode_fit_height">Pas tinggi</string>
<string name="zoom_mode_fit_width">Pas lebar</string> <string name="zoom_mode_fit_width">Pas lebar</string>
<string name="reverse">Balik</string> <string name="reverse">Balik</string>
<string name="queued">Antri</string> <string name="queued">Antri</string>
<string name="auth_complete">Diotorisasi</string> <string name="auth_complete">Diotorisasi</string>
<string name="text_local_holder_secondary">Simpan dari sumber daring atau berkas impor.</string> <string name="text_local_holder_secondary">Simpan dari sumber daring atau berkas impor.</string>
<string name="text_shelf_holder_primary">Komik Anda akan ditampilkan di sini</string> <string name="text_shelf_holder_primary">Komik Anda akan ditampilkan di sini</string>
<string name="text_shelf_holder_secondary">Cari apa untuk dibaca di bagian «Jelajah»</string> <string name="text_shelf_holder_secondary">Cari apa untuk dibaca di bagian «Jelajah»</string>
<string name="email_enter_hint">Masukkan surel Anda untuk melanjutkan</string> <string name="email_enter_hint">Masukkan surel Anda untuk melanjutkan</string>
<string name="status_re_reading">Dibaca ulang</string> <string name="status_re_reading">Dibaca ulang</string>
<string name="explore">Jelajah</string> <string name="explore">Jelajah</string>
<string name="status_planned">Direncanakan</string> <string name="status_planned">Direncanakan</string>
<string name="status_completed">Selesai</string> <string name="status_completed">Selesai</string>
<string name="canceled">Dibatalkan</string> <string name="canceled">Dibatalkan</string>
<string name="sync_title">Sinkronisasi data Anda</string> <string name="sync_title">Sinkronisasi data Anda</string>
<string name="tracking">Pelacakan</string> <string name="tracking">Pelacakan</string>
<string name="logout">Keluar</string> <string name="logout">Keluar</string>
<string name="sync">Sinkronisasi</string> <string name="sync">Sinkronisasi</string>
<string name="send">Terkirim</string> <string name="send">Kirim</string>
<string name="status_reading">Dibaca</string> <string name="status_reading">Dibaca</string>
<string name="status_on_hold">Ditunda</string> <string name="status_on_hold">Ditunda</string>
<string name="invalid_domain_message">Domain tidak valid</string> <string name="invalid_domain_message">Domain tidak valid</string>
<string name="no_bookmarks_yet">Belum ada markah</string> <string name="no_bookmarks_yet">Belum ada markah</string>
<string name="no_bookmarks_summary">Anda bisa membuat markah ketika membaca komik</string> <string name="no_bookmarks_summary">Anda bisa membuat markah ketika membaca komik</string>
<string name="bookmarks_removed">Markah dihapus</string> <string name="bookmarks_removed">Markah dihapus</string>
<string name="no_manga_sources">Tidak ada sumber komik</string> <string name="no_manga_sources">Tidak ada sumber komik</string>
<string name="random">Acak</string> <string name="random">Acak</string>
<string name="empty">Kosong</string> <string name="empty">Kosong</string>
<string name="reader_info_bar">Tampilkan bilah informasi di pembaca</string> <string name="reader_info_bar">Tampilkan bilah informasi di pembaca</string>
<string name="importing_manga">Mengimpor komik</string> <string name="importing_manga">Mengimpor komik</string>
<string name="last_2_hours">Dua jam terakhir</string> <string name="last_2_hours">Dua jam terakhir</string>
<string name="show_all">Tampilkan semua</string> <string name="show_all">Tampilkan semua</string>
<string name="history_cleared">Riwayat dihapus</string> <string name="history_cleared">Riwayat dihapus</string>
<string name="clear_all_history">Hapus semua riwayat</string> <string name="clear_all_history">Hapus semua riwayat</string>
<string name="options">Pilihan</string> <string name="options">Pilihan</string>
<string name="import_completed">Impor selesai</string> <string name="import_completed">Impor selesai</string>
<string name="removed_from_favourites">Dihapus dari favorit</string> <string name="removed_from_favourites">Dihapus dari favorit</string>
<string name="import_will_start_soon">Impor akan segera dimulai</string> <string name="import_will_start_soon">Impor akan segera dimulai</string>
<string name="not_found_404">Konten tidak ditemukan atau dihapus</string> <string name="not_found_404">Konten tidak ditemukan atau dihapus</string>
<string name="exit_confirmation_summary">Tekan Kembali dua kali untuk keluar dari aplikasi</string> <string name="exit_confirmation_summary">Tekan Kembali dua kali untuk keluar dari aplikasi</string>
<string name="exit_confirmation">Konfirmasi keluar</string> <string name="exit_confirmation">Konfirmasi keluar</string>
<string name="pages_cache">Cache halaman</string> <string name="pages_cache">Cache halaman</string>
<string name="other_cache">Cache lainnya</string> <string name="other_cache">Cache lainnya</string>
<string name="storage_usage">Penggunaan penyimpanan</string> <string name="storage_usage">Penggunaan penyimpanan</string>
<string name="available">Tersedia</string> <string name="available">Tersedia</string>
<string name="incognito_mode">Mode penyamaran</string> <string name="incognito_mode">Mode penyamaran</string>
<string name="automatic_scroll">Gulir otomatis</string> <string name="automatic_scroll">Gulir otomatis</string>
<string name="comics_archive">Arsip komik</string> <string name="comics_archive">Arsip komik</string>
<string name="folder_with_images">Folder dengan gambar</string> <string name="folder_with_images">Folder dengan gambar</string>
<string name="import_completed_hint">Anda bisa menghapus berkas asli dari penyimpanan untuk menghemat ruang</string> <string name="import_completed_hint">Anda bisa menghapus berkas asli dari penyimpanan untuk menghemat ruang</string>
<string name="feed">Umpan</string> <string name="feed">Umpan</string>
<string name="manga_error_description_pattern">Detail kesalahan:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Coba &lt;a href=%2$s&gt;buka komik di browser&lt;/a&gt; untuk memastikan komik tersedia di sumbernya&lt;br&gt;2. Pastikan Anda menggunakan &lt;a href=kotatsu://about&gt;Kotatsu versi terbaru&lt;/a&gt;&lt;br&gt;3. Jika tersedia, kirim laporan kesalahan ke pengembang.</string> <string name="manga_error_description_pattern">Detail kesalahan:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Coba &lt;a href=%2$s&gt;buka komik di browser&lt;/a&gt; untuk memastikan komik tersedia di sumbernya&lt;br&gt;2. Pastikan Anda menggunakan &lt;a href=kotatsu://about&gt;Kotatsu versi terbaru&lt;/a&gt;&lt;br&gt;3. Jika tersedia, kirim laporan kesalahan ke pengembang.</string>
<string name="brightness">Kecerahan</string> <string name="brightness">Kecerahan</string>
<string name="contrast">Kontras</string> <string name="contrast">Kontras</string>
<string name="reset">Atur Ulang</string> <string name="reset">Atur Ulang</string>
<string name="color_correction_hint">Pengaturan warna yang dipilih akan diingat untuk komik ini</string> <string name="color_correction_hint">Pengaturan warna yang dipilih akan diingat untuk komik ini</string>
<string name="text_unsaved_changes_prompt">Menyimpan atau membuang perubahan yang belum disimpan\?</string> <string name="text_unsaved_changes_prompt">Menyimpan atau membuang perubahan yang belum disimpan\?</string>
<string name="discard">Buang</string> <string name="discard">Buang</string>
<string name="use_fingerprint">Gunakan sidik jari jika tersedia</string> <string name="use_fingerprint">Gunakan sidik jari jika tersedia</string>
<string name="appwidget_shelf_description">Komik dari favorit Anda</string> <string name="appwidget_shelf_description">Komik dari favorit Anda</string>
<string name="appwidget_recent_description">Komik yang baru-baru ini Anda baca</string> <string name="appwidget_recent_description">Komik yang baru-baru ini Anda baca</string>
<string name="data_deletion">Penghapusan data</string> <string name="data_deletion">Penghapusan data</string>
<string name="account_already_exists">Akun sudah ada</string> <string name="account_already_exists">Akun sudah ada</string>
<string name="back">Kembali</string> <string name="back">Kembali</string>
<string name="disable_battery_optimization_summary">Membantu pemeriksaan pembaruan di latar belakang</string> <string name="disable_battery_optimization_summary">Membantu pemeriksaan pembaruan di latar belakang</string>
<string name="crash_text">Ada sesuatu yang salah. Mohon untuk mengirim laporan kutu (bug) ke pengembang untuk membantu kami memperbaikinya.</string> <string name="crash_text">Ada sesuatu yang salah. Mohon untuk mengirim laporan kutu (bug) ke pengembang untuk membantu kami memperbaikinya.</string>
<string name="report">Lapor</string> <string name="report">Lapor</string>
<string name="exclude_nsfw_from_history_summary">Komik yang ditandai sebagai NSFW tidak akan ditambahkan ke riwayat dan pencapaian Anda tidak akan disimpan</string> <string name="exclude_nsfw_from_history_summary">Komik yang ditandai sebagai NSFW tidak akan ditambahkan ke riwayat dan pencapaian Anda tidak akan disimpan</string>
<string name="clear_cookies_summary">Bisa membantu dalam beberapa masalah. Seluruh otorisasi akan menjadi tidak valid</string> <string name="clear_cookies_summary">Bisa membantu dalam beberapa masalah. Seluruh otorisasi akan menjadi tidak valid</string>
<string name="manage">Kelola</string> <string name="manage">Kelola</string>
<string name="no_manga_sources_text">Aktifkan sumber komik untuk membaca komik daring</string> <string name="no_manga_sources_text">Aktifkan sumber komik untuk membaca komik daring</string>
<string name="categories_delete_confirm">Yakin ingin menghapus kategori favorit yang dipilih\? <string name="categories_delete_confirm">Yakin ingin menghapus kategori favorit yang dipilih\?
\nSemua komik di dalamnya akan hilang dan ini tidak dapat dibatalkan.</string> \nSemua komik di dalamnya akan hilang dan ini tidak dapat dibatalkan.</string>
<string name="reorder">Atur Ulang</string> <string name="reorder">Atur Ulang</string>
<string name="saved_manga">Komik tersimpan</string> <string name="saved_manga">Komik tersimpan</string>
<string name="confirm_exit">Tekan Kembali lagi untuk keluar</string> <string name="confirm_exit">Tekan Kembali lagi untuk keluar</string>
<string name="no_chapters">Tidak ada bab</string> <string name="no_chapters">Tidak ada bab</string>
<string name="history_shortcuts">Tampilkan pintasan komik baru-baru ini</string> <string name="history_shortcuts">Tampilkan pintasan komik baru-baru ini</string>
<string name="history_shortcuts_summary">Buat komik baru-baru ini tersedia dengan menekan panjang pada ikon aplikasi</string> <string name="history_shortcuts_summary">Buat komik baru-baru ini tersedia dengan menekan panjang pada ikon aplikasi</string>
<string name="select_range">Pilih jangkauan</string> <string name="select_range">Pilih jangkauan</string>
<string name="disable_all">Matikan semua</string> <string name="disable_all">Matikan semua</string>
<string name="gestures_only">Hanya gestur</string> <string name="gestures_only">Hanya gestur</string>
<string name="dns_over_https">DNS over HTTPS</string> <string name="dns_over_https">DNS over HTTPS</string>
<string name="status_dropped">Istirahat</string> <string name="status_dropped">Istirahat</string>
<string name="theme_name_mamimi">Mamimi</string> <string name="theme_name_mamimi">Mamimi</string>
<string name="server_error">Kesalahan sisi server (%1$d). Silakan coba lagi nanti</string> <string name="server_error">Kesalahan sisi server (%1$d). Silakan coba lagi nanti</string>
<string name="compact">kompak</string> <string name="compact">kompak</string>
<string name="prefetch_content">Pramuat konten</string> <string name="prefetch_content">Pramuat konten</string>
<string name="memory_usage_pattern">%s - %s</string> <string name="memory_usage_pattern">%s - %s</string>
<string name="nothing_here">Tidak ada apapun di sini</string> <string name="nothing_here">Tidak ada apapun di sini</string>
<string name="reader_control_ltr_summary">Ketuk di tepi kanan atau menekan tombol kanan akan selalu beralih ke halaman berikutnya</string> <string name="reader_control_ltr_summary">Ketuk di tepi kanan atau menekan tombol kanan akan selalu beralih ke halaman berikutnya</string>
<string name="source_disabled">Sumber dinonaktifkan</string> <string name="source_disabled">Sumber dinonaktifkan</string>
<string name="mark_as_current">Tandai sebagai saat ini</string> <string name="mark_as_current">Tandai sebagai saat ini</string>
<string name="show_suspicious_content">Tampilkan konten yang mencurigakan</string> <string name="show_suspicious_content">Tampilkan konten yang mencurigakan</string>
<string name="scrobbling_empty_hint">Untuk melacak kemajuan membaca, pilih Menu → Lacak di layar detail komik.</string> <string name="scrobbling_empty_hint">Untuk melacak kemajuan membaca, pilih Menu → Lacak di layar detail komik.</string>
<string name="services">Layanan</string> <string name="services">Layanan</string>
<string name="clear_new_chapters_counters">Juga informasi yang jelas tentang bab baru</string> <string name="clear_new_chapters_counters">Juga informasi yang jelas tentang bab baru</string>
<string name="network_unavailable_hint">Nyalakan Wi-Fi atau jaringan seluler untuk membaca komik daring</string> <string name="network_unavailable_hint">Nyalakan Wi-Fi atau jaringan seluler untuk membaca komik daring</string>
<string name="user_agent">Tajuk Agen Pengguna</string> <string name="user_agent">Tajuk Agen Pengguna</string>
<string name="settings_apply_restart_required">Mulai ulang aplikasi untuk menerapkan perubahan ini</string> <string name="settings_apply_restart_required">Mulai ulang aplikasi untuk menerapkan perubahan ini</string>
<string name="theme_name_kanade">Kanade</string> <string name="theme_name_kanade">Kanade</string>
<string name="share_logs">Bagikan log</string> <string name="share_logs">Bagikan log</string>
<string name="error_no_space_left">Tidak ada ruang tersisa di perangkat</string> <string name="error_no_space_left">Tidak ada ruang tersisa di perangkat</string>
<string name="allow_unstable_updates">Izinkan pembaruan yang tidak stabil</string> <string name="allow_unstable_updates">Izinkan pembaruan yang tidak stabil</string>
<string name="allow_unstable_updates_summary">Usulkan pembaruan ke versi beta</string> <string name="allow_unstable_updates_summary">Usulkan pembaruan ke versi beta</string>
<string name="download_started">Unduh dimulai</string> <string name="download_started">Unduh dimulai</string>
<string name="show_reading_indicators">Tampilkan indikator kemajuan membaca</string> <string name="show_reading_indicators">Tampilkan indikator kemajuan membaca</string>
<string name="show_reading_indicators_summary">Tampilkan persentase baca dalam riwayat dan favorit</string> <string name="show_reading_indicators_summary">Tampilkan persentase baca dalam riwayat dan favorit</string>
<string name="language">Bahasa</string> <string name="language">Bahasa</string>
<string name="text_search_holder_secondary">Cobalah untuk merubah kueri.</string> <string name="text_search_holder_secondary">Cobalah untuk merubah kueri.</string>
<string name="zoom_mode_keep_start">Tetap di awal</string> <string name="zoom_mode_keep_start">Tetap di awal</string>
<string name="reader_info_pattern">Bab. %1$d/%2$d Hal. %3$d/%4$d</string> <string name="reader_info_pattern">Bab. %1$d/%2$d Hal. %3$d/%4$d</string>
<string name="enable_logging">Aktifkan pencatatan</string> <string name="enable_logging">Aktifkan pencatatan</string>
<string name="enable_logging_summary">Rekam beberapa tindakan untuk tujuan debug</string> <string name="enable_logging_summary">Rekam beberapa tindakan untuk tujuan debug</string>
<string name="theme_name_dynamic">Dinamis</string> <string name="theme_name_dynamic">Dinamis</string>
<string name="color_theme">Skema warna</string> <string name="color_theme">Skema warna</string>
<string name="show_in_grid_view">Perlihatkan dalam tampilan kisi</string> <string name="show_in_grid_view">Perlihatkan dalam tampilan kisi</string>
<string name="theme_name_miku">Miku</string> <string name="theme_name_miku">Miku</string>
<string name="theme_name_asuka">Asuka</string> <string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string> <string name="theme_name_mion">Mion</string>
<string name="theme_name_rikka">Rikka</string> <string name="theme_name_rikka">Rikka</string>
<string name="theme_name_sakura">Sakura</string> <string name="theme_name_sakura">Sakura</string>
<string name="local_manga_processing">Pemrosesan komik tersimpan</string> <string name="local_manga_processing">Pemrosesan komik tersimpan</string>
<string name="disable_battery_optimization">Nonaktifkan pengoptimalan baterai</string> <string name="disable_battery_optimization">Nonaktifkan pengoptimalan baterai</string>
<string name="reader_control_ltr">Kontrol pembaca ergonomis</string> <string name="reader_control_ltr">Kontrol pembaca ergonomis</string>
<string name="color_correction">Koreksi warna</string> <string name="color_correction">Koreksi warna</string>
<string name="reader_slider">Perlihatkan penggeser peralihan halaman</string> <string name="reader_slider">Perlihatkan penggeser peralihan halaman</string>
<string name="webtoon_zoom">Zoom webtoon</string> <string name="webtoon_zoom">Zoom webtoon</string>
<string name="different_languages">Berbagai bahasa</string> <string name="different_languages">Berbagai bahasa</string>
<string name="network_unavailable">Jaringan tidak tersedia</string> <string name="network_unavailable">Jaringan tidak tersedia</string>
<string name="got_it">Mengerti</string> <string name="got_it">Mengerti</string>
<string name="sources_reorder_tip">Ketuk dan tahan item untuk menyusun ulang</string> <string name="sources_reorder_tip">Ketuk dan tahan item untuk menyusun ulang</string>
<string name="comics_archive_import_description">Anda dapat memilih satu atau beberapa file .cbz atau .zip, setiap file akan dikenali sebagai komik terpisah.</string> <string name="comics_archive_import_description">Anda dapat memilih satu atau beberapa file .cbz atau .zip, setiap file akan dikenali sebagai komik terpisah.</string>
<string name="folder_with_images_import_description">Anda dapat memilih direktori yang berisi arsip atau gambar. Setiap arsip (atau subdirektori) akan dikenali sebagai sebuah bab.</string> <string name="folder_with_images_import_description">Anda dapat memilih direktori yang berisi arsip atau gambar. Setiap arsip (atau subdirektori) akan dikenali sebagai sebuah bab.</string>
<string name="speed">Kecepatan</string> <string name="speed">Kecepatan</string>
<string name="restore_backup_description">Impor cadangan data pengguna yang dibuat sebelumnya</string> <string name="restore_backup_description">Impor cadangan data pengguna yang dibuat sebelumnya</string>
<string name="show_on_shelf">Tampilkan di Rak</string> <string name="show_on_shelf">Tampilkan di Rak</string>
<string name="sync_auth_hint">Anda dapat masuk ke akun yang sudah ada atau membuat akun baru</string> <string name="sync_auth_hint">Anda dapat masuk ke akun yang sudah ada atau membuat akun baru</string>
</resources> <string name="find_similar">Temukan serupa</string>
<string name="server_address">Alamat server</string>
<string name="downloads_wifi_only">Unduh hanya melalui Wi-Fi</string>
<string name="downloads_cancelled">Unduhan telah dibatalkan</string>
<string name="enable">Aktifkan</string>
<string name="no_thanks">Tidak, terima kasih</string>
<string name="sync_settings">Pengaturan sinkronisasi</string>
<string name="sync_host_description">Anda dapat menggunakan server sinkronisasi yang dihosting sendiri atau server default. Jangan ubah ini jika Anda tidak yakin dengan apa yang Anda lakukan.</string>
<string name="ignore_ssl_errors">Abaikan kesalahan SSL</string>
<string name="mirror_switching">Pilih cermin secara otomatis</string>
<string name="mirror_switching_summary">Secara otomatis mengalihkan domain untuk sumber jarak jauh saat terjadi kesalahan jika mirror tersedia</string>
<string name="pause">Jeda</string>
<string name="resume">Lanjut</string>
<string name="paused">Dijeda</string>
<string name="remove_completed">Hapus selesai</string>
<string name="cancel_all">Batalkan semua</string>
<string name="downloads_wifi_only_summary">Berhenti mengunduh saat beralih ke jaringan seluler</string>
<string name="suggestion_manga">Saran: %s</string>
<string name="suggestions_notifications_summary">Terkadang menampilkan notifikasi dengan komik yang disarankan</string>
<string name="more">Lebih</string>
<string name="cancel_all_downloads_confirm">Semua pengunduhan yang aktif akan dibatalkan, data yang sudah terunduh sebagian akan hilang</string>
<string name="remove_completed_downloads_confirm">Riwayat unduhan Anda akan dihapus secara permanen</string>
<string name="text_downloads_list_holder">Anda tidak memiliki unduhan apa pun</string>
<string name="downloads_resumed">Unduhan telah dilanjutkan</string>
<string name="downloads_paused">Unduhan telah dijeda</string>
<string name="downloads_removed">Unduhan telah dihapus</string>
<string name="suggestions_enable_prompt">Apakah Anda ingin menerima saran manga yang dipersonalisasi\?</string>
</resources>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="minutes_ago">
<item quantity="one">%1$d ମିନିଟ୍ ପୂର୍ଵେ</item>
<item quantity="other">%1$d ମିନିଟ୍ ପୂର୍ଵେ</item>
</plurals>
<plurals name="days_ago">
<item quantity="one">%1$d ଦିନ ପୂର୍ଵେ</item>
<item quantity="other">%1$d ଦିନ ପୂର୍ଵେ</item>
</plurals>
<plurals name="new_chapters">
<item quantity="one">%1$dଟିଏ ନୂଆ ଅଧ୍ୟାୟ</item>
<item quantity="other">%1$dଟି ନୂଆ ଅଧ୍ୟାୟ</item>
</plurals>
<plurals name="pages">
<item quantity="one">ମୋଟ %1$dଟିଏ ପୃଷ୍ଠା</item>
<item quantity="other">ମୋଟ %1$dଟି ପୃଷ୍ଠା</item>
</plurals>
<plurals name="hours_ago">
<item quantity="one">%1$d ଘଣ୍ଟା ପୂର୍ଵେ</item>
<item quantity="other">%1$d ଘଣ୍ଟା ପୂର୍ଵେ</item>
</plurals>
<plurals name="chapters">
<item quantity="one">%1$dଟିଏ ଅଧ୍ୟାୟ</item>
<item quantity="other">%1$dଟି ଅଧ୍ୟାୟ</item>
</plurals>
</resources>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="history">ଇତିଵୃତ୍ତି</string>
<string name="details">ଵିଵରଣୀ</string>
<string name="settings">ସେଟିଂ</string>
<string name="suggestion_manga">ପରାମର୍ଶ: %s</string>
<string name="done">ହେଲା</string>
<string name="services">ସେଵା</string>
<string name="got_it">ବୁଝିଗଲି</string>
<string name="black_dark_theme">କଳା</string>
<string name="theme">ଥିମ୍</string>
<string name="speed">ଵେଗ</string>
<string name="download_started">ଡାଉନଲୋଡ୍ ଆରମ୍ଭ ହେଲା</string>
</resources>

View File

@@ -410,4 +410,6 @@
<string name="suggestions_notifications_summary">Иногда показывать уведомления с рекомендуемой мангой</string> <string name="suggestions_notifications_summary">Иногда показывать уведомления с рекомендуемой мангой</string>
<string name="remove_completed_downloads_confirm">Ваша история загрузок будет удалена</string> <string name="remove_completed_downloads_confirm">Ваша история загрузок будет удалена</string>
<string name="suggestions_enable_prompt">Хотите ли Вы получать персонализированные рекомендации манги\?</string> <string name="suggestions_enable_prompt">Хотите ли Вы получать персонализированные рекомендации манги\?</string>
<string name="translations">Переводы</string>
<string name="web_view_unavailable">WebView недоступен: проверьте, установлен ли провайдер WebView</string>
</resources> </resources>

View File

@@ -1,400 +1,415 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="delete">Видалити</string> <string name="delete">Видалити</string>
<string name="nothing_found">Нічого не знайдено</string> <string name="nothing_found">Нічого не знайдено</string>
<string name="add_to_favourites">Додати до улюблених</string> <string name="add_to_favourites">Додати до улюблених</string>
<string name="clear_history">Очистити історію</string> <string name="clear_history">Очистити історію</string>
<string name="history_is_empty">Історії ще немає</string> <string name="history_is_empty">Історії ще немає</string>
<string name="add">Додати</string> <string name="add">Додати</string>
<string name="save">Зберегти</string> <string name="save">Зберегти</string>
<string name="local_storage">Локальне сховище</string> <string name="local_storage">Локальне сховище</string>
<string name="network_error">Помилка мережі</string> <string name="network_error">Помилка мережі</string>
<string name="details">Деталі</string> <string name="details">Деталі</string>
<string name="try_again">Спробуйте ще раз</string> <string name="try_again">Спробуйте ще раз</string>
<string name="you_have_not_favourites_yet">Улюблених ще немає</string> <string name="you_have_not_favourites_yet">Улюблених ще немає</string>
<string name="add_new_category">Нова категорія</string> <string name="add_new_category">Нова категорія</string>
<string name="download_complete">Завантажено</string> <string name="download_complete">Завантажено</string>
<string name="favourites">Уподобання</string> <string name="favourites">Уподобання</string>
<string name="history">Історія</string> <string name="history">Історія</string>
<string name="error_occurred">Сталася помилка</string> <string name="error_occurred">Сталася помилка</string>
<string name="chapters">Розділи</string> <string name="chapters">Розділи</string>
<string name="list">Список</string> <string name="list">Список</string>
<string name="detailed_list">Детальний список</string> <string name="detailed_list">Детальний список</string>
<string name="list_mode">Режим списку</string> <string name="list_mode">Режим списку</string>
<string name="settings">Налаштування</string> <string name="settings">Налаштування</string>
<string name="remote_sources">Джерела манги</string> <string name="remote_sources">Джерела манги</string>
<string name="loading_">Завантаження…</string> <string name="loading_">Завантаження…</string>
<string name="computing_">Обчислення…</string> <string name="computing_">Обчислення…</string>
<string name="chapter_d_of_d">Розділ %1$d із %2$d</string> <string name="chapter_d_of_d">Розділ %1$d із %2$d</string>
<string name="close">Закрити</string> <string name="close">Закрити</string>
<string name="read">Читати</string> <string name="read">Читати</string>
<string name="grid">Таблиця</string> <string name="grid">Таблиця</string>
<string name="share">Поділитися</string> <string name="share">Поділитися</string>
<string name="create_shortcut">Створити ярлик…</string> <string name="create_shortcut">Створити ярлик…</string>
<string name="share_s">Поділитися %s</string> <string name="share_s">Поділитися %s</string>
<string name="search">Пошук</string> <string name="search">Пошук</string>
<string name="search_manga">Пошук манґи</string> <string name="search_manga">Пошук манґи</string>
<string name="processing_">Обробка…</string> <string name="processing_">Обробка…</string>
<string name="by_name">Ім\'я</string> <string name="by_name">Ім\'я</string>
<string name="popular">Популярна</string> <string name="popular">Популярна</string>
<string name="updated">Оновлена</string> <string name="updated">Оновлена</string>
<string name="newest">Нова</string> <string name="newest">Нова</string>
<string name="by_rating">Рейтинг</string> <string name="by_rating">Рейтинг</string>
<string name="sort_order">Порядок сортування</string> <string name="sort_order">Порядок сортування</string>
<string name="filter">Фільтр</string> <string name="filter">Фільтр</string>
<string name="theme">Тема</string> <string name="theme">Тема</string>
<string name="light">Світла</string> <string name="light">Світла</string>
<string name="dark">Темна</string> <string name="dark">Темна</string>
<string name="pages">Сторінки</string> <string name="pages">Сторінки</string>
<string name="text_clear_history_prompt">Очистити всю історію читання перманентно\?</string> <string name="text_clear_history_prompt">Очистити всю історію читання перманентно\?</string>
<string name="remove">Видалити</string> <string name="remove">Видалити</string>
<string name="_s_deleted_from_local_storage">\"%s\" видалено з локального сховища</string> <string name="_s_deleted_from_local_storage">\"%s\" видалено з локального сховища</string>
<string name="save_page">Зберегти сторінку</string> <string name="save_page">Зберегти сторінку</string>
<string name="page_saved">Збережено</string> <string name="page_saved">Збережено</string>
<string name="share_image">Поділитись зображенням</string> <string name="share_image">Поділитись зображенням</string>
<string name="operation_not_supported">Ця операція не підтримується</string> <string name="operation_not_supported">Ця операція не підтримується</string>
<string name="text_file_not_supported">Виберіть файл ZIP або CBZ.</string> <string name="text_file_not_supported">Виберіть файл ZIP або CBZ.</string>
<string name="no_description">Немає опису</string> <string name="no_description">Немає опису</string>
<string name="history_and_cache">Історія та кеш</string> <string name="history_and_cache">Історія та кеш</string>
<string name="clear_pages_cache">Очистити кеш сторінок</string> <string name="clear_pages_cache">Очистити кеш сторінок</string>
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string> <string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
<string name="standard">Стандартний</string> <string name="standard">Стандартний</string>
<string name="webtoon">Манхва</string> <string name="webtoon">Манхва</string>
<string name="read_mode">Режим читання</string> <string name="read_mode">Режим читання</string>
<string name="grid_size">Розмір сітки</string> <string name="grid_size">Розмір сітки</string>
<string name="search_on_s">Пошук по %s</string> <string name="search_on_s">Пошук по %s</string>
<string name="delete_manga">Видалити манґу</string> <string name="delete_manga">Видалити манґу</string>
<string name="text_delete_local_manga">Видалити \"%s\" з пристрою перманентно\?</string> <string name="text_delete_local_manga">Видалити \"%s\" з пристрою перманентно\?</string>
<string name="reader_settings">Налаштування читача</string> <string name="reader_settings">Налаштування читача</string>
<string name="switch_pages">Перегортання сторінок</string> <string name="switch_pages">Перегортання сторінок</string>
<string name="volume_buttons">Кнопки гучності</string> <string name="volume_buttons">Кнопки гучності</string>
<string name="error">Помилка</string> <string name="error">Помилка</string>
<string name="clear_thumbs_cache">Очистити кеш мініатюр</string> <string name="clear_thumbs_cache">Очистити кеш мініатюр</string>
<string name="clear_search_history">Очистити історію пошуку</string> <string name="clear_search_history">Очистити історію пошуку</string>
<string name="search_history_cleared">Очищено</string> <string name="search_history_cleared">Очищено</string>
<string name="gestures_only">Тільки жести</string> <string name="gestures_only">Тільки жести</string>
<string name="internal_storage">Внутрішнє сховище</string> <string name="internal_storage">Внутрішнє сховище</string>
<string name="external_storage">Зовнішнє сховище</string> <string name="external_storage">Зовнішнє сховище</string>
<string name="domain">Домен</string> <string name="domain">Домен</string>
<string name="app_update_available">Доступна нова версія застосунку</string> <string name="app_update_available">Доступна нова версія застосунку</string>
<string name="large_manga_save_confirm">Ця манґа має %s. Зберегти все це\?</string> <string name="large_manga_save_confirm">Ця манґа має %s. Зберегти все це\?</string>
<string name="save_manga">Зберегти</string> <string name="save_manga">Зберегти</string>
<string name="notifications">Сповіщення</string> <string name="notifications">Сповіщення</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Увімкнено %1$d з %2$d</string> <string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Увімкнено %1$d з %2$d</string>
<string name="new_chapters">Нові розділи</string> <string name="new_chapters">Нові розділи</string>
<string name="download">Завантажити</string> <string name="download">Завантажити</string>
<string name="vibration">Вібрація</string> <string name="vibration">Вібрація</string>
<string name="favourites_categories">Улюблені категорії</string> <string name="favourites_categories">Улюблені категорії</string>
<string name="remove_category">Видалити</string> <string name="remove_category">Видалити</string>
<string name="text_empty_holder_primary">Тут якось пусто…</string> <string name="text_empty_holder_primary">Тут якось пусто…</string>
<string name="text_search_holder_secondary">Спробуйте переформулювати запит.</string> <string name="text_search_holder_secondary">Спробуйте переформулювати запит.</string>
<string name="text_history_holder_primary">Те, що ви читаєте, буде показано тут</string> <string name="text_history_holder_primary">Те, що ви читаєте, буде показано тут</string>
<string name="text_history_holder_secondary">Знайдіть, що читати, у бічному меню.</string> <string name="text_history_holder_secondary">Знайдіть, що читати, у бічному меню.</string>
<string name="text_local_holder_primary">Спочатку збережіть щось</string> <string name="text_local_holder_primary">Спочатку збережіть щось</string>
<string name="text_local_holder_secondary">Збережіть його з онлайн-джерела або імпортуйте файли.</string> <string name="text_local_holder_secondary">Збережіть його з онлайн-джерела або імпортуйте файли.</string>
<string name="manga_shelf">Полиця</string> <string name="manga_shelf">Полиця</string>
<string name="recent_manga">Недавні</string> <string name="recent_manga">Недавні</string>
<string name="pages_animation">Анімація перегортання</string> <string name="pages_animation">Анімація перегортання</string>
<string name="manga_save_location">Тека для завантажень</string> <string name="manga_save_location">Тека для завантажень</string>
<string name="other_storage">Інше сховище</string> <string name="other_storage">Інше сховище</string>
<string name="done">Готово</string> <string name="done">Готово</string>
<string name="all_favourites">Усі улюблені</string> <string name="all_favourites">Усі улюблені</string>
<string name="favourites_category_empty">Порожня категорія</string> <string name="favourites_category_empty">Порожня категорія</string>
<string name="read_later">Прочитати пізніше</string> <string name="read_later">Прочитати пізніше</string>
<string name="updates">Оновлення</string> <string name="updates">Оновлення</string>
<string name="new_version_s">Нова версія: %s</string> <string name="new_version_s">Нова версія: %s</string>
<string name="size_s">Розмір: %s</string> <string name="size_s">Розмір: %s</string>
<string name="clear_updates_feed">Очистити стрічку оновлень</string> <string name="clear_updates_feed">Очистити стрічку оновлень</string>
<string name="updates_feed_cleared">Очищено</string> <string name="updates_feed_cleared">Очищено</string>
<string name="rotate_screen">Повернути екран</string> <string name="rotate_screen">Повернути екран</string>
<string name="update">Оновити</string> <string name="update">Оновити</string>
<string name="feed_will_update_soon">Оновлення скоро почнеться</string> <string name="feed_will_update_soon">Оновлення скоро почнеться</string>
<string name="track_sources">Стежити за оновленнями</string> <string name="track_sources">Стежити за оновленнями</string>
<string name="dont_check">Не перевіряти</string> <string name="dont_check">Не перевіряти</string>
<string name="wrong_password">Неправильний пароль</string> <string name="wrong_password">Неправильний пароль</string>
<string name="protect_application">Захистити застосунок</string> <string name="protect_application">Захистити застосунок</string>
<string name="protect_application_summary">Запитувати пароль під час запуску Kotatsu</string> <string name="protect_application_summary">Запитувати пароль під час запуску Kotatsu</string>
<string name="repeat_password">Повторіть пароль</string> <string name="repeat_password">Повторіть пароль</string>
<string name="passwords_mismatch">Паролі не співпадають</string> <string name="passwords_mismatch">Паролі не співпадають</string>
<string name="about">Про застосунок</string> <string name="about">Про застосунок</string>
<string name="app_version">Версія %s</string> <string name="app_version">Версія %s</string>
<string name="check_for_updates">Перевірити наявність оновлень</string> <string name="check_for_updates">Перевірити наявність оновлень</string>
<string name="no_update_available">Немає доступних оновлень</string> <string name="no_update_available">Немає доступних оновлень</string>
<string name="create_category">Нова категорія</string> <string name="create_category">Нова категорія</string>
<string name="scale_mode">Режим масштабування</string> <string name="scale_mode">Режим масштабування</string>
<string name="zoom_mode_fit_center">Вмістити в екран</string> <string name="zoom_mode_fit_center">Вмістити в екран</string>
<string name="zoom_mode_fit_height">Підігнати по висоті</string> <string name="zoom_mode_fit_height">Підігнати по висоті</string>
<string name="zoom_mode_fit_width">Підігнати по ширині</string> <string name="zoom_mode_fit_width">Підігнати по ширині</string>
<string name="zoom_mode_keep_start">Вихідний розмір</string> <string name="zoom_mode_keep_start">Вихідний розмір</string>
<string name="black_dark_theme">Чорна</string> <string name="black_dark_theme">Чорна</string>
<string name="black_dark_theme_summary">Споживає менше енергії на екранах AMOLED</string> <string name="black_dark_theme_summary">Споживає менше енергії на екранах AMOLED</string>
<string name="backup_restore">Резервне копіювання та відновлення</string> <string name="backup_restore">Резервне копіювання та відновлення</string>
<string name="data_restored">Відновлено</string> <string name="data_restored">Відновлено</string>
<string name="preparing_">Підготовка…</string> <string name="preparing_">Підготовка…</string>
<string name="file_not_found">Файл не знайдено</string> <string name="file_not_found">Файл не знайдено</string>
<string name="data_restored_with_errors">Дані відновлено, але є деякі помилки</string> <string name="data_restored_with_errors">Дані відновлено, але є деякі помилки</string>
<string name="backup_information">Ви можете створити резервну копію своєї історії та уподобань і відновити їх</string> <string name="backup_information">Ви можете створити резервну копію своєї історії та уподобань і відновити їх</string>
<string name="just_now">Тільки що</string> <string name="just_now">Тільки що</string>
<string name="tap_to_try_again">Торкніться, щоб спробувати ще раз</string> <string name="tap_to_try_again">Торкніться, щоб спробувати ще раз</string>
<string name="reader_mode_hint">Обраний режим буде запам\'ятован для цієї манги</string> <string name="reader_mode_hint">Обраний режим буде запам\'ятован для цієї манги</string>
<string name="captcha_required">Потрібна CAPTCHA</string> <string name="captcha_required">Потрібна CAPTCHA</string>
<string name="captcha_solve">Пройти</string> <string name="captcha_solve">Пройти</string>
<string name="clear_cookies">Очистити кукі</string> <string name="clear_cookies">Очистити кукі</string>
<string name="cookies_cleared">Всі кукі були видалені</string> <string name="cookies_cleared">Всі кукі були видалені</string>
<string name="clear_feed">Очистити стрічку</string> <string name="clear_feed">Очистити стрічку</string>
<string name="check_for_new_chapters">Перевірити нові розділи</string> <string name="check_for_new_chapters">Перевірити нові розділи</string>
<string name="reverse">В зворотньому порядку</string> <string name="reverse">В зворотньому порядку</string>
<string name="sign_in">Увійти</string> <string name="sign_in">Увійти</string>
<string name="auth_required">Увійдіть, щоб переглянути цей вміст</string> <string name="auth_required">Увійдіть, щоб переглянути цей вміст</string>
<string name="default_s">За замовчуванням: %s</string> <string name="default_s">За замовчуванням: %s</string>
<string name="next">Далі</string> <string name="next">Далі</string>
<string name="protect_application_subtitle">Введіть пароль для запуску застосунку</string> <string name="protect_application_subtitle">Введіть пароль для запуску застосунку</string>
<string name="confirm">Підтвердити</string> <string name="confirm">Підтвердити</string>
<string name="password_length_hint">Пароль має містити 4 символи або більше</string> <string name="password_length_hint">Пароль має містити 4 символи або більше</string>
<string name="welcome">Ласкаво просимо</string> <string name="welcome">Ласкаво просимо</string>
<string name="backup_saved">Резервна копія збережена</string> <string name="backup_saved">Резервна копія збережена</string>
<string name="read_more">Докладніше</string> <string name="read_more">Докладніше</string>
<string name="queued">У черзі</string> <string name="queued">У черзі</string>
<string name="about_app_translation_summary">Допомогти з перекладом застосунку</string> <string name="about_app_translation_summary">Допомогти з перекладом застосунку</string>
<string name="about_app_translation">Переклад</string> <string name="about_app_translation">Переклад</string>
<string name="auth_complete">Авторизація виконана</string> <string name="auth_complete">Авторизація виконана</string>
<string name="auth_not_supported_by">Вхід на %s не підтримується</string> <string name="auth_not_supported_by">Вхід на %s не підтримується</string>
<string name="text_clear_cookies_prompt">Ви вийдете з усіх джерел</string> <string name="text_clear_cookies_prompt">Ви вийдете з усіх джерел</string>
<string name="state_finished">Завершена</string> <string name="state_finished">Завершена</string>
<string name="state_ongoing">Триває</string> <string name="state_ongoing">Триває</string>
<string name="exclude_nsfw_from_history">Виключити NSFW манґу з історії</string> <string name="exclude_nsfw_from_history">Виключити NSFW манґу з історії</string>
<string name="show_pages_numbers">Показувати номери сторінок</string> <string name="show_pages_numbers">Показувати номери сторінок</string>
<string name="enabled_sources">Включені джерела</string> <string name="enabled_sources">Включені джерела</string>
<string name="screenshots_policy">Політика щодо знімків екрана</string> <string name="screenshots_policy">Політика щодо знімків екрана</string>
<string name="screenshots_allow">Дозволити</string> <string name="screenshots_allow">Дозволити</string>
<string name="suggestions_summary">Пропонувати манґу на основі ваших уподобань</string> <string name="suggestions_summary">Пропонувати манґу на основі ваших уподобань</string>
<string name="suggestions_info">Усі дані аналізуються лише локально на цьому пристрої й ніколи нікуди не надсилаються.</string> <string name="suggestions_info">Усі дані аналізуються лише локально на цьому пристрої й ніколи нікуди не надсилаються.</string>
<string name="text_suggestion_holder">Почніть читати манґу, і ви отримаєте персоналізовані пропозиції</string> <string name="text_suggestion_holder">Почніть читати манґу, і ви отримаєте персоналізовані пропозиції</string>
<string name="enabled">Увімкнено</string> <string name="enabled">Увімкнено</string>
<string name="disabled">Вимкнено</string> <string name="disabled">Вимкнено</string>
<string name="reset_filter">Скинути фільтр</string> <string name="reset_filter">Скинути фільтр</string>
<string name="find_genre">Знайти жанр</string> <string name="find_genre">Знайти жанр</string>
<string name="onboard_text">Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях.</string> <string name="onboard_text">Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях.</string>
<string name="only_using_wifi">Тільки по Wi-Fi</string> <string name="only_using_wifi">Тільки по Wi-Fi</string>
<string name="preload_pages">Попереднє завантаження сторінок</string> <string name="preload_pages">Попереднє завантаження сторінок</string>
<string name="logged_in_as">Ви увійшли як %s</string> <string name="logged_in_as">Ви увійшли як %s</string>
<string name="nsfw">18+</string> <string name="nsfw">18+</string>
<string name="various_languages">Різні мови</string> <string name="various_languages">Різні мови</string>
<string name="search_chapters">Знайти розділ</string> <string name="search_chapters">Знайти розділ</string>
<string name="chapters_empty">Немає розділів у цій манзі</string> <string name="chapters_empty">Немає розділів у цій манзі</string>
<string name="percent_string_pattern">%1$s%%</string> <string name="percent_string_pattern">%1$s%%</string>
<string name="content">Зміст</string> <string name="content">Зміст</string>
<string name="suggestions_updating">Оновлення пропозицій</string> <string name="suggestions_updating">Оновлення пропозицій</string>
<string name="text_delete_local_manga_batch">Видалити вибрані елементи з пристрою назавжди\?</string> <string name="text_delete_local_manga_batch">Видалити вибрані елементи з пристрою назавжди\?</string>
<string name="removal_completed">Видалення завершено</string> <string name="removal_completed">Видалення завершено</string>
<string name="download_slowdown">Сповільнення завантаження</string> <string name="download_slowdown">Сповільнення завантаження</string>
<string name="local_manga_processing">Обробка збереженої манґи</string> <string name="local_manga_processing">Обробка збереженої манґи</string>
<string name="hide">Приховати</string> <string name="hide">Приховати</string>
<string name="new_sources_text">Доступні нові джерела манґи</string> <string name="new_sources_text">Доступні нові джерела манґи</string>
<string name="manga_downloading_">Завантаження…</string> <string name="manga_downloading_">Завантаження…</string>
<string name="clear">Очистити</string> <string name="clear">Очистити</string>
<string name="downloads">Завантаження</string> <string name="downloads">Завантаження</string>
<string name="automatic">Як в системі</string> <string name="automatic">Як в системі</string>
<string name="chapter_is_missing_text">Завантажте або прочитайте цей відсутній розділ онлайн.</string> <string name="chapter_is_missing_text">Завантажте або прочитайте цей відсутній розділ онлайн.</string>
<string name="chapter_is_missing">Розділ відсутній</string> <string name="chapter_is_missing">Розділ відсутній</string>
<string name="genres">Жанри</string> <string name="genres">Жанри</string>
<string name="system_default">За замовчуванням</string> <string name="system_default">За замовчуванням</string>
<string name="always">Завжди</string> <string name="always">Завжди</string>
<string name="_continue">Продовжити</string> <string name="_continue">Продовжити</string>
<string name="_import">Імпорт</string> <string name="_import">Імпорт</string>
<string name="taps_on_edges">Натискання по краях</string> <string name="taps_on_edges">Натискання по краях</string>
<string name="notifications_settings">Налаштування сповіщень</string> <string name="notifications_settings">Налаштування сповіщень</string>
<string name="open_in_browser">Відкрити у веб-браузері</string> <string name="open_in_browser">Відкрити у веб-браузері</string>
<string name="not_available">Недоступно</string> <string name="not_available">Недоступно</string>
<string name="cannot_find_available_storage">Немає доступного сховища</string> <string name="cannot_find_available_storage">Немає доступного сховища</string>
<string name="text_feed_holder">Нові розділи того, що ви читаєте, показано тут</string> <string name="text_feed_holder">Нові розділи того, що ви читаєте, показано тут</string>
<string name="search_results">Результати пошуку</string> <string name="search_results">Результати пошуку</string>
<string name="enter_password">Введіть пароль</string> <string name="enter_password">Введіть пароль</string>
<string name="notification_sound">Звук сповіщень</string> <string name="notification_sound">Звук сповіщень</string>
<string name="light_indicator">Світлодіодний індикатор</string> <string name="light_indicator">Світлодіодний індикатор</string>
<string name="yesterday">Учора</string> <string name="yesterday">Учора</string>
<string name="right_to_left">Справа наліво (←)</string> <string name="right_to_left">Справа наліво (←)</string>
<string name="create_backup">Створити резервну копію</string> <string name="create_backup">Створити резервну копію</string>
<string name="restore_backup">Відновити з резервної копії</string> <string name="restore_backup">Відновити з резервної копії</string>
<string name="data_restored_success">Всі дані були відновлені</string> <string name="data_restored_success">Всі дані були відновлені</string>
<string name="group">Групувати</string> <string name="group">Групувати</string>
<string name="today">Сьогодні</string> <string name="today">Сьогодні</string>
<string name="silent">Без звуку</string> <string name="silent">Без звуку</string>
<string name="long_ago">Давно</string> <string name="long_ago">Давно</string>
<string name="text_clear_updates_feed_prompt">Очистити всю історію оновлень назавжди\?</string> <string name="text_clear_updates_feed_prompt">Очистити всю історію оновлень назавжди\?</string>
<string name="tracker_warning">Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання.</string> <string name="tracker_warning">Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання.</string>
<string name="text_clear_search_history_prompt">Видалити всі останні пошукові запити назавжди\?</string> <string name="text_clear_search_history_prompt">Видалити всі останні пошукові запити назавжди\?</string>
<string name="available_sources">Доступні джерела</string> <string name="available_sources">Доступні джерела</string>
<string name="screenshots_block_nsfw">Блок на NSFW</string> <string name="screenshots_block_nsfw">Блок на NSFW</string>
<string name="screenshots_block_all">Завжди блокувати</string> <string name="screenshots_block_all">Завжди блокувати</string>
<string name="suggestions">Пропозиції</string> <string name="suggestions">Пропозиції</string>
<string name="suggestions_enable">Увімкнути пропозиції</string> <string name="suggestions_enable">Увімкнути пропозиції</string>
<string name="exclude_nsfw_from_suggestions">Не пропонувати NSFW манґу</string> <string name="exclude_nsfw_from_suggestions">Не пропонувати NSFW манґу</string>
<string name="filter_load_error">Не вдалося завантажити список жанрів</string> <string name="filter_load_error">Не вдалося завантажити список жанрів</string>
<string name="never">Ніколи</string> <string name="never">Ніколи</string>
<string name="appearance">Зовнішній вигляд</string> <string name="appearance">Зовнішній вигляд</string>
<string name="suggestions_excluded_genres">Виключити жанри</string> <string name="suggestions_excluded_genres">Виключити жанри</string>
<string name="suggestions_excluded_genres_summary">Укажіть жанри, які ви не хочете бачити в пропозиціях</string> <string name="suggestions_excluded_genres_summary">Укажіть жанри, які ви не хочете бачити в пропозиціях</string>
<string name="download_slowdown_summary">Допомагає уникнути блокування вашої IP-адреси</string> <string name="download_slowdown_summary">Допомагає уникнути блокування вашої IP-адреси</string>
<string name="chapters_will_removed_background">Розділи буде видалено у фоновому режимі</string> <string name="chapters_will_removed_background">Розділи буде видалено у фоновому режимі</string>
<string name="check_new_chapters_title">Перевіряти наявність нових розділів і повідомляти про них</string> <string name="check_new_chapters_title">Перевіряти наявність нових розділів і повідомляти про них</string>
<string name="show_notification_new_chapters_on">Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте</string> <string name="show_notification_new_chapters_on">Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте</string>
<string name="notifications_enable">Увімкнути сповіщення</string> <string name="notifications_enable">Увімкнути сповіщення</string>
<string name="show_notification_new_chapters_off">Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку</string> <string name="show_notification_new_chapters_off">Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку</string>
<string name="empty_favourite_categories">Немає улюблених категорій</string> <string name="empty_favourite_categories">Немає улюблених категорій</string>
<string name="name">Назва</string> <string name="name">Назва</string>
<string name="edit">Змінити</string> <string name="edit">Змінити</string>
<string name="edit_category">Змінити категорію</string> <string name="edit_category">Змінити категорію</string>
<string name="bookmark_add">Додати закладку</string> <string name="bookmark_add">Додати закладку</string>
<string name="bookmark_remove">Видалити закладку</string> <string name="bookmark_remove">Видалити закладку</string>
<string name="bookmarks">Закладки</string> <string name="bookmarks">Закладки</string>
<string name="bookmark_removed">Закладка видалена</string> <string name="bookmark_removed">Закладка видалена</string>
<string name="bookmark_added">Додано закладку</string> <string name="bookmark_added">Додано закладку</string>
<string name="undo">Відмінити</string> <string name="undo">Відмінити</string>
<string name="removed_from_history">Видалено з історії</string> <string name="removed_from_history">Видалено з історії</string>
<string name="dns_over_https">DNS через HTTPS</string> <string name="dns_over_https">DNS через HTTPS</string>
<string name="default_mode">Режим за замовчуванням</string> <string name="default_mode">Режим за замовчуванням</string>
<string name="detect_reader_mode_summary">Автоматично визначати, чи є манґа вебтуном</string> <string name="detect_reader_mode_summary">Автоматично визначати, чи є манґа вебтуном</string>
<string name="detect_reader_mode">Автовизначення режиму читання</string> <string name="detect_reader_mode">Автовизначення режиму читання</string>
<string name="disable_battery_optimization">Вимкнути оптимізацію акумулятора</string> <string name="disable_battery_optimization">Вимкнути оптимізацію акумулятора</string>
<string name="disable_battery_optimization_summary">Допомагає з перевірками фонових оновлень</string> <string name="disable_battery_optimization_summary">Допомагає з перевірками фонових оновлень</string>
<string name="crash_text">Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити.</string> <string name="crash_text">Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити.</string>
<string name="send">Надіслати</string> <string name="send">Надіслати</string>
<string name="disable_all">Вимкнути все</string> <string name="disable_all">Вимкнути все</string>
<string name="use_fingerprint">Використовувати відбиток пальця, якщо доступно</string> <string name="use_fingerprint">Використовувати відбиток пальця, якщо доступно</string>
<string name="appwidget_shelf_description">Манга з Вашого улюбленого</string> <string name="appwidget_shelf_description">Манга з Вашого улюбленого</string>
<string name="appwidget_recent_description">Манга, яку Ви нещодавно читали</string> <string name="appwidget_recent_description">Манга, яку Ви нещодавно читали</string>
<string name="invalid_domain_message">Недійсний домен</string> <string name="invalid_domain_message">Недійсний домен</string>
<string name="report">Звіт</string> <string name="report">Звіт</string>
<string name="tracking">Відстеження</string> <string name="tracking">Відстеження</string>
<string name="logout">Вийти</string> <string name="logout">Вийти</string>
<string name="status_planned">Заплановано</string> <string name="status_planned">Заплановано</string>
<string name="status_reading">Читаю</string> <string name="status_reading">Читаю</string>
<string name="status_re_reading">Перечитую</string> <string name="status_re_reading">Перечитую</string>
<string name="status_completed">Завершено</string> <string name="status_completed">Завершено</string>
<string name="status_on_hold">Відкладено</string> <string name="status_on_hold">Відкладено</string>
<string name="status_dropped">Занедбано</string> <string name="status_dropped">Занедбано</string>
<string name="show_reading_indicators">Показувати індикатори прогресу читання</string> <string name="show_reading_indicators">Показувати індикатори прогресу читання</string>
<string name="data_deletion">Видалення даних</string> <string name="data_deletion">Видалення даних</string>
<string name="show_reading_indicators_summary">Показати відсоток прочитаного в історії та обраному</string> <string name="show_reading_indicators_summary">Показати відсоток прочитаного в історії та обраному</string>
<string name="exclude_nsfw_from_history_summary">Манґа, позначена як NSFW, ніколи не буде додана до історії і ваш прогрес не буде збережений</string> <string name="exclude_nsfw_from_history_summary">Манґа, позначена як NSFW, ніколи не буде додана до історії і ваш прогрес не буде збережений</string>
<string name="clear_cookies_summary">Може допомогти в разі виникнення проблем. Усі авторизації будуть анульовані</string> <string name="clear_cookies_summary">Може допомогти в разі виникнення проблем. Усі авторизації будуть анульовані</string>
<string name="show_all">Показати всі</string> <string name="show_all">Показати всі</string>
<string name="select_range">Виберіть діапазон</string> <string name="select_range">Виберіть діапазон</string>
<string name="not_found_404">Вміст не знайдено або видалено</string> <string name="not_found_404">Вміст не знайдено або видалено</string>
<string name="text_shelf_holder_primary">Ваша манга буде відображатися тут</string> <string name="text_shelf_holder_primary">Ваша манга буде відображатися тут</string>
<string name="text_shelf_holder_secondary">Знайдіть, що почитати у розділі «Огляд»</string> <string name="text_shelf_holder_secondary">Знайдіть, що почитати у розділі «Огляд»</string>
<string name="back">Назад</string> <string name="back">Назад</string>
<string name="email_enter_hint">Введіть свою електронну пошту, щоб продовжити</string> <string name="email_enter_hint">Введіть свою електронну пошту, щоб продовжити</string>
<string name="history_cleared">Історія очищена</string> <string name="history_cleared">Історія очищена</string>
<string name="manage">Керувати</string> <string name="manage">Керувати</string>
<string name="no_bookmarks_yet">Закладок ще немає</string> <string name="no_bookmarks_yet">Закладок ще немає</string>
<string name="no_bookmarks_summary">Ви можете створювати закладки під час читання манґи</string> <string name="no_bookmarks_summary">Ви можете створювати закладки під час читання манґи</string>
<string name="bookmarks_removed">Закладки видалено</string> <string name="bookmarks_removed">Закладки видалено</string>
<string name="no_manga_sources">Немає джерел манґи</string> <string name="no_manga_sources">Немає джерел манґи</string>
<string name="no_manga_sources_text">Увімкніть джерела манґи, щоб читати онлайн</string> <string name="no_manga_sources_text">Увімкніть джерела манґи, щоб читати онлайн</string>
<string name="random">Випадкова</string> <string name="random">Випадкова</string>
<string name="categories_delete_confirm">Ви впевнені, що бажаєте видалити вибрані улюблені категорії\? <string name="categories_delete_confirm">Ви впевнені, що бажаєте видалити вибрані улюблені категорії\?
\nУсю манґу в них буде втрачено, і це неможливо скасувати.</string> \nУсю манґу в них буде втрачено, і це неможливо скасувати.</string>
<string name="reorder">Впорядкувати</string> <string name="reorder">Впорядкувати</string>
<string name="empty">Порожньо</string> <string name="empty">Порожньо</string>
<string name="explore">Огляд</string> <string name="explore">Огляд</string>
<string name="saved_manga">Збережена манґа</string> <string name="saved_manga">Збережена манґа</string>
<string name="pages_cache">Кеш сторінок</string> <string name="pages_cache">Кеш сторінок</string>
<string name="storage_usage">Використання сховища</string> <string name="storage_usage">Використання сховища</string>
<string name="available">Доступні</string> <string name="available">Доступні</string>
<string name="options">Параметри</string> <string name="options">Параметри</string>
<string name="incognito_mode">Режим інкогніто</string> <string name="incognito_mode">Режим інкогніто</string>
<string name="no_chapters">Немає розділів</string> <string name="no_chapters">Немає розділів</string>
<string name="automatic_scroll">Автоматична прокрутка</string> <string name="automatic_scroll">Автоматична прокрутка</string>
<string name="reader_info_bar">Показувати інформаційну панель у режимі читання</string> <string name="reader_info_bar">Показувати інформаційну панель у режимі читання</string>
<string name="comics_archive">Архів коміксів</string> <string name="comics_archive">Архів коміксів</string>
<string name="folder_with_images">Папка із зображеннями</string> <string name="folder_with_images">Папка із зображеннями</string>
<string name="importing_manga">Імпорт манґи</string> <string name="importing_manga">Імпорт манґи</string>
<string name="import_completed">Імпорт завершено</string> <string name="import_completed">Імпорт завершено</string>
<string name="import_completed_hint">Ви можете видалити оригінальний файл зі сховища, щоб заощадити місце</string> <string name="import_completed_hint">Ви можете видалити оригінальний файл зі сховища, щоб заощадити місце</string>
<string name="import_will_start_soon">Імпорт почнеться незабаром</string> <string name="import_will_start_soon">Імпорт почнеться незабаром</string>
<string name="feed">Стрічка</string> <string name="feed">Стрічка</string>
<string name="reader_info_pattern">Розд. %1$d/%2$d Стор. %3$d/%4$d</string> <string name="reader_info_pattern">Розд. %1$d/%2$d Стор. %3$d/%4$d</string>
<string name="account_already_exists">Обліковий запис уже існує</string> <string name="account_already_exists">Обліковий запис уже існує</string>
<string name="sync_title">Синхронізуйте ваші дані</string> <string name="sync_title">Синхронізуйте ваші дані</string>
<string name="canceled">Скасовано</string> <string name="canceled">Скасовано</string>
<string name="confirm_exit">Натисніть Назад ще раз, щоб вийти</string> <string name="confirm_exit">Натисніть Назад ще раз, щоб вийти</string>
<string name="sync">Синхронізація</string> <string name="sync">Синхронізація</string>
<string name="clear_all_history">Очистити всю історію</string> <string name="clear_all_history">Очистити всю історію</string>
<string name="last_2_hours">Останні 2 години</string> <string name="last_2_hours">Останні 2 години</string>
<string name="exit_confirmation_summary">Двічі натисніть Назад, щоб вийти зі застосунку</string> <string name="exit_confirmation_summary">Двічі натисніть Назад, щоб вийти зі застосунку</string>
<string name="exit_confirmation">Підтвердження виходу</string> <string name="exit_confirmation">Підтвердження виходу</string>
<string name="removed_from_favourites">Видалено з уподобань</string> <string name="removed_from_favourites">Видалено з уподобань</string>
<string name="other_cache">Інший кеш</string> <string name="other_cache">Інший кеш</string>
<string name="memory_usage_pattern">%s - %s</string> <string name="memory_usage_pattern">%s - %s</string>
<string name="manga_error_description_pattern">Деталі помилки:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Спробуйте &lt;a href=%2$s&gt;відкрити мангу у веб-браузері&lt;/a&gt;, щоб переконатися, що вона доступна в джерелі&lt;br&gt;2. Переконайтеся, що ви використовуєте &lt;a href=kotatsu://about&gt;останню версію Kotatsu&lt;/a&gt;&lt;br&gt;3. Якщо він доступний, надішліть звіт про помилку розробникам.</string> <string name="manga_error_description_pattern">Деталі помилки:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Спробуйте &lt;a href=%2$s&gt;відкрити мангу у веб-браузері&lt;/a&gt;, щоб переконатися, що вона доступна в джерелі&lt;br&gt;2. Переконайтеся, що ви використовуєте &lt;a href=kotatsu://about&gt;останню версію Kotatsu&lt;/a&gt;&lt;br&gt;3. Якщо він доступний, надішліть звіт про помилку розробникам.</string>
<string name="history_shortcuts">Показувати ярлики останньої прочитаної манґи</string> <string name="history_shortcuts">Показувати ярлики останньої прочитаної манґи</string>
<string name="history_shortcuts_summary">Зробити нещодавно прочитану манґу доступною за довгим натисканням на іконку застосунку</string> <string name="history_shortcuts_summary">Зробити нещодавно прочитану манґу доступною за довгим натисканням на іконку застосунку</string>
<string name="reader_control_ltr_summary">Натискання на правий край або натискання правої клавіші завжди переходить на наступну сторінку</string> <string name="reader_control_ltr_summary">Натискання на правий край або натискання правої клавіші завжди переходить на наступну сторінку</string>
<string name="reader_control_ltr">Ергономічне керування режимом читання</string> <string name="reader_control_ltr">Ергономічне керування режимом читання</string>
<string name="brightness">Яскравість</string> <string name="brightness">Яскравість</string>
<string name="color_correction">Корекція кольору</string> <string name="color_correction">Корекція кольору</string>
<string name="contrast">Контрастність</string> <string name="contrast">Контрастність</string>
<string name="reset">Скинути</string> <string name="reset">Скинути</string>
<string name="color_correction_hint">Вибрані параметри кольору будуть запам\'ятовані для цієї манґи</string> <string name="color_correction_hint">Вибрані параметри кольору будуть запам\'ятовані для цієї манґи</string>
<string name="text_unsaved_changes_prompt">Зберегти чи скасувати незбережені зміни\?</string> <string name="text_unsaved_changes_prompt">Зберегти чи скасувати незбережені зміни\?</string>
<string name="discard">Скасувати</string> <string name="discard">Скасувати</string>
<string name="server_error">Помилка на стороні сервера (%1$d). Будь ласка спробуйте пізніше</string> <string name="server_error">Помилка на стороні сервера (%1$d). Будь ласка спробуйте пізніше</string>
<string name="clear_new_chapters_counters">Також очистити інформацію про нові розділи</string> <string name="clear_new_chapters_counters">Також очистити інформацію про нові розділи</string>
<string name="error_no_space_left">На пристрої не залишилося вільного місця</string> <string name="error_no_space_left">На пристрої не залишилося вільного місця</string>
<string name="different_languages">Різні мови</string> <string name="different_languages">Різні мови</string>
<string name="network_unavailable">Мережа недоступна</string> <string name="network_unavailable">Мережа недоступна</string>
<string name="network_unavailable_hint">Увімкніть Wi-Fi або мобільну мережу, щоб читати манґу онлайн</string> <string name="network_unavailable_hint">Увімкніть Wi-Fi або мобільну мережу, щоб читати манґу онлайн</string>
<string name="webtoon_zoom">Масштабування в режимі вебтуну</string> <string name="webtoon_zoom">Масштабування в режимі вебтуну</string>
<string name="reader_slider">Відображати повзунок перемикання сторінок</string> <string name="reader_slider">Відображати повзунок перемикання сторінок</string>
<string name="compact">Компактно</string> <string name="compact">Компактно</string>
<string name="prefetch_content">Передвчасне завантаження контенту</string> <string name="prefetch_content">Передвчасне завантаження контенту</string>
<string name="source_disabled">Джерело відключено</string> <string name="source_disabled">Джерело відключено</string>
<string name="mark_as_current">Позначити як актуальне</string> <string name="mark_as_current">Позначити як актуальне</string>
<string name="language">Мова</string> <string name="language">Мова</string>
<string name="theme_name_kanade">Канаде</string> <string name="theme_name_kanade">Канаде</string>
<string name="services">Служби</string> <string name="services">Служби</string>
<string name="nothing_here">Тут нічого нема</string> <string name="nothing_here">Тут нічого нема</string>
<string name="scrobbling_empty_hint">Щоб відстежувати прогрес читання, виберіть Меню → Відстежити на екрані деталей манги.</string> <string name="scrobbling_empty_hint">Щоб відстежувати прогрес читання, виберіть Меню → Відстежити на екрані деталей манги.</string>
<string name="theme_name_miku">Міку</string> <string name="theme_name_miku">Міку</string>
<string name="theme_name_asuka">Аска</string> <string name="theme_name_asuka">Аска</string>
<string name="theme_name_mion">Міон</string> <string name="theme_name_mion">Міон</string>
<string name="theme_name_rikka">Рікка</string> <string name="theme_name_rikka">Рікка</string>
<string name="theme_name_sakura">Сакура</string> <string name="theme_name_sakura">Сакура</string>
<string name="share_logs">Поділиться логами</string> <string name="share_logs">Поділиться логами</string>
<string name="enable_logging">Увімкнути логування</string> <string name="enable_logging">Увімкнути логування</string>
<string name="enable_logging_summary">Записувати деякі дії з метою подальшого налагодження</string> <string name="enable_logging_summary">Записувати деякі дії з метою подальшого налагодження</string>
<string name="theme_name_mamimi">Мамімі</string> <string name="theme_name_mamimi">Мамімі</string>
<string name="show_suspicious_content">Показувати сумнівний контент</string> <string name="show_suspicious_content">Показувати сумнівний контент</string>
<string name="theme_name_dynamic">Динамічний</string> <string name="theme_name_dynamic">Динамічний</string>
<string name="color_theme">Колірний акцент</string> <string name="color_theme">Колірний акцент</string>
<string name="show_in_grid_view">Показати у вигляді сітки</string> <string name="show_in_grid_view">Показати у вигляді сітки</string>
<string name="allow_unstable_updates">Дозволити нестабільні оновлення</string> <string name="allow_unstable_updates">Дозволити нестабільні оновлення</string>
<string name="allow_unstable_updates_summary">Пропонувати оновлення до бета-версій додатку</string> <string name="allow_unstable_updates_summary">Пропонувати оновлення до бета-версій додатку</string>
<string name="download_started">Завантаження розпочато</string> <string name="download_started">Завантаження розпочато</string>
<string name="user_agent">Заголовок UserAgent</string> <string name="user_agent">Заголовок UserAgent</string>
<string name="settings_apply_restart_required">Перезапустіть програму, щоб застосувати зміни</string> <string name="settings_apply_restart_required">Перезапустіть програму, щоб застосувати зміни</string>
<string name="got_it">Зрозумів</string> <string name="got_it">Зрозумів</string>
<string name="comics_archive_import_description">Ви можете вибрати один або кілька файлів .cbz або .zip, кожен файл буде розпізнано як окрема манга.</string> <string name="comics_archive_import_description">Ви можете вибрати один або кілька файлів .cbz або .zip, кожен файл буде розпізнано як окрема манга.</string>
<string name="folder_with_images_import_description">Ви можете вибрати каталог з архівами або зображеннями. Кожен архів (або підкаталог) буде розпізнано як розділ.</string> <string name="folder_with_images_import_description">Ви можете вибрати каталог з архівами або зображеннями. Кожен архів (або підкаталог) буде розпізнано як розділ.</string>
<string name="speed">Швидкість</string> <string name="speed">Швидкість</string>
<string name="restore_backup_description">Імпортуйте раніше створену резервну копію даних користувача</string> <string name="restore_backup_description">Імпортуйте раніше створену резервну копію даних користувача</string>
<string name="show_on_shelf">Показати на полиці</string> <string name="show_on_shelf">Показати на полиці</string>
<string name="sources_reorder_tip">Натисніть і утримуйте елемент, щоб змінити його порядок</string> <string name="sources_reorder_tip">Натисніть і утримуйте елемент, щоб змінити його порядок</string>
<string name="sync_auth_hint">Ви можете увійти в існуючий аккаунт, або створити новий</string> <string name="sync_auth_hint">Ви можете увійти в існуючий аккаунт, або створити новий</string>
<string name="find_similar">Знайти схожі</string> <string name="find_similar">Знайти схожі</string>
<string name="sync_settings">Параметри синхронізації</string> <string name="sync_settings">Параметри синхронізації</string>
<string name="server_address">Адреса сервера</string> <string name="server_address">Адреса сервера</string>
<string name="sync_host_description">Ви можете використовувати власний сервер синхронізації або сервер за замовчуванням. Не змінюйте це, якщо ви не впевнені, що робите.</string> <string name="sync_host_description">Ви можете використовувати власний сервер синхронізації або сервер за замовчуванням. Не змінюйте це, якщо ви не впевнені, що робите.</string>
<string name="ignore_ssl_errors">Ігноруйте помилки SSL</string> <string name="ignore_ssl_errors">Ігноруйте помилки SSL</string>
<string name="mirror_switching">Виберіть дзеркало автоматично</string> <string name="mirror_switching">Виберіть дзеркало автоматично</string>
<string name="paused">Призупинено</string> <string name="paused">Призупинено</string>
<string name="remove_completed">Видалення завершено</string> <string name="remove_completed">Видалити завершені</string>
<string name="downloads_wifi_only">Завантажувати тільки через Wi-Fi</string> <string name="downloads_wifi_only">Завантажувати тільки через Wi-Fi</string>
<string name="cancel_all">Скасувати все</string> <string name="cancel_all">Скасувати все</string>
<string name="mirror_switching_summary">Автоматично перемикайте домени для віддалених джерел у разі помилок, якщо дзеркала доступні</string> <string name="mirror_switching_summary">Автоматично перемикайте домени для віддалених джерел у разі помилок, якщо дзеркала доступні</string>
<string name="resume">Відновити</string> <string name="resume">Відновити</string>
<string name="pause">Пауза</string> <string name="pause">Пауза</string>
<string name="downloads_wifi_only_summary">Зупинити завантаження при переході на мобільну мережу</string> <string name="downloads_wifi_only_summary">Зупинити завантаження при переході на мобільну мережу</string>
</resources> <string name="enable">Увімкнути</string>
<string name="no_thanks">Ні, дякую</string>
<string name="suggestion_manga">Пропозиція: %s</string>
<string name="suggestions_notifications_summary">Іноді показувати сповіщення з запропонованою мангою</string>
<string name="more">Більше</string>
<string name="cancel_all_downloads_confirm">Усі активні завантаження буде скасовано, частково завантажені дані буде втрачено</string>
<string name="remove_completed_downloads_confirm">Ваша історія завантажень буде остаточно видалена</string>
<string name="text_downloads_list_holder">У вас немає завантажень</string>
<string name="downloads_resumed">Завантаження відновлено</string>
<string name="downloads_paused">Завантаження призупинено</string>
<string name="downloads_removed">Завантаження видалено</string>
<string name="downloads_cancelled">Завантаження скасовано</string>
<string name="suggestions_enable_prompt">Хочете отримувати персоналізовані пропозиції щодо манги\?</string>
<string name="web_view_unavailable">WebView недоступний: перевірте, чи встановлено провайдер WebView</string>
<string name="translations">Переклади</string>
</resources>

View File

@@ -414,4 +414,6 @@
<string name="downloads_removed">Downloads have been removed</string> <string name="downloads_removed">Downloads have been removed</string>
<string name="downloads_cancelled">Downloads have been cancelled</string> <string name="downloads_cancelled">Downloads have been cancelled</string>
<string name="suggestions_enable_prompt">Do you want to receive personalized manga suggestions?</string> <string name="suggestions_enable_prompt">Do you want to receive personalized manga suggestions?</string>
<string name="translations">Translations</string>
<string name="web_view_unavailable">WebView not available: check if WebView provider is installed</string>
</resources> </resources>

View File

@@ -26,4 +26,11 @@
<locale android:name="uk" /> <locale android:name="uk" />
<locale android:name="zh-CN" /> <locale android:name="zh-CN" />
<locale android:name="zh-TW" /> <locale android:name="zh-TW" />
<locale android:name="fil" />
<locale android:name="hi" />
<locale android:name="kk" />
<locale android:name="ko" />
<locale android:name="ne" />
<locale android:name="nn" />
<locale android:name="vi" />
</locale-config> </locale-config>

View File

@@ -4,9 +4,9 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.0.0' classpath 'com.android.tools.build:gradle:8.0.1'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21'
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.45' classpath 'com.google.dagger:hilt-android-gradle-plugin:2.46.1'
} }
} }
@@ -20,16 +20,6 @@ allprojects {
} }
} }
String currentBranch() {
def branchName = ""
try {
branchName = "git rev-parse --abbrev-ref HEAD".execute().text.trim()
} catch (ignored) {
println "Git not found"
}
return branchName
}
task clean(type: Delete) { task clean(type: Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }