Compare commits

..

29 Commits

Author SHA1 Message Date
Koitharu
c81e8749b6 Update parsers and headers processing 2023-06-28 13:27:26 +03:00
ztimms73
5fa260a0c7 Update issue template 2023-06-28 03:14:30 +03:00
Koitharu
e0ba4e2686 Remove unused code 2023-06-27 12:52:41 +03:00
Koitharu
f188d1c0f3 Remove ongoing flag from background work notifications 2023-06-27 12:34:12 +03:00
CakesTwix
6de55afa27 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (447 of 447 strings)

Co-authored-by: CakesTwix <cakestwix1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/
Translation: Kotatsu/Strings
2023-06-27 12:30:56 +03:00
J. Lavoie
21dcb5b754 Translated using Weblate (French)
Currently translated at 100.0% (447 of 447 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-06-27 12:30:56 +03:00
gallegonovato
9b3ea57db1 Translated using Weblate (Spanish)
Currently translated at 100.0% (447 of 447 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/
Translation: Kotatsu/Strings
2023-06-27 12:30:56 +03:00
kuragehime
032a8607ba Translated using Weblate (Japanese)
Currently translated at 100.0% (447 of 447 strings)

Co-authored-by: kuragehime <kuragehime641@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ja/
Translation: Kotatsu/Strings
2023-06-27 12:30:56 +03:00
Макар Разин
f7303c5957 Translated using Weblate (Serbian)
Currently translated at 29.3% (131 of 447 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.5% (445 of 447 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (447 of 447 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (447 of 447 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/sr/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/
Translation: Kotatsu/Strings
2023-06-27 12:30:56 +03:00
Koitharu
d696606ef9 Misc fixes 2023-06-27 10:28:47 +03:00
Koitharu
0a6e106a1d Filter local manga files 2023-06-24 13:18:09 +03:00
Koitharu
de1a7f0ca8 Fix IndexOutOfBoundsException in RemoteViewsFactory 2023-06-24 09:38:13 +03:00
Koitharu
9d31e76cc7 Translated using Weblate (Russian)
Currently translated at 100.0% (443 of 443 strings)

Co-authored-by: Koitharu <nvasya95@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ru/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
Cookies
20910ffb5d Translated using Weblate (Vietnamese)
Currently translated at 81.2% (360 of 443 strings)

Co-authored-by: Cookies <Nekop1845@proton.me>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/vi/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
Clxff H3r4ld0
7497ee6364 Translated using Weblate (Indonesian)
Currently translated at 100.0% (443 of 443 strings)

Co-authored-by: Clxff H3r4ld0 <123844876+clxf12@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/id/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
Abay Emes
0f2ed50e18 Translated using Weblate (Kazakh)
Currently translated at 48.8% (213 of 436 strings)

Co-authored-by: Abay Emes <abayemes@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/kk/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
BlackSpectrum
ba066b577b Translated using Weblate (Hindi)
Currently translated at 15.5% (68 of 436 strings)

Co-authored-by: BlackSpectrum <tittan5000@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/hi/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
CakesTwix
4496fe876f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (436 of 436 strings)

Co-authored-by: CakesTwix <cakestwix1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/uk/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
gallegonovato
a9f5abebf0 Translated using Weblate (Spanish)
Currently translated at 100.0% (443 of 443 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (436 of 436 strings)

Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/es/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
qrynill
bebee2ef27 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 91.7% (399 of 435 strings)

Co-authored-by: qrynill <tryvseu@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/nn/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
Макар Разин
4ec2b0c8fe Translated using Weblate (Vietnamese)
Currently translated at 79.3% (345 of 435 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (435 of 435 strings)

Translated using Weblate (Korean)

Currently translated at 75.1% (327 of 435 strings)

Translated using Weblate (Greek)

Currently translated at 19.3% (84 of 435 strings)

Translated using Weblate (Serbian)

Currently translated at 28.2% (123 of 435 strings)

Translated using Weblate (Arabic)

Currently translated at 18.1% (79 of 435 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (435 of 435 strings)

Translated using Weblate (Italian)

Currently translated at 85.2% (371 of 435 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (435 of 435 strings)

Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ar/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/be/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/el/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/it/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/ko/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/pl/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/pt/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/sr/
Translate-URL: https://hosted.weblate.org/projects/kotatsu/strings/vi/
Translation: Kotatsu/Strings
2023-06-23 16:23:37 +03:00
Koitharu
4a7be70898 Update queries in manifest 2023-06-23 16:14:41 +03:00
Koitharu
2bcba1eb21 Configure manga directories 2023-06-22 13:45:29 +03:00
Koitharu
feca7ba3fc Support for custom directories for manga 2023-06-22 10:11:11 +03:00
Koitharu
745b349e5e Ability to remove item from updates 2023-06-21 15:27:20 +03:00
Koitharu
13946783a5 Fix crashes 2023-06-21 15:06:01 +03:00
Koitharu
84e5400522 Download options dialog 2023-06-21 14:54:11 +03:00
Koitharu
02c9a933d2 Fix offline manga details 2023-06-20 17:06:18 +03:00
Koitharu
92af851d3b Option to clear single source cookies 2023-06-20 13:43:09 +03:00
98 changed files with 3433 additions and 1760 deletions

View File

@@ -61,4 +61,6 @@ body:
label: Acknowledgements
options:
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
required: true
required: true
- label: If this is an issue with a parser, I should be opening an issue in the [parsers repository](https://github.com/KotatsuApp/kotatsu-parsers/issues/new/choose).
required: true

1
.idea/.gitignore generated vendored
View File

@@ -1,3 +1,4 @@
# Default ignored files
/shelf/
/workspace.xml
/migrations.xml

View File

@@ -15,8 +15,8 @@ android {
applicationId 'org.koitharu.kotatsu'
minSdkVersion 21
targetSdkVersion 33
versionCode 555
versionName '5.2.3'
versionCode 559
versionName '5.3.2'
generatedDensities = []
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -79,7 +79,7 @@ afterEvaluate {
}
dependencies {
//noinspection GradleDependency
implementation('com.github.KotatsuApp:kotatsu-parsers:86a82970fc') {
implementation('com.github.KotatsuApp:kotatsu-parsers:92bfc7e9fa') {
exclude group: 'org.json', module: 'json'
}
@@ -113,9 +113,10 @@ dependencies {
exclude group: 'com.google.j2objc', module: 'j2objc-annotations'
}
implementation 'androidx.room:room-runtime:2.5.1'
implementation 'androidx.room:room-ktx:2.5.1'
kapt 'androidx.room:room-compiler:2.5.1'
implementation 'androidx.room:room-runtime:2.5.2'
implementation 'androidx.room:room-ktx:2.5.2'
//noinspection KaptUsageInsteadOfKsp
kapt 'androidx.room:room-compiler:2.5.2'
implementation 'com.squareup.okhttp3:okhttp:4.11.0'
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.11.0'
@@ -135,13 +136,13 @@ dependencies {
implementation 'com.github.solkin:disk-lru-cache:1.4'
implementation 'io.noties.markwon:core:4.6.2'
implementation 'ch.acra:acra-http:5.9.7'
implementation 'ch.acra:acra-dialog:5.9.7'
implementation 'ch.acra:acra-http:5.10.1'
implementation 'ch.acra:acra-dialog:5.10.1'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.11'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.json:json:20230227'
testImplementation 'org.json:json:20230618'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1'
androidTestImplementation 'androidx.test:runner:1.5.2'
@@ -151,7 +152,7 @@ dependencies {
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.2'
androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.15.0'
androidTestImplementation 'com.google.dagger:hilt-android-testing:2.46.1'

View File

@@ -18,6 +18,22 @@
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT" />
<data android:mimeType="text/plain" />
</intent>
<intent>
<action android:name="android.speech.action.RECOGNIZE_SPEECH" />
</intent>
</queries>
<application
android:name="org.koitharu.kotatsu.KotatsuApp"
@@ -32,6 +48,7 @@
android:largeHeap="true"
android:localeConfig="@xml/locales"
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Kotatsu"
@@ -98,6 +115,9 @@
<data android:host="sync-settings" />
</intent-filter>
</activity>
<activity
android:name="org.koitharu.kotatsu.settings.storage.directories.MangaDirectoriesActivity"
android:label="@string/local_manga_directories" />
<activity
android:name="org.koitharu.kotatsu.browser.BrowserActivity"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"

View File

@@ -8,6 +8,7 @@ import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.webkit.CookieManager
import androidx.core.graphics.Insets
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
@@ -16,6 +17,7 @@ import org.koitharu.kotatsu.core.network.CommonHeadersInterceptor
import org.koitharu.kotatsu.core.ui.BaseActivity
import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability
import org.koitharu.kotatsu.databinding.ActivityBrowserBinding
import org.koitharu.kotatsu.parsers.network.UserAgents
import com.google.android.material.R as materialR
@SuppressLint("SetJavaScriptEnabled")
@@ -34,8 +36,9 @@ class BrowserActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallback
}
with(viewBinding.webView.settings) {
javaScriptEnabled = true
userAgentString = CommonHeadersInterceptor.userAgentChrome
userAgentString = UserAgents.CHROME_MOBILE
}
CookieManager.getInstance().setAcceptThirdPartyCookies(viewBinding.webView, true)
viewBinding.webView.webViewClient = BrowserClient(this)
viewBinding.webView.webChromeClient = ProgressChromeClient(viewBinding.progressBar)
onBackPressedCallback = WebViewBackPressedCallback(viewBinding.webView)

View File

@@ -24,6 +24,7 @@ import org.koitharu.kotatsu.core.ui.BaseActivity
import org.koitharu.kotatsu.core.util.TaggedActivityResult
import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability
import org.koitharu.kotatsu.databinding.ActivityBrowserBinding
import org.koitharu.kotatsu.parsers.network.UserAgents
import javax.inject.Inject
import com.google.android.material.R as materialR
@@ -49,10 +50,9 @@ class CloudFlareActivity : BaseActivity<ActivityBrowserBinding>(), CloudFlareCal
val url = intent?.dataString.orEmpty()
with(viewBinding.webView.settings) {
javaScriptEnabled = true
cacheMode = WebSettings.LOAD_DEFAULT
domStorageEnabled = true
databaseEnabled = true
userAgentString = intent?.getStringExtra(ARG_UA) ?: CommonHeadersInterceptor.userAgentFallback
userAgentString = intent?.getStringExtra(ARG_UA) ?: UserAgents.CHROME_MOBILE
}
viewBinding.webView.webViewClient = CloudFlareClient(cookieJar, this, url)
onBackPressedCallback = WebViewBackPressedCallback(viewBinding.webView).also {

View File

@@ -33,11 +33,21 @@ abstract class ErrorObserver(
return resolver != null && ExceptionResolver.canResolve(error)
}
private fun isAlive(): Boolean {
return when {
fragment != null -> fragment.view != null
activity != null -> !activity.isDestroyed
else -> true
}
}
protected fun resolve(error: Throwable) {
lifecycleScope.launch {
val isResolved = resolver?.resolve(error) ?: false
if (isActive) {
onResolved?.accept(isResolved)
if (isAlive()) {
lifecycleScope.launch {
val isResolved = resolver?.resolve(error) ?: false
if (isActive) {
onResolved?.accept(isResolved)
}
}
}
}

View File

@@ -0,0 +1,17 @@
package org.koitharu.kotatsu.core.exceptions.resolve
import android.view.View
import android.widget.Toast
import androidx.fragment.app.Fragment
import org.koitharu.kotatsu.core.util.ext.getDisplayMessage
class ToastErrorObserver(
host: View,
fragment: Fragment?,
) : ErrorObserver(host, fragment, null, null) {
override suspend fun emit(value: Throwable) {
val toast = Toast.makeText(host.context, value.getDisplayMessage(host.context.resources), Toast.LENGTH_SHORT)
toast.show()
}
}

View File

@@ -8,10 +8,14 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.util.mapToSet
@JvmName("mangaIds")
fun Collection<Manga>.ids() = mapToSet { it.id }
fun Collection<Manga>.distinctById() = distinctBy { it.id }
@JvmName("chaptersIds")
fun Collection<MangaChapter>.ids() = mapToSet { it.id }
fun Collection<ChapterListItem>.countChaptersByBranch(): Int {
if (size <= 1) {
return size

View File

@@ -1,6 +1,5 @@
package org.koitharu.kotatsu.core.network
import android.os.Build
import android.util.Log
import dagger.Lazy
import okhttp3.Headers
@@ -10,11 +9,11 @@ import okhttp3.Response
import org.koitharu.kotatsu.BuildConfig
import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.parser.RemoteMangaRepository
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.util.mergeWith
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.network.UserAgents
import org.koitharu.kotatsu.parsers.util.mergeWith
import java.net.IDN
import java.util.Locale
import javax.inject.Inject
import javax.inject.Singleton
@@ -39,7 +38,7 @@ class CommonHeadersInterceptor @Inject constructor(
headersBuilder.mergeWith(it, replaceExisting = false)
}
if (headersBuilder[CommonHeaders.USER_AGENT] == null) {
headersBuilder[CommonHeaders.USER_AGENT] = userAgentFallback
headersBuilder[CommonHeaders.USER_AGENT] = UserAgents.CHROME_MOBILE
}
if (headersBuilder[CommonHeaders.REFERER] == null && repository != null) {
val idn = IDN.toASCII(repository.domain)
@@ -62,26 +61,4 @@ class CommonHeadersInterceptor @Inject constructor(
override fun request(): Request = request
}
companion object {
val userAgentFallback
get() = "Kotatsu/%s (Android %s; %s; %s %s; %s)".format(
BuildConfig.VERSION_NAME,
Build.VERSION.RELEASE,
Build.MODEL,
Build.BRAND,
Build.DEVICE,
Locale.getDefault().language,
)
val userAgentChrome
get() = (
"Mozilla/5.0 (Linux; Android %s; %s) AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/100.0.4896.127 Mobile Safari/537.36"
).format(
Build.VERSION.RELEASE,
Build.MODEL,
)
}
}

View File

@@ -4,6 +4,7 @@ import android.webkit.CookieManager
import androidx.annotation.WorkerThread
import okhttp3.Cookie
import okhttp3.HttpUrl
import org.koitharu.kotatsu.core.util.ext.newBuilder
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
@@ -30,6 +31,21 @@ class AndroidCookieJar : MutableCookieJar {
}
}
override fun removeCookies(url: HttpUrl) {
val cookies = loadForRequest(url)
if (cookies.isEmpty()) {
return
}
val urlString = url.toString()
for (c in cookies) {
val nc = c.newBuilder()
.expiresAt(System.currentTimeMillis() - 100000)
.build()
cookieManager.setCookie(urlString, nc.toString())
}
check(loadForRequest(url).isEmpty())
}
override suspend fun clear() = suspendCoroutine<Boolean> { continuation ->
cookieManager.removeAllCookies(continuation::resume)
}

View File

@@ -13,5 +13,8 @@ interface MutableCookieJar : CookieJar {
@WorkerThread
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>)
@WorkerThread
fun removeCookies(url: HttpUrl)
suspend fun clear(): Boolean
}

View File

@@ -21,6 +21,7 @@ class PreferencesCookieJar(
private var isLoaded = false
@WorkerThread
@Synchronized
override fun loadForRequest(url: HttpUrl): List<Cookie> {
loadPersistent()
val expired = HashSet<String>()
@@ -40,6 +41,7 @@ class PreferencesCookieJar(
}
@WorkerThread
@Synchronized
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
val wrapped = cookies.map { CookieWrapper(it) }
prefs.edit(commit = true) {
@@ -53,6 +55,22 @@ class PreferencesCookieJar(
}
}
@Synchronized
@WorkerThread
override fun removeCookies(url: HttpUrl) {
loadPersistent()
val toRemove = HashSet<String>()
for ((key, cookie) in cache) {
if (cookie.isExpired() || cookie.cookie.matches(url)) {
toRemove += key
}
}
if (toRemove.isNotEmpty()) {
cache.removeAll(toRemove)
removePersistent(toRemove)
}
}
override suspend fun clear(): Boolean {
cache.clear()
withContext(Dispatchers.IO) {

View File

@@ -9,6 +9,6 @@ fun MangaParser(source: MangaSource, loaderContext: MangaLoaderContext): MangaPa
return if (source == MangaSource.DUMMY) {
DummyParser(loaderContext)
} else {
source.newParser(loaderContext)
loaderContext.newParserInstance(source)
}
}
}

View File

@@ -21,9 +21,11 @@ import org.koitharu.kotatsu.core.util.ext.filterToSet
import org.koitharu.kotatsu.core.util.ext.getEnumValue
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.putEnumValue
import org.koitharu.kotatsu.core.util.ext.takeIfReadable
import org.koitharu.kotatsu.core.util.ext.toUriOrNull
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.model.SortOrder
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
import org.koitharu.kotatsu.parsers.util.mapToSet
import org.koitharu.kotatsu.shelf.domain.model.ShelfSection
import java.io.File
@@ -234,14 +236,28 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
if (key == null) ScreenshotsPolicy.ALLOW else ScreenshotsPolicy.valueOf(key)
}.getOrDefault(ScreenshotsPolicy.ALLOW)
var userSpecifiedMangaDirectories: Set<File>
get() {
val set = prefs.getStringSet(KEY_LOCAL_MANGA_DIRS, emptySet()).orEmpty()
return set.mapNotNullToSet { File(it).takeIfReadable() }
}
set(value) {
val set = value.mapToSet { it.absolutePath }
prefs.edit { putStringSet(KEY_LOCAL_MANGA_DIRS, set) }
}
var mangaStorageDir: File?
get() = prefs.getString(KEY_LOCAL_STORAGE, null)?.let {
File(it)
}?.takeIf { it.exists() }
}?.takeIf { it.exists() && it in userSpecifiedMangaDirectories }
set(value) = prefs.edit {
if (value == null) {
remove(KEY_LOCAL_STORAGE)
} else {
val userDirs = userSpecifiedMangaDirectories
if (value !in userDirs) {
userSpecifiedMangaDirectories = userDirs + value
}
putString(KEY_LOCAL_STORAGE, value.path)
}
}
@@ -461,6 +477,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
const val KEY_PROXY_LOGIN = "proxy_login"
const val KEY_PROXY_PASSWORD = "proxy_password"
const val KEY_IMAGES_PROXY = "images_proxy"
const val KEY_LOCAL_MANGA_DIRS = "local_manga_dirs"
// About
const val KEY_APP_UPDATE = "app_update"

View File

@@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.ActionBarContextView
import androidx.appcompat.widget.Toolbar
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.graphics.ColorUtils
import androidx.core.view.ViewCompat
@@ -103,8 +104,7 @@ abstract class BaseActivity<B : ViewBinding> :
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (BuildConfig.DEBUG && keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// ActivityCompat.recreate(this)
error("Test")
ActivityCompat.recreate(this)
return true
}
return super.onKeyDown(keyCode, event)

View File

@@ -1,101 +0,0 @@
package org.koitharu.kotatsu.core.ui.dialog
import android.content.Context
import android.content.DialogInterface
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.runBlocking
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.databinding.ItemStorageBinding
import org.koitharu.kotatsu.local.data.LocalStorageManager
import java.io.File
class StorageSelectDialog private constructor(private val delegate: AlertDialog) :
DialogInterface by delegate {
fun show() = delegate.show()
class Builder(context: Context, storageManager: LocalStorageManager, listener: OnStorageSelectListener) {
private val adapter = VolumesAdapter(storageManager)
private val delegate = MaterialAlertDialogBuilder(context)
init {
if (adapter.isEmpty) {
delegate.setMessage(R.string.cannot_find_available_storage)
} else {
val defaultValue = runBlocking {
storageManager.getDefaultWriteableDir()
}
adapter.selectedItemPosition = adapter.volumes.indexOfFirst {
it.first.canonicalPath == defaultValue?.canonicalPath
}
delegate.setAdapter(adapter) { d, i ->
listener.onStorageSelected(adapter.getItem(i).first)
d.dismiss()
}
}
}
fun setTitle(@StringRes titleResId: Int): Builder {
delegate.setTitle(titleResId)
return this
}
fun setTitle(title: CharSequence): Builder {
delegate.setTitle(title)
return this
}
fun setNegativeButton(@StringRes textId: Int): Builder {
delegate.setNegativeButton(textId, null)
return this
}
fun create() = StorageSelectDialog(delegate.create())
}
private class VolumesAdapter(storageManager: LocalStorageManager) : BaseAdapter() {
var selectedItemPosition: Int = -1
val volumes = getAvailableVolumes(storageManager)
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = convertView ?: LayoutInflater.from(parent.context).inflate(R.layout.item_storage, parent, false)
val binding = (view.tag as? ItemStorageBinding) ?: ItemStorageBinding.bind(view).also {
view.tag = it
}
val item = volumes[position]
binding.imageViewIndicator.isChecked = selectedItemPosition == position
binding.textViewTitle.text = item.second
binding.textViewSubtitle.text = item.first.path
return view
}
override fun getItem(position: Int): Pair<File, String> = volumes[position]
override fun getItemId(position: Int) = position.toLong()
override fun getCount() = volumes.size
override fun hasStableIds() = true
private fun getAvailableVolumes(storageManager: LocalStorageManager): List<Pair<File, String>> {
return runBlocking {
storageManager.getWriteableDirs().map {
it to storageManager.getStorageDisplayName(it)
}
}
}
}
fun interface OnStorageSelectListener {
fun onStorageSelected(file: File)
}
}

View File

@@ -24,6 +24,7 @@ import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.shape.ShapeAppearanceModel
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.util.ext.resolveDp
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ViewTwoLinesItemBinding
@SuppressLint("RestrictedApi")
@@ -35,6 +36,18 @@ class TwoLinesItemView @JvmOverloads constructor(
private val binding = ViewTwoLinesItemBinding.inflate(LayoutInflater.from(context), this)
var title: CharSequence?
get() = binding.title.text
set(value) {
binding.title.text = value
}
var subtitle: CharSequence?
get() = binding.subtitle.textAndVisible
set(value) {
binding.subtitle.textAndVisible = value
}
init {
var textColors: ColorStateList? = null
context.withStyledAttributes(
@@ -76,8 +89,7 @@ class TwoLinesItemView @JvmOverloads constructor(
}
fun setIconResource(@DrawableRes resId: Int) {
val icon = if (resId != 0) ContextCompat.getDrawable(context, resId) else null
binding.icon.setImageDrawable(icon)
binding.icon.setImageResource(resId)
}
private fun createShapeDrawable(ta: TypedArray): InsetDrawable {

View File

@@ -1,6 +0,0 @@
package org.koitharu.kotatsu.core.util
fun interface BufferedObserver<T> {
fun onChanged(t: T, previous: T?)
}

View File

@@ -0,0 +1,90 @@
package org.koitharu.kotatsu.core.util.ext
import android.annotation.TargetApi
import android.content.Context
import android.net.Uri
import android.os.Build
import android.os.storage.StorageManager
import android.provider.DocumentsContract
import org.koitharu.kotatsu.parsers.util.removeSuffix
import java.io.File
import java.lang.reflect.Array as ArrayReflect
private const val PRIMARY_VOLUME_NAME = "primary"
fun Uri.resolveFile(context: Context): File? {
val volumeId = getVolumeIdFromTreeUri(this) ?: return null
val volumePath = getVolumePath(volumeId, context)?.removeSuffix(File.separatorChar) ?: return null
val documentPath = getDocumentPathFromTreeUri(this)?.removeSuffix(File.separatorChar) ?: return null
return File(
if (documentPath.isNotEmpty()) {
if (documentPath.startsWith(File.separator)) {
volumePath + documentPath
} else {
volumePath + File.separator + documentPath
}
} else {
volumePath
},
)
}
private fun getVolumePath(volumeId: String, context: Context): String? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getVolumePathForAndroid11AndAbove(volumeId, context)
} else {
getVolumePathBeforeAndroid11(volumeId, context)
}
}
private fun getVolumePathBeforeAndroid11(volumeId: String, context: Context): String? = runCatching {
val mStorageManager = context.getSystemService(Context.STORAGE_SERVICE) as StorageManager
val storageVolumeClazz = Class.forName("android.os.storage.StorageVolume")
val getVolumeList = mStorageManager.javaClass.getMethod("getVolumeList")
val getUuid = storageVolumeClazz.getMethod("getUuid")
val getPath = storageVolumeClazz.getMethod("getPath")
val isPrimary = storageVolumeClazz.getMethod("isPrimary")
val result = getVolumeList.invoke(mStorageManager)
val length = ArrayReflect.getLength(checkNotNull(result))
(0 until length).firstNotNullOfOrNull { i ->
val storageVolumeElement = ArrayReflect.get(result, i)
val uuid = getUuid.invoke(storageVolumeElement) as String
val primary = isPrimary.invoke(storageVolumeElement) as Boolean
when {
primary && volumeId == PRIMARY_VOLUME_NAME -> getPath.invoke(storageVolumeElement) as String
uuid == volumeId -> getPath.invoke(storageVolumeElement) as String
else -> null
}
}
}.onFailure {
it.printStackTraceDebug()
}.getOrNull()
@TargetApi(Build.VERSION_CODES.R)
private fun getVolumePathForAndroid11AndAbove(volumeId: String, context: Context): String? = runCatching {
val storageManager = context.getSystemService(Context.STORAGE_SERVICE) as StorageManager
storageManager.storageVolumes.firstNotNullOfOrNull { volume ->
if (volume.isPrimary && volumeId == PRIMARY_VOLUME_NAME) {
volume.directory?.path
} else {
val uuid = volume.uuid
if (uuid != null && uuid == volumeId) volume.directory?.path else null
}
}
}.onFailure {
it.printStackTraceDebug()
}.getOrNull()
private fun getVolumeIdFromTreeUri(treeUri: Uri): String? {
val docId = DocumentsContract.getTreeDocumentId(treeUri)
val split = docId.split(":".toRegex())
return split.firstOrNull()?.takeUnless { it.isEmpty() }
}
private fun getDocumentPathFromTreeUri(treeUri: Uri): String? {
val docId = DocumentsContract.getTreeDocumentId(treeUri)
val split: Array<String?> = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
return if (split.size >= 2 && split[1] != null) split[1] else File.separator
}

View File

@@ -4,6 +4,7 @@ import android.os.SystemClock
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onCompletion
@@ -62,3 +63,23 @@ fun <T> Flow<T>.zipWithPrevious(): Flow<Pair<T?, T>> = flow {
emit(result)
}
}
@Suppress("UNCHECKED_CAST")
fun <T1, T2, T3, T4, T5, T6, R> combine(
flow: Flow<T1>,
flow2: Flow<T2>,
flow3: Flow<T3>,
flow4: Flow<T4>,
flow5: Flow<T5>,
flow6: Flow<T6>,
transform: suspend (T1, T2, T3, T4, T5, T6) -> R
): Flow<R> = combine(flow, flow2, flow3, flow4, flow5, flow6) { args: Array<*> ->
transform(
args[0] as T1,
args[1] as T2,
args[2] as T3,
args[3] as T4,
args[4] as T5,
args[5] as T6,
)
}

View File

@@ -1,5 +1,6 @@
package org.koitharu.kotatsu.core.util.ext
import okhttp3.Cookie
import okhttp3.HttpUrl
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody
@@ -38,3 +39,23 @@ fun Response.ensureSuccess() = apply {
throw IllegalStateException(message)
}
}
fun Cookie.newBuilder(): Cookie.Builder = Cookie.Builder().also { c ->
c.name(name)
c.value(value)
if (persistent) {
c.expiresAt(expiresAt)
}
if (hostOnly) {
c.hostOnlyDomain(domain)
} else {
c.domain(domain)
}
c.path(path)
if (secure) {
c.secure()
}
if (httpOnly) {
c.httpOnly()
}
}

View File

@@ -34,6 +34,7 @@ fun Throwable.getDisplayMessage(resources: Resources): String = when (this) {
is UnsupportedFileException -> resources.getString(R.string.text_file_not_supported)
is FileNotFoundException -> resources.getString(R.string.file_not_found)
is AccessDeniedException -> resources.getString(R.string.no_access_to_file)
is EmptyHistoryException -> resources.getString(R.string.history_is_empty)
is SyncApiException,
is ContentUnavailableException,

View File

@@ -0,0 +1,14 @@
package org.koitharu.kotatsu.core.util.ext
import androidx.annotation.DrawableRes
import androidx.appcompat.widget.Toolbar
fun Toolbar.setNavigationIconSafe(@DrawableRes iconRes: Int, retry: Boolean = true) {
try {
setNavigationIcon(iconRes)
} catch (e: IllegalStateException) {
if (retry) {
post { setNavigationIconSafe(iconRes, retry = false) }
}
}
}

View File

@@ -30,6 +30,7 @@ class ChaptersBottomSheetMediator(
}
override fun onActionModeStarted(mode: ActionMode) {
behavior.state = BottomSheetBehavior.STATE_EXPANDED
lock()
}

View File

@@ -18,6 +18,7 @@ import org.koitharu.kotatsu.core.ui.list.ListSelectionController
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.RecyclerViewScrollCallback
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.core.util.ext.scaleUpActivityOptionsOf
import org.koitharu.kotatsu.databinding.FragmentChaptersBinding
import org.koitharu.kotatsu.details.ui.adapter.ChaptersAdapter
@@ -66,6 +67,9 @@ class ChaptersFragment :
viewModel.isChaptersEmpty.observe(viewLifecycleOwner) {
binding.textViewHolder.isVisible = it
}
viewModel.onSelectChapter.observeEvent(viewLifecycleOwner) {
selectionController?.onItemLongClick(it)
}
}
override fun onDestroyView() {

View File

@@ -43,6 +43,7 @@ import org.koitharu.kotatsu.core.util.ext.measureHeight
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.core.util.ext.setNavigationBarTransparentCompat
import org.koitharu.kotatsu.core.util.ext.setNavigationIconSafe
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ActivityDetailsBinding
import org.koitharu.kotatsu.details.service.MangaPrefetchService
@@ -211,7 +212,7 @@ class DetailsActivity :
}
if (isExpanded) {
toolbar.addMenuProvider(chaptersMenuProvider)
toolbar.setNavigationIcon(materialR.drawable.abc_ic_clear_material)
toolbar.setNavigationIconSafe(materialR.drawable.abc_ic_clear_material)
} else {
toolbar.removeMenuProvider(chaptersMenuProvider)
toolbar.navigationIcon = null

View File

@@ -16,12 +16,11 @@ import kotlinx.coroutines.launch
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.browser.BrowserActivity
import org.koitharu.kotatsu.core.os.AppShortcutManager
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ShareHelper
import org.koitharu.kotatsu.details.ui.model.MangaBranch
import org.koitharu.kotatsu.download.ui.dialog.DownloadOption
import org.koitharu.kotatsu.favourites.ui.categories.select.FavouriteCategoriesSheet
import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
import org.koitharu.kotatsu.scrobbling.common.ui.selector.ScrobblingSelectorSheet
import org.koitharu.kotatsu.search.ui.multi.MultiSearchActivity
@@ -30,7 +29,7 @@ class DetailsMenuProvider(
private val viewModel: DetailsViewModel,
private val snackbarHost: View,
private val appShortcutManager: AppShortcutManager,
) : MenuProvider {
) : MenuProvider, OnListItemClickListener<DownloadOption> {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.opt_details, menu)
@@ -44,7 +43,7 @@ class DetailsMenuProvider(
menu.findItem(R.id.action_shortcut).isVisible = ShortcutManagerCompat.isRequestPinShortcutSupported(activity)
menu.findItem(R.id.action_scrobbling).isVisible = viewModel.isScrobblingAvailable
menu.findItem(R.id.action_favourite).setIcon(
if (viewModel.favouriteCategories.value == true) R.drawable.ic_heart else R.drawable.ic_heart_outline,
if (viewModel.favouriteCategories.value) R.drawable.ic_heart else R.drawable.ic_heart_outline,
)
}
@@ -80,15 +79,7 @@ class DetailsMenuProvider(
}
R.id.action_save -> {
viewModel.manga.value?.let {
val chaptersCount = it.chapters?.size ?: 0
val branches = viewModel.branches.value.orEmpty()
if (chaptersCount > 5 || branches.size > 1) {
showSaveConfirmation(it, chaptersCount, branches)
} else {
viewModel.download(null)
}
}
DownloadDialogHelper(snackbarHost, viewModel).show(this)
}
R.id.action_browser -> {
@@ -125,35 +116,16 @@ class DetailsMenuProvider(
return true
}
private fun showSaveConfirmation(manga: Manga, chaptersCount: Int, branches: List<MangaBranch>) {
val dialogBuilder = MaterialAlertDialogBuilder(activity)
.setTitle(R.string.save_manga)
.setNegativeButton(android.R.string.cancel, null)
if (branches.size > 1) {
val items = Array(branches.size) { i -> branches[i].name.orEmpty() }
val currentBranch = branches.indexOfFirst { it.isSelected }
val checkedIndices = BooleanArray(branches.size) { i -> i == currentBranch }
dialogBuilder.setMultiChoiceItems(items, checkedIndices) { _, i, checked ->
checkedIndices[i] = checked
}.setPositiveButton(R.string.save) { _, _ ->
val selectedBranches = branches.mapIndexedNotNullTo(HashSet()) { i, b ->
if (checkedIndices[i]) b.name else null
}
val chaptersIds = manga.chapters?.mapNotNullToSet { c ->
if (c.branch in selectedBranches) c.id else null
}
viewModel.download(chaptersIds)
}
} else {
dialogBuilder.setMessage(
activity.getString(
R.string.large_manga_save_confirm,
activity.resources.getQuantityString(R.plurals.chapters, chaptersCount, chaptersCount),
),
).setPositiveButton(R.string.save) { _, _ ->
viewModel.download(null)
override fun onItemClick(item: DownloadOption, view: View) {
val chaptersIds: Set<Long>? = when (item) {
is DownloadOption.WholeManga -> null
is DownloadOption.SelectionHint -> {
viewModel.startChaptersSelection()
return
}
else -> item.chaptersIds
}
dialogBuilder.show()
viewModel.download(chaptersIds)
}
}

View File

@@ -31,12 +31,14 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.bookmarks.domain.Bookmark
import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository
import org.koitharu.kotatsu.core.model.getPreferredBranch
import org.koitharu.kotatsu.core.os.NetworkState
import org.koitharu.kotatsu.core.parser.MangaIntent
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.prefs.observeAsStateFlow
import org.koitharu.kotatsu.core.ui.BaseViewModel
import org.koitharu.kotatsu.core.util.ext.MutableEventFlow
import org.koitharu.kotatsu.core.util.ext.call
import org.koitharu.kotatsu.core.util.ext.combine
import org.koitharu.kotatsu.core.util.ext.computeSize
import org.koitharu.kotatsu.core.util.ext.requireValue
import org.koitharu.kotatsu.core.util.ext.sanitize
@@ -72,6 +74,7 @@ class DetailsViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
private val deleteLocalMangaUseCase: DeleteLocalMangaUseCase,
private val doubleMangaLoadUseCase: DoubleMangaLoadUseCase,
networkState: NetworkState,
) : BaseViewModel() {
private val intent = MangaIntent(savedStateHandle)
@@ -81,6 +84,7 @@ class DetailsViewModel @Inject constructor(
val onShowToast = MutableEventFlow<Int>()
val onShowTip = MutableEventFlow<Unit>()
val onSelectChapter = MutableEventFlow<Long>()
val onDownloadStarted = MutableEventFlow<Unit>()
val manga = doubleManga.map { it?.any }
@@ -176,8 +180,9 @@ class DetailsViewModel @Inject constructor(
selectedBranch,
newChaptersCount,
bookmarks,
) { manga, history, branch, news, bookmarks ->
mapChapters(manga?.remote, manga?.local, history, news, branch, bookmarks)
networkState,
) { manga, history, branch, news, bookmarks, isOnline ->
mapChapters(manga?.remote?.takeIf { isOnline }, manga?.local, history, news, branch, bookmarks)
},
isChaptersReversed,
chaptersQuery,
@@ -286,6 +291,14 @@ class DetailsViewModel @Inject constructor(
}
}
fun startChaptersSelection() {
val chapters = chapters.value
val chapter = chapters.find {
it.isUnread && !it.isDownloaded
} ?: chapters.firstOrNull() ?: return
onSelectChapter.call(chapter.chapter.id)
}
fun onButtonTipClosed() {
settings.closeTip(DetailsActivity.TIP_BUTTON)
}

View File

@@ -0,0 +1,64 @@
package org.koitharu.kotatsu.details.ui
import android.content.DialogInterface
import android.view.View
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.model.ids
import org.koitharu.kotatsu.core.ui.dialog.RecyclerViewAlertDialog
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.download.ui.dialog.DownloadOption
import org.koitharu.kotatsu.download.ui.dialog.downloadOptionAD
class DownloadDialogHelper(
private val host: View,
private val viewModel: DetailsViewModel,
) {
fun show(callback: OnListItemClickListener<DownloadOption>) {
val branch = viewModel.selectedBranchValue
val allChapters = viewModel.manga.value?.chapters ?: return
val branchChapters = viewModel.manga.value?.getChapters(branch).orEmpty()
val history = viewModel.history.value
val options = buildList {
add(DownloadOption.WholeManga(allChapters.ids()))
if (branch != null && branchChapters.isNotEmpty()) {
add(DownloadOption.AllChapters(branch, branchChapters.ids()))
}
if (history != null) {
val unreadChapters = branchChapters.takeLastWhile { it.id != history.chapterId }
if (unreadChapters.isNotEmpty() && unreadChapters.size < branchChapters.size) {
add(DownloadOption.AllUnreadChapters(unreadChapters.ids(), branch))
if (unreadChapters.size > 5) {
add(DownloadOption.NextUnreadChapters(unreadChapters.take(5).ids()))
if (unreadChapters.size > 10) {
add(DownloadOption.NextUnreadChapters(unreadChapters.take(10).ids()))
}
}
}
} else {
if (branchChapters.size > 5) {
add(DownloadOption.FirstChapters(branchChapters.take(5).ids()))
if (branchChapters.size > 10) {
add(DownloadOption.FirstChapters(branchChapters.take(10).ids()))
}
}
}
add(DownloadOption.SelectionHint())
}
var dialog: DialogInterface? = null
val listener = OnListItemClickListener<DownloadOption> { item, _ ->
callback.onItemClick(item, host)
dialog?.dismiss()
}
dialog = RecyclerViewAlertDialog.Builder<DownloadOption>(host.context)
.addAdapterDelegate(downloadOptionAD(listener))
.setCancelable(true)
.setTitle(R.string.download)
.setNegativeButton(android.R.string.cancel)
.setItems(options)
.create()
.also { it.show() }
}
}

View File

@@ -1,16 +0,0 @@
package org.koitharu.kotatsu.details.ui
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
class MangaDetailsAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
override fun getItemCount() = 2
override fun createFragment(position: Int): Fragment = when (position) {
0 -> DetailsFragment()
1 -> ChaptersFragment()
else -> throw IndexOutOfBoundsException("No fragment for position $position")
}
}

View File

@@ -0,0 +1,99 @@
package org.koitharu.kotatsu.download.ui.dialog
import android.content.res.Resources
import androidx.annotation.DrawableRes
import org.koitharu.kotatsu.R
import java.util.Locale
import com.google.android.material.R as materialR
sealed interface DownloadOption {
val chaptersIds: Set<Long>
@get:DrawableRes
val iconResId: Int
val chaptersCount: Int
get() = chaptersIds.size
fun getLabel(resources: Resources): CharSequence
class AllChapters(
val branch: String,
override val chaptersIds: Set<Long>,
) : DownloadOption {
override val iconResId = R.drawable.ic_select_group
override fun getLabel(resources: Resources): CharSequence {
return resources.getString(R.string.download_option_all_chapters, branch)
}
}
class WholeManga(
override val chaptersIds: Set<Long>,
) : DownloadOption {
override val iconResId = materialR.drawable.abc_ic_menu_selectall_mtrl_alpha
override fun getLabel(resources: Resources): CharSequence {
return resources.getString(R.string.download_option_whole_manga)
}
}
class FirstChapters(
override val chaptersIds: Set<Long>,
) : DownloadOption {
override val iconResId = R.drawable.ic_list_start
override fun getLabel(resources: Resources): CharSequence {
return resources.getString(
R.string.download_option_first_n_chapters,
resources.getQuantityString(R.plurals.chapters, chaptersCount, chaptersCount)
.lowercase(Locale.getDefault()),
)
}
}
class AllUnreadChapters(
override val chaptersIds: Set<Long>,
val branch: String?,
) : DownloadOption {
override val iconResId = R.drawable.ic_list_end
override fun getLabel(resources: Resources): CharSequence {
return if (branch == null) {
resources.getString(R.string.download_option_all_unread)
} else {
resources.getString(R.string.download_option_all_unread_b, branch)
}
}
}
class NextUnreadChapters(
override val chaptersIds: Set<Long>,
) : DownloadOption {
override val iconResId = R.drawable.ic_list_next
override fun getLabel(resources: Resources): CharSequence {
return resources.getString(
R.string.download_option_next_unread_n_chapters,
resources.getQuantityString(R.plurals.chapters, chaptersCount, chaptersCount)
.lowercase(Locale.getDefault()),
)
}
}
class SelectionHint : DownloadOption {
override val chaptersIds: Set<Long> = emptySet()
override val iconResId = R.drawable.ic_tap
override fun getLabel(resources: Resources): CharSequence {
return resources.getString(R.string.download_option_manual_selection)
}
}
}

View File

@@ -0,0 +1,27 @@
package org.koitharu.kotatsu.download.ui.dialog
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.databinding.ItemDownloadOptionBinding
fun downloadOptionAD(
onClickListener: OnListItemClickListener<DownloadOption>,
) = adapterDelegateViewBinding<DownloadOption, DownloadOption, ItemDownloadOptionBinding>(
{ layoutInflater, parent -> ItemDownloadOptionBinding.inflate(layoutInflater, parent, false) },
) {
binding.root.setOnClickListener { v -> onClickListener.onItemClick(item, v) }
bind {
with(binding.root) {
title = item.getLabel(resources)
subtitle = if (item.chaptersCount == 0) null else resources.getQuantityString(
R.plurals.chapters,
item.chaptersCount,
item.chaptersCount,
)
setIconResource(item.iconResId)
}
}
}

View File

@@ -29,6 +29,7 @@ import org.koitharu.kotatsu.parsers.model.SortOrder
import org.koitharu.kotatsu.parsers.util.runCatchingCancellable
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
import java.io.File
import java.io.FilenameFilter
import java.util.EnumSet
import javax.inject.Inject
import javax.inject.Singleton
@@ -192,7 +193,7 @@ class LocalMangaRepository @Inject constructor(
val dispatcher = Dispatchers.IO.limitedParallelism(MAX_PARALLELISM)
files.map { file ->
async(dispatcher) {
runCatchingCancellable { LocalMangaInput.of(file).getManga() }.getOrNull()
runCatchingCancellable { LocalMangaInput.ofOrNull(file)?.getManga() }.getOrNull()
}
}.awaitAll()
}.filterNotNullTo(ArrayList(files.size))

View File

@@ -2,8 +2,11 @@ package org.koitharu.kotatsu.local.data
import android.content.ContentResolver
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.StatFs
import androidx.annotation.WorkerThread
import androidx.core.net.toFile
import dagger.Reusable
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
@@ -13,11 +16,14 @@ import okhttp3.Cache
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.util.ext.computeSize
import org.koitharu.kotatsu.core.util.ext.getStorageName
import org.koitharu.kotatsu.core.util.ext.resolveFile
import org.koitharu.kotatsu.core.util.ext.toFileOrNull
import org.koitharu.kotatsu.parsers.util.mapToSet
import java.io.File
import javax.inject.Inject
private const val DIR_NAME = "manga"
private const val NOMEDIA = ".nomedia"
private const val CACHE_DISK_PERCENTAGE = 0.02
private const val CACHE_SIZE_MIN: Long = 10 * 1024 * 1024 // 10MB
private const val CACHE_SIZE_MAX: Long = 250 * 1024 * 1024 // 250MB
@@ -74,14 +80,42 @@ class LocalStorageManager @Inject constructor(
preferredDir ?: getFallbackStorageDir()?.takeIf { it.isWriteable() }
}
fun getStorageDisplayName(file: File) = file.getStorageName(context)
suspend fun getApplicationStorageDirs(): Set<File> = runInterruptible(Dispatchers.IO) {
getAvailableStorageDirs()
}
suspend fun resolveUri(uri: Uri): File? = runInterruptible(Dispatchers.IO) {
if (uri.scheme == "file") {
uri.toFile()
} else {
uri.resolveFile(context)
}
}
suspend fun setDirIsNoMedia(dir: File) = runInterruptible(Dispatchers.IO) {
File(dir, NOMEDIA).createNewFile()
}
fun takePermissions(uri: Uri) {
val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
contentResolver.takePersistableUriPermission(uri, flags)
}
suspend fun getDirectoryDisplayName(dir: File, isFullPath: Boolean): String = runInterruptible(Dispatchers.IO) {
val packageName = context.packageName
if (dir.absolutePath.contains(packageName)) {
dir.getStorageName(context)
} else if (isFullPath) {
dir.path
} else {
dir.name
}
}
@WorkerThread
private fun getConfiguredStorageDirs(): MutableSet<File> {
val set = getAvailableStorageDirs()
settings.mangaStorageDir?.let {
set.add(it)
}
set.addAll(settings.userSpecifiedMangaDirectories)
return set
}

View File

@@ -2,6 +2,7 @@ package org.koitharu.kotatsu.local.data.input
import android.net.Uri
import androidx.core.net.toFile
import org.koitharu.kotatsu.local.data.CbzFilter
import org.koitharu.kotatsu.local.domain.model.LocalManga
import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaChapter
@@ -30,6 +31,12 @@ sealed class LocalMangaInput(
else -> LocalMangaZipInput(file)
}
fun ofOrNull(file: File): LocalMangaInput? = when {
file.isDirectory -> LocalMangaDirInput(file)
CbzFilter.isFileSupported(file.name) -> LocalMangaZipInput(file)
else -> null
}
@JvmStatic
protected fun zipUri(file: File, entryName: String): String =
Uri.fromParts("cbz", file.path, entryName).toString()

View File

@@ -35,18 +35,6 @@ class LocalMangaUtil(
}
}
suspend fun writeIndex(index: MangaIndex) {
newOutput().use { output ->
when (output) {
is LocalMangaDirOutput -> {
TODO()
}
is LocalMangaZipOutput -> TODO()
}
}
}
private suspend fun newOutput(): LocalMangaOutput = runInterruptible(Dispatchers.IO) {
val file = manga.url.toUri().toFile()
if (file.isDirectory) {

View File

@@ -85,7 +85,7 @@ class LocalChaptersRemoveService : CoroutineIntentService() {
.setProgress(0, 0, true)
.setSmallIcon(android.R.drawable.stat_notify_sync)
.setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_DEFERRED)
.setOngoing(true)
.setOngoing(false)
.build()
startForeground(NOTIFICATION_ID, notification)
}

View File

@@ -33,7 +33,7 @@ class LocalListFragment : MangaListFragment(), FilterOwner {
override fun onViewBindingCreated(binding: FragmentListBinding, savedInstanceState: Bundle?) {
super.onViewBindingCreated(binding, savedInstanceState)
addMenuProvider(LocalListMenuProvider(this::onEmptyActionClick))
addMenuProvider(LocalListMenuProvider(binding.root.context, this::onEmptyActionClick))
viewModel.onMangaRemoved.observeEvent(viewLifecycleOwner) { onItemRemoved() }
}
@@ -45,7 +45,7 @@ class LocalListFragment : MangaListFragment(), FilterOwner {
FilterSheetFragment.show(childFragmentManager)
}
override fun onScrolledToEnd() = Unit
override fun onScrolledToEnd() = viewModel.loadNextPage()
override fun onCreateActionMode(controller: ListSelectionController, mode: ActionMode, menu: Menu): Boolean {
mode.menuInflater.inflate(R.menu.mode_local, menu)

View File

@@ -1,12 +1,15 @@
package org.koitharu.kotatsu.local.ui
import android.content.Context
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import androidx.core.view.MenuProvider
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.settings.storage.directories.MangaDirectoriesActivity
class LocalListMenuProvider(
private val context: Context,
private val onImportClick: Function0<Unit>,
) : MenuProvider {
@@ -20,6 +23,12 @@ class LocalListMenuProvider(
onImportClick()
true
}
R.id.action_settings -> {
context.startActivity(MangaDirectoriesActivity.newIntent(context))
true
}
else -> false
}
}

View File

@@ -1,5 +1,6 @@
package org.koitharu.kotatsu.local.ui
import android.content.SharedPreferences
import androidx.lifecycle.SavedStateHandle
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
@@ -24,7 +25,7 @@ class LocalListViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
mangaRepositoryFactory: MangaRepository.Factory,
filter: FilterCoordinator,
settings: AppSettings,
private val settings: AppSettings,
downloadScheduler: DownloadWorker.Scheduler,
listExtraProvider: ListExtraProvider,
private val deleteLocalMangaUseCase: DeleteLocalMangaUseCase,
@@ -36,7 +37,7 @@ class LocalListViewModel @Inject constructor(
settings,
listExtraProvider,
downloadScheduler,
) {
), SharedPreferences.OnSharedPreferenceChangeListener {
val onMangaRemoved = MutableEventFlow<Unit>()
@@ -47,6 +48,18 @@ class LocalListViewModel @Inject constructor(
loadList(filter.snapshot(), append = false).join()
}
}
settings.subscribe(this)
}
override fun onCleared() {
settings.unsubscribe(this)
super.onCleared()
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
if (key == AppSettings.KEY_LOCAL_MANGA_DIRS) {
onRefresh()
}
}
fun delete(ids: Set<Long>) {

View File

@@ -11,20 +11,18 @@ import kotlinx.coroutines.withContext
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.ui.BasePreferenceFragment
import org.koitharu.kotatsu.core.ui.dialog.StorageSelectDialog
import org.koitharu.kotatsu.core.util.ext.getStorageName
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
import org.koitharu.kotatsu.core.util.ext.viewLifecycleScope
import org.koitharu.kotatsu.download.ui.worker.DownloadWorker
import org.koitharu.kotatsu.local.data.LocalStorageManager
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
import java.io.File
import org.koitharu.kotatsu.settings.storage.MangaDirectorySelectDialog
import org.koitharu.kotatsu.settings.storage.directories.MangaDirectoriesActivity
import javax.inject.Inject
@AndroidEntryPoint
class DownloadsSettingsFragment :
BasePreferenceFragment(R.string.downloads),
SharedPreferences.OnSharedPreferenceChangeListener,
StorageSelectDialog.OnStorageSelectListener {
SharedPreferences.OnSharedPreferenceChangeListener {
@Inject
lateinit var storageManager: LocalStorageManager
@@ -39,6 +37,7 @@ class DownloadsSettingsFragment :
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
findPreference<Preference>(AppSettings.KEY_LOCAL_STORAGE)?.bindStorageName()
findPreference<Preference>(AppSettings.KEY_LOCAL_MANGA_DIRS)?.bindDirectoriesCount()
settings.subscribe(this)
}
@@ -53,6 +52,10 @@ class DownloadsSettingsFragment :
findPreference<Preference>(key)?.bindStorageName()
}
AppSettings.KEY_LOCAL_MANGA_DIRS -> {
findPreference<Preference>(key)?.bindDirectoriesCount()
}
AppSettings.KEY_DOWNLOADS_WIFI -> {
updateDownloadsConstraints()
}
@@ -62,12 +65,12 @@ class DownloadsSettingsFragment :
override fun onPreferenceTreeClick(preference: Preference): Boolean {
return when (preference.key) {
AppSettings.KEY_LOCAL_STORAGE -> {
val ctx = context ?: return false
StorageSelectDialog.Builder(ctx, storageManager, this)
.setTitle(preference.title ?: "")
.setNegativeButton(android.R.string.cancel)
.create()
.show()
MangaDirectorySelectDialog.show(childFragmentManager)
true
}
AppSettings.KEY_LOCAL_MANGA_DIRS -> {
startActivity(MangaDirectoriesActivity.newIntent(preference.context))
true
}
@@ -75,14 +78,21 @@ class DownloadsSettingsFragment :
}
}
override fun onStorageSelected(file: File) {
settings.mangaStorageDir = file
}
private fun Preference.bindStorageName() {
viewLifecycleScope.launch {
val storage = storageManager.getDefaultWriteableDir()
summary = storage?.getStorageName(context) ?: getString(R.string.not_available)
summary = if (storage != null) {
storageManager.getDirectoryDisplayName(storage, isFullPath = true)
} else {
getString(R.string.not_available)
}
}
}
private fun Preference.bindDirectoriesCount() {
viewLifecycleScope.launch {
val dirs = storageManager.getReadableDirs().size
summary = resources.getQuantityString(R.plurals.items, dirs, dirs)
}
}

View File

@@ -4,16 +4,15 @@ import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.preference.Preference
import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.exceptions.resolve.ExceptionResolver
import org.koitharu.kotatsu.core.exceptions.resolve.SnackbarErrorObserver
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.ui.BasePreferenceFragment
import org.koitharu.kotatsu.core.util.ext.getDisplayMessage
import org.koitharu.kotatsu.core.ui.util.ReversibleActionObserver
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.core.util.ext.viewLifecycleScope
import org.koitharu.kotatsu.core.util.ext.withArgs
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.settings.sources.auth.SourceAuthActivity
@@ -49,10 +48,18 @@ class SourceSettingsFragment : BasePreferenceFragment(0) {
getString(R.string.logged_in_as, it)
}
}
viewModel.onError.observeEvent(viewLifecycleOwner, ::onError)
viewModel.onError.observeEvent(
viewLifecycleOwner,
SnackbarErrorObserver(
listView,
this,
exceptionResolver,
) { viewModel.onResume() },
)
viewModel.isLoading.observe(viewLifecycleOwner) { isLoading ->
findPreference<Preference>(KEY_AUTH)?.isEnabled = !isLoading
}
viewModel.onActionDone.observeEvent(viewLifecycleOwner, ReversibleActionObserver(listView))
}
override fun onPreferenceTreeClick(preference: Preference): Boolean {
@@ -61,32 +68,15 @@ class SourceSettingsFragment : BasePreferenceFragment(0) {
startActivity(SourceAuthActivity.newIntent(preference.context, viewModel.source))
true
}
AppSettings.KEY_COOKIES_CLEAR -> {
viewModel.clearCookies()
true
}
else -> super.onPreferenceTreeClick(preference)
}
}
private fun onError(error: Throwable) {
val snackbar = Snackbar.make(
listView ?: return,
error.getDisplayMessage(resources),
Snackbar.LENGTH_INDEFINITE,
)
if (ExceptionResolver.canResolve(error)) {
snackbar.setAction(ExceptionResolver.getResolveStringId(error)) { resolveError(error) }
}
snackbar.show()
}
private fun resolveError(error: Throwable) {
view ?: return
viewLifecycleScope.launch {
if (exceptionResolver.resolve(error)) {
viewModel.onResume()
}
}
}
companion object {
private const val KEY_AUTH = "auth"

View File

@@ -5,9 +5,15 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import okhttp3.HttpUrl
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.network.cookies.MutableCookieJar
import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.parser.RemoteMangaRepository
import org.koitharu.kotatsu.core.ui.BaseViewModel
import org.koitharu.kotatsu.core.ui.util.ReversibleAction
import org.koitharu.kotatsu.core.util.ext.MutableEventFlow
import org.koitharu.kotatsu.core.util.ext.call
import org.koitharu.kotatsu.core.util.ext.require
import org.koitharu.kotatsu.parsers.exception.AuthRequiredException
import org.koitharu.kotatsu.parsers.model.MangaSource
@@ -17,11 +23,13 @@ import javax.inject.Inject
class SourceSettingsViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
mangaRepositoryFactory: MangaRepository.Factory,
private val cookieJar: MutableCookieJar,
) : BaseViewModel() {
val source = savedStateHandle.require<MangaSource>(SourceSettingsFragment.EXTRA_SOURCE)
val repository = mangaRepositoryFactory.create(source) as RemoteMangaRepository
val onActionDone = MutableEventFlow<ReversibleAction>()
val username = MutableStateFlow<String?>(null)
private var usernameLoadJob: Job? = null
@@ -35,6 +43,18 @@ class SourceSettingsViewModel @Inject constructor(
}
}
fun clearCookies() {
launchLoadingJob(Dispatchers.Default) {
val url = HttpUrl.Builder()
.scheme("https")
.host(repository.domain)
.build()
cookieJar.removeCookies(url)
onActionDone.call(ReversibleAction(R.string.cookies_cleared, null))
loadUsername()
}
}
private fun loadUsername() {
launchLoadingJob(Dispatchers.Default) {
try {

View File

@@ -6,6 +6,7 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.MenuItem
import android.webkit.CookieManager
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContract
import androidx.core.graphics.Insets
@@ -27,6 +28,7 @@ import org.koitharu.kotatsu.core.util.ext.getSerializableExtraCompat
import org.koitharu.kotatsu.databinding.ActivityBrowserBinding
import org.koitharu.kotatsu.parsers.MangaParserAuthProvider
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.network.UserAgents
import javax.inject.Inject
import com.google.android.material.R as materialR
@@ -66,8 +68,11 @@ class SourceAuthActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallba
}
with(viewBinding.webView.settings) {
javaScriptEnabled = true
userAgentString = CommonHeadersInterceptor.userAgentChrome
domStorageEnabled = true
databaseEnabled = true
userAgentString = UserAgents.CHROME_MOBILE
}
CookieManager.getInstance().setAcceptThirdPartyCookies(viewBinding.webView, true)
viewBinding.webView.webViewClient = BrowserClient(this)
viewBinding.webView.webChromeClient = ProgressChromeClient(viewBinding.progressBar)
onBackPressedCallback = WebViewBackPressedCallback(viewBinding.webView)

View File

@@ -0,0 +1,21 @@
package org.koitharu.kotatsu.settings.storage
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ItemStorageBinding
fun directoryAD(
clickListener: OnListItemClickListener<DirectoryModel>,
) = adapterDelegateViewBinding<DirectoryModel, DirectoryModel, ItemStorageBinding>(
{ layoutInflater, parent -> ItemStorageBinding.inflate(layoutInflater, parent, false) },
) {
binding.root.setOnClickListener { v -> clickListener.onItemClick(item, v) }
bind {
binding.textViewTitle.text = item.title ?: getString(item.titleRes)
binding.textViewSubtitle.textAndVisible = item.file?.absolutePath
binding.imageViewIndicator.isChecked = item.isChecked
}
}

View File

@@ -0,0 +1,22 @@
package org.koitharu.kotatsu.settings.storage
import androidx.recyclerview.widget.DiffUtil.ItemCallback
class DirectoryDiffCallback : ItemCallback<DirectoryModel>() {
override fun areItemsTheSame(oldItem: DirectoryModel, newItem: DirectoryModel): Boolean {
return oldItem.file == newItem.file
}
override fun areContentsTheSame(oldItem: DirectoryModel, newItem: DirectoryModel): Boolean {
return oldItem == newItem
}
override fun getChangePayload(oldItem: DirectoryModel, newItem: DirectoryModel): Any? {
return if (oldItem.isChecked != newItem.isChecked) {
Unit
} else {
super.getChangePayload(oldItem, newItem)
}
}
}

View File

@@ -0,0 +1,36 @@
package org.koitharu.kotatsu.settings.storage
import androidx.annotation.StringRes
import org.koitharu.kotatsu.list.ui.model.ListModel
import java.io.File
class DirectoryModel(
val title: String?,
@StringRes val titleRes: Int,
val file: File?,
val isChecked: Boolean,
val isAvailable: Boolean,
) : ListModel {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as DirectoryModel
if (title != other.title) return false
if (titleRes != other.titleRes) return false
if (file != other.file) return false
if (isChecked != other.isChecked) return false
return isAvailable == other.isAvailable
}
override fun hashCode(): Int {
var result = title?.hashCode() ?: 0
result = 31 * result + titleRes
result = 31 * result + (file?.hashCode() ?: 0)
result = 31 * result + isChecked.hashCode()
result = 31 * result + isAvailable.hashCode()
return result
}
}

View File

@@ -0,0 +1,81 @@
package org.koitharu.kotatsu.settings.storage
import android.Manifest
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter
import dagger.hilt.android.AndroidEntryPoint
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.exceptions.resolve.ToastErrorObserver
import org.koitharu.kotatsu.core.ui.AlertDialogFragment
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.core.util.ext.showDistinct
import org.koitharu.kotatsu.databinding.DialogDirectorySelectBinding
@AndroidEntryPoint
class MangaDirectorySelectDialog : AlertDialogFragment<DialogDirectorySelectBinding>(),
OnListItemClickListener<DirectoryModel> {
private val viewModel: MangaDirectorySelectViewModel by viewModels()
private val pickFileTreeLauncher = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) {
if (it != null) viewModel.onCustomDirectoryPicked(it)
}
private val permissionRequestLauncher = registerForActivityResult(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
RequestStorageManagerPermissionContract()
} else {
ActivityResultContracts.RequestPermission()
},
) {
if (it) {
viewModel.refresh()
pickFileTreeLauncher.launch(null)
}
}
override fun onCreateViewBinding(inflater: LayoutInflater, container: ViewGroup?): DialogDirectorySelectBinding {
return DialogDirectorySelectBinding.inflate(inflater, container, false)
}
override fun onViewBindingCreated(binding: DialogDirectorySelectBinding, savedInstanceState: Bundle?) {
super.onViewBindingCreated(binding, savedInstanceState)
val adapter = AsyncListDifferDelegationAdapter(DirectoryDiffCallback(), directoryAD(this))
binding.root.adapter = adapter
viewModel.items.observe(viewLifecycleOwner) { adapter.items = it }
viewModel.onDismissDialog.observeEvent(viewLifecycleOwner) { dismiss() }
viewModel.onPickDirectory.observeEvent(viewLifecycleOwner) { pickCustomDirectory() }
viewModel.onError.observeEvent(viewLifecycleOwner, ToastErrorObserver(binding.root, this))
}
override fun onBuildDialog(builder: MaterialAlertDialogBuilder): MaterialAlertDialogBuilder {
return super.onBuildDialog(builder)
.setCancelable(true)
.setTitle(R.string.manga_save_location)
.setNegativeButton(android.R.string.cancel, null)
}
override fun onItemClick(item: DirectoryModel, view: View) {
viewModel.onItemClick(item)
}
private fun pickCustomDirectory() {
permissionRequestLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
companion object {
private const val TAG = "MangaDirectorySelectDialog"
fun show(fm: FragmentManager) = MangaDirectorySelectDialog()
.showDistinct(fm, TAG)
}
}

View File

@@ -0,0 +1,80 @@
package org.koitharu.kotatsu.settings.storage
import android.net.Uri
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import okio.FileNotFoundException
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.ui.BaseViewModel
import org.koitharu.kotatsu.core.util.ext.MutableEventFlow
import org.koitharu.kotatsu.core.util.ext.call
import org.koitharu.kotatsu.local.data.LocalStorageManager
import javax.inject.Inject
@HiltViewModel
class MangaDirectorySelectViewModel @Inject constructor(
private val storageManager: LocalStorageManager,
private val settings: AppSettings,
) : BaseViewModel() {
val items = MutableStateFlow(emptyList<DirectoryModel>())
val onDismissDialog = MutableEventFlow<Unit>()
val onPickDirectory = MutableEventFlow<Unit>()
init {
refresh()
}
fun onItemClick(item: DirectoryModel) {
if (item.file != null) {
settings.mangaStorageDir = item.file
onDismissDialog.call(Unit)
} else {
onPickDirectory.call(Unit)
}
}
fun onCustomDirectoryPicked(uri: Uri) {
launchJob(Dispatchers.Default) {
storageManager.takePermissions(uri)
val dir = requireNotNull(storageManager.resolveUri(uri)) {
"Cannot resolve file name of \"$uri\""
}
if (!dir.canWrite()) {
throw AccessDeniedException(dir)
}
if (dir !in storageManager.getApplicationStorageDirs()) {
settings.mangaStorageDir = dir
storageManager.setDirIsNoMedia(dir)
}
onDismissDialog.call(Unit)
}
}
fun refresh() {
launchJob(Dispatchers.Default) {
val defaultValue = storageManager.getDefaultWriteableDir()
val available = storageManager.getWriteableDirs()
items.value = buildList(available.size + 1) {
available.mapTo(this) { dir ->
DirectoryModel(
title = storageManager.getDirectoryDisplayName(dir, isFullPath = false),
titleRes = 0,
file = dir,
isChecked = dir == defaultValue,
isAvailable = true,
)
}
this += DirectoryModel(
title = null,
titleRes = R.string.pick_custom_directory,
file = null,
isChecked = false,
isAvailable = true,
)
}
}
}
}

View File

@@ -0,0 +1,34 @@
package org.koitharu.kotatsu.settings.storage
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Environment
import android.provider.Settings
import androidx.activity.result.contract.ActivityResultContract
import androidx.annotation.RequiresApi
import androidx.core.net.toUri
@RequiresApi(Build.VERSION_CODES.R)
class RequestStorageManagerPermissionContract : ActivityResultContract<String, Boolean>() {
override fun createIntent(context: Context, input: String): Intent {
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
intent.addCategory("android.intent.category.DEFAULT")
intent.data = "package:${context.packageName}".toUri()
return intent
}
override fun parseResult(resultCode: Int, intent: Intent?): Boolean {
return Environment.isExternalStorageManager()
}
override fun getSynchronousResult(context: Context, input: String): SynchronousResult<Boolean>? {
return if (Environment.isExternalStorageManager()) {
SynchronousResult(true)
} else {
null
}
}
}

View File

@@ -0,0 +1,31 @@
package org.koitharu.kotatsu.settings.storage.directories
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.drawableStart
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ItemStorageConfigBinding
import org.koitharu.kotatsu.settings.storage.DirectoryModel
fun directoryConfigAD(
clickListener: OnListItemClickListener<DirectoryModel>,
) = adapterDelegateViewBinding<DirectoryModel, DirectoryModel, ItemStorageConfigBinding>(
{ layoutInflater, parent -> ItemStorageConfigBinding.inflate(layoutInflater, parent, false) },
) {
binding.imageViewRemove.setOnClickListener { v -> clickListener.onItemClick(item, v) }
bind {
binding.textViewTitle.text = item.title ?: getString(item.titleRes)
binding.textViewSubtitle.textAndVisible = item.file?.absolutePath
binding.imageViewRemove.isVisible = item.isChecked
binding.textViewTitle.drawableStart = if (item.isAvailable) {
null
} else {
ContextCompat.getDrawable(context, R.drawable.ic_alert_outline)
}
}
}

View File

@@ -0,0 +1,93 @@
package org.koitharu.kotatsu.settings.storage.directories
import android.Manifest
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.core.graphics.Insets
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter
import dagger.hilt.android.AndroidEntryPoint
import org.koitharu.kotatsu.core.exceptions.resolve.SnackbarErrorObserver
import org.koitharu.kotatsu.core.ui.BaseActivity
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.databinding.ActivityMangaDirectoriesBinding
import org.koitharu.kotatsu.settings.storage.DirectoryDiffCallback
import org.koitharu.kotatsu.settings.storage.DirectoryModel
import org.koitharu.kotatsu.settings.storage.RequestStorageManagerPermissionContract
@AndroidEntryPoint
class MangaDirectoriesActivity : BaseActivity<ActivityMangaDirectoriesBinding>(),
OnListItemClickListener<DirectoryModel>, View.OnClickListener {
private val viewModel: MangaDirectoriesViewModel by viewModels()
private val pickFileTreeLauncher = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) {
if (it != null) viewModel.onCustomDirectoryPicked(it)
}
private val permissionRequestLauncher = registerForActivityResult(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
RequestStorageManagerPermissionContract()
} else {
ActivityResultContracts.RequestPermission()
},
) {
if (it) {
viewModel.updateList()
pickFileTreeLauncher.launch(null)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(ActivityMangaDirectoriesBinding.inflate(layoutInflater))
supportActionBar?.setDisplayHomeAsUpEnabled(true)
val adapter = AsyncListDifferDelegationAdapter(DirectoryDiffCallback(), directoryConfigAD(this))
viewBinding.recyclerView.adapter = adapter
viewBinding.fabAdd.setOnClickListener(this)
viewModel.items.observe(this) { adapter.items = it }
viewModel.isLoading.observe(this) { viewBinding.progressBar.isVisible = it }
viewModel.onError.observeEvent(
this,
SnackbarErrorObserver(viewBinding.root, null, exceptionResolver) {
if (it) viewModel.updateList()
},
)
}
override fun onItemClick(item: DirectoryModel, view: View) {
viewModel.onRemoveClick(item.file ?: return)
}
override fun onClick(v: View?) {
permissionRequestLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
override fun onWindowInsetsChanged(insets: Insets) {
viewBinding.fabAdd.updateLayoutParams<ViewGroup.MarginLayoutParams> {
rightMargin = topMargin + insets.right
leftMargin = topMargin + insets.left
bottomMargin = topMargin + insets.bottom
}
viewBinding.root.updatePadding(
left = insets.left,
right = insets.right,
)
viewBinding.recyclerView.updatePadding(
bottom = insets.bottom,
)
}
companion object {
fun newIntent(context: Context) = Intent(context, MangaDirectoriesActivity::class.java)
}
}

View File

@@ -0,0 +1,87 @@
package org.koitharu.kotatsu.settings.storage.directories
import android.net.Uri
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.flow.MutableStateFlow
import okio.FileNotFoundException
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.ui.BaseViewModel
import org.koitharu.kotatsu.local.data.LocalStorageManager
import org.koitharu.kotatsu.settings.storage.DirectoryModel
import java.io.File
import javax.inject.Inject
@HiltViewModel
class MangaDirectoriesViewModel @Inject constructor(
private val storageManager: LocalStorageManager,
private val settings: AppSettings,
) : BaseViewModel() {
val items = MutableStateFlow(emptyList<DirectoryModel>())
private var loadingJob: Job? = null
init {
loadList()
}
fun updateList() {
loadList()
}
fun onCustomDirectoryPicked(uri: Uri) {
launchLoadingJob(Dispatchers.Default) {
loadingJob?.cancelAndJoin()
storageManager.takePermissions(uri)
val dir = requireNotNull(storageManager.resolveUri(uri)) {
"Cannot resolve file name of \"$uri\""
}
if (!dir.canWrite()) {
throw AccessDeniedException(dir)
}
if (dir !in storageManager.getApplicationStorageDirs()) {
settings.userSpecifiedMangaDirectories += dir
loadList()
}
}
}
fun onRemoveClick(directory: File) {
settings.userSpecifiedMangaDirectories -= directory
if (settings.mangaStorageDir == directory) {
settings.mangaStorageDir = null
}
loadList()
}
private fun loadList() {
val prevJob = loadingJob
loadingJob = launchJob(Dispatchers.Default) {
prevJob?.cancelAndJoin()
val applicationDirs = storageManager.getApplicationStorageDirs()
val customDirs = settings.userSpecifiedMangaDirectories
items.value = buildList(applicationDirs.size + customDirs.size) {
applicationDirs.mapTo(this) { dir ->
DirectoryModel(
title = storageManager.getDirectoryDisplayName(dir, isFullPath = false),
titleRes = 0,
file = dir,
isChecked = false,
isAvailable = dir.canRead() && dir.canWrite(),
)
}
customDirs.mapTo(this) { dir ->
DirectoryModel(
title = storageManager.getDirectoryDisplayName(dir, isFullPath = false),
titleRes = 0,
file = dir,
isChecked = true,
isAvailable = dir.canRead() && dir.canWrite(),
)
}
}
}
}
}

View File

@@ -4,6 +4,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
@@ -11,6 +12,8 @@ import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.onStart
import org.koitharu.kotatsu.core.db.MangaDatabase
import org.koitharu.kotatsu.core.model.FavouriteCategory
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.prefs.observeAsFlow
import org.koitharu.kotatsu.favourites.data.FavouriteCategoryEntity
import org.koitharu.kotatsu.favourites.data.toFavouriteCategory
import org.koitharu.kotatsu.favourites.data.toMangaList
@@ -32,6 +35,7 @@ class ShelfContentObserveUseCase @Inject constructor(
private val trackingRepository: TrackingRepository,
private val suggestionRepository: SuggestionRepository,
private val db: MangaDatabase,
private val settings: AppSettings,
@LocalStorageChanges private val localStorageChanges: SharedFlow<LocalManga?>,
) {
@@ -46,7 +50,10 @@ class ShelfContentObserveUseCase @Inject constructor(
}
private fun observeLocalManga(sortOrder: SortOrder, limit: Int): Flow<List<Manga>> {
return localStorageChanges
return combine<LocalManga?, String, Any?>(
localStorageChanges,
settings.observe().filter { it == AppSettings.KEY_LOCAL_MANGA_DIRS }
) { _, _ -> Any() }
.onStart { emit(null) }
.mapLatest {
localMangaRepository.getList(0, null, sortOrder).take(limit)

View File

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

View File

@@ -13,9 +13,9 @@ import org.koitharu.kotatsu.core.db.entity.MangaEntity
entity = MangaEntity::class,
parentColumns = ["manga_id"],
childColumns = ["manga_id"],
onDelete = ForeignKey.CASCADE
)
]
onDelete = ForeignKey.CASCADE,
),
],
)
class TrackEntity(
@PrimaryKey(autoGenerate = false)
@@ -27,4 +27,4 @@ class TrackEntity(
@ColumnInfo(name = "last_check") val lastCheck: Long,
@get:Deprecated(message = "Should not be used", level = DeprecationLevel.ERROR)
@ColumnInfo(name = "last_notified_id") val lastNotifiedChapterId: Long
)
)

View File

@@ -43,6 +43,9 @@ abstract class TracksDao {
@Query("UPDATE tracks SET chapters_new = 0")
abstract suspend fun clearCounters()
@Query("UPDATE tracks SET chapters_new = 0 WHERE manga_id = :mangaId")
abstract suspend fun clearCounter(mangaId: Long)
@Query("DELETE FROM tracks WHERE manga_id = :mangaId")
abstract suspend fun delete(mangaId: Long)

View File

@@ -126,6 +126,18 @@ class TrackingRepository @Inject constructor(
}
}
suspend fun clearUpdates(ids: Collection<Long>) {
when {
ids.isEmpty() -> return
ids.size == 1 -> db.tracksDao.clearCounter(ids.single())
else -> db.withTransaction {
for (id in ids) {
db.tracksDao.clearCounter(id)
}
}
}
}
suspend fun syncWithHistory(manga: Manga, chapterId: Long) {
val chapters = manga.chapters ?: return
val chapterIndex = chapters.indexOfFirst { x -> x.id == chapterId }

View File

@@ -1,7 +1,12 @@
package org.koitharu.kotatsu.tracker.ui.updates
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.view.ActionMode
import androidx.fragment.app.viewModels
import dagger.hilt.android.AndroidEntryPoint
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.list.ListSelectionController
import org.koitharu.kotatsu.list.ui.MangaListFragment
@AndroidEntryPoint
@@ -12,6 +17,22 @@ class UpdatesFragment : MangaListFragment() {
override fun onScrolledToEnd() = Unit
override fun onCreateActionMode(controller: ListSelectionController, mode: ActionMode, menu: Menu): Boolean {
mode.menuInflater.inflate(R.menu.mode_updates, menu)
return super.onCreateActionMode(controller, mode, menu)
}
override fun onActionItemClicked(controller: ListSelectionController, mode: ActionMode, item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_remove -> {
viewModel.remove(controller.snapshot())
true
}
else -> super.onActionItemClicked(controller, mode, item)
}
}
companion object {
fun newInstance() = UpdatesFragment()

View File

@@ -59,4 +59,10 @@ class UpdatesViewModel @Inject constructor(
override fun onRefresh() = Unit
override fun onRetry() = Unit
fun remove(ids: Set<Long>) {
launchJob(Dispatchers.Default) {
repository.clearUpdates(ids)
}
}
}

View File

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

View File

@@ -37,7 +37,7 @@ class RecentListFactory(
override fun getLoadingView() = null
override fun getItemId(position: Int) = dataSet[position].id
override fun getItemId(position: Int) = dataSet.getOrNull(position)?.id ?: 0L
override fun onDataSetChanged() {
val data = runBlocking { historyRepository.getList(0, 10) }
@@ -48,7 +48,7 @@ class RecentListFactory(
override fun getViewAt(position: Int): RemoteViews {
val views = RemoteViews(context.packageName, R.layout.item_recent)
val item = dataSet[position]
val item = dataSet.getOrNull(position) ?: return views
runCatching {
coil.executeBlocking(
ImageRequest.Builder(context)

View File

@@ -40,7 +40,7 @@ class ShelfListFactory(
override fun getLoadingView() = null
override fun getItemId(position: Int) = dataSet[position].id
override fun getItemId(position: Int) = dataSet.getOrNull(position)?.id ?: 0L
override fun onDataSetChanged() {
val data = runBlocking {
@@ -58,7 +58,7 @@ class ShelfListFactory(
override fun getViewAt(position: Int): RemoteViews {
val views = RemoteViews(context.packageName, R.layout.item_shelf)
val item = dataSet[position]
val item = dataSet.getOrNull(position) ?: return views
views.setTextViewText(R.id.textView_title, item.title)
runCatching {
coil.executeBlocking(

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" />
</vector>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12M12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15M13,3V5H11V3H13Z" />
</vector>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" />
</vector>

View File

@@ -0,0 +1,11 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M5 3A2 2 0 0 0 3 5H5M7 3V5H9V3M11 3V5H13V3M15 3V5H17V3M19 3V5H21A2 2 0 0 0 19 3M3 7V9H5V7M7 7V11H11V7M13 7V11H17V7M19 7V9H21V7M3 11V13H5V11M19 11V13H21V11M7 13V17H11V13M13 13V17H17V13M3 15V17H5V15M19 15V17H21V15M3 19A2 2 0 0 0 5 21V19M7 19V21H9V19M11 19V21H13V19M15 19V21H17V19M19 19V21A2 2 0 0 0 21 19Z" />
</vector>

View File

@@ -58,7 +58,6 @@
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:contentDescription="@string/add_new_category"
android:src="@drawable/ic_add"
android:text="@string/create_category"
app:fabSize="normal"
app:icon="@drawable/ic_add"

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="noScroll">
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:orientation="vertical"
android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="gone"
app:layout_anchor="@id/appbar"
app:layout_anchorGravity="bottom" />
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/fab_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:contentDescription="@string/pick_custom_directory"
android:text="@string/add"
app:fabSize="normal"
app:icon="@drawable/ic_add"
app:layout_anchor="@id/recyclerView"
app:layout_anchorGravity="bottom|end"
app:layout_behavior="org.koitharu.kotatsu.core.ui.util.ShrinkOnScrollBehavior"
app:layout_dodgeInsetEdges="bottom" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
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"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:scrollIndicators="top|bottom"
android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:ignore="UnusedAttribute" />

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<org.koitharu.kotatsu.core.ui.widgets.TwoLinesItemView
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"
android:id="@+id/button_file"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="?android:listPreferredItemPaddingStart"
android:minHeight="?android:listPreferredItemHeightSmall"
android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd"
tools:subtitle="@string/chapters"
tools:title="@string/download_option_whole_manga" />

View File

@@ -1,48 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:minHeight="?listPreferredItemHeightLarge"
android:gravity="center_vertical"
android:minHeight="?listPreferredItemHeight"
android:orientation="horizontal"
android:paddingVertical="12dp"
android:paddingStart="?listPreferredItemPaddingStart"
android:paddingTop="16dp"
android:paddingEnd="?listPreferredItemPaddingEnd"
android:paddingBottom="16dp">
android:paddingEnd="?listPreferredItemPaddingEnd">
<org.koitharu.kotatsu.core.ui.widgets.CheckableImageView
android:id="@+id/imageView_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:src="?android:listChoiceIndicatorSingle"
tools:ignore="TouchTargetSizeCheck" />
<TextView
android:id="@+id/textView_title"
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="?listPreferredItemPaddingStart"
android:layout_toEndOf="@id/imageView_indicator"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceTitleSmall"
tools:text="@tools:sample/lorem[3]" />
android:orientation="vertical">
<TextView
android:id="@+id/textView_subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@id/textView_title"
android:layout_alignParentEnd="true"
android:layout_marginStart="?listPreferredItemPaddingStart"
android:layout_marginTop="6dp"
android:layout_toEndOf="@id/imageView_indicator"
android:ellipsize="end"
android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/lorem[20]" />
<TextView
android:id="@+id/textView_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceTitleSmall"
tools:text="@tools:sample/lorem[3]" />
</RelativeLayout>
<TextView
android:id="@+id/textView_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/lorem[20]" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="?listPreferredItemHeight"
android:orientation="horizontal"
android:paddingVertical="12dp"
android:paddingStart="?listPreferredItemPaddingStart">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/textView_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="6dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceTitleSmall"
app:drawableTint="@color/warning"
tools:drawableStart="@drawable/ic_alert_outline"
tools:text="@tools:sample/lorem[3]" />
<TextView
android:id="@+id/textView_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/lorem[20]" />
</LinearLayout>
<ImageView
android:id="@+id/imageView_remove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/remove"
android:padding="?listPreferredItemPaddingEnd"
app:srcCompat="@drawable/ic_delete" />
</LinearLayout>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_share"
android:icon="?actionModeShareDrawable"
android:title="@string/share"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/action_remove"
android:icon="@drawable/ic_delete"
android:title="@string/delete"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/action_save"
android:icon="@drawable/ic_save"
android:title="@string/save"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/action_select_all"
android:icon="?actionModeSelectAllDrawable"
android:title="@android:string/selectAll"
app:showAsAction="ifRoom|withText" />
</menu>

View File

@@ -20,7 +20,7 @@
<item
android:id="@+id/action_save"
android:orderInCategory="40"
android:title="@string/save"
android:title="@string/download"
android:visible="false"
app:showAsAction="never" />

View File

@@ -9,4 +9,10 @@
android:title="@string/_import"
app:showAsAction="never" />
</menu>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/settings"
app:showAsAction="never" />
</menu>

View File

@@ -1,77 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="detailed_list">تفاصيل القائمة</string>
<string name="error_occurred">حدث خطأ</string>
<string name="details">تفاصيل</string>
<string name="grid">شبكة</string>
<string name="list_mode">وضع القائمة</string>
<string name="settings">إعدادات</string>
<string name="remote_sources">المصادر البعيدة</string>
<string name="chapters">فصول</string>
<string name="favourites">المفضلة</string>
<string name="network_error">‌خطاء في الشبكة</string>
<string name="loading_">جار التحميل…</string>
<string name="chapter_d_of_d">فصل %1$d في %2$d</string>
<string name="close">غلق</string>
<string name="try_again">حاول مجدداً</string>
<string name="computing_">جاري الحوسبة …</string>
<string name="local_storage">التخزين المحلي</string>
<string name="history">سجل</string>
<string name="list">قائمة</string>
<string name="clear_history">محو سجل</string>
<string name="add_to_favourites">ضع هذا في المفضلة</string>
<string name="add">أضف</string>
<string name="save">حفظ</string>
<string name="history_is_empty">لا سجل بعد</string>
<string name="downloads">التحميلات</string>
<string name="by_name">اسم</string>
<string name="newest">الأحدث</string>
<string name="by_rating">تقييم</string>
<string name="pages">صفحات</string>
<string name="read">اقرأ</string>
<string name="share">شارك</string>
<string name="nothing_found">لم يتم عثور على اي شيء</string>
<string name="you_have_not_favourites_yet">لا مفضلة بعد</string>
<string name="search">بحث</string>
<string name="search_manga">البحث في المانجا</string>
<string name="manga_downloading_">جاري التنزيل…</string>
<string name="create_shortcut">انشاء اختصار…</string>
<string name="theme">مظهر</string>
<string name="automatic">حسب النظام</string>
<string name="share_s">شارك %s</string>
<string name="processing_">في طور معالجة…</string>
<string name="updated">محدث</string>
<string name="filter">فلتر</string>
<string name="sort_order">ترتيب الفرز</string>
<string name="light">ضوء</string>
<string name="dark">داكن</string>
<string name="clear">أزل</string>
<string name="remove">ازالة</string>
<string name="popular">شائع</string>
<string name="add_new_category">قائمة جديدة</string>
<string name="download_complete">تم التنزيل</string>
<string name="text_clear_history_prompt">هل تريد محو سجل القراءة بالكامل بشكل دائم؟</string>
<string name="save_page">احفظ الصفحة</string>
<string name="page_saved">حفظت</string>
<string name="standard">اساسي</string>
<string name="no_description">لا يوجد وصف</string>
<string name="clear_pages_cache">مسح ذاكرة التخزين المؤقت للصفحة</string>
<string name="webtoon">ويبتون</string>
<string name="read_mode">وضع القراءة</string>
<string name="search_on_s">بحث على %s</string>
<string name="delete_manga">حذف المانغا</string>
<string name="text_delete_local_manga">حذف \"%s\" من الجهاز نهائيا؟</string>
<string name="reader_settings">إعدادات القراءة</string>
<string name="switch_pages">تغییر صفحات</string>
<string name="delete">حذف</string>
<string name="share_image">شارك الصورة</string>
<string name="text_file_not_supported">إما أن تختار ملف ZIP أو CBZ.</string>
<string name="_import">استورد</string>
<string name="operation_not_supported">هذا خيار غير مدعم</string>
<string name="grid_size">حجم الشبكة</string>
<string name="volume_buttons">أزرار الصوت</string>
<string name="taps_on_edges">النقر على حواف الشاشة</string>
<string name="_continue">يكمل</string>
<string name="error">خطاء</string>
<string name="clear_search_history">مسح تاريخ البحث</string>
</resources>
<string name="detailed_list">تفاصيل القائمة</string>
<string name="error_occurred">حدث خطأ</string>
<string name="details">تفاصيل</string>
<string name="grid">شبكة</string>
<string name="list_mode">وضع القائمة</string>
<string name="settings">إعدادات</string>
<string name="remote_sources">مصادر المانجا</string>
<string name="chapters">فصول</string>
<string name="favourites">المفضلة</string>
<string name="network_error">‌خطاء في الشبكة</string>
<string name="loading_">جار التحميل…</string>
<string name="chapter_d_of_d">فصل %1$d في %2$d</string>
<string name="close">غلق</string>
<string name="try_again">حاول مجدداً</string>
<string name="computing_">جاري الحوسبة …</string>
<string name="local_storage">التخزين المحلي</string>
<string name="history">سجل</string>
<string name="list">قائمة</string>
<string name="clear_history">محو سجل</string>
<string name="add_to_favourites">ضع هذا في المفضلة</string>
<string name="add">أضف</string>
<string name="save">حفظ</string>
<string name="history_is_empty">لا سجل بعد</string>
<string name="downloads">التحميلات</string>
<string name="by_name">اسم</string>
<string name="newest">الأحدث</string>
<string name="by_rating">تقييم</string>
<string name="pages">صفحات</string>
<string name="read">اقرأ</string>
<string name="share">شارك</string>
<string name="nothing_found">لم يتم عثور على اي شيء</string>
<string name="you_have_not_favourites_yet">لا مفضلة بعد</string>
<string name="search">بحث</string>
<string name="search_manga">البحث في المانجا</string>
<string name="manga_downloading_">جاري التنزيل…</string>
<string name="create_shortcut">انشاء اختصار…</string>
<string name="theme">مظهر</string>
<string name="automatic">حسب النظام</string>
<string name="share_s">شارك %s</string>
<string name="processing_">في طور معالجة…</string>
<string name="updated">محدث</string>
<string name="filter">فلتر</string>
<string name="sort_order">ترتيب الفرز</string>
<string name="light">ضوء</string>
<string name="dark">داكن</string>
<string name="clear">أزل</string>
<string name="remove">ازالة</string>
<string name="popular">شائع</string>
<string name="add_new_category">قائمة جديدة</string>
<string name="download_complete">تم التنزيل</string>
<string name="text_clear_history_prompt">هل تريد محو سجل القراءة بالكامل بشكل دائم؟</string>
<string name="save_page">احفظ الصفحة</string>
<string name="page_saved">حفظت</string>
<string name="standard">اساسي</string>
<string name="no_description">لا يوجد وصف</string>
<string name="clear_pages_cache">مسح ذاكرة التخزين المؤقت للصفحة</string>
<string name="webtoon">ويبتون</string>
<string name="read_mode">وضع القراءة</string>
<string name="search_on_s">بحث على %s</string>
<string name="delete_manga">حذف المانغا</string>
<string name="text_delete_local_manga">حذف \"%s\" من الجهاز نهائيا؟</string>
<string name="reader_settings">إعدادات القراءة</string>
<string name="switch_pages">تغییر صفحات</string>
<string name="delete">حذف</string>
<string name="share_image">شارك الصورة</string>
<string name="text_file_not_supported">إما أن تختار ملف ZIP أو CBZ.</string>
<string name="_import">استورد</string>
<string name="operation_not_supported">هذا خيار غير مدعم</string>
<string name="grid_size">حجم الشبكة</string>
<string name="volume_buttons">أزرار الصوت</string>
<string name="taps_on_edges">النقر على حواف الشاشة</string>
<string name="_continue">يكمل</string>
<string name="error">خطاء</string>
<string name="clear_search_history">مسح تاريخ البحث</string>
</resources>

View File

@@ -179,7 +179,7 @@
<string name="text_history_holder_secondary">Вы можаце знайсці, што пачытаць, у бакавым меню.</string>
<string name="text_history_holder_primary">Тут будзе паказана манга, якую вы чытаеце</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="queued">У чарзе</string>
<string name="about_app_translation_summary">Дапамагчы з перакладам праграмы</string>
@@ -191,7 +191,7 @@
<string name="state_finished">Завершана</string>
<string name="state_ongoing">Ангоінг</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="enabled_sources">Уключаныя крыніцы</string>
<string name="available_sources">Даступныя крыніцы</string>
@@ -199,11 +199,11 @@
<string name="screenshots_allow">Дазваляць</string>
<string name="screenshots_policy">Палітыка скрыншотаў</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="disabled">Адключаны</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="suggestions_info">Усе даныя аналізуюцца толькі лакальна на гэтай прыладзе і нікуды не адпраўляюцца.</string>
<string name="suggestions_summary">Прапануеце мангу, заснаваную на вашых перавагах</string>
@@ -240,7 +240,7 @@
<string name="removed_from_history">Выдалена з гісторыі</string>
<string name="dns_over_https">DNS праз HTTPS</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="download_slowdown">Запавольванне спампоўкі</string>
<string name="suggestions_excluded_genres">Выключыць жанры</string>
@@ -299,7 +299,7 @@
<string name="different_languages">Розныя мовы</string>
<string name="network_unavailable">Сетка недаступная</string>
<string name="network_unavailable_hint">Каб чытаць мангу онлайн, уключыце Wi-Fi або мабільную сетку</string>
<string name="webtoon_zoom">Webtoon зум</string>
<string name="webtoon_zoom">Маштабаванне ў рэжыме манхвы</string>
<string name="theme_name_dynamic">Дынамічны</string>
<string name="color_theme">Каляровая гама</string>
<string name="language">Мова</string>
@@ -426,9 +426,21 @@
<string name="show_pages_numbers_summary">Паказаць нумары старонак у ніжнім куце</string>
<string name="network">Сетка</string>
<string name="data_and_privacy">Дадзеныя і канфідэнцыяльнасць</string>
<string name="webtoon_zoom_summary">Дазволіць жэст для павелічэння ў рэжыме webtoon</string>
<string name="webtoon_zoom_summary">Уключыць жэст павелічэння маштабу ў рэжыме манхвы</string>
<string name="details_button_tip">Націсніце і ўтрымлівайце кнопку \"Чытаць\", каб убачыць дадатковыя параметры</string>
<string name="restore_summary">Аднавіць раней створаную рэзервовую копію</string>
<string name="reader_info_bar_summary">Паказаць бягучы час і ход чытання ў верхняй частцы экрана</string>
<string name="pages_animation_summary">Анімацыя перагортвання старонак</string>
<string name="clear_source_cookies_summary">Выдаліць файлы cookie толькі для вызначанага дамена. У большасці выпадкаў гэта робіць аўтарызацыю несапраўднай</string>
<string name="download_option_whole_manga">Манга цалкам</string>
<string name="local_manga_directories">Лакальныя каталогі мангі</string>
<string name="download_option_all_chapters">Усе раздзелы з перакладам %s</string>
<string name="download_option_first_n_chapters">Першыя %s</string>
<string name="download_option_all_unread_b">Усе непрачытаныя раздзелы (%s)</string>
<string name="download_option_all_unread">Усе непрачытаныя раздзелы</string>
<string name="download_option_manual_selection">Выбірайце раздзелы ўручную</string>
<string name="pick_custom_directory">Выберыце карыстальніцкі каталог</string>
<string name="download_option_next_unread_n_chapters">Наступная непрачытаная %s</string>
<string name="custom_directory">Карыстацкі каталог</string>
<string name="no_access_to_file">У вас няма доступу да гэтага файла або каталога</string>
</resources>

View File

@@ -1,82 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="local_storage">Εσωτερικός χώρος</string>
<string name="favourites">Αγαπημένα</string>
<string name="history">Ιστορικό</string>
<string name="error_occurred">Προέκυψε σφάλμα</string>
<string name="try_again">Επανάληψη</string>
<string name="grid">Πλέγμα</string>
<string name="list_mode">Εμφάνιση ως λίστα</string>
<string name="settings">Ρυθμίσεις</string>
<string name="remote_sources">Απομακρυσμένες πηγές</string>
<string name="computing_">Επεξεργασία…</string>
<string name="close">Κλείσιμο</string>
<string name="clear_history">Εκκαθάριση ιστορικού</string>
<string name="nothing_found">Δεν βρέθηκε τίποτα</string>
<string name="history_is_empty">Κενό ιστορικό</string>
<string name="read">Διάβασε</string>
<string name="add_to_favourites">Προσθήκη στα αγαπημένα</string>
<string name="add_new_category">Νέα κατηγορία</string>
<string name="save">Αποθήκευση</string>
<string name="share">Κοινοποιήση</string>
<string name="create_shortcut">Δημιουργία συντόμευσης…</string>
<string name="share_s">Κοινοποίηση %s</string>
<string name="search">Αναζήτηση</string>
<string name="search_manga">Αναζήτηση μάνγκα</string>
<string name="manga_downloading_">Λήψη…</string>
<string name="download_complete">Κατεβασμένο</string>
<string name="downloads">Λήψεις</string>
<string name="updated">Ενημερωμένο</string>
<string name="newest">Νεότερο</string>
<string name="by_rating">Βαθμολογία</string>
<string name="filter">Φίλτρο</string>
<string name="dark">Σκοτεινό</string>
<string name="automatic">Όπως στο σύστημα</string>
<string name="clear">Εκκαθάριση</string>
<string name="text_clear_history_prompt">Να διαγράψετε μόνιμα όλο το ιστορικό ανάγνωσης;</string>
<string name="remove">Διαγραφή</string>
<string name="save_page">Αποθήκευση σελίδας</string>
<string name="page_saved">Αποθηκευμένα</string>
<string name="share_image">Κοινή χρήση εικόνας</string>
<string name="_import">Εισαγωγή</string>
<string name="delete">Διαγραφή</string>
<string name="text_file_not_supported">Επιλέξτε ένα αρχείο ZIP ή CBZ.</string>
<string name="no_description">Χωρίς περιγραφή</string>
<string name="clear_pages_cache">Εκκαθάριση μνήμης cache της σελίδας</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="standard">Τυπικό</string>
<string name="webtoon">Μάνχγουα</string>
<string name="search_on_s">Αναζήτηση στο %s</string>
<string name="delete_manga">Διαγραφή μάνγκα</string>
<string name="text_delete_local_manga">Μόνιμη διαγραφή του \"%s\" από τη συσκευή;</string>
<string name="reader_settings">Ρυθμίσεις λειτουργίας ανάγνωσης</string>
<string name="switch_pages">Αλλαγή σελίδων</string>
<string name="network_error">Αδυναμία σύνδεσης στο ίντερνετ</string>
<string name="chapters">Κεφάλαια</string>
<string name="details">Πληροφορίες</string>
<string name="list">Λίστα</string>
<string name="detailed_list">Λεπτομερής λίστα</string>
<string name="loading_">Φόρτωση…</string>
<string name="chapter_d_of_d">Κεφάλαιο%1$d από %2$d</string>
<string name="you_have_not_favourites_yet">Δεν υπάρχουν αγαπημένα</string>
<string name="add">Προσθήκη</string>
<string name="processing_">Επεξεργασία…</string>
<string name="by_name">Όνομα</string>
<string name="popular">Δημοφιλή</string>
<string name="sort_order">Τρόπος Ταξινόμησης</string>
<string name="theme">Θέμα</string>
<string name="light">Φωτεινό</string>
<string name="pages">Σελίδες</string>
<string name="_s_deleted_from_local_storage">Το \"%s\" διαγράφηκε από τον τοπικό χώρο αποθήκευσης</string>
<string name="operation_not_supported">Αυτή η λειτουργία δεν υποστηρίζεται</string>
<string name="read_mode">Λειτουργία ανάγνωσης</string>
<string name="grid_size">Μέγεθος πλέγματος</string>
<string name="theme_name_mamimi">Μαμίμι</string>
<string name="theme_name_kanade">Κανάντε</string>
<string name="nothing_here">Δεν υπάρχει τίποτα εδώ</string>
<string name="theme_name_miku">Μίκου</string>
<string name="theme_name_asuka">Άσουκα</string>
<string name="theme_name_mion">Μιόν</string>
<string name="theme_name_rikka">Ρίκκα</string>
<string name="theme_name_sakura">Σακούρα</string>
</resources>
<string name="local_storage">Εσωτερικός χώρος</string>
<string name="favourites">Αγαπημένα</string>
<string name="history">Ιστορικό</string>
<string name="error_occurred">Προέκυψε σφάλμα</string>
<string name="try_again">Επανάληψη</string>
<string name="grid">Πλέγμα</string>
<string name="list_mode">Εμφάνιση ως λίστα</string>
<string name="settings">Ρυθμίσεις</string>
<string name="remote_sources">Πηγές μάνγκα</string>
<string name="computing_">Επεξεργασία…</string>
<string name="close">Κλείσιμο</string>
<string name="clear_history">Εκκαθάριση ιστορικού</string>
<string name="nothing_found">Δεν βρέθηκε τίποτα</string>
<string name="history_is_empty">Κενό ιστορικό</string>
<string name="read">Διάβασε</string>
<string name="add_to_favourites">Προσθήκη στα αγαπημένα</string>
<string name="add_new_category">Νέα κατηγορία</string>
<string name="save">Αποθήκευση</string>
<string name="share">Κοινοποιήση</string>
<string name="create_shortcut">Δημιουργία συντόμευσης…</string>
<string name="share_s">Κοινοποίηση %s</string>
<string name="search">Αναζήτηση</string>
<string name="search_manga">Αναζήτηση μάνγκα</string>
<string name="manga_downloading_">Λήψη…</string>
<string name="download_complete">Κατεβασμένο</string>
<string name="downloads">Λήψεις</string>
<string name="updated">Ενημερωμένο</string>
<string name="newest">Νεότερο</string>
<string name="by_rating">Βαθμολογία</string>
<string name="filter">Φίλτρο</string>
<string name="dark">Σκοτεινό</string>
<string name="automatic">Όπως στο σύστημα</string>
<string name="clear">Εκκαθάριση</string>
<string name="text_clear_history_prompt">Να διαγράψετε μόνιμα όλο το ιστορικό ανάγνωσης;</string>
<string name="remove">Διαγραφή</string>
<string name="save_page">Αποθήκευση σελίδας</string>
<string name="page_saved">Αποθηκευμένα</string>
<string name="share_image">Κοινή χρήση εικόνας</string>
<string name="_import">Εισαγωγή</string>
<string name="delete">Διαγραφή</string>
<string name="text_file_not_supported">Επιλέξτε ένα αρχείο ZIP ή CBZ.</string>
<string name="no_description">Χωρίς περιγραφή</string>
<string name="clear_pages_cache">Εκκαθάριση μνήμης cache της σελίδας</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="standard">Τυπικό</string>
<string name="webtoon">Μάνχγουα</string>
<string name="search_on_s">Αναζήτηση στο %s</string>
<string name="delete_manga">Διαγραφή μάνγκα</string>
<string name="text_delete_local_manga">Μόνιμη διαγραφή του \"%s\" από τη συσκευή;</string>
<string name="reader_settings">Ρυθμίσεις λειτουργίας ανάγνωσης</string>
<string name="switch_pages">Αλλαγή σελίδων</string>
<string name="network_error">Σφάλμα δικτύου</string>
<string name="chapters">Κεφάλαια</string>
<string name="details">Πληροφορίες</string>
<string name="list">Λίστα</string>
<string name="detailed_list">Λεπτομερής λίστα</string>
<string name="loading_">Φόρτωση…</string>
<string name="chapter_d_of_d">Κεφάλαιο%1$d από %2$d</string>
<string name="you_have_not_favourites_yet">Δεν υπάρχουν αγαπημένα</string>
<string name="add">Προσθήκη</string>
<string name="processing_">Επεξεργασία…</string>
<string name="by_name">Όνομα</string>
<string name="popular">Δημοφιλή</string>
<string name="sort_order">Τρόπος Ταξινόμησης</string>
<string name="theme">Θέμα</string>
<string name="light">Φωτεινό</string>
<string name="pages">Σελίδες</string>
<string name="_s_deleted_from_local_storage">Το \"%s\" διαγράφηκε από τον τοπικό χώρο αποθήκευσης</string>
<string name="operation_not_supported">Αυτή η λειτουργία δεν υποστηρίζεται</string>
<string name="read_mode">Λειτουργία ανάγνωσης</string>
<string name="grid_size">Μέγεθος πλέγματος</string>
<string name="theme_name_mamimi">Μαμίμι</string>
<string name="theme_name_kanade">Κανάντε</string>
<string name="nothing_here">Δεν υπάρχει τίποτα εδώ</string>
<string name="theme_name_miku">Μίκου</string>
<string name="theme_name_asuka">Άσουκα</string>
<string name="theme_name_mion">Μιόν</string>
<string name="theme_name_rikka">Ρίκκα</string>
<string name="theme_name_sakura">Σακούρα</string>
</resources>

View File

@@ -431,4 +431,16 @@
<string name="details_button_tip">Manten pulsado el botón Leer para ver más opciones</string>
<string name="restore_summary">Restaurar una copia de seguridad creada anteriormente</string>
<string name="reader_info_bar_summary">Muestra la hora actual y el progreso de la lectura en la parte superior de la pantalla</string>
<string name="clear_source_cookies_summary">Borrar las cookies solo para el dominio especificado. En la mayoría de los casos invalidará la autorización</string>
<string name="download_option_whole_manga">El manga completo</string>
<string name="download_option_first_n_chapters">Primero %s</string>
<string name="download_option_all_unread">Todos los capítulos sin leer</string>
<string name="download_option_all_unread_b">Todos los capítulos sin leer (%s)</string>
<string name="download_option_manual_selection">Selección manual de los capítulos</string>
<string name="download_option_all_chapters">Todos los capítulos con traducción %s</string>
<string name="download_option_next_unread_n_chapters">Siguiente %s sin leer</string>
<string name="pick_custom_directory">Elegir un directorio personalizado</string>
<string name="no_access_to_file">No tienes acceso a este archivo o directorio</string>
<string name="custom_directory">Directorio personalizado</string>
<string name="local_manga_directories">Directorios locales del manga</string>
</resources>

View File

@@ -431,4 +431,16 @@
<string name="network">Réseau</string>
<string name="data_and_privacy">Données et confidentialité</string>
<string name="show_pages_numbers_summary">Afficher les numéros de page dans le coin inférieur</string>
<string name="clear_source_cookies_summary">Effacer les cookies pour le domaine spécifié uniquement. Dans la plupart des cas, l\'autorisation sera invalidée</string>
<string name="download_option_first_n_chapters">%s premier(s)</string>
<string name="download_option_next_unread_n_chapters">%s prochain(s) non lu(s)</string>
<string name="download_option_all_unread_b">Tous les chapitres non lus (%s)</string>
<string name="custom_directory">Répertoire personnalisé</string>
<string name="download_option_all_chapters">Tous les chapitres avec traduction %s</string>
<string name="download_option_all_unread">Tous les chapitres non lus</string>
<string name="download_option_whole_manga">Tout le manga</string>
<string name="download_option_manual_selection">Sélection manuelle des chapitres</string>
<string name="no_access_to_file">Vous n\'avez pas accès à ce fichier ou répertoire</string>
<string name="pick_custom_directory">Choisir un répertoire personnalisé</string>
<string name="local_manga_directories">Annuaires locaux de mangas</string>
</resources>

View File

@@ -2,19 +2,66 @@
<resources>
<string name="details">विवरण</string>
<string name="chapters">अध्याय</string>
<string name="nothing_found">कुछ भी नहीं मिला</string>
<string name="nothing_found">कुछ नहीं मिला</string>
<string name="history_is_empty">अभी तक कोई इतिहास नहीं है</string>
<string name="read">पढ़ना</string>
<string name="read">पढ़ें</string>
<string name="add_to_favourites">इसे पसंद करें</string>
<string name="add">जोड़ना</string>
<string name="save">बचाना</string>
<string name="add">जोड़</string>
<string name="save">संचय करो</string>
<string name="newest">नवीनतम</string>
<string name="light">रोशनी</string>
<string name="light">उजाला</string>
<string name="dark">अँधेरा</string>
<string name="close">बंद करना</string>
<string name="close">बंद कर</string>
<string name="try_again">पुनः प्रयास करें</string>
<string name="you_have_not_favourites_yet">अभी तक कोई पसंदीदा नहीं है</string>
<string name="remove">निकालना</string>
<string name="remove">निकाल</string>
<string name="by_name">नाम</string>
<string name="popular">लोकप्रिय</string>
<string name="local_storage">स्थानीय स्टॉरेज</string>
<string name="error_occurred">कोई त्रुटि हुई</string>
<string name="network_error">नेटवर्क समस्या</string>
<string name="favourites">पसंदीदा</string>
<string name="detailed_list">विस्तृत सूची</string>
<string name="settings">सेटिंग्स्</string>
<string name="list_mode">सूची रुपी</string>
<string name="chapter_d_of_d">अध्याय %1$d, %2$d में से</string>
<string name="computing_">गणना हो रही है…</string>
<string name="add_new_category">नई श्रेणी</string>
<string name="clear_history">इतिहास मिटाए</string>
<string name="share">भेजो</string>
<string name="create_shortcut">शॉर्टकट बनाएं…</string>
<string name="share_s">%s भेजो</string>
<string name="search">खोजो</string>
<string name="search_manga">मांगा खोजो</string>
<string name="manga_downloading_">डाउनलोड हो रहा है…</string>
<string name="downloads">डाउनलोड किए गए मांगा</string>
<string name="by_rating">रेटिंग</string>
<string name="clear">साफ करें</string>
<string name="page_saved">पन्ना संचय हो गया</string>
<string name="share_image">चित्र को भेजें</string>
<string name="delete">मिटाएं</string>
<string name="clear_pages_cache">पन्ने के कैछ को मिटाएं</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="standard">सामान्य</string>
<string name="webtoon">वैबटून</string>
<string name="remote_sources">मांगा स्रोत</string>
<string name="download_complete">डाउनलोड हो गया</string>
<string name="processing_">प्रक्रिया चल रही है…</string>
<string name="history">इतिहास</string>
<string name="grid">ग्रिड</string>
<string name="loading_">लोड हो रहा है…</string>
<string name="text_file_not_supported">या तो झीप नहीं तो सीबीझेड फाईल को चुनें।</string>
<string name="updated">अपडेट हो गया</string>
<string name="_s_deleted_from_local_storage">\"%s\", स्थानीय स्टॉरेज में से मिट गईं</string>
<string name="text_clear_history_prompt">पढ़ने का इतिहास सदा के लिए मिटाए\?</string>
<string name="save_page">पन्ना संचय करो</string>
<string name="_import">आयात करें</string>
<string name="operation_not_supported">यह कार्य समर्थित नहीं है</string>
<string name="sort_order">छंटाई क्रम</string>
<string name="list">सूची</string>
<string name="filter">फिल्टर</string>
<string name="theme">थीम</string>
<string name="automatic">फोन जैसा</string>
<string name="pages">पन्ने</string>
<string name="no_description">कोई विवरण नहीं है</string>
</resources>

View File

@@ -431,4 +431,12 @@
<string name="webtoon_zoom_summary">Izinkan gerakan zoom in dalam mode webtoon</string>
<string name="reader_info_bar_summary">Tampilkan waktu saat ini dan kemajuan pembacaan di bagian atas layar</string>
<string name="pages_animation_summary">Animasikan peralihan halaman</string>
<string name="clear_source_cookies_summary">Hapus cookie hanya untuk domain tertentu. Dalam kebanyakan kasus akan membatalkan otorisasi</string>
<string name="download_option_whole_manga">Seluruh manga</string>
<string name="download_option_first_n_chapters">Pertama %s</string>
<string name="download_option_all_unread">Semua bab yang belum dibaca</string>
<string name="download_option_all_unread_b">Semua bab yang belum dibaca (%s)</string>
<string name="download_option_all_chapters">Semua bab dengan terjemahan %s</string>
<string name="download_option_next_unread_n_chapters">Belum dibaca %s</string>
<string name="download_option_manual_selection">Pilih bab secara manual</string>
</resources>

View File

@@ -1,372 +1,372 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="no_description">Nessuna descrizione</string>
<string name="text_file_not_supported">File non valido. Sono supportati solo ZIP e CBZ.</string>
<string name="operation_not_supported">Questa operazione non è supportata</string>
<string name="delete">Elimina</string>
<string name="_import">Importa</string>
<string name="share_image">Condividi l\'immagine</string>
<string name="page_saved">Pagina salvata correttamente</string>
<string name="save_page">Salva la pagina</string>
<string name="pages">Pagine</string>
<string name="automatic">Automatico</string>
<string name="dark">Scuro</string>
<string name="light">Chiaro</string>
<string name="theme">Tema</string>
<string name="filter">Filtro</string>
<string name="sort_order">Ordinamento</string>
<string name="by_rating">Per valutazione</string>
<string name="newest">Più recente</string>
<string name="updated">Aggiornato</string>
<string name="popular">Popolare</string>
<string name="by_name">Per nome</string>
<string name="downloads">Scaricati</string>
<string name="download_complete">Scaricamento finito</string>
<string name="processing_">Elaborazione…</string>
<string name="manga_downloading_">Scaricamento di manga…</string>
<string name="search_manga">Cerca manga</string>
<string name="search">Cerca</string>
<string name="share_s">Condividi %s</string>
<string name="create_shortcut">Crea una scorciatoia…</string>
<string name="share">Condividi</string>
<string name="save">Salva</string>
<string name="add">Aggiungi</string>
<string name="add_new_category">Aggiungi una nuova categoria</string>
<string name="add_to_favourites">Aggiungi ai preferiti</string>
<string name="you_have_not_favourites_yet">Non hai ancora preferiti</string>
<string name="read">Leggi</string>
<string name="history_is_empty">La cronologia è vuota</string>
<string name="nothing_found">Niente di trovato</string>
<string name="clear_history">Cancella la cronologia</string>
<string name="try_again">Riprova</string>
<string name="text_clear_updates_feed_prompt">Tutta la cronologia degli aggiornamenti sarà cancellata e questa azione non può essere annullata. Sei sicuro/a\?</string>
<string name="close">Chiudi</string>
<string name="chapter_d_of_d">Capitolo %1$d di %2$d</string>
<string name="loading_">Caricamento…</string>
<string name="remote_sources">Fonti remote</string>
<string name="settings">Impostazioni</string>
<string name="list_mode">Modalità elenco</string>
<string name="grid">Griglia</string>
<string name="detailed_list">Elenco dettagliato</string>
<string name="text_delete_local_manga">Vuoi davvero eliminare «%s» dalla memoria locale del tuo dispositivo\?</string>
<string name="_s_deleted_from_local_storage">«%s» eliminato dall\'archiviazione locale</string>
<string name="list">Lista</string>
<string name="chapters">Capitoli</string>
<string name="details">Dettagli</string>
<string name="network_error">Errore di connessione</string>
<string name="error_occurred">Si è verificato un errore</string>
<string name="history">Cronologia</string>
<string name="favourites">Preferiti</string>
<string name="local_storage">Archiviazione locale</string>
<string name="read_more">Leggi di più</string>
<string name="welcome">Benvenuto/a</string>
<string name="text_clear_search_history_prompt">Vuoi davvero rimuovere tutte le ricerche recenti\?</string>
<string name="password_length_hint">La password deve essere di almeno 4 caratteri</string>
<string name="confirm">Conferma</string>
<string name="protect_application_subtitle">Inserisci la password che sarà richiesta all\'avvio dell\'applicazione</string>
<string name="next">Prossimo</string>
<string name="sign_in">Accedi</string>
<string name="clear_feed">Cancella il flusso</string>
<string name="silent">Silenzioso</string>
<string name="tap_to_try_again">Tocca per riprovare</string>
<string name="today">Oggi</string>
<string name="group">Gruppo</string>
<string name="long_ago">Molto tempo fa</string>
<string name="yesterday">Ieri</string>
<string name="just_now">Proprio ora</string>
<string name="file_not_found">File non trovato</string>
<string name="preparing_">Preparazione…</string>
<string name="data_restored">Dati ripristinati</string>
<string name="restore_backup">Ripristina da un backup</string>
<string name="create_backup">Crea un backup dei dati</string>
<string name="backup_restore">Backup e ripristino</string>
<string name="black_dark_theme_summary">Utile per gli schermi AMOLED</string>
<string name="black_dark_theme">Tema nero scuro</string>
<string name="create_category">Nuova categoria</string>
<string name="right_to_left">Da destra a sinistra</string>
<string name="no_update_available">Nessun aggiornamento disponibile</string>
<string name="check_for_updates">Controlla gli aggiornamenti</string>
<string name="app_version">Versione %s</string>
<string name="about">Informazioni</string>
<string name="passwords_mismatch">Le password non corrispondono</string>
<string name="repeat_password">Ripeti la password</string>
<string name="protect_application_summary">Chiedi la password all\'avvio dell\'applicazione</string>
<string name="protect_application">Proteggi l\'applicazione</string>
<string name="wrong_password">Password sbagliata</string>
<string name="enter_password">Inserisci la password</string>
<string name="dont_check">Non controllare</string>
<string name="track_sources">Controlla gli aggiornamenti per il manga</string>
<string name="feed_will_update_soon">L\'aggiornamento del flusso inizierà presto</string>
<string name="update">Aggiorna</string>
<string name="rotate_screen">Ruota lo schermo</string>
<string name="updates_feed_cleared">Flusso degli aggiornamenti cancellato</string>
<string name="clear_updates_feed">Cancella il flusso degli aggiornamenti</string>
<string name="size_s">Dimensioni: %s</string>
<string name="new_version_s">Nuova versione: %s</string>
<string name="search_results">Risultati della ricerca</string>
<string name="text_feed_holder">Qui potrai vedere i nuovi capitoli del manga che stai leggendo</string>
<string name="updates">Aggiornamenti</string>
<string name="read_later">Leggi più tardi</string>
<string name="favourites_category_empty">Questa categoria è vuota</string>
<string name="all_favourites">Tutti i preferiti</string>
<string name="done">Finito</string>
<string name="other_storage">Altro spazio di archiviazione</string>
<string name="cannot_find_available_storage">Impossibile trovare uno spazio di archiviazione disponibile</string>
<string name="not_available">Non disponibile</string>
<string name="manga_save_location">Posizione per lo scaricamento dei manga</string>
<string name="pages_animation">Animazione delle pagine</string>
<string name="recent_manga">Manga recenti</string>
<string name="manga_shelf">Scaffale da manga</string>
<string name="text_local_holder_secondary">Puoi salvarlo da fonti in linea o importarlo da un file.</string>
<string name="text_local_holder_primary">Non hai ancora salvato nessun manga</string>
<string name="text_history_holder_secondary">Puoi trovare cosa leggere nel menù laterale.</string>
<string name="text_history_holder_primary">I manga che stai leggendo saranno visualizzati qui</string>
<string name="text_search_holder_secondary">Prova a riformulare la domanda.</string>
<string name="text_empty_holder_primary">È un po\' vuoto qui…</string>
<string name="remove_category">Rimuovi la categoria</string>
<string name="favourites_categories">Categorie di preferiti</string>
<string name="vibration">Vibrazione</string>
<string name="light_indicator">Indicatore luminoso</string>
<string name="notification_sound">Suono di notifica</string>
<string name="notifications_settings">Impostazioni notifiche</string>
<string name="download">Scarica</string>
<string name="new_chapters">Nuovi capitoli</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Abilitato %1$d di %2$d</string>
<string name="notifications">Notifiche</string>
<string name="save_manga">Salva il manga</string>
<string name="large_manga_save_confirm">Questo manga ha %s. Vuoi salvare tutto\?</string>
<string name="open_in_browser">Apri nel browser</string>
<string name="app_update_available">Un aggiornamento per l\'applicazione è disponibile</string>
<string name="domain">Dominio</string>
<string name="external_storage">Archiviazione esterna</string>
<string name="internal_storage">Archiviazione interna</string>
<string name="gestures_only">Solo gesti</string>
<string name="search_history_cleared">Storia della ricerca cancellata</string>
<string name="clear_search_history">Cancella la cronologia delle ricerche</string>
<string name="clear_thumbs_cache">Svuota la cache delle miniature</string>
<string name="error">Errore</string>
<string name="_continue">Continua</string>
<string name="volume_buttons">Pulsanti volume</string>
<string name="taps_on_edges">Tocchi sui bordi</string>
<string name="switch_pages">Cambia pagina</string>
<string name="reader_settings">Impostazioni del lettore</string>
<string name="delete_manga">Elimina il manga</string>
<string name="search_on_s">Ricerca su %s</string>
<string name="grid_size">Dimensione della griglia</string>
<string name="read_mode">Modalità lettura</string>
<string name="webtoon">Webtoon</string>
<string name="standard">Standard</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="clear_pages_cache">Cancella la cache delle pagine</string>
<string name="remove">Rimuovi</string>
<string name="text_clear_history_prompt">Vuoi davvero cancellare tutta la tua cronologia di lettura\?</string>
<string name="clear">Cancella</string>
<string name="tracker_warning">Alcuni produttori possono cambiare il comportamento del sistema, che può interrompere le attività nello sfondo.</string>
<string name="backup_saved">Backup salvato con successo</string>
<string name="default_s">Predefinito: %s</string>
<string name="auth_required">Devi autorizzare la visualizzazione di questo contenuto</string>
<string name="reverse">Inverti</string>
<string name="check_for_new_chapters">Controllo dei nuovi capitoli</string>
<string name="cookies_cleared">Tutti i cookie sono stati rimossi</string>
<string name="clear_cookies">Cancella i cookie</string>
<string name="captcha_solve">Risolvi</string>
<string name="captcha_required">CAPTCHA è richiesto</string>
<string name="reader_mode_hint">La configurazione scelta sarà ricordata per questo manga</string>
<string name="backup_information">Puoi creare un backup della tua cronologia e dei tuoi preferiti e ripristinarlo</string>
<string name="data_restored_with_errors">I dati sono ripristinati, ma ci sono errori</string>
<string name="data_restored_success">Tutti i dati ripristinati con successo</string>
<string name="zoom_mode_keep_start">Tieni all\'inizio</string>
<string name="zoom_mode_fit_height">Adatta all\'altezza</string>
<string name="zoom_mode_fit_center">Adatta al centro</string>
<string name="zoom_mode_fit_width">Adatta alla larghezza</string>
<string name="scale_mode">Modalità scala</string>
<string name="chapter_is_missing">Capitolo mancante</string>
<string name="queued">In coda</string>
<string name="about_app_translation">Traduzione</string>
<string name="about_app_translation_summary">Traduci questa applicazione</string>
<string name="genres">Generi</string>
<string name="text_clear_cookies_prompt">Sarai disconnesso/a da tutte le fonti in cui sei autorizzato/a</string>
<string name="auth_not_supported_by">L\'autorizzazione su %s non è supportata</string>
<string name="auth_complete">Autorizzazione completa</string>
<string name="state_finished">Finito</string>
<string name="state_ongoing">In corso</string>
<string name="system_default">Predefinito</string>
<string name="exclude_nsfw_from_history">Escludi i manga NSFW dalla storia</string>
<string name="show_pages_numbers">Mostra i numeri delle pagine</string>
<string name="enabled_sources">Fonti abilitate</string>
<string name="available_sources">Fonti disponibili</string>
<string name="computing_">Calcolo…</string>
<string name="screenshots_policy">Politica sulle schermate</string>
<string name="screenshots_allow">Permetti</string>
<string name="screenshots_block_nsfw">Blocca per NSFW</string>
<string name="screenshots_block_all">Blocca sempre</string>
<string name="filter_load_error">Impossibile caricare la lista dei generi</string>
<string name="suggestions_enable">Abilita i suggerimenti</string>
<string name="suggestions_summary">Suggerisci manga in base alle tue preferenze</string>
<string name="suggestions_info">Tutti i dati sono analizzati localmente su questo dispositivo. Non c\'è trasferimento dei suoi dati personali a nessun servizio</string>
<string name="text_suggestion_holder">Inizia a leggere manga e riceverai suggerimenti personalizzati</string>
<string name="suggestions">Suggerimenti</string>
<string name="enabled">Abilitato</string>
<string name="disabled">Disabilitato</string>
<string name="exclude_nsfw_from_suggestions">Non suggerire manga NSFW</string>
<string name="reset_filter">Ripristina il filtro</string>
<string name="onboard_text">Seleziona le lingue in cui vuoi leggere i manga. Puoi cambiarla in seguito nelle impostazioni.</string>
<string name="never">Mai</string>
<string name="preload_pages">Precarica le pagine</string>
<string name="only_using_wifi">Solo usando il Wi-Fi</string>
<string name="always">Sempre</string>
<string name="logged_in_as">Registrato come %s</string>
<string name="nsfw">18+</string>
<string name="various_languages">Varie lingue</string>
<string name="search_chapters">Trova un capitolo</string>
<string name="chapters_empty">Nessun capitolo in questo manga</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Aspetto</string>
<string name="suggestions_updating">Aggiornamento dei suggerimenti</string>
<string name="suggestions_excluded_genres_summary">Specifica i generi che non vuoi vedere nei suggerimenti</string>
<string name="suggestions_excluded_genres">Escludi generi</string>
<string name="removal_completed">Rimozione completata</string>
<string name="text_delete_local_manga_batch">Eliminare gli elementi selezionati dal dispositivo in modo permanente\?</string>
<string name="download_slowdown">Rallentamento dello scaricamento</string>
<string name="local_manga_processing">Elaborazione dei manga salvati</string>
<string name="chapters_will_removed_background">I capitoli saranno rimossi in sfondo. Può richiedere un po\' di tempo</string>
<string name="download_slowdown_summary">Aiuta ad evitare il blocco del tuo indirizzo IP</string>
<string name="hide">Nascondi</string>
<string name="new_sources_text">Sono disponibili nuove fonti di manga</string>
<string name="show_notification_new_chapters_on">Riceverai notifiche sugli aggiornamenti del manga che stai leggendo</string>
<string name="notifications_enable">Abilita le notifiche</string>
<string name="show_notification_new_chapters_off">Non riceverai notifiche ma i nuovi capitoli saranno evidenziati nelle liste</string>
<string name="empty_favourite_categories">Nessuna categoria preferita</string>
<string name="name">Nome</string>
<string name="edit">Modifica</string>
<string name="edit_category">Modifica la categoria</string>
<string name="check_new_chapters_title">Controlla i nuovi capitoli e notificarli</string>
<string name="bookmarks">Segnalibri</string>
<string name="removed_from_history">Rimosso dalla cronologia</string>
<string name="bookmark_remove">Rimuovi il segnalibro</string>
<string name="bookmark_add">Aggiungi un segnalibro</string>
<string name="bookmark_removed">Segnalibro rimosso</string>
<string name="bookmark_added">Segnalibro aggiunto</string>
<string name="undo">Annulla</string>
<string name="default_mode">Modalità predefinita</string>
<string name="detect_reader_mode">Modalità di lettura a rilevamento automatico</string>
<string name="dns_over_https">DNS su HTTPS</string>
<string name="detect_reader_mode_summary">Rileva automaticamente se il manga è un webtoon</string>
<string name="disable_battery_optimization">Disattiva l\'ottimizzazione della batteria</string>
<string name="disable_battery_optimization_summary">Contribuisce ai controlli di aggiornamento in sfondo</string>
<string name="crash_text">Qualcosa è andato storto. Si prega di inviare una segnalazione di bug agli sviluppatori per aiutarci a risolvere il problema.</string>
<string name="send">Invia</string>
<string name="disable_all">Disabilita tutto</string>
<string name="use_fingerprint">Usa le impronte digitali se disponibili</string>
<string name="appwidget_shelf_description">Manga dai preferiti</string>
<string name="appwidget_recent_description">I manga letti di recente</string>
<string name="report">Segnala</string>
<string name="tracking">Monitoraggio</string>
<string name="status_reading">Lettura</string>
<string name="status_re_reading">Rilettura</string>
<string name="status_on_hold">In attesa</string>
<string name="show_reading_indicators">Mostrare gli indicatori di progresso della lettura</string>
<string name="data_deletion">Eliminazione dei dati</string>
<string name="show_reading_indicators_summary">Mostra la percentuale di lettura nella cronologia e nei preferiti</string>
<string name="exclude_nsfw_from_history_summary">I manga contrassegnati come per adulti non verranno mai aggiunti alla cronologia e i vostri progressi non verranno salvati</string>
<string name="clear_cookies_summary">Può aiutare in caso di problemi. Tutte le autorizzazioni saranno invalidate</string>
<string name="show_all">Mostra tutto</string>
<string name="logout">Esci</string>
<string name="status_planned">Pianificato</string>
<string name="status_completed">Finito</string>
<string name="status_dropped">Caduto</string>
<string name="invalid_domain_message">Dominio non valido</string>
<string name="select_range">Seleziona l\'intervallo</string>
<string name="not_found_404">Contenuto non trovato o rimosso</string>
<string name="compact">Compatto</string>
<string name="source_disabled">Fonte disabilitata</string>
<string name="text_shelf_holder_primary">I tuoi manga verrano visualizzati qui</string>
<string name="text_shelf_holder_secondary">Scopri cosa leggere nella sezione «Esplora»</string>
<string name="canceled">Annullato</string>
<string name="server_error">Errore lato server (%1$d). Riprovare più tardi</string>
<string name="clear_new_chapters_counters">Informazioni chiare anche sui nuovi capitoli</string>
<string name="prefetch_content">Precaricamento dei contenuti</string>
<string name="mark_as_current">Contrassegna come corrente</string>
<string name="error_no_space_left">Non c\'è più spazio sul dispositivo</string>
<string name="different_languages">Lingue diverse</string>
<string name="network_unavailable">La rete non è disponibile</string>
<string name="network_unavailable_hint">Attiva il Wi-Fi o la rete mobile per leggere i manga in linea</string>
<string name="webtoon_zoom">Zoom Webtoon</string>
<string name="account_already_exists">Questo account già esiste</string>
<string name="back">Indietro</string>
<string name="sync">Sincronizzazione</string>
<string name="clear_all_history">Cancella tutta la cronologia</string>
<string name="last_2_hours">Ultime 2 ore</string>
<string name="history_cleared">Cronologia cancellata</string>
<string name="manage">Gestisci</string>
<string name="no_bookmarks_yet">Non ci sono ancora segnalibri</string>
<string name="no_bookmarks_summary">È possibile creare segnalibri durante la lettura dei manga</string>
<string name="bookmarks_removed">Segnalibri rimossi</string>
<string name="no_manga_sources">Nessuna fonte manga</string>
<string name="no_manga_sources_text">Abilita le fonti manga per leggere manga in linea</string>
<string name="random">Casuale</string>
<string name="reorder">Riordina</string>
<string name="empty">Vuoto</string>
<string name="explore">Esplora</string>
<string name="incognito_mode">Modalità Incognito</string>
<string name="import_completed">Importazione completata</string>
<string name="import_completed_hint">È possibile eliminare il file originale dalla memoria per risparmiare spazio</string>
<string name="confirm_exit">Premi nuovamente Indietro per uscire</string>
<string name="exit_confirmation_summary">Premi due volte Indietro per uscire dall\'applicazione</string>
<string name="exit_confirmation">Conferma di uscita</string>
<string name="saved_manga">Manga salvati</string>
<string name="pages_cache">Cache delle pagine</string>
<string name="other_cache">Altra cache</string>
<string name="storage_usage">Utilizzo dello spazio di archiviazione</string>
<string name="available">Disponibile</string>
<string name="memory_usage_pattern">%s - %s</string>
<string name="removed_from_favourites">Rimosso dai preferiti</string>
<string name="options">Opzioni</string>
<string name="no_chapters">Nessun capitolo</string>
<string name="automatic_scroll">Scorrimento automatico</string>
<string name="reader_info_pattern">Ca. %1$d/%2$d Pg. %3$d/%4$d</string>
<string name="comics_archive">Archivio fumetti</string>
<string name="folder_with_images">Cartella con immagini</string>
<string name="importing_manga">Importazione di manga</string>
<string name="import_will_start_soon">L\'importazione inizierà presto</string>
<string name="feed">Flusso</string>
<string name="reader_control_ltr_summary">Toccando il bordo destro o premendo il tasto destro si passa sempre alla pagina successiva</string>
<string name="contrast">Contrasto</string>
<string name="reset">Ripristina</string>
<string name="reader_slider">Mostra il cursore di cambio pagina</string>
<string name="color_correction">Correzione del colore</string>
<string name="email_enter_hint">Inserisci il tuo indirizzo e-mail per continuare</string>
<string name="sync_title">Sincronizza i tuoi dati</string>
<string name="history_shortcuts">Mostra i collegamenti ai manga recenti</string>
<string name="color_correction_hint">Le impostazioni di colore scelte saranno ricordate per questo manga</string>
<string name="reader_control_ltr">Controllo ergonomico del lettore</string>
<string name="brightness">Luminosità</string>
<string name="categories_delete_confirm">Sei sicuro/a di voler eliminare le categorie preferite selezionate\?
<string name="no_description">Nessuna descrizione</string>
<string name="text_file_not_supported">File non valido. Sono supportati solo ZIP e CBZ.</string>
<string name="operation_not_supported">Questa operazione non è supportata</string>
<string name="delete">Elimina</string>
<string name="_import">Importa</string>
<string name="share_image">Condividi l\'immagine</string>
<string name="page_saved">Pagina salvata correttamente</string>
<string name="save_page">Salva la pagina</string>
<string name="pages">Pagine</string>
<string name="automatic">Automatico</string>
<string name="dark">Scuro</string>
<string name="light">Chiaro</string>
<string name="theme">Tema</string>
<string name="filter">Filtro</string>
<string name="sort_order">Ordinamento</string>
<string name="by_rating">Per valutazione</string>
<string name="newest">Più recente</string>
<string name="updated">Aggiornato</string>
<string name="popular">Popolare</string>
<string name="by_name">Per nome</string>
<string name="downloads">Scaricati</string>
<string name="download_complete">Scaricamento finito</string>
<string name="processing_">Elaborazione…</string>
<string name="manga_downloading_">Scaricamento di manga…</string>
<string name="search_manga">Cerca manga</string>
<string name="search">Cerca</string>
<string name="share_s">Condividi %s</string>
<string name="create_shortcut">Crea una scorciatoia…</string>
<string name="share">Condividi</string>
<string name="save">Salva</string>
<string name="add">Aggiungi</string>
<string name="add_new_category">Aggiungi una nuova categoria</string>
<string name="add_to_favourites">Aggiungi ai preferiti</string>
<string name="you_have_not_favourites_yet">Non hai ancora preferiti</string>
<string name="read">Leggi</string>
<string name="history_is_empty">La cronologia è vuota</string>
<string name="nothing_found">Niente di trovato</string>
<string name="clear_history">Cancella la cronologia</string>
<string name="try_again">Riprova</string>
<string name="text_clear_updates_feed_prompt">Tutta la cronologia degli aggiornamenti sarà cancellata e questa azione non può essere annullata. Sei sicuro/a\?</string>
<string name="close">Chiudi</string>
<string name="chapter_d_of_d">Capitolo %1$d di %2$d</string>
<string name="loading_">Caricamento…</string>
<string name="remote_sources">Fonti manga</string>
<string name="settings">Impostazioni</string>
<string name="list_mode">Modalità elenco</string>
<string name="grid">Griglia</string>
<string name="detailed_list">Elenco dettagliato</string>
<string name="text_delete_local_manga">Vuoi davvero eliminare «%s» dalla memoria locale del tuo dispositivo\?</string>
<string name="_s_deleted_from_local_storage">«%s» eliminato dall\'archiviazione locale</string>
<string name="list">Lista</string>
<string name="chapters">Capitoli</string>
<string name="details">Dettagli</string>
<string name="network_error">Errore di connessione</string>
<string name="error_occurred">Si è verificato un errore</string>
<string name="history">Cronologia</string>
<string name="favourites">Preferiti</string>
<string name="local_storage">Archiviazione locale</string>
<string name="read_more">Leggi di più</string>
<string name="welcome">Benvenuto/a</string>
<string name="text_clear_search_history_prompt">Vuoi davvero rimuovere tutte le ricerche recenti\?</string>
<string name="password_length_hint">La password deve essere di almeno 4 caratteri</string>
<string name="confirm">Conferma</string>
<string name="protect_application_subtitle">Inserisci la password che sarà richiesta all\'avvio dell\'applicazione</string>
<string name="next">Prossimo</string>
<string name="sign_in">Accedi</string>
<string name="clear_feed">Cancella il flusso</string>
<string name="silent">Silenzioso</string>
<string name="tap_to_try_again">Tocca per riprovare</string>
<string name="today">Oggi</string>
<string name="group">Gruppo</string>
<string name="long_ago">Molto tempo fa</string>
<string name="yesterday">Ieri</string>
<string name="just_now">Proprio ora</string>
<string name="file_not_found">File non trovato</string>
<string name="preparing_">Preparazione…</string>
<string name="data_restored">Dati ripristinati</string>
<string name="restore_backup">Ripristina da un backup</string>
<string name="create_backup">Crea un backup dei dati</string>
<string name="backup_restore">Backup e ripristino</string>
<string name="black_dark_theme_summary">Utile per gli schermi AMOLED</string>
<string name="black_dark_theme">Tema nero scuro</string>
<string name="create_category">Nuova categoria</string>
<string name="right_to_left">Da destra a sinistra</string>
<string name="no_update_available">Nessun aggiornamento disponibile</string>
<string name="check_for_updates">Controlla gli aggiornamenti</string>
<string name="app_version">Versione %s</string>
<string name="about">Informazioni</string>
<string name="passwords_mismatch">Le password non corrispondono</string>
<string name="repeat_password">Ripeti la password</string>
<string name="protect_application_summary">Chiedi la password all\'avvio dell\'applicazione</string>
<string name="protect_application">Proteggi l\'applicazione</string>
<string name="wrong_password">Password sbagliata</string>
<string name="enter_password">Inserisci la password</string>
<string name="dont_check">Non controllare</string>
<string name="track_sources">Controlla gli aggiornamenti per il manga</string>
<string name="feed_will_update_soon">L\'aggiornamento del flusso inizierà presto</string>
<string name="update">Aggiorna</string>
<string name="rotate_screen">Ruota lo schermo</string>
<string name="updates_feed_cleared">Flusso degli aggiornamenti cancellato</string>
<string name="clear_updates_feed">Cancella il flusso degli aggiornamenti</string>
<string name="size_s">Dimensioni: %s</string>
<string name="new_version_s">Nuova versione: %s</string>
<string name="search_results">Risultati della ricerca</string>
<string name="text_feed_holder">Qui potrai vedere i nuovi capitoli del manga che stai leggendo</string>
<string name="updates">Aggiornamenti</string>
<string name="read_later">Leggi più tardi</string>
<string name="favourites_category_empty">Questa categoria è vuota</string>
<string name="all_favourites">Tutti i preferiti</string>
<string name="done">Finito</string>
<string name="other_storage">Altro spazio di archiviazione</string>
<string name="cannot_find_available_storage">Impossibile trovare uno spazio di archiviazione disponibile</string>
<string name="not_available">Non disponibile</string>
<string name="manga_save_location">Posizione per lo scaricamento dei manga</string>
<string name="pages_animation">Animazione delle pagine</string>
<string name="recent_manga">Manga recenti</string>
<string name="manga_shelf">Scaffale da manga</string>
<string name="text_local_holder_secondary">Puoi salvarlo da fonti in linea o importarlo da un file.</string>
<string name="text_local_holder_primary">Non hai ancora salvato nessun manga</string>
<string name="text_history_holder_secondary">Puoi trovare cosa leggere nel menù laterale.</string>
<string name="text_history_holder_primary">I manga che stai leggendo saranno visualizzati qui</string>
<string name="text_search_holder_secondary">Prova a riformulare la domanda.</string>
<string name="text_empty_holder_primary">È un po\' vuoto qui…</string>
<string name="remove_category">Rimuovi la categoria</string>
<string name="favourites_categories">Categorie di preferiti</string>
<string name="vibration">Vibrazione</string>
<string name="light_indicator">Indicatore luminoso</string>
<string name="notification_sound">Suono di notifica</string>
<string name="notifications_settings">Impostazioni notifiche</string>
<string name="download">Scarica</string>
<string name="new_chapters">Nuovi capitoli</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Abilitato %1$d di %2$d</string>
<string name="notifications">Notifiche</string>
<string name="save_manga">Salva il manga</string>
<string name="large_manga_save_confirm">Questo manga ha %s. Vuoi salvare tutto\?</string>
<string name="open_in_browser">Apri nel browser</string>
<string name="app_update_available">Un aggiornamento per l\'applicazione è disponibile</string>
<string name="domain">Dominio</string>
<string name="external_storage">Archiviazione esterna</string>
<string name="internal_storage">Archiviazione interna</string>
<string name="gestures_only">Solo gesti</string>
<string name="search_history_cleared">Storia della ricerca cancellata</string>
<string name="clear_search_history">Cancella la cronologia delle ricerche</string>
<string name="clear_thumbs_cache">Svuota la cache delle miniature</string>
<string name="error">Errore</string>
<string name="_continue">Continua</string>
<string name="volume_buttons">Pulsanti volume</string>
<string name="taps_on_edges">Tocchi sui bordi</string>
<string name="switch_pages">Cambia pagina</string>
<string name="reader_settings">Impostazioni del lettore</string>
<string name="delete_manga">Elimina il manga</string>
<string name="search_on_s">Ricerca su %s</string>
<string name="grid_size">Dimensione della griglia</string>
<string name="read_mode">Modalità lettura</string>
<string name="webtoon">Webtoon</string>
<string name="standard">Standard</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="clear_pages_cache">Cancella la cache delle pagine</string>
<string name="remove">Rimuovi</string>
<string name="text_clear_history_prompt">Vuoi davvero cancellare tutta la tua cronologia di lettura\?</string>
<string name="clear">Cancella</string>
<string name="tracker_warning">Alcuni produttori possono cambiare il comportamento del sistema, che può interrompere le attività nello sfondo.</string>
<string name="backup_saved">Backup salvato con successo</string>
<string name="default_s">Predefinito: %s</string>
<string name="auth_required">Devi autorizzare la visualizzazione di questo contenuto</string>
<string name="reverse">Inverti</string>
<string name="check_for_new_chapters">Controllo dei nuovi capitoli</string>
<string name="cookies_cleared">Tutti i cookie sono stati rimossi</string>
<string name="clear_cookies">Cancella i cookie</string>
<string name="captcha_solve">Risolvi</string>
<string name="captcha_required">CAPTCHA è richiesto</string>
<string name="reader_mode_hint">La configurazione scelta sarà ricordata per questo manga</string>
<string name="backup_information">Puoi creare un backup della tua cronologia e dei tuoi preferiti e ripristinarlo</string>
<string name="data_restored_with_errors">I dati sono ripristinati, ma ci sono errori</string>
<string name="data_restored_success">Tutti i dati ripristinati con successo</string>
<string name="zoom_mode_keep_start">Tieni all\'inizio</string>
<string name="zoom_mode_fit_height">Adatta all\'altezza</string>
<string name="zoom_mode_fit_center">Adatta al centro</string>
<string name="zoom_mode_fit_width">Adatta alla larghezza</string>
<string name="scale_mode">Modalità scala</string>
<string name="chapter_is_missing">Capitolo mancante</string>
<string name="queued">In coda</string>
<string name="about_app_translation">Traduzione</string>
<string name="about_app_translation_summary">Traduci questa applicazione</string>
<string name="genres">Generi</string>
<string name="text_clear_cookies_prompt">Sarai disconnesso/a da tutte le fonti in cui sei autorizzato/a</string>
<string name="auth_not_supported_by">L\'autorizzazione su %s non è supportata</string>
<string name="auth_complete">Autorizzazione completa</string>
<string name="state_finished">Finito</string>
<string name="state_ongoing">In corso</string>
<string name="system_default">Predefinito</string>
<string name="exclude_nsfw_from_history">Escludi i manga NSFW dalla storia</string>
<string name="show_pages_numbers">Mostra i numeri delle pagine</string>
<string name="enabled_sources">Fonti abilitate</string>
<string name="available_sources">Fonti disponibili</string>
<string name="computing_">Calcolo…</string>
<string name="screenshots_policy">Politica sulle schermate</string>
<string name="screenshots_allow">Permetti</string>
<string name="screenshots_block_nsfw">Blocca per NSFW</string>
<string name="screenshots_block_all">Blocca sempre</string>
<string name="filter_load_error">Impossibile caricare la lista dei generi</string>
<string name="suggestions_enable">Abilita i suggerimenti</string>
<string name="suggestions_summary">Suggerisci manga in base alle tue preferenze</string>
<string name="suggestions_info">Tutti i dati vengono analizzati solo localmente su questo dispositivo e mai inviati da nessuna parte.</string>
<string name="text_suggestion_holder">Inizia a leggere manga e riceverai suggerimenti personalizzati</string>
<string name="suggestions">Suggerimenti</string>
<string name="enabled">Abilitato</string>
<string name="disabled">Disabilitato</string>
<string name="exclude_nsfw_from_suggestions">Non suggerire manga NSFW</string>
<string name="reset_filter">Ripristina il filtro</string>
<string name="onboard_text">Seleziona le lingue in cui vuoi leggere i manga. Puoi cambiarla in seguito nelle impostazioni.</string>
<string name="never">Mai</string>
<string name="preload_pages">Precarica le pagine</string>
<string name="only_using_wifi">Solo usando il Wi-Fi</string>
<string name="always">Sempre</string>
<string name="logged_in_as">Registrato come %s</string>
<string name="nsfw">18+</string>
<string name="various_languages">Varie lingue</string>
<string name="search_chapters">Trova un capitolo</string>
<string name="chapters_empty">Nessun capitolo in questo manga</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Aspetto</string>
<string name="suggestions_updating">Aggiornamento dei suggerimenti</string>
<string name="suggestions_excluded_genres_summary">Specifica i generi che non vuoi vedere nei suggerimenti</string>
<string name="suggestions_excluded_genres">Escludi generi</string>
<string name="removal_completed">Rimozione completata</string>
<string name="text_delete_local_manga_batch">Eliminare gli elementi selezionati dal dispositivo in modo permanente\?</string>
<string name="download_slowdown">Rallentamento dello scaricamento</string>
<string name="local_manga_processing">Elaborazione dei manga salvati</string>
<string name="chapters_will_removed_background">I capitoli verranno rimossi in background</string>
<string name="download_slowdown_summary">Aiuta ad evitare il blocco del tuo indirizzo IP</string>
<string name="hide">Nascondi</string>
<string name="new_sources_text">Sono disponibili nuove fonti di manga</string>
<string name="show_notification_new_chapters_on">Riceverai notifiche sugli aggiornamenti del manga che stai leggendo</string>
<string name="notifications_enable">Abilita le notifiche</string>
<string name="show_notification_new_chapters_off">Non riceverai notifiche ma i nuovi capitoli saranno evidenziati nelle liste</string>
<string name="empty_favourite_categories">Nessuna categoria preferita</string>
<string name="name">Nome</string>
<string name="edit">Modifica</string>
<string name="edit_category">Modifica la categoria</string>
<string name="check_new_chapters_title">Controlla i nuovi capitoli e notificarli</string>
<string name="bookmarks">Segnalibri</string>
<string name="removed_from_history">Rimosso dalla cronologia</string>
<string name="bookmark_remove">Rimuovi il segnalibro</string>
<string name="bookmark_add">Aggiungi un segnalibro</string>
<string name="bookmark_removed">Segnalibro rimosso</string>
<string name="bookmark_added">Segnalibro aggiunto</string>
<string name="undo">Annulla</string>
<string name="default_mode">Modalità predefinita</string>
<string name="detect_reader_mode">Modalità di lettura a rilevamento automatico</string>
<string name="dns_over_https">DNS su HTTPS</string>
<string name="detect_reader_mode_summary">Rileva automaticamente se il manga è un webtoon</string>
<string name="disable_battery_optimization">Disattiva l\'ottimizzazione della batteria</string>
<string name="disable_battery_optimization_summary">Contribuisce ai controlli di aggiornamento in sfondo</string>
<string name="crash_text">Qualcosa è andato storto. Si prega di inviare una segnalazione di bug agli sviluppatori per aiutarci a risolvere il problema.</string>
<string name="send">Invia</string>
<string name="disable_all">Disabilita tutto</string>
<string name="use_fingerprint">Usa le impronte digitali se disponibili</string>
<string name="appwidget_shelf_description">Manga dai preferiti</string>
<string name="appwidget_recent_description">I manga letti di recente</string>
<string name="report">Segnala</string>
<string name="tracking">Monitoraggio</string>
<string name="status_reading">Lettura</string>
<string name="status_re_reading">Rilettura</string>
<string name="status_on_hold">In attesa</string>
<string name="show_reading_indicators">Mostrare gli indicatori di progresso della lettura</string>
<string name="data_deletion">Eliminazione dei dati</string>
<string name="show_reading_indicators_summary">Mostra la percentuale di lettura nella cronologia e nei preferiti</string>
<string name="exclude_nsfw_from_history_summary">I manga contrassegnati come per adulti non verranno mai aggiunti alla cronologia e i vostri progressi non verranno salvati</string>
<string name="clear_cookies_summary">Può aiutare in caso di problemi. Tutte le autorizzazioni saranno invalidate</string>
<string name="show_all">Mostra tutto</string>
<string name="logout">Esci</string>
<string name="status_planned">Pianificato</string>
<string name="status_completed">Finito</string>
<string name="status_dropped">Caduto</string>
<string name="invalid_domain_message">Dominio non valido</string>
<string name="select_range">Seleziona l\'intervallo</string>
<string name="not_found_404">Contenuto non trovato o rimosso</string>
<string name="compact">Compatto</string>
<string name="source_disabled">Fonte disabilitata</string>
<string name="text_shelf_holder_primary">I tuoi manga verrano visualizzati qui</string>
<string name="text_shelf_holder_secondary">Scopri cosa leggere nella sezione «Esplora»</string>
<string name="canceled">Annullato</string>
<string name="server_error">Errore lato server (%1$d). Riprovare più tardi</string>
<string name="clear_new_chapters_counters">Informazioni chiare anche sui nuovi capitoli</string>
<string name="prefetch_content">Precaricamento dei contenuti</string>
<string name="mark_as_current">Contrassegna come corrente</string>
<string name="error_no_space_left">Non c\'è più spazio sul dispositivo</string>
<string name="different_languages">Lingue diverse</string>
<string name="network_unavailable">La rete non è disponibile</string>
<string name="network_unavailable_hint">Attiva il Wi-Fi o la rete mobile per leggere i manga in linea</string>
<string name="webtoon_zoom">Zoom Webtoon</string>
<string name="account_already_exists">Questo account già esiste</string>
<string name="back">Indietro</string>
<string name="sync">Sincronizzazione</string>
<string name="clear_all_history">Cancella tutta la cronologia</string>
<string name="last_2_hours">Ultime 2 ore</string>
<string name="history_cleared">Cronologia cancellata</string>
<string name="manage">Gestisci</string>
<string name="no_bookmarks_yet">Non ci sono ancora segnalibri</string>
<string name="no_bookmarks_summary">È possibile creare segnalibri durante la lettura dei manga</string>
<string name="bookmarks_removed">Segnalibri rimossi</string>
<string name="no_manga_sources">Nessuna fonte manga</string>
<string name="no_manga_sources_text">Abilita le fonti manga per leggere manga in linea</string>
<string name="random">Casuale</string>
<string name="reorder">Riordina</string>
<string name="empty">Vuoto</string>
<string name="explore">Esplora</string>
<string name="incognito_mode">Modalità Incognito</string>
<string name="import_completed">Importazione completata</string>
<string name="import_completed_hint">È possibile eliminare il file originale dalla memoria per risparmiare spazio</string>
<string name="confirm_exit">Premi nuovamente Indietro per uscire</string>
<string name="exit_confirmation_summary">Premi due volte Indietro per uscire dall\'applicazione</string>
<string name="exit_confirmation">Conferma di uscita</string>
<string name="saved_manga">Manga salvati</string>
<string name="pages_cache">Cache delle pagine</string>
<string name="other_cache">Altra cache</string>
<string name="storage_usage">Utilizzo dello spazio di archiviazione</string>
<string name="available">Disponibile</string>
<string name="memory_usage_pattern">%s - %s</string>
<string name="removed_from_favourites">Rimosso dai preferiti</string>
<string name="options">Opzioni</string>
<string name="no_chapters">Nessun capitolo</string>
<string name="automatic_scroll">Scorrimento automatico</string>
<string name="reader_info_pattern">Ca. %1$d/%2$d Pg. %3$d/%4$d</string>
<string name="comics_archive">Archivio fumetti</string>
<string name="folder_with_images">Cartella con immagini</string>
<string name="importing_manga">Importazione di manga</string>
<string name="import_will_start_soon">L\'importazione inizierà presto</string>
<string name="feed">Flusso</string>
<string name="reader_control_ltr_summary">Toccando il bordo destro o premendo il tasto destro si passa sempre alla pagina successiva</string>
<string name="contrast">Contrasto</string>
<string name="reset">Ripristina</string>
<string name="reader_slider">Mostra il cursore di cambio pagina</string>
<string name="color_correction">Correzione del colore</string>
<string name="email_enter_hint">Inserisci il tuo indirizzo e-mail per continuare</string>
<string name="sync_title">Sincronizza i tuoi dati</string>
<string name="history_shortcuts">Mostra i collegamenti ai manga recenti</string>
<string name="color_correction_hint">Le impostazioni di colore scelte saranno ricordate per questo manga</string>
<string name="reader_control_ltr">Controllo ergonomico del lettore</string>
<string name="brightness">Luminosità</string>
<string name="categories_delete_confirm">Sei sicuro/a di voler eliminare le categorie preferite selezionate\?
\n Tutti i manga in esso contenuti andranno persi e questo non può essere annullato.</string>
<string name="history_shortcuts_summary">Rendere disponibili i manga recenti premendo a lungo sull\'icona dell\'applicazione</string>
<string name="reader_info_bar">Mostra la barra delle informazioni nel lettore</string>
<string name="manga_error_description_pattern">Dettagli dell\'errore:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;1. Prova ad &lt;a href=%2$s&gt;aprire il manga in un browser web&lt;/a&gt; per assicurarsi che sia disponibile sulla sua fonte&lt;br&gt;2. Se è disponibile, inviare una segnalazione di errore agli sviluppatori.</string>
<string name="text_unsaved_changes_prompt">Salvare o eliminare le modifiche non salvate\?</string>
<string name="discard">Abbandona</string>
<string name="language">Lingua</string>
<string name="share_logs">Condividi i registri</string>
<string name="enable_logging_summary">Registra alcune azioni a scopo di debug</string>
<string name="enable_logging">Abilita la registrazione</string>
<string name="show_suspicious_content">Mostra il contenuto sospetto</string>
<string name="theme_name_dynamic">Dinamico</string>
<string name="color_theme">Schema colori</string>
<string name="show_in_grid_view">Mostra nella vista griglia</string>
<string name="scrobbling_empty_hint">Per tenere traccia dell\'avanzamento della lettura, seleziona Menu → Traccia nella schermata dei dettagli del manga.</string>
<string name="nothing_here">Non c\'è niente qui</string>
<string name="services">Servizi</string>
<string name="theme_name_mamimi">Mamimi</string>
<string name="theme_name_kanade">Kanade</string>
<string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string>
<string name="theme_name_rikka">Rikka</string>
<string name="theme_name_miku">Miku</string>
<string name="allow_unstable_updates">Permetti aggiornamenti instabili</string>
<string name="allow_unstable_updates_summary">Proponi aggiornamenti alle versioni beta dell\'app</string>
<string name="download_started">Scaricamento iniziato</string>
<string name="theme_name_sakura">Sakura</string>
</resources>
<string name="history_shortcuts_summary">Rendere disponibili i manga recenti premendo a lungo sull\'icona dell\'applicazione</string>
<string name="reader_info_bar">Mostra la barra delle informazioni nel lettore</string>
<string name="manga_error_description_pattern">Dettagli dell\'errore:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;1. Prova ad &lt;a href=%2$s&gt;aprire il manga in un browser web&lt;/a&gt; per assicurarsi che sia disponibile sulla sua fonte&lt;br&gt;2. Se è disponibile, inviare una segnalazione di errore agli sviluppatori.</string>
<string name="text_unsaved_changes_prompt">Salvare o eliminare le modifiche non salvate\?</string>
<string name="discard">Abbandona</string>
<string name="language">Lingua</string>
<string name="share_logs">Condividi i registri</string>
<string name="enable_logging_summary">Registra alcune azioni a scopo di debug</string>
<string name="enable_logging">Abilita la registrazione</string>
<string name="show_suspicious_content">Mostra il contenuto sospetto</string>
<string name="theme_name_dynamic">Dinamico</string>
<string name="color_theme">Schema colori</string>
<string name="show_in_grid_view">Mostra nella vista griglia</string>
<string name="scrobbling_empty_hint">Per tenere traccia dell\'avanzamento della lettura, seleziona Menu → Traccia nella schermata dei dettagli del manga.</string>
<string name="nothing_here">Non c\'è niente qui</string>
<string name="services">Servizi</string>
<string name="theme_name_mamimi">Mamimi</string>
<string name="theme_name_kanade">Kanade</string>
<string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string>
<string name="theme_name_rikka">Rikka</string>
<string name="theme_name_miku">Miku</string>
<string name="allow_unstable_updates">Permetti aggiornamenti instabili</string>
<string name="allow_unstable_updates_summary">Proponi aggiornamenti alle versioni beta dell\'app</string>
<string name="download_started">Scaricamento iniziato</string>
<string name="theme_name_sakura">Sakura</string>
</resources>

View File

@@ -431,4 +431,16 @@
<string name="show_pages_numbers_summary">下隅にページ番号を表示する</string>
<string name="reader_info_bar_summary">画面上部に現在時刻と読書の進行状況を表示する</string>
<string name="details_button_tip">読むボタンを長押しすると、より多くのオプションが表示されます</string>
<string name="clear_source_cookies_summary">指定されたドメインのクッキーのみをクリアします。ほとんどの場合、認証は無効になります</string>
<string name="download_option_all_chapters">翻訳付きのすべての章%s</string>
<string name="download_option_whole_manga">マンガ全体</string>
<string name="download_option_first_n_chapters">最初%s</string>
<string name="download_option_next_unread_n_chapters">次の未読%s</string>
<string name="download_option_all_unread">すべての未読の章</string>
<string name="download_option_all_unread_b">すべての未読チャプター (%s)</string>
<string name="download_option_manual_selection">手動でチャプターを選択</string>
<string name="custom_directory">カスタムディレクトリ</string>
<string name="no_access_to_file">このファイルまたはディレクトリにアクセスできません</string>
<string name="pick_custom_directory">カスタムディレクトリを選択</string>
<string name="local_manga_directories">ローカルマンガディレクトリ</string>
</resources>

View File

@@ -1,128 +1,211 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="text_search_holder_secondary">Сұрауыңызды қайталап көріңіз.</string>
<string name="text_history_holder_secondary">Шеткі мәзірден оқуға болатынды табыңыз.</string>
<string name="text_local_holder_secondary">Файл импорттаңыз не онлайн каталогтан бірдеңе сақтаңыз.</string>
<string name="other_storage">Басқа бума</string>
<string name="new_version_s">Жаңа нұсқа: %s</string>
<string name="size_s">Өлшемі: %s</string>
<string name="clear_updates_feed">Жаңарту легін тазалау</string>
<string name="updates_feed_cleared">Тазаланды</string>
<string name="rotate_screen">Экранды айналдыру</string>
<string name="update">Жаңарту</string>
<string name="feed_will_update_soon">Жаңарту жақын арада басталады</string>
<string name="large_manga_save_confirm">Маңгада %s бар. Бәрін сақтаймысыз\?</string>
<string name="new_chapters">Жаңа тараулар</string>
<string name="local_storage">Құрылғыда</string>
<string name="history">Тарих</string>
<string name="chapters">Тараулар</string>
<string name="detailed_list">Егжей-тегжейлі тізім</string>
<string name="list_mode">Тізім түрі</string>
<string name="remote_sources">Маңга қайнары</string>
<string name="loading_">Жүктеу…</string>
<string name="computing_">Есептеу…</string>
<string name="favourites">Таңдаулы</string>
<string name="network_error">Желі қатесі</string>
<string name="details">Деректер</string>
<string name="grid">Тор</string>
<string name="try_again">Қайта көру</string>
<string name="clear_history">Тарихты тазалау</string>
<string name="read">Оқу</string>
<string name="add_new_category">Жаңа санат</string>
<string name="add">Қосу</string>
<string name="save">Сақтау</string>
<string name="share">Бөлісу</string>
<string name="create_shortcut">Таңбаша жасау…</string>
<string name="share_s">%s бөлісу</string>
<string name="search">Іздеу</string>
<string name="manga_downloading_">Жүктеу…</string>
<string name="processing_">Үдерісте…</string>
<string name="download_complete">Жүктелді</string>
<string name="by_name">Атауы</string>
<string name="popular">Танымал</string>
<string name="updated">Жаңарған</string>
<string name="newest">Жаңа</string>
<string name="by_rating">Рейтиң</string>
<string name="sort_order">Сұрыптау реті</string>
<string name="filter">Сүзгі</string>
<string name="theme">Кейіп</string>
<string name="dark">Қараңғы</string>
<string name="light">Ақшыл</string>
<string name="automatic">Жүйедегідей</string>
<string name="pages">Беттер</string>
<string name="clear">Тазалау</string>
<string name="remove">Жою</string>
<string name="_s_deleted_from_local_storage">«%s» құрылғыдан жойылды</string>
<string name="save_page">Бетті сақтау</string>
<string name="page_saved">Сақталды</string>
<string name="share_image">Суретті бөлісу</string>
<string name="_import">Импорт</string>
<string name="no_description">Сипаттамасы жоқ</string>
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
<string name="standard">Стандарт</string>
<string name="webtoon">Уебтүн</string>
<string name="grid_size">Тор өлшемі</string>
<string name="search_on_s">%s-те іздеу</string>
<string name="delete_manga">Маңганы жою</string>
<string name="reader_settings">Оқыманы баптау</string>
<string name="switch_pages">Бет ауыстыру</string>
<string name="taps_on_edges">Шет жақты түру</string>
<string name="clear_thumbs_cache">Нобай кәшін тазалау</string>
<string name="search_history_cleared">Тазаланды</string>
<string name="gestures_only">Ым ғана</string>
<string name="internal_storage">Ішкі жады</string>
<string name="external_storage">Сыртқы жады</string>
<string name="domain">Домен</string>
<string name="app_update_available">Жаңа нұсқа қолжетімді</string>
<string name="open_in_browser">Уеб браузер арқылы ашу</string>
<string name="save_manga">Сақтау</string>
<string name="notifications">Мәлімдеме</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d ішіндегі %2$d қосулы</string>
<string name="download">Жүктеп алу</string>
<string name="notifications_settings">Мәлімдемені баптау</string>
<string name="notification_sound">Мәлімдеме дыбысы</string>
<string name="light_indicator">LED индикаттау</string>
<string name="vibration">Діріл</string>
<string name="favourites_categories">Таңдаулы санаттар</string>
<string name="remove_category">Жою</string>
<string name="text_empty_holder_primary">Мына жер бос екен…</string>
<string name="text_history_holder_primary">Бұ жерде оқығаныңыз тұрады</string>
<string name="text_shelf_holder_primary">Маңганыз осы жерде тұрады</string>
<string name="text_shelf_holder_secondary">«Шолу» бөлімінен оқуға болатынды табыңыз</string>
<string name="text_local_holder_primary">Алдымен бірдеңе сақтаңыз</string>
<string name="manga_shelf">Сөре</string>
<string name="recent_manga">Соңғы</string>
<string name="pages_animation">Бет анимациясы</string>
<string name="manga_save_location">Жүктеу бумасы</string>
<string name="not_available">Қолжетімсіз</string>
<string name="cannot_find_available_storage">Қолжетімді бума жоқ</string>
<string name="done">Дайын</string>
<string name="all_favourites">Таңдаулылар</string>
<string name="favourites_category_empty">Бос санат</string>
<string name="read_later">Кейінірек оқу</string>
<string name="updates">Жаңартулар</string>
<string name="text_feed_holder">Оқып жүргеніңіздің жаңа тараулары осы жерде болады</string>
<string name="search_results">Іздеу нәтижесі</string>
<string name="list">Тізім</string>
<string name="error_occurred">Қате орын алды</string>
<string name="settings">Баптау</string>
<string name="chapter_d_of_d">%2$d ішіндегі %1$d тарау</string>
<string name="close">Жабу</string>
<string name="nothing_found">Түк табылмады</string>
<string name="you_have_not_favourites_yet">Әзірге таңдаулы жоқ</string>
<string name="history_is_empty">Әзірге тарих жоқ</string>
<string name="search_manga">Маңга іздеу</string>
<string name="add_to_favourites">Таңдаулыға</string>
<string name="downloads">Жүктелгендер</string>
<string name="text_clear_history_prompt">Тарихты толықтай тазалаймысыз\?</string>
<string name="operation_not_supported">Қолжетімсіз амал</string>
<string name="delete">Жою</string>
<string name="text_file_not_supported">CBZ не ZIP пішімде таңдаңыз.</string>
<string name="clear_pages_cache">Бет кәшін тазалау</string>
<string name="read_mode">Оқу режімі</string>
<string name="text_delete_local_manga">“%s” құрылғыдан біржолата жоямысыз\?</string>
<string name="_continue">Жалғастыру</string>
<string name="volume_buttons">Дыбыс батырмалары</string>
<string name="error">Қате</string>
<string name="clear_search_history">Іздеу тарихын тазалау</string>
</resources>
<string name="text_search_holder_secondary">Сұрауыңызды қайталап көріңіз.</string>
<string name="text_history_holder_secondary">Шеткі мәзірден оқуға болатынды табыңыз.</string>
<string name="text_local_holder_secondary">Файл импорттаңыз не онлайн каталогтан бірдеңе сақтаңыз.</string>
<string name="other_storage">Басқа бума</string>
<string name="new_version_s">Жаңа нұсқа: %s</string>
<string name="size_s">Өлшемі: %s</string>
<string name="clear_updates_feed">Жаңарту легін тазалау</string>
<string name="updates_feed_cleared">Тазаланды</string>
<string name="rotate_screen">Экранды айналдыру</string>
<string name="update">Жаңарту</string>
<string name="feed_will_update_soon">Жаңарту жақын арада басталады</string>
<string name="large_manga_save_confirm">Маңгада %s бар. Бәрін сақтаймысыз\?</string>
<string name="new_chapters">Жаңа тараулар</string>
<string name="local_storage">Құрылғыда</string>
<string name="history">Тарих</string>
<string name="chapters">Тараулар</string>
<string name="detailed_list">Егжей-тегжейлі тізім</string>
<string name="list_mode">Тізім түрі</string>
<string name="remote_sources">Маңга қайнары</string>
<string name="loading_">Жүктеу…</string>
<string name="computing_">Есептеу…</string>
<string name="favourites">Таңдаулы</string>
<string name="network_error">Желі қатесі</string>
<string name="details">Деректер</string>
<string name="grid">Тор</string>
<string name="try_again">Қайта көру</string>
<string name="clear_history">Тарихты тазалау</string>
<string name="read">Оқу</string>
<string name="add_new_category">Жаңа санат</string>
<string name="add">Қосу</string>
<string name="save">Сақтау</string>
<string name="share">Бөлісу</string>
<string name="create_shortcut">Таңбаша жасау…</string>
<string name="share_s">%s бөлісу</string>
<string name="search">Іздеу</string>
<string name="manga_downloading_">Жүктеу…</string>
<string name="processing_">Үдерісте…</string>
<string name="download_complete">Жүктелді</string>
<string name="by_name">Атауы</string>
<string name="popular">Танымал</string>
<string name="updated">Жаңарған</string>
<string name="newest">Жаңа</string>
<string name="by_rating">Рейтиң</string>
<string name="sort_order">Сұрыптау реті</string>
<string name="filter">Сүзгі</string>
<string name="theme">Кейіп</string>
<string name="dark">Қараңғы</string>
<string name="light">Ақшыл</string>
<string name="automatic">Жүйедегідей</string>
<string name="pages">Беттер</string>
<string name="clear">Тазалау</string>
<string name="remove">Жою</string>
<string name="_s_deleted_from_local_storage">«%s» құрылғыдан жойылды</string>
<string name="save_page">Бетті сақтау</string>
<string name="page_saved">Сақталды</string>
<string name="share_image">Суретті бөлісу</string>
<string name="_import">Импорт</string>
<string name="no_description">Сипаттамасы жоқ</string>
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
<string name="standard">Стандарт</string>
<string name="webtoon">Уебтүн</string>
<string name="grid_size">Тор өлшемі</string>
<string name="search_on_s">%s-те іздеу</string>
<string name="delete_manga">Маңганы жою</string>
<string name="reader_settings">Оқыманы баптау</string>
<string name="switch_pages">Бет ауыстыру</string>
<string name="taps_on_edges">Шет жақты түру</string>
<string name="clear_thumbs_cache">Нобай кәшін тазалау</string>
<string name="search_history_cleared">Тазаланды</string>
<string name="gestures_only">Ым ғана</string>
<string name="internal_storage">Ішкі жады</string>
<string name="external_storage">Сыртқы жады</string>
<string name="domain">Домен</string>
<string name="app_update_available">Жаңа нұсқа қолжетімді</string>
<string name="open_in_browser">Уеб браузер арқылы ашу</string>
<string name="save_manga">Сақтау</string>
<string name="notifications">Мәлімдеме</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d ішіндегі %2$d қосулы</string>
<string name="download">Жүктеп алу</string>
<string name="notifications_settings">Мәлімдемені баптау</string>
<string name="notification_sound">Мәлімдеме дыбысы</string>
<string name="light_indicator">LED индикаттау</string>
<string name="vibration">Діріл</string>
<string name="favourites_categories">Таңдаулы санаттар</string>
<string name="remove_category">Жою</string>
<string name="text_empty_holder_primary">Мына жер бос екен…</string>
<string name="text_history_holder_primary">Бұ жерде оқығаныңыз тұрады</string>
<string name="text_shelf_holder_primary">Маңганыз осы жерде тұрады</string>
<string name="text_shelf_holder_secondary">«Шолу» бөлімінен оқуға болатынды табыңыз</string>
<string name="text_local_holder_primary">Алдымен бірдеңе сақтаңыз</string>
<string name="manga_shelf">Сөре</string>
<string name="recent_manga">Соңғы</string>
<string name="pages_animation">Бет анимациясы</string>
<string name="manga_save_location">Жүктеу бумасы</string>
<string name="not_available">Қолжетімсіз</string>
<string name="cannot_find_available_storage">Қолжетімді бума жоқ</string>
<string name="done">Дайын</string>
<string name="all_favourites">Таңдаулылар</string>
<string name="favourites_category_empty">Бос санат</string>
<string name="read_later">Кейінірек оқу</string>
<string name="updates">Жаңартулар</string>
<string name="text_feed_holder">Оқып жүргеніңіздің жаңа тараулары осы жерде болады</string>
<string name="search_results">Іздеу нәтижесі</string>
<string name="list">Тізім</string>
<string name="error_occurred">Қате орын алды</string>
<string name="settings">Баптау</string>
<string name="chapter_d_of_d">%2$d ішіндегі %1$d тарау</string>
<string name="close">Жабу</string>
<string name="nothing_found">Түк табылмады</string>
<string name="you_have_not_favourites_yet">Әзірге таңдаулы жоқ</string>
<string name="history_is_empty">Әзірге тарих жоқ</string>
<string name="search_manga">Маңга іздеу</string>
<string name="add_to_favourites">Таңдаулыға</string>
<string name="downloads">Жүктелгендер</string>
<string name="text_clear_history_prompt">Тарихты толықтай тазалаймысыз\?</string>
<string name="operation_not_supported">Қолжетімсіз амал</string>
<string name="delete">Жою</string>
<string name="text_file_not_supported">CBZ не ZIP пішімде таңдаңыз.</string>
<string name="clear_pages_cache">Бет кәшін тазалау</string>
<string name="read_mode">Оқу режімі</string>
<string name="text_delete_local_manga">“%s” құрылғыдан біржолата жоямысыз\?</string>
<string name="_continue">Жалғастыру</string>
<string name="volume_buttons">Дыбыс батырмалары</string>
<string name="error">Қате</string>
<string name="clear_search_history">Іздеу тарихын тазалау</string>
<string name="track_sources">Жаңартуларды қарау</string>
<string name="wrong_password">Қате құпиясөз</string>
<string name="protect_application">Қолданбаны қорғау</string>
<string name="passwords_mismatch">Құпиясөз бірдей емес</string>
<string name="app_version">%s нұсқа</string>
<string name="check_for_updates">Жаңартуды тексеру</string>
<string name="right_to_left">Оңнан солға</string>
<string name="zoom_mode_fit_height">Биіктігіне қарай қою</string>
<string name="zoom_mode_fit_width">Еніне қарай қою</string>
<string name="zoom_mode_keep_start">Өзгертпеу</string>
<string name="black_dark_theme">Қара</string>
<string name="black_dark_theme_summary">AMOLED экранда азырақ қуат жейді</string>
<string name="create_backup">Сақтық көшірме жасау</string>
<string name="restore_backup">Сақтық көшірмеден қалыпқа келтіру</string>
<string name="file_not_found">Файл табылмады</string>
<string name="data_restored_success">Түгел дерек қалыпқа келді</string>
<string name="backup_information">Таңдаулы мен тарихтың сақтық көшірмесін жасап, оны қалпына келтіре аласыз</string>
<string name="just_now">Жаңа ғана</string>
<string name="yesterday">Кеше</string>
<string name="long_ago">Бұрын</string>
<string name="group">Топтау</string>
<string name="today">Бүгін</string>
<string name="tap_to_try_again">Қайталап көру</string>
<string name="reader_mode_hint">Таңдалған пішімдеу осы маңга үшін сақталады</string>
<string name="silent">Дыбыссыз</string>
<string name="captcha_required">CAPTCHA өтіңіз</string>
<string name="captcha_solve">Өту</string>
<string name="clear_cookies">Кукиді тазалау</string>
<string name="cookies_cleared">Куки файлдары жойылды</string>
<string name="reverse">Керісінше</string>
<string name="sign_in">Кіру</string>
<string name="auth_required">Бұны көру үшін тіркелгіге кіріңіз</string>
<string name="default_s">Әдепкі: %s</string>
<string name="chapter_is_missing">Тарау жоқ</string>
<string name="about_app_translation_summary">Қолданбаны аудару</string>
<string name="about_app_translation">Аудару</string>
<string name="auth_not_supported_by">%s кіру қолжетімсіз</string>
<string name="state_finished">Аяқталған</string>
<string name="text_clear_updates_feed_prompt">Жаңарту тарихын толықтау тазартайық па\?</string>
<string name="no_update_available">Жаңарту жоқ</string>
<string name="backup_restore">Сақтық көшірме мен қалпына келтіру</string>
<string name="dont_check">Тексермеу</string>
<string name="enter_password">Құпиясөзді енгізіңіз</string>
<string name="about">Қолданба туралы</string>
<string name="create_category">Жаңа санат</string>
<string name="data_restored">Қалыпқа келді</string>
<string name="preparing_">Дайындау…</string>
<string name="data_restored_with_errors">Дерек қалыпқа келсе де, сәл қате шығып қалды</string>
<string name="exclude_nsfw_from_history">ҰЯТСЫЗ маңганы тарихта көрсетпеу</string>
<string name="state_ongoing">Шығып жатыр</string>
<string name="show_pages_numbers">Беттерді нөмірлеу</string>
<string name="system_default">Әдепкі</string>
<string name="available_sources">Қолжетімді дереккөздер</string>
<string name="enabled_sources">Қосылып тұрған дереккөздер</string>
<string name="suggestions_summary">Ұнайды ма деген маңганы ұсыну</string>
<string name="screenshots_block_nsfw">ҰЯТСЫЗ үшін бөгеу</string>
<string name="suggestions_enable">Ұсынымды қосу</string>
<string name="check_for_new_chapters">Жаңа тарау іздеу</string>
<string name="auth_complete">Сәтті тіркелдіңіз</string>
<string name="text_clear_cookies_prompt">Түгел дереккөзден шығып кетесіз</string>
<string name="genres">Түрлер</string>
<string name="screenshots_policy">Скриншот саясаты</string>
<string name="suggestions">Ұсыным</string>
<string name="screenshots_allow">Рұқсат беру</string>
<string name="screenshots_block_all">Әрқашан бөгеу</string>
<string name="text_suggestion_holder">Жеке ұсыныс алу үшін маңга оқып бастаңыз</string>
<string name="disabled">Өшірулі</string>
<string name="exclude_nsfw_from_suggestions">ҰЯТСЫЗ маңга ұсынбау</string>
<string name="enabled">Қосулы</string>
<string name="protect_application_summary">Қолданбаны қосқанда құпиясөз сұрау</string>
<string name="repeat_password">Құпиясөзді қайталаңыз</string>
<string name="zoom_mode_fit_center">Ортаға қою</string>
<string name="scale_mode">Өлшеу режімі</string>
<string name="text_clear_search_history_prompt">Соңғы іздеу тарихын толықтай жоямыз ба\?</string>
<string name="welcome">Қош келдіңіз</string>
<string name="backup_saved">Сақтау көшірмесі дайын</string>
<string name="tracker_warning">Кейбір құрылғылардың жүйесі бөлек, одан аялық тапсырмалар бұзылуы мүмкін.</string>
<string name="read_more">Толығырақ оқу</string>
<string name="queued">Кезекте</string>
<string name="next">Келесі</string>
<string name="protect_application_subtitle">Қолданбаға кіру үшін құпиясөз енгізіңіз</string>
<string name="confirm">Растау</string>
<string name="password_length_hint">Құпиясөзде 4, не одан көп таңба болу керек</string>
</resources>

View File

@@ -1,308 +1,326 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sort_order">정렬 기준</string>
<string name="_import">불러오기</string>
<string name="network_error">네트워크 오류</string>
<string name="list">목록</string>
<string name="save">저장</string>
<string name="share">공유하기</string>
<string name="share_s">%s 공유</string>
<string name="search">검색하기</string>
<string name="internal_storage">내부 저장소</string>
<string name="external_storage">외부 저장소</string>
<string name="domain">도메인</string>
<string name="app_update_available">새 버전이 존재합니다</string>
<string name="open_in_browser">웹 브라우저에서 열기</string>
<string name="save_manga">저장</string>
<string name="notifications">알림</string>
<string name="light_indicator">LED 표시</string>
<string name="vibration">진동</string>
<string name="remove_category">지우기</string>
<string name="text_search_holder_secondary">쿼리를 재구성하십시오.</string>
<string name="text_history_holder_secondary">사이드 메뉴에서 만화를 탐색해보세요.</string>
<string name="text_shelf_holder_primary">만화가 여기에 표시됩니다</string>
<string name="text_shelf_holder_secondary">«탐색» 섹션에서 만화를 탐색해보세요</string>
<string name="pages_animation">페이지 전환 효과</string>
<string name="cannot_find_available_storage">사용 가능한 저장소 없음</string>
<string name="done">완료</string>
<string name="favourites_category_empty">빈 카테고리</string>
<string name="updates">업데이트</string>
<string name="new_version_s">새 버전: %s</string>
<string name="clear_updates_feed">업데이트 피드 지우기</string>
<string name="local_storage">내장 메모리</string>
<string name="favourites">즐겨찾기</string>
<string name="remove">지우기</string>
<string name="settings">설정</string>
<string name="loading_">불러오는 중…</string>
<string name="close">닫기</string>
<string name="try_again">다시 시도</string>
<string name="you_have_not_favourites_yet">즐겨찾기가 비어있음</string>
<string name="filter">필터링</string>
<string name="light">밝게</string>
<string name="dark">어둡게</string>
<string name="pages">페이지</string>
<string name="read">지금 읽기</string>
<string name="by_name">이름 순</string>
<string name="popular">인기 순</string>
<string name="chapter_d_of_d">%2$d화 중 %1$d화</string>
<string name="downloads">다운로드</string>
<string name="by_rating">평점 순</string>
<string name="save_page">페이지 저장</string>
<string name="page_saved">저장됨</string>
<string name="share_image">이미지 공유하기</string>
<string name="text_file_not_supported">ZIP 혹은 CBZ 파일을 선택하세요.</string>
<string name="delete_manga">만화 제거</string>
<string name="volume_buttons">볼륨 키</string>
<string name="nothing_found">결과 없음</string>
<string name="add_to_favourites">즐겨찾기 추가</string>
<string name="download_complete">다운로드 완료</string>
<string name="add_new_category">새 카테고리</string>
<string name="search_manga">만화를 검색하세요</string>
<string name="manga_downloading_">다운로드 중…</string>
<string name="processing_">처리중…</string>
<string name="updated">최근 업데이트 순</string>
<string name="newest">최근 발간 순</string>
<string name="automatic">시스템 설정</string>
<string name="delete">지우기</string>
<string name="text_file_sizes">바이트|kB|MB|GB|TB</string>
<string name="clear_pages_cache">페이지 캐시 지우기</string>
<string name="read_mode">읽기 모드</string>
<string name="grid_size">격자 크기</string>
<string name="search_on_s">%s에서 검색</string>
<string name="text_delete_local_manga">장치에서 \"%s\"를 영구적으로 삭제하시겠습니까\?</string>
<string name="switch_pages">페이지 전환</string>
<string name="taps_on_edges">가장자리 탭</string>
<string name="webtoon">웹툰</string>
<string name="clear_search_history">검색 기록 지우기</string>
<string name="reader_settings">읽기 모드</string>
<string name="clear_thumbs_cache">썸네일 캐시 지우기</string>
<string name="error">오류</string>
<string name="large_manga_save_confirm">이 만화에는 %s가 있습니다. 모두 저장하시겠습니까\?</string>
<string name="favourites_categories">즐겨찾기 카테고리</string>
<string name="download">다운로드</string>
<string name="notifications_settings">알림 설정</string>
<string name="notification_sound">알림음</string>
<string name="text_history_holder_primary">읽은 내용이 여기에 표시됩니다</string>
<string name="not_available">사용할 수 없음</string>
<string name="all_favourites">모든 즐겨찾기</string>
<string name="read_later">나중에 읽기</string>
<string name="search_results">검색 결과</string>
<string name="size_s">크기: %s</string>
<string name="computing_">계산중…</string>
<string name="clear">지우기</string>
<string name="text_clear_history_prompt">모든 기록을 영구적으로 삭제하시겠어요\?</string>
<string name="text_local_holder_primary">먼저 아무거나 저장해보세요</string>
<string name="text_feed_holder">여기서 읽고 있는 만화의 새로운 챕터들을 확인할 수 있습니다</string>
<string name="protect_application">앱 잠금 활성화</string>
<string name="protect_application_summary">Kotatsu를 실행할 때마다 비밀번호 묻기</string>
<string name="check_for_updates">업데이트 확인하기</string>
<string name="right_to_left">오른쪽에서 왼쪽</string>
<string name="zoom_mode_fit_center">가운데 맞춤</string>
<string name="no_update_available">가능한 업데이트 없음</string>
<string name="zoom_mode_fit_height">세로 맞춤</string>
<string name="tap_to_try_again">탭해서 재시도</string>
<string name="restore_backup">백업한 데이터 복원하기</string>
<string name="create_backup">백업하기</string>
<string name="data_restored">복원됨</string>
<string name="preparing_">준비중…</string>
<string name="welcome">환영합니다</string>
<string name="auth_complete">인증됨</string>
<string name="about_app_translation">번역</string>
<string name="about_app_translation_summary">이 앱을 번역하기</string>
<string name="screenshots_block_nsfw">성인 컨텐츠에서만 차단</string>
<string name="screenshots_allow">항상 허용</string>
<string name="exclude_nsfw_from_suggestions">성인 만화(NSFW)는 추천하지 않기</string>
<string name="disabled">비활성화됨</string>
<string name="filter_load_error">장르 목록을 불러올 수 없음</string>
<string name="chapters_empty">이 만화는 챕터로 나눠져 있지 않습니다</string>
<string name="search_chapters">챕터 찾아보기</string>
<string name="chapters_will_removed_background">챕터들이 백그라운드에서 제거됩니다. 이 작업은 많은 시간이 소요될 수 있습니다</string>
<string name="download_slowdown_summary">IP 차단을 회피할 수 있게 합니다</string>
<string name="check_new_chapters_title">새로운 챕터가 나오면 알려주기</string>
<string name="standard">스탠다드</string>
<string name="text_local_holder_secondary">온라인 소스 혹은 직접 파일을 불러와 저장하기.</string>
<string name="suggestions_info">모든 데이터는 기기 안에서만 분석 및 사용되며 어떠한 서드파티 서비스들과도 공유되지 않습니다</string>
<string name="suggestions_summary">당신의 선호도를 바탕으로 만화를 추천합니다</string>
<string name="bookmark_add">북마크에 추가</string>
<string name="bookmark_remove">북마크 제거</string>
<string name="bookmarks">북마크</string>
<string name="data_deletion">데이터 삭제</string>
<string name="no_manga_sources">만화 소스 사이트 없음</string>
<string name="history">최근에 본 만화</string>
<string name="error_occurred">오류 발생</string>
<string name="details">세부정보</string>
<string name="chapters">챕터</string>
<string name="detailed_list">자세한 목록</string>
<string name="list_mode">설정</string>
<string name="grid">그리드</string>
<string name="remote_sources">소스 사이트 관리</string>
<string name="clear_history">기록 삭제</string>
<string name="add">추가</string>
<string name="history_is_empty">아직 기록이 없습니다</string>
<string name="create_shortcut">바로가기 추가…</string>
<string name="theme">테마</string>
<string name="_s_deleted_from_local_storage">\"%s\"가 로컬 저장소에서 삭제됨</string>
<string name="operation_not_supported">지원되지 않는 동작입니다</string>
<string name="no_description">설명없음</string>
<string name="_continue">계속</string>
<string name="search_history_cleared">삭제됨</string>
<string name="gestures_only">제스쳐만 사용</string>
<string name="new_chapters">새로운 챕터</string>
<string name="text_empty_holder_primary">이 항목은 비어있는 것 같습니다…</string>
<string name="recent_manga">최근에 추가된</string>
<string name="manga_save_location">다운로드를 저장하기 위한 폴더</string>
<string name="manga_shelf">책장</string>
<string name="other_storage">기타 저장소</string>
<string name="updates_feed_cleared">삭제됨</string>
<string name="update">업데이트</string>
<string name="feed_will_update_soon">피드가 곧 업데이트 됩니다</string>
<string name="dont_check">확인하지 않기</string>
<string name="enter_password">비밀번호를 입력하세요</string>
<string name="wrong_password">잘못된 비밀번호</string>
<string name="rotate_screen">화면 회전</string>
<string name="track_sources">업데이트 확인하기</string>
<string name="repeat_password">비밀번호 재입력</string>
<string name="passwords_mismatch">일치하지 않는 비밀번호</string>
<string name="app_version">%s 버전</string>
<string name="about">정보</string>
<string name="create_category">새로운 카테고리</string>
<string name="scale_mode">확대 설정</string>
<string name="zoom_mode_fit_width">가로 맞춤</string>
<string name="black_dark_theme">검은색</string>
<string name="black_dark_theme_summary">AMOLED 화면에서의 전력소모를 줄입니다</string>
<string name="backup_restore">백업 및 복원</string>
<string name="file_not_found">파일을 찾을 수 없음</string>
<string name="data_restored_success">모든 데이터 복원됨</string>
<string name="data_restored_with_errors">데이터가 복원되었지만 오류가 존재합니다</string>
<string name="backup_information">선호작이나 읽은 기록들을 백업 및 복원할 수 있습니다</string>
<string name="yesterday">어제</string>
<string name="long_ago">오래전</string>
<string name="group">그룹</string>
<string name="today">오늘</string>
<string name="captcha_required">CAPTCHA 설정이 필요합니다</string>
<string name="captcha_solve">해결됨</string>
<string name="clear_cookies">쿠키 삭제</string>
<string name="zoom_mode_keep_start">첫 칸에 맞춤</string>
<string name="silent">무음</string>
<string name="reader_mode_hint">선택된 설정값이 항상 이 만화에 적용됩니다</string>
<string name="cookies_cleared">모든 쿠키가 삭제되었습니다</string>
<string name="text_clear_updates_feed_prompt">모든 업데이트 기록을 영구적으로 삭제하시겠습니까\?</string>
<string name="clear_feed">피드 정리</string>
<string name="check_for_new_chapters">새로운 챕터 확인하기</string>
<string name="sign_in">로그인</string>
<string name="auth_required">로그인이 필요합니다</string>
<string name="default_s">기본값: %s</string>
<string name="next">다음</string>
<string name="protect_application_subtitle">비밀번호를 입력하세요</string>
<string name="confirm">확인</string>
<string name="password_length_hint">최소 4자리 이상의 비밀번호를 입력해 주세요</string>
<string name="backup_saved">백업 저장됨</string>
<string name="tracker_warning">몇몇 기기들은 시스템이 백그라운드 작업을 방해할 수 있습니다.</string>
<string name="text_clear_search_history_prompt">모든 검색 기록을 영구적으로 삭제 하시겠어요\?</string>
<string name="read_more">더 읽기</string>
<string name="queued">대기열</string>
<string name="text_clear_cookies_prompt">모든 사이트에서 로그아웃됩니다</string>
<string name="genres">장르</string>
<string name="state_finished">완료됨</string>
<string name="system_default">기본</string>
<string name="exclude_nsfw_from_history">기록에서 성인 만화(NSFW) 제외하기</string>
<string name="chapter_is_missing">찾으시는 챕터가 존재하지 않습니다</string>
<string name="auth_not_supported_by">%s에 로그인은 지원되지 않습니다</string>
<string name="available_sources">사용 가능한 소스 사이트</string>
<string name="screenshots_policy">스크린샷 규칙</string>
<string name="screenshots_block_all">항상 차단</string>
<string name="suggestions">추천</string>
<string name="suggestions_enable">추천 켜기</string>
<string name="text_suggestion_holder">아무 만화나 읽어보세요 당신의 기록을 바탕으로 개인화된 추천 만화를 제공합니다</string>
<string name="enabled">활성화됨</string>
<string name="reset_filter">필터 초기화</string>
<string name="only_using_wifi">와이파이에 연결된 경우에만</string>
<string name="always">항상</string>
<string name="onboard_text">무슨 언어의 만화를 읽을지 선택하세요. 나중에 설정에서 이를 변경할 수 있습니다.</string>
<string name="nsfw">18+</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="preload_pages">페이지 미리 로드하기</string>
<string name="logged_in_as">%s로 로그인 됨</string>
<string name="appearance">외관</string>
<string name="suggestions_excluded_genres">제외할 장르 선택</string>
<string name="suggestions_excluded_genres_summary">추천 목록에서 보고 싶지 않은 장르를 특정합니다</string>
<string name="text_delete_local_manga_batch">선택된 항목을 기기에서 영구히 제거하시겠어요\?</string>
<string name="removal_completed">제거 완료</string>
<string name="suggestions_updating">추천 항목 업데이트 중</string>
<string name="canceled">취소됨</string>
<string name="name">이름</string>
<string name="disable_battery_optimization">배터리 최적화 해제하기</string>
<string name="disable_battery_optimization_summary">백그라운드에서의 업데이트 확인이 안드로이드 시스템에 의해 중지되지 않습니다</string>
<string name="send">보내기</string>
<string name="use_fingerprint">가능할 경우 지문 사용</string>
<string name="select_range">범위 선택</string>
<string name="history_cleared">기록 삭제됨</string>
<string name="random">랜덤</string>
<string name="not_found_404">컨텐츠를 찾을 수 없거나 제거되었습니다</string>
<string name="incognito_mode">사생활 보호 모드</string>
<string name="no_chapters">챕터 없음</string>
<string name="automatic_scroll">자동 스크롤</string>
<string name="reader_info_bar">리더 안에서 만화 정보 보여주기</string>
<string name="feed">피드</string>
<string name="show_notification_new_chapters_on">읽고 있는 만화의 업데이트 알림을 수신할 수 있게 됩니다</string>
<string name="show_notification_new_chapters_off">알림은 받지 못하지만 여전히 새로운 챕터들이 목록 상에서 강조 표시되어 보여집니다</string>
<string name="notifications_enable">알림 활성화</string>
<string name="edit">수정</string>
<string name="edit_category">카테고리 수정</string>
<string name="tracking">새로운 소식 추적</string>
<string name="empty_favourite_categories">선호 표시된 카테고리 없음</string>
<string name="logout">로그아웃</string>
<string name="bookmark_removed">북마크 제거됨</string>
<string name="bookmark_added">북마크 추가됨</string>
<string name="undo">실행취소</string>
<string name="removed_from_history">기록에서 지우기</string>
<string name="dns_over_https">DNS over HTTPS 활성화</string>
<string name="default_mode">기본 모드</string>
<string name="detect_reader_mode_summary">왭툰 자동 감지</string>
<string name="crash_text">오류. 저희가 고칠 수 있게 버그 정보를 보내주세요.</string>
<string name="status_planned">계획됨</string>
<string name="status_reading">읽는 중</string>
<string name="status_re_reading">다시 읽는 중</string>
<string name="status_completed">완료됨</string>
<string name="disable_all">모두 비활성화</string>
<string name="appwidget_shelf_description">선호작 목록에 존재하는 만화</string>
<string name="appwidget_recent_description">최근에 본 만화</string>
<string name="report">제보하기</string>
<string name="show_reading_indicators">읽기 진행 상황 표시</string>
<string name="exclude_nsfw_from_history_summary">성인 만화는 읽은 기록에 포함되지 않으며 읽기 진행 상황은 저장되지 않습니다</string>
<string name="show_all">모두 보여주기</string>
<string name="invalid_domain_message">유효하지 않은 도메인</string>
<string name="clear_all_history">모든 기록 삭제</string>
<string name="last_2_hours">지난 2시간</string>
<string name="manage">관리</string>
<string name="no_bookmarks_yet">아직 추가된 븍마크가 없습니다</string>
<string name="no_bookmarks_summary">만화를 읽는 도중 북마크를 추가할 수 있습니다</string>
<string name="bookmarks_removed">북마크 제거됨</string>
<string name="no_manga_sources_text">만화를 읽기 위해 만화 소스 사이트를 활성화 하세요</string>
<string name="categories_delete_confirm">정말 선택된 즐겨 찾는 카테고리를 삭제하시겠습니까\?
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="sort_order">정렬 기준</string>
<string name="_import">불러오기</string>
<string name="network_error">네트워크 오류</string>
<string name="list">목록</string>
<string name="save">저장</string>
<string name="share">공유하기</string>
<string name="share_s">%s 공유</string>
<string name="search">검색하기</string>
<string name="internal_storage">내부 저장소</string>
<string name="external_storage">외부 저장소</string>
<string name="domain">도메인</string>
<string name="app_update_available">새 버전이 존재합니다</string>
<string name="open_in_browser">웹 브라우저에서 열기</string>
<string name="save_manga">저장</string>
<string name="notifications">알림</string>
<string name="light_indicator">LED 표시</string>
<string name="vibration">진동</string>
<string name="remove_category">지우기</string>
<string name="text_search_holder_secondary">쿼리를 재구성하십시오.</string>
<string name="text_history_holder_secondary">사이드 메뉴에서 만화를 탐색해보세요.</string>
<string name="text_shelf_holder_primary">만화가 여기에 표시됩니다</string>
<string name="text_shelf_holder_secondary">«탐색» 섹션에서 만화를 탐색해보세요</string>
<string name="pages_animation">페이지 전환 효과</string>
<string name="cannot_find_available_storage">사용 가능한 저장소 없음</string>
<string name="done">완료</string>
<string name="favourites_category_empty">빈 카테고리</string>
<string name="updates">업데이트</string>
<string name="new_version_s">새 버전: %s</string>
<string name="clear_updates_feed">업데이트 피드 지우기</string>
<string name="local_storage">내장 메모리</string>
<string name="favourites">즐겨찾기</string>
<string name="remove">지우기</string>
<string name="settings">설정</string>
<string name="loading_">불러오는 중…</string>
<string name="close">닫기</string>
<string name="try_again">다시 시도</string>
<string name="you_have_not_favourites_yet">즐겨찾기가 비어있음</string>
<string name="filter">필터링</string>
<string name="light">밝게</string>
<string name="dark">어둡게</string>
<string name="pages">페이지</string>
<string name="read">지금 읽기</string>
<string name="by_name">이름 순</string>
<string name="popular">인기 순</string>
<string name="chapter_d_of_d">%2$d화 중 %1$d화</string>
<string name="downloads">다운로드</string>
<string name="by_rating">평점 순</string>
<string name="save_page">페이지 저장</string>
<string name="page_saved">저장됨</string>
<string name="share_image">이미지 공유하기</string>
<string name="text_file_not_supported">ZIP 혹은 CBZ 파일을 선택하세요.</string>
<string name="delete_manga">만화 제거</string>
<string name="volume_buttons">볼륨 키</string>
<string name="nothing_found">결과 없음</string>
<string name="add_to_favourites">즐겨찾기 추가</string>
<string name="download_complete">다운로드 완료</string>
<string name="add_new_category">새 카테고리</string>
<string name="search_manga">만화를 검색하세요</string>
<string name="manga_downloading_">다운로드 중…</string>
<string name="processing_">처리중…</string>
<string name="updated">최근 업데이트 순</string>
<string name="newest">최근 발간 순</string>
<string name="automatic">시스템 설정</string>
<string name="delete">지우기</string>
<string name="text_file_sizes">바이트|kB|MB|GB|TB</string>
<string name="clear_pages_cache">페이지 캐시 지우기</string>
<string name="read_mode">읽기 모드</string>
<string name="grid_size">격자 크기</string>
<string name="search_on_s">%s에서 검색</string>
<string name="text_delete_local_manga">장치에서 \"%s\"를 영구적으로 삭제하시겠습니까\?</string>
<string name="switch_pages">페이지 전환</string>
<string name="taps_on_edges">가장자리 탭</string>
<string name="webtoon">웹툰</string>
<string name="clear_search_history">검색 기록 지우기</string>
<string name="reader_settings">읽기 모드</string>
<string name="clear_thumbs_cache">썸네일 캐시 지우기</string>
<string name="error">오류</string>
<string name="large_manga_save_confirm">이 만화에는 %s가 있습니다. 모두 저장하시겠습니까\?</string>
<string name="favourites_categories">즐겨찾기 카테고리</string>
<string name="download">다운로드</string>
<string name="notifications_settings">알림 설정</string>
<string name="notification_sound">알림음</string>
<string name="text_history_holder_primary">읽은 내용이 여기에 표시됩니다</string>
<string name="not_available">사용할 수 없음</string>
<string name="all_favourites">모든 즐겨찾기</string>
<string name="read_later">나중에 읽기</string>
<string name="search_results">검색 결과</string>
<string name="size_s">크기: %s</string>
<string name="computing_">계산중…</string>
<string name="clear">지우기</string>
<string name="text_clear_history_prompt">모든 기록을 영구적으로 삭제하시겠어요\?</string>
<string name="text_local_holder_primary">먼저 아무거나 저장해보세요</string>
<string name="text_feed_holder">여기서 읽고 있는 만화의 새로운 챕터들을 확인할 수 있습니다</string>
<string name="protect_application">앱 잠금 활성화</string>
<string name="protect_application_summary">Kotatsu를 실행할 때마다 비밀번호 묻기</string>
<string name="check_for_updates">업데이트 확인하기</string>
<string name="right_to_left">오른쪽에서 왼쪽</string>
<string name="zoom_mode_fit_center">가운데 맞춤</string>
<string name="no_update_available">가능한 업데이트 없음</string>
<string name="zoom_mode_fit_height">세로 맞춤</string>
<string name="tap_to_try_again">탭해서 재시도</string>
<string name="restore_backup">백업한 데이터 복원하기</string>
<string name="create_backup">백업하기</string>
<string name="data_restored">복원됨</string>
<string name="preparing_">준비중…</string>
<string name="welcome">환영합니다</string>
<string name="auth_complete">인증됨</string>
<string name="about_app_translation">번역</string>
<string name="about_app_translation_summary">이 앱을 번역하기</string>
<string name="screenshots_block_nsfw">성인 컨텐츠에서만 차단</string>
<string name="screenshots_allow">항상 허용</string>
<string name="exclude_nsfw_from_suggestions">성인 만화(NSFW)는 추천하지 않기</string>
<string name="disabled">비활성화됨</string>
<string name="filter_load_error">장르 목록을 불러올 수 없음</string>
<string name="chapters_empty">이 만화는 챕터로 나눠져 있지 않습니다</string>
<string name="search_chapters">챕터 찾아보기</string>
<string name="chapters_will_removed_background">챕터들이 백그라운드에서 제거됩니다</string>
<string name="download_slowdown_summary">IP 차단을 회피할 수 있게 합니다</string>
<string name="check_new_chapters_title">새로운 챕터가 나오면 알려주기</string>
<string name="standard">스탠다드</string>
<string name="text_local_holder_secondary">온라인 소스 혹은 직접 파일을 불러와 저장하기.</string>
<string name="suggestions_info">모든 데이터는 이 장치에서 로컬로 분석되며 아무데도 전송되지 않습니다.</string>
<string name="suggestions_summary">당신의 선호도를 바탕으로 만화를 추천합니다</string>
<string name="bookmark_add">북마크에 추가</string>
<string name="bookmark_remove">북마크 제거</string>
<string name="bookmarks">북마크</string>
<string name="data_deletion">데이터 삭제</string>
<string name="no_manga_sources">만화 소스 사이트 없음</string>
<string name="history">최근에 본 만화</string>
<string name="error_occurred">오류 발생</string>
<string name="details">세부정보</string>
<string name="chapters">챕터</string>
<string name="detailed_list">자세한 목록</string>
<string name="list_mode">설정</string>
<string name="grid">그리드</string>
<string name="remote_sources">만화 소스</string>
<string name="clear_history">기록 삭제</string>
<string name="add">추가</string>
<string name="history_is_empty">아직 기록이 없습니다</string>
<string name="create_shortcut">바로가기 추가…</string>
<string name="theme">테마</string>
<string name="_s_deleted_from_local_storage">\"%s\"가 로컬 저장소에서 삭제됨</string>
<string name="operation_not_supported">지원되지 않는 동작입니다</string>
<string name="no_description">설명없음</string>
<string name="_continue">계속</string>
<string name="search_history_cleared">삭제됨</string>
<string name="gestures_only">제스쳐만 사용</string>
<string name="new_chapters">새로운 챕터</string>
<string name="text_empty_holder_primary">이 항목은 비어있는 것 같습니다…</string>
<string name="recent_manga">최근에 추가된</string>
<string name="manga_save_location">다운로드를 저장하기 위한 폴더</string>
<string name="manga_shelf">책장</string>
<string name="other_storage">기타 저장소</string>
<string name="updates_feed_cleared">삭제됨</string>
<string name="update">업데이트</string>
<string name="feed_will_update_soon">피드가 곧 업데이트 됩니다</string>
<string name="dont_check">확인하지 않기</string>
<string name="enter_password">비밀번호를 입력하세요</string>
<string name="wrong_password">잘못된 비밀번호</string>
<string name="rotate_screen">화면 회전</string>
<string name="track_sources">업데이트 확인하기</string>
<string name="repeat_password">비밀번호 재입력</string>
<string name="passwords_mismatch">일치하지 않는 비밀번호</string>
<string name="app_version">%s 버전</string>
<string name="about">정보</string>
<string name="create_category">새로운 카테고리</string>
<string name="scale_mode">확대 설정</string>
<string name="zoom_mode_fit_width">가로 맞춤</string>
<string name="black_dark_theme">검은색</string>
<string name="black_dark_theme_summary">AMOLED 화면에서의 전력소모를 줄입니다</string>
<string name="backup_restore">백업 및 복원</string>
<string name="file_not_found">파일을 찾을 수 없음</string>
<string name="data_restored_success">모든 데이터 복원됨</string>
<string name="data_restored_with_errors">데이터가 복원되었지만 오류가 존재합니다</string>
<string name="backup_information">선호작이나 읽은 기록들을 백업 및 복원할 수 있습니다</string>
<string name="yesterday">어제</string>
<string name="long_ago">오래전</string>
<string name="group">그룹</string>
<string name="today">오늘</string>
<string name="captcha_required">CAPTCHA 설정이 필요합니다</string>
<string name="captcha_solve">해결됨</string>
<string name="clear_cookies">쿠키 삭제</string>
<string name="zoom_mode_keep_start">첫 칸에 맞춤</string>
<string name="silent">무음</string>
<string name="reader_mode_hint">선택된 설정값이 항상 이 만화에 적용됩니다</string>
<string name="cookies_cleared">모든 쿠키가 삭제되었습니다</string>
<string name="text_clear_updates_feed_prompt">모든 업데이트 기록을 영구적으로 삭제하시겠습니까\?</string>
<string name="clear_feed">피드 정리</string>
<string name="check_for_new_chapters">새로운 챕터 확인하기</string>
<string name="sign_in">로그인</string>
<string name="auth_required">로그인이 필요합니다</string>
<string name="default_s">기본값: %s</string>
<string name="next">다음</string>
<string name="protect_application_subtitle">비밀번호를 입력하세요</string>
<string name="confirm">확인</string>
<string name="password_length_hint">최소 4자리 이상의 비밀번호를 입력해 주세요</string>
<string name="backup_saved">백업 저장됨</string>
<string name="tracker_warning">몇몇 기기들은 시스템이 백그라운드 작업을 방해할 수 있습니다.</string>
<string name="text_clear_search_history_prompt">모든 검색 기록을 영구적으로 삭제 하시겠어요\?</string>
<string name="read_more">더 읽기</string>
<string name="queued">대기열</string>
<string name="text_clear_cookies_prompt">모든 사이트에서 로그아웃됩니다</string>
<string name="genres">장르</string>
<string name="state_finished">완료됨</string>
<string name="system_default">기본</string>
<string name="exclude_nsfw_from_history">기록에서 성인 만화(NSFW) 제외하기</string>
<string name="chapter_is_missing">찾으시는 챕터가 존재하지 않습니다</string>
<string name="auth_not_supported_by">%s에 로그인은 지원되지 않습니다</string>
<string name="available_sources">사용 가능한 소스 사이트</string>
<string name="screenshots_policy">스크린샷 규칙</string>
<string name="screenshots_block_all">항상 차단</string>
<string name="suggestions">추천</string>
<string name="suggestions_enable">추천 켜기</string>
<string name="text_suggestion_holder">아무 만화나 읽어보세요 당신의 기록을 바탕으로 개인화된 추천 만화를 제공합니다</string>
<string name="enabled">활성화됨</string>
<string name="reset_filter">필터 초기화</string>
<string name="only_using_wifi">와이파이에 연결된 경우에만</string>
<string name="always">항상</string>
<string name="onboard_text">무슨 언어의 만화를 읽을지 선택하세요. 나중에 설정에서 이를 변경할 수 있습니다.</string>
<string name="nsfw">18+</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="preload_pages">페이지 미리 로드하기</string>
<string name="logged_in_as">%s로 로그인 됨</string>
<string name="appearance">외관</string>
<string name="suggestions_excluded_genres">제외할 장르 선택</string>
<string name="suggestions_excluded_genres_summary">추천 목록에서 보고 싶지 않은 장르를 특정합니다</string>
<string name="text_delete_local_manga_batch">선택된 항목을 기기에서 영구히 제거하시겠어요\?</string>
<string name="removal_completed">제거 완료</string>
<string name="suggestions_updating">추천 항목 업데이트 중</string>
<string name="canceled">취소됨</string>
<string name="name">이름</string>
<string name="disable_battery_optimization">배터리 최적화 해제하기</string>
<string name="disable_battery_optimization_summary">백그라운드에서의 업데이트 확인이 안드로이드 시스템에 의해 중지되지 않습니다</string>
<string name="send">보내기</string>
<string name="use_fingerprint">가능할 경우 지문 사용</string>
<string name="select_range">범위 선택</string>
<string name="history_cleared">기록 삭제됨</string>
<string name="random">랜덤</string>
<string name="not_found_404">컨텐츠를 찾을 수 없거나 제거되었습니다</string>
<string name="incognito_mode">사생활 보호 모드</string>
<string name="no_chapters">챕터 없음</string>
<string name="automatic_scroll">자동 스크롤</string>
<string name="reader_info_bar">리더 안에서 만화 정보 보여주기</string>
<string name="feed">피드</string>
<string name="show_notification_new_chapters_on">읽고 있는 만화의 업데이트 알림을 수신할 수 있게 됩니다</string>
<string name="show_notification_new_chapters_off">알림은 받지 못하지만 여전히 새로운 챕터들이 목록 상에서 강조 표시되어 보여집니다</string>
<string name="notifications_enable">알림 활성화</string>
<string name="edit">수정</string>
<string name="edit_category">카테고리 수정</string>
<string name="tracking">새로운 소식 추적</string>
<string name="empty_favourite_categories">선호 표시된 카테고리 없음</string>
<string name="logout">로그아웃</string>
<string name="bookmark_removed">북마크 제거됨</string>
<string name="bookmark_added">북마크 추가됨</string>
<string name="undo">실행취소</string>
<string name="removed_from_history">기록에서 지우기</string>
<string name="dns_over_https">DNS over HTTPS 활성화</string>
<string name="default_mode">기본 모드</string>
<string name="detect_reader_mode_summary">왭툰 자동 감지</string>
<string name="crash_text">오류. 저희가 고칠 수 있게 버그 정보를 보내주세요.</string>
<string name="status_planned">계획됨</string>
<string name="status_reading">읽는 중</string>
<string name="status_re_reading">다시 읽는 중</string>
<string name="status_completed">완료됨</string>
<string name="disable_all">모두 비활성화</string>
<string name="appwidget_shelf_description">선호작 목록에 존재하는 만화</string>
<string name="appwidget_recent_description">최근에 본 만화</string>
<string name="report">제보하기</string>
<string name="show_reading_indicators">읽기 진행 상황 표시</string>
<string name="exclude_nsfw_from_history_summary">성인 만화는 읽은 기록에 포함되지 않으며 읽기 진행 상황은 저장되지 않습니다</string>
<string name="show_all">모두 보여주기</string>
<string name="invalid_domain_message">유효하지 않은 도메인</string>
<string name="clear_all_history">모든 기록 삭제</string>
<string name="last_2_hours">지난 2시간</string>
<string name="manage">관리</string>
<string name="no_bookmarks_yet">아직 추가된 븍마크가 없습니다</string>
<string name="no_bookmarks_summary">만화를 읽는 도중 북마크를 추가할 수 있습니다</string>
<string name="bookmarks_removed">북마크 제거됨</string>
<string name="no_manga_sources_text">만화를 읽기 위해 만화 소스 사이트를 활성화 하세요</string>
<string name="categories_delete_confirm">정말 선택된 즐겨 찾는 카테고리를 삭제하시겠습니까\?
\n해당 카테고리의 모든 만화가 손실되며 취소할 수 없습니다.</string>
<string name="empty">비어있음</string>
<string name="confirm_exit">뒤로가기 버튼을 다시 눌러 나가기</string>
<string name="exit_confirmation_summary">뒤로가기 버튼을 두 번 눌러 앱을 종료할 수 있습니다</string>
<string name="exit_confirmation">앱 종료 확인</string>
<string name="saved_manga">저장된 만화</string>
<string name="pages_cache">페이지 캐시</string>
<string name="other_cache">기타 캐시</string>
<string name="storage_usage">저장소 사용량</string>
<string name="memory_usage_pattern">%s -%s</string>
<string name="removed_from_favourites">즐겨찾기 목록에서 제거됨</string>
<string name="reader_info_pattern">챕터.%1$d/%2$d 페이지.%3$d/%4$d</string>
<string name="comics_archive">코믹스 모음</string>
<string name="import_completed">가져오기 완료</string>
<string name="import_completed_hint">본 파일을 제거함으로써 저장소 공간을 아낄 수 있습니다</string>
<string name="import_will_start_soon">가져오기가 곧 시작됩니다</string>
<string name="history_shortcuts">최근 추가된 만화 바로가기 보여주기</string>
<string name="hide">숨기기</string>
<string name="new_sources_text">새로운 만화 소스 사이트 사용 가능</string>
<string name="account_already_exists">계정이 이미 존재합니다</string>
<string name="back">뒤로가기</string>
<string name="sync">동기화</string>
<string name="sync_title">데이터 동기화 하기</string>
<string name="email_enter_hint">이메일을 입력하여 계속</string>
<string name="download_slowdown">다운로드 속도 늦추기</string>
</resources>
<string name="empty">비어있음</string>
<string name="confirm_exit">뒤로가기 버튼을 다시 눌러 나가기</string>
<string name="exit_confirmation_summary">뒤로가기 버튼을 두 번 눌러 앱을 종료할 수 있습니다</string>
<string name="exit_confirmation">앱 종료 확인</string>
<string name="saved_manga">저장된 만화</string>
<string name="pages_cache">페이지 캐시</string>
<string name="other_cache">기타 캐시</string>
<string name="storage_usage">저장소 사용량</string>
<string name="memory_usage_pattern">%s -%s</string>
<string name="removed_from_favourites">즐겨찾기 목록에서 제거됨</string>
<string name="reader_info_pattern">챕터.%1$d/%2$d 페이지.%3$d/%4$d</string>
<string name="comics_archive">코믹스 모음</string>
<string name="import_completed">가져오기 완료</string>
<string name="import_completed_hint">본 파일을 제거함으로써 저장소 공간을 아낄 수 있습니다</string>
<string name="import_will_start_soon">가져오기가 곧 시작됩니다</string>
<string name="history_shortcuts">최근 추가된 만화 바로가기 보여주기</string>
<string name="hide">숨기기</string>
<string name="new_sources_text">새로운 만화 소스 사이트 사용 가능</string>
<string name="account_already_exists">계정이 이미 존재합니다</string>
<string name="back">뒤로가기</string>
<string name="sync">동기화</string>
<string name="sync_title">데이터 동기화 하기</string>
<string name="email_enter_hint">이메일을 입력하여 계속</string>
<string name="download_slowdown">다운로드 속도 늦추기</string>
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d 의%2$d 에</string>
<string name="invalid_port_number">잘못된 포트 번호</string>
<string name="authorization_optional">권한 부여(선택 사항)</string>
<string name="password">비밀번호</string>
<string name="show_pages_numbers_summary">하단 모서리에 페이지 번호 표시</string>
<string name="reader_info_bar_summary">화면 상단에 현재 시간 및 읽기 진행률 표시</string>
<string name="data_and_privacy">데이터 및 개인정보 보호</string>
<string name="network">네트워크</string>
<string name="images_proxy_title">이미지 최적화 프록시</string>
<string name="images_procy_description">사용 wsrv.nl 가능한 경우 트래픽 사용량을 줄이고 이미지 로딩 속도를 높이는 서비스</string>
<string name="username">사용자 이름</string>
<string name="translations">번역</string>
<string name="web_view_unavailable">WebView를 사용할 수 없음: WebView 공급자가 설치되어 있는지 확인하십시오</string>
<string name="manga_branch_title_template">%1$s (%2$s)</string>
<string name="show_pages_numbers">페이지 번호 매기기</string>
<string name="never">절대</string>
<string name="clear_network_cache">네트워크 캐시 지우기</string>
<string name="invalid_value_message">잘못된 값</string>
</resources>

View File

@@ -25,7 +25,7 @@
<string name="pages">Sider</string>
<string name="clear">Tøm</string>
<string name="text_clear_history_prompt">Tøm lesehistorikken for godt\?</string>
<string name="remove">Tak bort</string>
<string name="remove">Ta bort</string>
<string name="save_page">Hent sida</string>
<string name="page_saved">Henta</string>
<string name="share_image">Del biletet</string>
@@ -33,7 +33,7 @@
<string name="delete">Slett</string>
<string name="text_file_not_supported">Vel ei ZIP- eller CBZ-fil.</string>
<string name="no_description">Ingen utgreiing</string>
<string name="clear_pages_cache">Tøm mellomminnet til sida</string>
<string name="clear_pages_cache">Tøm mellomminnet for sider</string>
<string name="standard">Vanleg</string>
<string name="webtoon">Nettserie</string>
<string name="grid_size">Rutenettstorleik</string>
@@ -112,7 +112,7 @@
<string name="create_category">Ny hop</string>
<string name="zoom_mode_fit_center">Midtstill</string>
<string name="zoom_mode_keep_start">Auk byrjinga av sida</string>
<string name="restore_backup">Gjenopprett ifrå ein tryggleikskopi</string>
<string name="restore_backup">Gjenopprett</string>
<string name="backup_information">Du kan tryggleikskopiera historikken og likerlista di til seinare gjenoppretting</string>
<string name="preparing_">Førebur …</string>
<string name="system_default">Forval</string>
@@ -163,7 +163,7 @@
<string name="exclude_nsfw_from_suggestions">Ikkje rå mangaar med vakse innhald</string>
<string name="enabled">Påslegen</string>
<string name="filter_load_error">Kunne ikkje hente inn slaglista</string>
<string name="various_languages">Ulike mål</string>
<string name="various_languages">Fleire språk</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="suggestions_updating">Oppdaterer råd</string>
<string name="suggestions_excluded_genres">Utelat slag</string>
@@ -184,7 +184,7 @@
<string name="empty_favourite_categories">Ingen likte hopar</string>
<string name="logout">Logg ut</string>
<string name="bookmark_add">Bokmerk</string>
<string name="bookmark_remove">Tak bort bokmerket</string>
<string name="bookmark_remove">Ta bort bokmerket</string>
<string name="bookmarks">Bokmerke</string>
<string name="removed_from_history">Teken bort ifrå historikken</string>
<string name="dns_over_https">DNS over HTTPS</string>
@@ -218,7 +218,7 @@
<string name="reorder">Flytt</string>
<string name="empty">Tom</string>
<string name="confirm_exit">Trykk Attende att for å gå or appen</string>
<string name="exit_confirmation">Utgåingsstadfesting</string>
<string name="exit_confirmation">Stadfest apputgåing</string>
<string name="pages_cache">Mellominnet for sider</string>
<string name="other_cache">Mellomminnet for anna</string>
<string name="available">Tilgjengeleg</string>
@@ -237,17 +237,17 @@
<string name="error_no_space_left">Eininga er fylt</string>
<string name="reader_slider">Vis ei rulleline til blading</string>
<string name="webtoon_zoom">Auk/mink nettseriar</string>
<string name="different_languages">Ulike mål</string>
<string name="different_languages">Ulike språk</string>
<string name="network_unavailable">Nettverk ikkje tilgjengeleg</string>
<string name="network_unavailable_hint">Slå på Wi-Fi eller mobilnettverk for å lesa mangaar på nett</string>
<string name="server_error">Tjenarfeil (%1$d). Røyn att seinare</string>
<string name="source_disabled">Kjelde avslegen</string>
<string name="prefetch_content">Hent inn innhald på forhand</string>
<string name="mark_as_current">Merk som aktuelt</string>
<string name="language">Mål</string>
<string name="language">Språk</string>
<string name="share_logs">Del loggføringar</string>
<string name="enable_logging">Slå på loggføring</string>
<string name="enable_logging_summary">Tak opp nokre gjerder til bruk i istandsetjing.</string>
<string name="enable_logging">Loggfør</string>
<string name="enable_logging_summary">Ta opp nokre gjerder til bruk i istandsetjing</string>
<string name="theme_name_dynamic">Skiftande</string>
<string name="color_theme">Letar</string>
<string name="show_in_grid_view">Vis som rutenett</string>
@@ -272,7 +272,7 @@
<string name="protect_application_subtitle">Vern appen med eit lykelord</string>
<string name="suggestions_info">All data vert handsama på eininga di og vert ikkje førte over til noka teneste</string>
<string name="disabled">Avslegen</string>
<string name="onboard_text">Vel måla du vil lesa mangaar på. Du kan brigde på dette seinare i innstillingane.</string>
<string name="onboard_text">Vel språka du vil lesa mangaar på. Du kan endre på dette seinare i innstillingane.</string>
<string name="never">Aldri</string>
<string name="only_using_wifi">Berre på Wi-Fi</string>
<string name="nsfw">18+</string>
@@ -360,4 +360,48 @@
<string name="downloads_wifi_only">Hent berre på WiFi</string>
<string name="downloads_wifi_only_summary">Stans all henting når du byter til eit mobilnettverk</string>
<string name="find_similar">Finn liknande</string>
<string name="sort_order">Skiljingsrekkjefølgd</string>
<string name="auth_not_supported_by">Innlogging på %s er ikkje stødd</string>
<string name="sync_host_description">Du kan nytte ein sjølvhusa synkroniseringstenar, eller den vanlege. Om du er uviss, ikkje rør.</string>
<string name="cancel_all_downloads_confirm">Alle pågåande hentingar vert avbrotne, og uheile data sletta</string>
<string name="network">Nettverk</string>
<string name="reader_info_bar_summary">Vis klokka og leseframgangen på toppen av skjermen</string>
<string name="default_s">Forvalt: %s</string>
<string name="reset_filter">Attendestill silen</string>
<string name="report">Sei ifrå</string>
<string name="storage_usage">Gøymebruk</string>
<string name="history_shortcuts">Vis snarvegen for nylege mangaar</string>
<string name="sync_settings">Synkroniseringsinnstillingar</string>
<string name="server_address">Tenaradresse</string>
<string name="resume">Hald fram</string>
<string name="remove_completed">Ta bort fullgjorde</string>
<string name="cancel_all">Avbryt alle</string>
<string name="type">Slag</string>
<string name="address">Adresse</string>
<string name="downloaded">Henta</string>
<string name="authorization_optional">Godkjenning (valfri)</string>
<string name="invert_colors">Snu på letane</string>
<string name="username">Brukarnamn</string>
<string name="password">Passord</string>
<string name="data_and_privacy">Data og personvern</string>
<string name="restore_summary">Gjenopprett ifrå ein tryggleiskopi</string>
<string name="show_pages_numbers_summary">Vis sidetal i nedre hjørne</string>
<string name="details_button_tip">Trykk og hald leseknappen for å sjå fleire val</string>
<string name="translations">Omsetjing</string>
<string name="manga_branch_title_template">%1$s (%2$s)</string>
<string name="no_thanks">Nei takk</string>
<string name="enable">Slå på</string>
<string name="clear_network_cache">Tøm nettverksmellomminnet</string>
<string name="suggestion_manga">Råd: %s</string>
<string name="suggestions_notifications_summary">Ein gong iblant, vis varsel med rådde mangaar</string>
<string name="more">Meir</string>
<string name="remove_completed_downloads_confirm">Hentehistorikken din vil verta sletta for godt</string>
<string name="text_downloads_list_holder">Du har ikkje henta noko</string>
<string name="downloads_resumed">Heldt fram hentingane</string>
<string name="downloads_removed">Tok bort hentingane</string>
<string name="downloads_cancelled">Avbraut hentingane</string>
<string name="suggestions_enable_prompt">Vil du få personlege mangaråd\?</string>
<string name="downloads_paused">Stansa hentingane</string>
<string name="sync_auth_hint">Du kan logge inn på ein konto du alt har, eller lage ein ny ein</string>
<string name="invalid_value_message">Ugild verdi</string>
</resources>

View File

@@ -1,416 +1,434 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="favourites">Ulubione</string>
<string name="history">Historia</string>
<string name="error_occurred">Napotkano błąd</string>
<string name="details">Szczegółowy</string>
<string name="chapters">Rozdziały</string>
<string name="list">Lista</string>
<string name="detailed_list">Lista szczegółowa</string>
<string name="grid">Siatka</string>
<string name="list_mode">Tryb listy</string>
<string name="settings">Ustawienia</string>
<string name="loading_">Ładowanie…</string>
<string name="chapter_d_of_d">Rozdział %1$d z %2$d</string>
<string name="close">Zamknij</string>
<string name="clear_history">Wyczyść historię</string>
<string name="add">Dodaj</string>
<string name="save">Zapisz</string>
<string name="share">Udostępnij</string>
<string name="search">Szukaj</string>
<string name="search_manga">Szukaj mang</string>
<string name="manga_downloading_">Pobieranie…</string>
<string name="download_complete">Pobrano</string>
<string name="downloads">Pobrane</string>
<string name="by_name">Nazwa</string>
<string name="popular">Popularność</string>
<string name="newest">Najnowsze</string>
<string name="by_rating">Ocena</string>
<string name="filter">Filtry</string>
<string name="light">Jasny</string>
<string name="dark">Ciemny</string>
<string name="pages">Strony</string>
<string name="clear">Wyczyść</string>
<string name="remove">Usuń</string>
<string name="share_image">Udostępnij zdjęcie</string>
<string name="delete">Usuń</string>
<string name="no_description">Brak opisu</string>
<string name="read_mode">Tryb czytania</string>
<string name="network_error">Błąd sieci</string>
<string name="computing_">Obliczanie…</string>
<string name="try_again">Spróbuj ponownie</string>
<string name="nothing_found">Nic nie znaleziono</string>
<string name="history_is_empty">Brak historii</string>
<string name="read">Czytaj</string>
<string name="you_have_not_favourites_yet">Brak ulubionych</string>
<string name="add_to_favourites">Dodaj do ulubionych</string>
<string name="add_new_category">Nowa kategoria</string>
<string name="create_shortcut">Stwórz skrót…</string>
<string name="share_s">Udostępnij %s</string>
<string name="processing_">Przetwarzanie…</string>
<string name="updated">Zaktualizowane</string>
<string name="save_page">Zapisz stronę</string>
<string name="page_saved">Zapisano</string>
<string name="vibration">Wibracje</string>
<string name="manga_shelf">Biblioteka</string>
<string name="recent_manga">Ostatnie</string>
<string name="black_dark_theme">Tryb czarny</string>
<string name="preparing_">Przygotowywanie…</string>
<string name="file_not_found">Plik nieznaleziony</string>
<string name="yesterday">Wczoraj</string>
<string name="long_ago">Dawno temu</string>
<string name="group">Grupa</string>
<string name="today">Dzisiaj</string>
<string name="sign_in">Zaloguj</string>
<string name="next">Dalej</string>
<string name="confirm">Potwierdź</string>
<string name="welcome">Witaj</string>
<string name="state_finished">Skończone</string>
<string name="state_ongoing">W trakcie</string>
<string name="screenshots_allow">Zezwól</string>
<string name="suggestions">Proponowane</string>
<string name="suggestions_enable">Włącz propozycje</string>
<string name="enabled">Włączone</string>
<string name="disabled">Wyłączone</string>
<string name="never">Nigdy</string>
<string name="always">Zawsze</string>
<string name="search_chapters">Znajdź rozdział</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Wygląd</string>
<string name="hide">Schowaj</string>
<string name="sync">Synchronizacja</string>
<string name="sync_title">Synchronizuj swoje dane</string>
<string name="name">Nazwa</string>
<string name="edit">Edytuj</string>
<string name="logout">Wyloguj</string>
<string name="undo">Cofnij</string>
<string name="send">Wyślij</string>
<string name="status_planned">Planowane</string>
<string name="status_reading">Czytane</string>
<string name="status_re_reading">Czytane ponownie</string>
<string name="status_completed">Skończone</string>
<string name="show_all">Pokaż wszystkie</string>
<string name="select_range">Wybierz zakres</string>
<string name="clear_all_history">Wyczyść całą historię</string>
<string name="last_2_hours">Ostatnie 2 godziny</string>
<string name="history_cleared">Historia wyczyszczona</string>
<string name="manage">Zarządzaj</string>
<string name="random">Losowe</string>
<string name="empty">Puste</string>
<string name="explore">Przeglądaj</string>
<string name="available">Dostępne</string>
<string name="options">Ustawienia</string>
<string name="source_disabled">Źródło wyłączone</string>
<string name="compact">Kompaktowy</string>
<string name="server_error">Błąd po stronie serwera (%1$d). Sprónuj ponownie później</string>
<string name="network_unavailable">Sieć niedostępna</string>
<string name="different_languages">Inne języki</string>
<string name="discard">Odrzuć</string>
<string name="brightness">Jasność</string>
<string name="contrast">Kontrast</string>
<string name="color_correction">Korekcja kolorów</string>
<string name="automatic_scroll">Automatyczne przewijanie</string>
<string name="no_chapters">Brak rozdziałów</string>
<string name="incognito_mode">Tryb incognito</string>
<string name="removed_from_favourites">Usunięto z ulubionych</string>
<string name="storage_usage">Wykorzystana pamięć</string>
<string name="saved_manga">Zapisane mangi</string>
<string name="no_bookmarks_yet">Brak zakładek</string>
<string name="no_bookmarks_summary">Możesz tworzyć zakładki w trakcie czytania mangi</string>
<string name="bookmarks_removed">Zakładki usunięte</string>
<string name="appwidget_recent_description">Twoje ostatnio czytane mangi</string>
<string name="disable_all">Wyłącz wszystkie</string>
<string name="disable_battery_optimization">Wyłącz optymalizację baterii</string>
<string name="detect_reader_mode">Autowykrywanie trybu czytania</string>
<string name="removed_from_history">Usunięte z historii</string>
<string name="bookmark_added">Dodano zakładkę</string>
<string name="bookmark_removed">Usunięto zakładkę</string>
<string name="bookmarks">Zakładki</string>
<string name="bookmark_remove">Usuń zakładkę</string>
<string name="bookmark_add">Dodaj zakładkę</string>
<string name="empty_favourite_categories">Brak ulubionych kategorii</string>
<string name="edit_category">Edytuj kategorię</string>
<string name="notifications_enable">Włącz powiadomienia</string>
<string name="back">Wróć</string>
<string name="account_already_exists">Konto już istnieje</string>
<string name="canceled">Anulowano</string>
<string name="download_slowdown">Zwolnienie pobierania</string>
<string name="chapters_empty">Brak rozdziałów w tej mandze</string>
<string name="various_languages">Różne języki</string>
<string name="only_using_wifi">Tylko na Wi-Fi</string>
<string name="screenshots_block_all">Zawsze blokuj</string>
<string name="genres">Gatunki</string>
<string name="read_more">Czytaj więcej</string>
<string name="captcha_solve">Rozwiąż</string>
<string name="captcha_required">Wymagane CAPTCHA</string>
<string name="silent">Cichy</string>
<string name="tap_to_try_again">Dotknij aby spróbować ponownie</string>
<string name="just_now">Teraz</string>
<string name="data_restored">Przywrócone</string>
<string name="zoom_mode_fit_width">Dopasuj do szerokości</string>
<string name="zoom_mode_fit_height">Dopasuj do wysokości</string>
<string name="zoom_mode_fit_center">Dopasuj do środka</string>
<string name="create_category">Nowa kategoria</string>
<string name="no_update_available">Brak nowych aktualizacji</string>
<string name="check_for_updates">Sprawdź dostępność aktualizacji</string>
<string name="app_version">Wersja %s</string>
<string name="about">O aplikacji</string>
<string name="remove_category">Usuń</string>
<string name="text_empty_holder_primary">Jest tu dosyć pusto…</string>
<string name="favourites_categories">Ulubione kategorie</string>
<string name="light_indicator">Powiadomienie LED</string>
<string name="new_chapters">Nowe rozdziały</string>
<string name="local_storage">Pamięć wewnętrzna</string>
<string name="text_shelf_holder_primary">Tutaj będą wyświetlane Twoje mangi</string>
<string name="text_shelf_holder_secondary">Znajdź materiały do czytania w zakładce „Przeglądaj”</string>
<string name="text_feed_holder">W tym miejscu pojawią się powiadomienia o nowych rozdziałach z mang które czytasz</string>
<string name="pages_cache">Strony w pamięci podręcznej</string>
<string name="pages_animation">Animacja przewracania strony</string>
<string name="other_cache">Inne rzeczy w pamięci podręcznej</string>
<string name="open_in_browser">Otwórz w przeglądarce</string>
<string name="show_pages_numbers">Numerowane strony</string>
<string name="notifications">Powiadomienia</string>
<string name="notification_sound">Dźwięk powiadomień</string>
<string name="notifications_settings">Ustawienia powiadomień</string>
<string name="remote_sources">Zewnętrzne źródła</string>
<string name="theme">Motyw</string>
<string name="automatic">Systemowy</string>
<string name="clear_pages_cache">Wyczyść pamięć podręczną stron</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="grid_size">Wielkość siatki</string>
<string name="search_on_s">Szukaj na %s</string>
<string name="delete_manga">Usuń mangę</string>
<string name="_continue">Dalej</string>
<string name="error">Błąd</string>
<string name="search_history_cleared">Wyczyszczone</string>
<string name="internal_storage">Pamięć wewnętrzna</string>
<string name="external_storage">Pamięć zewnętrzna</string>
<string name="domain">Domena</string>
<string name="app_update_available">Nowa wersja aplikacji jest dostępna</string>
<string name="large_manga_save_confirm">Ta manga ma %s. Zapisać wszystko?</string>
<string name="save_manga">Zapisz</string>
<string name="download">Pobierz</string>
<string name="text_local_holder_primary">Najpierw coś zapisz</string>
<string name="not_available">Niedostępne</string>
<string name="done">Zapisz</string>
<string name="all_favourites">Wszystkie ulubione</string>
<string name="favourites_category_empty">Pusta kategoria</string>
<string name="read_later">Czytaj później</string>
<string name="updates">Aktualizacje</string>
<string name="new_version_s">Nowa wersja: %s</string>
<string name="size_s">Wielkość: %s</string>
<string name="rotate_screen">Obróć ekran</string>
<string name="update">Odśwież</string>
<string name="track_sources">Szukaj aktualizacji</string>
<string name="dont_check">Nie sprawdzaj</string>
<string name="enter_password">Wprowadź hasło</string>
<string name="wrong_password">Złe hasło</string>
<string name="protect_application">Chroń aplikację</string>
<string name="protect_application_summary">Pytaj o hasło przy starcie Kotatsu</string>
<string name="repeat_password">Wprowadź ponownie hasło</string>
<string name="black_dark_theme_summary">Zużywa mniej prądu na ekranach AMOLED</string>
<string name="backup_restore">Kopia zapasowa i przywracanie</string>
<string name="create_backup">Utwórz kopię zapasową danych</string>
<string name="restore_backup">Przywróć z kopii zapasowej</string>
<string name="nsfw">18+</string>
<string name="enabled_d_of_d">%1$d na %2$d włączone</string>
<string name="standard">Standardowy</string>
<string name="webtoon">Webtoon</string>
<string name="reader_settings">Ustawienia czytnika</string>
<string name="switch_pages">Zmiana strony</string>
<string name="volume_buttons">Przyciski głośności</string>
<string name="taps_on_edges">Dotknięcie krawędzi</string>
<string name="updates_feed_cleared">Wyczyszczone</string>
<string name="scale_mode">Tryb skalowania</string>
<string name="clear_cookies">Wyczyść ciasteczka</string>
<string name="cookies_cleared">Wszystkie ciasteczka wyczyszczone</string>
<string name="about_app_translation_summary">Przetłumacz tą aplikację</string>
<string name="about_app_translation">Tłumaczenie</string>
<string name="available_sources">Dostępne źródła</string>
<string name="gestures_only">Tylko gesty</string>
<string name="cannot_find_available_storage">Brak dostępnej pamięci</string>
<string name="other_storage">Inny</string>
<string name="search_results">Wyniki wyszukiwania</string>
<string name="data_restored_success">Wszystkie dane zostały przywrócone</string>
<string name="data_restored_with_errors">Dane zostały przywrócone, ale z błędami</string>
<string name="reverse">Od tyłu</string>
<string name="system_default">Domyślny</string>
<string name="screenshots_policy">Polityka zrzutów ekranu</string>
<string name="suggestions_excluded_genres">Wyklucz gatunki</string>
<string name="suggestions_excluded_genres_summary">Określ gatunki, których nie chcesz widzieć w sugestiach</string>
<string name="logged_in_as">Zalogowano jako %s</string>
<string name="onboard_text">Wybierz języki, w których chcesz czytać mangi. Możesz zmienić to później w ustawieniach.</string>
<string name="report">Zgłoś</string>
<string name="data_deletion">Usuwanie danych</string>
<string name="invalid_domain_message">Nieważna domena</string>
<string name="reorder">Zmień kolejność</string>
<string name="exit_confirmation">Potwierdzenie wyjścia</string>
<string name="memory_usage_pattern">%s - %s</string>
<string name="reader_info_pattern">Rozdz. %1$d/%2$d Str. %3$d/%4$d</string>
<string name="network_unavailable_hint">Włącz Wi-Fi lub sieć komórkową, aby czytać mangę online</string>
<string name="_import">Importuj</string>
<string name="text_file_not_supported">Wybierz plik ZIP lub CBZ.</string>
<string name="clear_search_history">Wyczyść historię wyszukiwania</string>
<string name="operation_not_supported">Ta operacja nie jest obsługiwana</string>
<string name="sort_order">Tryb sortowania</string>
<string name="filter_load_error">Nie można załadować listy gatunków</string>
<string name="status_on_hold">Wstrzymane</string>
<string name="status_dropped">Porzucone</string>
<string name="use_fingerprint">Użyj odcisku palca, jeśli jest dostępny</string>
<string name="appwidget_shelf_description">Mangi z Twoich ulubionych</string>
<string name="show_reading_indicators">Pokaż wskaźniki postępu czytania</string>
<string name="show_reading_indicators_summary">Pokaż procent przeczytania w historii i ulubionych</string>
<string name="exclude_nsfw_from_history_summary">Manga oznaczona jako NSFW nigdy nie zostanie dodana do historii, a Twoje postępy nie zostaną zapisane</string>
<string name="dns_over_https">DNS przez HTTPS</string>
<string name="default_mode">Tryb domyślny</string>
<string name="text_clear_history_prompt">Trwale wyczyścić całą historię czytania?</string>
<string name="_s_deleted_from_local_storage">„%s” usunięte z pamięci lokalnej</string>
<string name="clear_updates_feed">Wyczyść tablicę aktualizacji</string>
<string name="feed">Tablica</string>
<string name="text_delete_local_manga">Usunąć trwale „%s” z urządzenia?</string>
<string name="clear_thumbs_cache">Wyczyść pamięć podręczną miniatur</string>
<string name="text_search_holder_secondary">Spróbuj przeformułować zapytanie.</string>
<string name="text_history_holder_primary">To co czytasz będzie wyświetlane tutaj</string>
<string name="text_history_holder_secondary">Znajdź to, co warto przeczytać, w menu bocznym.</string>
<string name="text_local_holder_secondary">Zapisz ze źródeł online lub zaimportuj pliki.</string>
<string name="manga_save_location">Folder pobranych</string>
<string name="feed_will_update_soon">Aktualizacja tablicy rozpocznie się wkrótce</string>
<string name="passwords_mismatch">Niezgodne hasła</string>
<string name="right_to_left">Od prawej do lewej</string>
<string name="zoom_mode_keep_start">Trzymaj na starcie</string>
<string name="backup_information">Możesz utworzyć kopię zapasową swojej historii i ulubionych oraz przywrócić ją</string>
<string name="reader_mode_hint">Wybrana konfiguracja zostanie zapamiętana dla tej mangi</string>
<string name="clear_feed">Wyczyść tablicę</string>
<string name="text_clear_updates_feed_prompt">Wyczyścić trwale całą historię aktualizacji?</string>
<string name="check_for_new_chapters">Szukanie nowych rozdziałów</string>
<string name="auth_required">Zaloguj się, aby wyświetlić tę zawartość</string>
<string name="default_s">Domyślnie: %s</string>
<string name="protect_application_subtitle">Wprowadź hasło, aby uruchomić aplikację</string>
<string name="password_length_hint">Hasło musi mieć co najmniej 4 znaki</string>
<string name="text_clear_search_history_prompt">Trwale usunąć wszystkie ostatnie zapytania wyszukiwania?</string>
<string name="backup_saved">Zapisano kopię zapasową</string>
<string name="tracker_warning">Systemy niektórych urządzeń inaczej się zachowują. Może to zakłócać wykonywanie zadań w tle.</string>
<string name="queued">W kolejce</string>
<string name="chapter_is_missing">Brak rozdziału</string>
<string name="auth_complete">Uprawniony</string>
<string name="auth_not_supported_by">Logowanie na %s nie jest obsługiwane</string>
<string name="text_clear_cookies_prompt">Zostaniesz wylogowany ze wszystkich źródeł</string>
<string name="exclude_nsfw_from_history">Wyklucz mangi NSFW z historii</string>
<string name="enabled_sources">Wykorzystane źródła</string>
<string name="screenshots_block_nsfw">Zablokuj na NSFW</string>
<string name="suggestions_summary">Proponuj mangi na podstawie Twoich preferencji</string>
<string name="suggestions_info">Wszystkie dane są analizowane tylko lokalnie na tym urządzeniu i nigdy nie są nigdzie wysyłane.</string>
<string name="text_suggestion_holder">Zacznij czytać mangę, a otrzymasz spersonalizowane sugestie</string>
<string name="exclude_nsfw_from_suggestions">Nie proponuj mang NSFW</string>
<string name="reset_filter">Zresetuj filtr</string>
<string name="preload_pages">Ładuj wstępnie strony</string>
<string name="suggestions_updating">Aktualizowanie sugestii</string>
<string name="text_delete_local_manga_batch">Trwale usunąć wybrane elementy z urządzenia?</string>
<string name="removal_completed">Usuwanie zakończone</string>
<string name="download_slowdown_summary">Pomaga uniknąć blokowania Twojego adresu IP</string>
<string name="local_manga_processing">Przetwarzanie zapisanej mangi</string>
<string name="chapters_will_removed_background">Rozdziały zostaną usunięte w tle</string>
<string name="email_enter_hint">Wpisz swój adres e-mail, aby kontynuować</string>
<string name="new_sources_text">Dostępne są nowe źródła mang</string>
<string name="check_new_chapters_title">Sprawdzaj dostępność nowych rozdziałów i informuj o nich</string>
<string name="show_notification_new_chapters_on">Będziesz otrzymywać powiadomienia o aktualizacjach mang, które czytasz</string>
<string name="show_notification_new_chapters_off">Nie będziesz otrzymywać powiadomień, ale nowe rozdziały będą podświetlane na listach</string>
<string name="tracking">Śledzenie</string>
<string name="detect_reader_mode_summary">Automatycznie wykryj, czy manga to webtoon</string>
<string name="disable_battery_optimization_summary">Pomaga w sprawdzaniu aktualizacji w tle</string>
<string name="crash_text">Coś poszło nie tak. Zgłoś błąd programistom, aby pomóc nam go naprawić.</string>
<string name="clear_cookies_summary">Może pomóc w przypadku niektórych problemów. Wszystkie autoryzacje zostaną unieważnione</string>
<string name="no_manga_sources">Brak źródeł mang</string>
<string name="no_manga_sources_text">Włącz źródła mang do czytania mang online</string>
<string name="categories_delete_confirm">Czy na pewno chcesz usunąć wybrane ulubione kategorie\?
<string name="favourites">Ulubione</string>
<string name="history">Historia</string>
<string name="error_occurred">Napotkano błąd</string>
<string name="details">Szczegółowy</string>
<string name="chapters">Rozdziały</string>
<string name="list">Lista</string>
<string name="detailed_list">Lista szczegółowa</string>
<string name="grid">Siatka</string>
<string name="list_mode">Tryb listy</string>
<string name="settings">Ustawienia</string>
<string name="loading_">Ładowanie…</string>
<string name="chapter_d_of_d">Rozdział %1$d z %2$d</string>
<string name="close">Zamknij</string>
<string name="clear_history">Wyczyść historię</string>
<string name="add">Dodaj</string>
<string name="save">Zapisz</string>
<string name="share">Udostępnij</string>
<string name="search">Szukaj</string>
<string name="search_manga">Szukaj mang</string>
<string name="manga_downloading_">Pobieranie…</string>
<string name="download_complete">Pobrano</string>
<string name="downloads">Pobrania</string>
<string name="by_name">Nazwa</string>
<string name="popular">Popularność</string>
<string name="newest">Najnowsze</string>
<string name="by_rating">Ocena</string>
<string name="filter">Filtry</string>
<string name="light">Jasny</string>
<string name="dark">Ciemny</string>
<string name="pages">Strony</string>
<string name="clear">Wyczyść</string>
<string name="remove">Usuń</string>
<string name="share_image">Udostępnij zdjęcie</string>
<string name="delete">Usuń</string>
<string name="no_description">Brak opisu</string>
<string name="read_mode">Tryb czytania</string>
<string name="network_error">Błąd sieci</string>
<string name="computing_">Obliczanie…</string>
<string name="try_again">Spróbuj ponownie</string>
<string name="nothing_found">Nic nie znaleziono</string>
<string name="history_is_empty">Brak historii</string>
<string name="read">Czytaj</string>
<string name="you_have_not_favourites_yet">Brak ulubionych</string>
<string name="add_to_favourites">Dodaj do ulubionych</string>
<string name="add_new_category">Nowa kategoria</string>
<string name="create_shortcut">Stwórz skrót…</string>
<string name="share_s">Udostępnij %s</string>
<string name="processing_">Przetwarzanie…</string>
<string name="updated">Zaktualizowane</string>
<string name="save_page">Zapisz stronę</string>
<string name="page_saved">Zapisano</string>
<string name="vibration">Wibracje</string>
<string name="manga_shelf">Biblioteka</string>
<string name="recent_manga">Ostatnie</string>
<string name="black_dark_theme">Tryb czarny</string>
<string name="preparing_">Przygotowywanie…</string>
<string name="file_not_found">Plik nieznaleziony</string>
<string name="yesterday">Wczoraj</string>
<string name="long_ago">Dawno temu</string>
<string name="group">Grupa</string>
<string name="today">Dzisiaj</string>
<string name="sign_in">Zaloguj</string>
<string name="next">Dalej</string>
<string name="confirm">Potwierdź</string>
<string name="welcome">Witaj</string>
<string name="state_finished">Skończone</string>
<string name="state_ongoing">W trakcie</string>
<string name="screenshots_allow">Zezwól</string>
<string name="suggestions">Proponowane</string>
<string name="suggestions_enable">Włącz propozycje</string>
<string name="enabled">Włączone</string>
<string name="disabled">Wyłączone</string>
<string name="never">Nigdy</string>
<string name="always">Zawsze</string>
<string name="search_chapters">Znajdź rozdział</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="appearance">Wygląd</string>
<string name="hide">Schowaj</string>
<string name="sync">Synchronizacja</string>
<string name="sync_title">Synchronizuj swoje dane</string>
<string name="name">Nazwa</string>
<string name="edit">Edytuj</string>
<string name="logout">Wyloguj</string>
<string name="undo">Cofnij</string>
<string name="send">Wyślij</string>
<string name="status_planned">Planowane</string>
<string name="status_reading">Czytane</string>
<string name="status_re_reading">Czytane ponownie</string>
<string name="status_completed">Skończone</string>
<string name="show_all">Pokaż wszystkie</string>
<string name="select_range">Wybierz zakres</string>
<string name="clear_all_history">Wyczyść całą historię</string>
<string name="last_2_hours">Ostatnie 2 godziny</string>
<string name="history_cleared">Historia wyczyszczona</string>
<string name="manage">Zarządzaj</string>
<string name="random">Losowe</string>
<string name="empty">Puste</string>
<string name="explore">Przeglądaj</string>
<string name="available">Dostępne</string>
<string name="options">Ustawienia</string>
<string name="source_disabled">Źródło wyłączone</string>
<string name="compact">Kompaktowy</string>
<string name="server_error">Błąd po stronie serwera (%1$d). Sprónuj ponownie później</string>
<string name="network_unavailable">Sieć niedostępna</string>
<string name="different_languages">Inne języki</string>
<string name="discard">Odrzuć</string>
<string name="brightness">Jasność</string>
<string name="contrast">Kontrast</string>
<string name="color_correction">Korekcja kolorów</string>
<string name="automatic_scroll">Automatyczne przewijanie</string>
<string name="no_chapters">Brak rozdziałów</string>
<string name="incognito_mode">Tryb incognito</string>
<string name="removed_from_favourites">Usunięto z ulubionych</string>
<string name="storage_usage">Wykorzystana pamięć</string>
<string name="saved_manga">Zapisane mangi</string>
<string name="no_bookmarks_yet">Brak zakładek</string>
<string name="no_bookmarks_summary">Możesz tworzyć zakładki w trakcie czytania mangi</string>
<string name="bookmarks_removed">Zakładki usunięte</string>
<string name="appwidget_recent_description">Twoje ostatnio czytane mangi</string>
<string name="disable_all">Wyłącz wszystkie</string>
<string name="disable_battery_optimization">Wyłącz optymalizację baterii</string>
<string name="detect_reader_mode">Autowykrywanie trybu czytania</string>
<string name="removed_from_history">Usunięte z historii</string>
<string name="bookmark_added">Dodano zakładkę</string>
<string name="bookmark_removed">Usunięto zakładkę</string>
<string name="bookmarks">Zakładki</string>
<string name="bookmark_remove">Usuń zakładkę</string>
<string name="bookmark_add">Dodaj zakładkę</string>
<string name="empty_favourite_categories">Brak ulubionych kategorii</string>
<string name="edit_category">Edytuj kategorię</string>
<string name="notifications_enable">Włącz powiadomienia</string>
<string name="back">Wróć</string>
<string name="account_already_exists">Konto już istnieje</string>
<string name="canceled">Anulowano</string>
<string name="download_slowdown">Zwolnienie pobierania</string>
<string name="chapters_empty">Brak rozdziałów w tej mandze</string>
<string name="various_languages">Różne języki</string>
<string name="only_using_wifi">Tylko na Wi-Fi</string>
<string name="screenshots_block_all">Zawsze blokuj</string>
<string name="genres">Gatunki</string>
<string name="read_more">Czytaj więcej</string>
<string name="captcha_solve">Rozwiąż</string>
<string name="captcha_required">Wymagane CAPTCHA</string>
<string name="silent">Cichy</string>
<string name="tap_to_try_again">Dotknij aby spróbować ponownie</string>
<string name="just_now">Teraz</string>
<string name="data_restored">Przywrócone</string>
<string name="zoom_mode_fit_width">Dopasuj do szerokości</string>
<string name="zoom_mode_fit_height">Dopasuj do wysokości</string>
<string name="zoom_mode_fit_center">Dopasuj do środka</string>
<string name="create_category">Nowa kategoria</string>
<string name="no_update_available">Brak nowych aktualizacji</string>
<string name="check_for_updates">Sprawdź dostępność aktualizacji</string>
<string name="app_version">Wersja %s</string>
<string name="about">O aplikacji</string>
<string name="remove_category">Usuń</string>
<string name="text_empty_holder_primary">Jest tu dosyć pusto…</string>
<string name="favourites_categories">Ulubione kategorie</string>
<string name="light_indicator">Powiadomienie LED</string>
<string name="new_chapters">Nowe rozdziały</string>
<string name="local_storage">Pamięć wewnętrzna</string>
<string name="text_shelf_holder_primary">Tutaj będą wyświetlane Twoje mangi</string>
<string name="text_shelf_holder_secondary">Znajdź materiały do czytania w zakładce „Przeglądaj”</string>
<string name="text_feed_holder">W tym miejscu pojawią się powiadomienia o nowych rozdziałach z mang które czytasz</string>
<string name="pages_cache">Strony w pamięci podręcznej</string>
<string name="pages_animation">Animacja przewracania strony</string>
<string name="other_cache">Inne rzeczy w pamięci podręcznej</string>
<string name="open_in_browser">Otwórz w przeglądarce</string>
<string name="show_pages_numbers">Numerowane strony</string>
<string name="notifications">Powiadomienia</string>
<string name="notification_sound">Dźwięk powiadomień</string>
<string name="notifications_settings">Ustawienia powiadomień</string>
<string name="remote_sources">Zewnętrzne źródła</string>
<string name="theme">Motyw</string>
<string name="automatic">Systemowy</string>
<string name="clear_pages_cache">Wyczyść pamięć podręczną stron</string>
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
<string name="grid_size">Wielkość siatki</string>
<string name="search_on_s">Szukaj na %s</string>
<string name="delete_manga">Usuń mangę</string>
<string name="_continue">Dalej</string>
<string name="error">Błąd</string>
<string name="search_history_cleared">Wyczyszczone</string>
<string name="internal_storage">Pamięć wewnętrzna</string>
<string name="external_storage">Pamięć zewnętrzna</string>
<string name="domain">Domena</string>
<string name="app_update_available">Nowa wersja aplikacji jest dostępna</string>
<string name="large_manga_save_confirm">Ta manga ma %s. Zapisać wszystko?</string>
<string name="save_manga">Zapisz</string>
<string name="download">Pobierz</string>
<string name="text_local_holder_primary">Najpierw coś zapisz</string>
<string name="not_available">Niedostępne</string>
<string name="done">Zapisz</string>
<string name="all_favourites">Wszystkie ulubione</string>
<string name="favourites_category_empty">Pusta kategoria</string>
<string name="read_later">Czytaj później</string>
<string name="updates">Aktualizacje</string>
<string name="new_version_s">Nowa wersja: %s</string>
<string name="size_s">Wielkość: %s</string>
<string name="rotate_screen">Obróć ekran</string>
<string name="update">Odśwież</string>
<string name="track_sources">Szukaj aktualizacji</string>
<string name="dont_check">Nie sprawdzaj</string>
<string name="enter_password">Wprowadź hasło</string>
<string name="wrong_password">Złe hasło</string>
<string name="protect_application">Chroń aplikację</string>
<string name="protect_application_summary">Pytaj o hasło przy starcie Kotatsu</string>
<string name="repeat_password">Wprowadź ponownie hasło</string>
<string name="black_dark_theme_summary">Zużywa mniej prądu na ekranach AMOLED</string>
<string name="backup_restore">Kopia zapasowa i przywracanie</string>
<string name="create_backup">Utwórz kopię zapasową danych</string>
<string name="restore_backup">Przywróć z kopii zapasowej</string>
<string name="nsfw">18+</string>
<string name="enabled_d_of_d">%1$d na %2$d włączone</string>
<string name="standard">Standardowy</string>
<string name="webtoon">Webtoon</string>
<string name="reader_settings">Ustawienia czytnika</string>
<string name="switch_pages">Zmiana strony</string>
<string name="volume_buttons">Przyciski głośności</string>
<string name="taps_on_edges">Dotknięcie krawędzi</string>
<string name="updates_feed_cleared">Wyczyszczone</string>
<string name="scale_mode">Tryb skalowania</string>
<string name="clear_cookies">Wyczyść ciasteczka</string>
<string name="cookies_cleared">Wszystkie ciasteczka wyczyszczone</string>
<string name="about_app_translation_summary">Przetłumacz tą aplikację</string>
<string name="about_app_translation">Tłumaczenie</string>
<string name="available_sources">Dostępne źródła</string>
<string name="gestures_only">Tylko gesty</string>
<string name="cannot_find_available_storage">Brak dostępnej pamięci</string>
<string name="other_storage">Inny</string>
<string name="search_results">Wyniki wyszukiwania</string>
<string name="data_restored_success">Wszystkie dane zostały przywrócone</string>
<string name="data_restored_with_errors">Dane zostały przywrócone, ale z błędami</string>
<string name="reverse">Od tyłu</string>
<string name="system_default">Domyślny</string>
<string name="screenshots_policy">Polityka zrzutów ekranu</string>
<string name="suggestions_excluded_genres">Wyklucz gatunki</string>
<string name="suggestions_excluded_genres_summary">Określ gatunki, których nie chcesz widzieć w sugestiach</string>
<string name="logged_in_as">Zalogowano jako %s</string>
<string name="onboard_text">Wybierz języki, w których chcesz czytać mangi. Możesz zmienić to później w ustawieniach.</string>
<string name="report">Zgłoś</string>
<string name="data_deletion">Usuwanie danych</string>
<string name="invalid_domain_message">Nieważna domena</string>
<string name="reorder">Zmień kolejność</string>
<string name="exit_confirmation">Potwierdzenie wyjścia</string>
<string name="memory_usage_pattern">%s - %s</string>
<string name="reader_info_pattern">Rozdz. %1$d/%2$d Str. %3$d/%4$d</string>
<string name="network_unavailable_hint">Włącz Wi-Fi lub sieć komórkową, aby czytać mangę online</string>
<string name="_import">Importuj</string>
<string name="text_file_not_supported">Wybierz plik ZIP lub CBZ.</string>
<string name="clear_search_history">Wyczyść historię wyszukiwania</string>
<string name="operation_not_supported">Ta operacja nie jest obsługiwana</string>
<string name="sort_order">Tryb sortowania</string>
<string name="filter_load_error">Nie można załadować listy gatunków</string>
<string name="status_on_hold">Wstrzymane</string>
<string name="status_dropped">Porzucone</string>
<string name="use_fingerprint">Użyj odcisku palca, jeśli jest dostępny</string>
<string name="appwidget_shelf_description">Mangi z Twoich ulubionych</string>
<string name="show_reading_indicators">Pokaż wskaźniki postępu czytania</string>
<string name="show_reading_indicators_summary">Pokaż procent przeczytania w historii i ulubionych</string>
<string name="exclude_nsfw_from_history_summary">Manga oznaczona jako NSFW nigdy nie zostanie dodana do historii, a Twoje postępy nie zostaną zapisane</string>
<string name="dns_over_https">DNS przez HTTPS</string>
<string name="default_mode">Tryb domyślny</string>
<string name="text_clear_history_prompt">Trwale wyczyścić całą historię czytania?</string>
<string name="_s_deleted_from_local_storage">„%s” usunięte z pamięci lokalnej</string>
<string name="clear_updates_feed">Wyczyść tablicę aktualizacji</string>
<string name="feed">Tablica</string>
<string name="text_delete_local_manga">Usunąć trwale „%s” z urządzenia?</string>
<string name="clear_thumbs_cache">Wyczyść pamięć podręczną miniatur</string>
<string name="text_search_holder_secondary">Spróbuj przeformułować zapytanie.</string>
<string name="text_history_holder_primary">To co czytasz będzie wyświetlane tutaj</string>
<string name="text_history_holder_secondary">Znajdź to, co warto przeczytać, w menu bocznym.</string>
<string name="text_local_holder_secondary">Zapisz ze źródeł online lub zaimportuj pliki.</string>
<string name="manga_save_location">Folder pobranych</string>
<string name="feed_will_update_soon">Aktualizacja tablicy rozpocznie się wkrótce</string>
<string name="passwords_mismatch">Niezgodne hasła</string>
<string name="right_to_left">Od prawej do lewej</string>
<string name="zoom_mode_keep_start">Trzymaj na starcie</string>
<string name="backup_information">Możesz utworzyć kopię zapasową swojej historii i ulubionych oraz przywrócić ją</string>
<string name="reader_mode_hint">Wybrana konfiguracja zostanie zapamiętana dla tej mangi</string>
<string name="clear_feed">Wyczyść tablicę</string>
<string name="text_clear_updates_feed_prompt">Wyczyścić trwale całą historię aktualizacji?</string>
<string name="check_for_new_chapters">Szukanie nowych rozdziałów</string>
<string name="auth_required">Zaloguj się, aby wyświetlić tę zawartość</string>
<string name="default_s">Domyślnie: %s</string>
<string name="protect_application_subtitle">Wprowadź hasło, aby uruchomić aplikację</string>
<string name="password_length_hint">Hasło musi mieć co najmniej 4 znaki</string>
<string name="text_clear_search_history_prompt">Trwale usunąć wszystkie ostatnie zapytania wyszukiwania?</string>
<string name="backup_saved">Zapisano kopię zapasową</string>
<string name="tracker_warning">Systemy niektórych urządzeń inaczej się zachowują. Może to zakłócać wykonywanie zadań w tle.</string>
<string name="queued">W kolejce</string>
<string name="chapter_is_missing">Brak rozdziału</string>
<string name="auth_complete">Uprawniony</string>
<string name="auth_not_supported_by">Logowanie na %s nie jest obsługiwane</string>
<string name="text_clear_cookies_prompt">Zostaniesz wylogowany ze wszystkich źródeł</string>
<string name="exclude_nsfw_from_history">Wyklucz mangi NSFW z historii</string>
<string name="enabled_sources">Wykorzystane źródła</string>
<string name="screenshots_block_nsfw">Zablokuj na NSFW</string>
<string name="suggestions_summary">Proponuj mangi na podstawie Twoich preferencji</string>
<string name="suggestions_info">Wszystkie dane są analizowane tylko lokalnie na tym urządzeniu i nigdy nie są nigdzie wysyłane.</string>
<string name="text_suggestion_holder">Zacznij czytać mangę, a otrzymasz spersonalizowane sugestie</string>
<string name="exclude_nsfw_from_suggestions">Nie proponuj mang NSFW</string>
<string name="reset_filter">Zresetuj filtr</string>
<string name="preload_pages">Ładuj wstępnie strony</string>
<string name="suggestions_updating">Aktualizowanie sugestii</string>
<string name="text_delete_local_manga_batch">Trwale usunąć wybrane elementy z urządzenia?</string>
<string name="removal_completed">Usuwanie zakończone</string>
<string name="download_slowdown_summary">Pomaga uniknąć blokowania Twojego adresu IP</string>
<string name="local_manga_processing">Przetwarzanie zapisanej mangi</string>
<string name="chapters_will_removed_background">Rozdziały zostaną usunięte w tle</string>
<string name="email_enter_hint">Wpisz swój adres e-mail, aby kontynuować</string>
<string name="new_sources_text">Dostępne są nowe źródła mang</string>
<string name="check_new_chapters_title">Sprawdzaj dostępność nowych rozdziałów i informuj o nich</string>
<string name="show_notification_new_chapters_on">Będziesz otrzymywać powiadomienia o aktualizacjach mang, które czytasz</string>
<string name="show_notification_new_chapters_off">Nie będziesz otrzymywać powiadomień, ale nowe rozdziały będą podświetlane na listach</string>
<string name="tracking">Śledzenie</string>
<string name="detect_reader_mode_summary">Automatycznie wykryj, czy manga to webtoon</string>
<string name="disable_battery_optimization_summary">Pomaga w sprawdzaniu aktualizacji w tle</string>
<string name="crash_text">Coś poszło nie tak. Zgłoś błąd programistom, aby pomóc nam go naprawić.</string>
<string name="clear_cookies_summary">Może pomóc w przypadku niektórych problemów. Wszystkie autoryzacje zostaną unieważnione</string>
<string name="no_manga_sources">Brak źródeł mang</string>
<string name="no_manga_sources_text">Włącz źródła mang do czytania mang online</string>
<string name="categories_delete_confirm">Czy na pewno chcesz usunąć wybrane ulubione kategorie\?
\nWszystkie w nich mangi zostaną usunięte i nie będzie można tego cofnąć.</string>
<string name="confirm_exit">Naciśnij ponownie Wstecz, aby wyjść</string>
<string name="exit_confirmation_summary">Naciśnij dwukrotnie przycisk Wstecz, aby wyjść z aplikacji</string>
<string name="not_found_404">Treść nie została znaleziona lub została usunięta</string>
<string name="reader_info_bar">Pokaż pasek informacji w czytniku</string>
<string name="comics_archive">Archiwum komiksów</string>
<string name="folder_with_images">Folder z obrazami</string>
<string name="importing_manga">Importowanie mangi</string>
<string name="import_completed">Importowanie zakończone</string>
<string name="import_completed_hint">Możesz usunąć oryginalny plik z pamięci, aby zaoszczędzić miejsce</string>
<string name="import_will_start_soon">Import rozpocznie się wkrótce</string>
<string name="color_correction_hint">Wybrane ustawienia kolorów zostaną zapamiętane dla tej mangi</string>
<string name="history_shortcuts">Pokaż ostatnie skróty do mang</string>
<string name="history_shortcuts_summary">Pokaż ostatnie mangi po długim naciśnięciu ikony aplikacji</string>
<string name="reader_control_ltr_summary">Stuknięcie w prawą krawędź lub naciśnięcie prawego klawisza zawsze powoduje przejście do następnej strony</string>
<string name="reader_control_ltr">Ergonomiczne sterowanie czytnikiem</string>
<string name="text_unsaved_changes_prompt">Zapisać czy odrzucić niezapisane zmiany?</string>
<string name="error_no_space_left">Brak miejsca w urządzeniu</string>
<string name="reader_slider">Pokaż suwak przełączania stron</string>
<string name="webtoon_zoom">Powiększanie webtoon</string>
<string name="clear_new_chapters_counters">Wyczyść też informacje o nowych rozdziałach</string>
<string name="reset">Resetuj</string>
<string name="manga_error_description_pattern">Szczegóły błędu:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Spróbuj &lt;a href=%2$s&gt;otworzyć mangę w przeglądarce internetowej&lt;/a&gt;, aby upewnić się, że jest dostępna w swoim źródle&lt;br&gt;2. Upewnij się, że używasz &lt;a href=kotatsu://about&gt;najnowszej wersji Kotatsu&lt;/a&gt;&lt;br&gt;3. Jeśli jest dostępny, wyślij raport o błędzie do programistów.</string>
<string name="theme_name_mamimi">Mamimi</string>
<string name="theme_name_kanade">Kanade</string>
<string name="services">Usługi</string>
<string name="nothing_here">Tutaj nic nie ma</string>
<string name="scrobbling_empty_hint">By śledzić postęp w czytaniu, wybierz Menu → Śledź na ekranie detali mangi.</string>
<string name="find_similar">Znajdź podobne</string>
<string name="user_agent">Nagłówek UserAgent</string>
<string name="translations">Tłumaczenia</string>
<string name="share_logs">Udostępnij dzienniki</string>
<string name="enable_logging_summary">Zapisz niektóre działania do celów debugowania</string>
<string name="allow_unstable_updates">Zezwól na niestabilne altualizacje</string>
<string name="got_it">Rozumiem</string>
<string name="settings_apply_restart_required">Uruchom ponownie aplikację by wprowadzić te zmiany</string>
<string name="speed">Prędkość</string>
<string name="sources_reorder_tip">Stuknij i przytrzymaj element, aby zmienić jego kolejność</string>
<string name="comics_archive_import_description">Możesz wybrać jeden lub więcej plików .cbz lub .zip, każdy plik zostanie rozpoznany jako osobna manga.</string>
<string name="folder_with_images_import_description">Możesz wybrać katalog z archiwami lub obrazami. Każde archiwum (lub podkatalog) zostanie rozpoznane jako rozdział.</string>
<string name="enable">Włączać</string>
<string name="prefetch_content">Wstępne ładowanie treści</string>
<string name="mark_as_current">Oznacz jako aktualne</string>
<string name="enable_logging">Włącz logowanie</string>
<string name="show_suspicious_content">Pokaż podejrzane treści</string>
<string name="color_theme">Schemat kolorów</string>
<string name="show_in_grid_view">Pokaż w widoku siatki</string>
<string name="theme_name_miku">Miku</string>
<string name="theme_name_dynamic">Dynamiczne</string>
<string name="theme_name_asuka">Asuka</string>
<string name="theme_name_rikka">Rikka</string>
<string name="theme_name_sakura">Sakura</string>
<string name="theme_name_mion">Mion</string>
<string name="ignore_ssl_errors">Ignoruj błędy SSL</string>
<string name="mirror_switching">Wybierz lustro automatycznie</string>
<string name="restore_backup_description">Zaimportuj utworzoną wcześniej kopię zapasową danych użytkownika</string>
<string name="show_on_shelf">Pokaż na półce</string>
<string name="mirror_switching_summary">Automatycznie przełączaj domeny dla zdalnych źródeł w przypadku błędów, jeśli dostępne są kopie lustrzane</string>
<string name="pause">Pauza</string>
<string name="resume">Wznawiać</string>
<string name="paused">Wstrzymane</string>
<string name="cancel_all">Anulować całość</string>
<string name="downloads_wifi_only">Pobieraj tylko przez Wi-Fi</string>
<string name="downloads_wifi_only_summary">Zatrzymaj pobieranie po przełączeniu na sieć komórkową</string>
<string name="suggestion_manga">Sugestia: %s</string>
<string name="suggestions_notifications_summary">Czasami wyświetlaj powiadomienia z sugerowaną mangą</string>
<string name="more">Więcej</string>
<string name="no_thanks">Nie, dziękuję</string>
<string name="cancel_all_downloads_confirm">Wszystkie aktywne pobrania zostaną anulowane, częściowo pobrane dane zostaną utracone</string>
<string name="remove_completed">Usuwanie zakończone</string>
<string name="language">Język</string>
<string name="allow_unstable_updates_summary">Zaproponuj aktualizacje do wersji beta aplikacji</string>
<string name="download_started">Pobieranie rozpoczęte</string>
<string name="sync_settings">Ustawienia synchronizacji</string>
<string name="server_address">Adres serwera</string>
<string name="sync_host_description">Możesz użyć samoobsługowego serwera synchronizacji lub serwera domyślnego. Nie zmieniaj tego, jeśli nie jesteś pewien, co robisz.</string>
<string name="remove_completed_downloads_confirm">Twoja historia pobrań zostanie trwale usunięta</string>
<string name="text_downloads_list_holder">Nie masz żadnych pobrań</string>
<string name="downloads_paused">Pobieranie zostało wstrzymane</string>
<string name="downloads_resumed">Pobieranie zostało wznowione</string>
<string name="downloads_cancelled">Pobieranie zostało anulowane</string>
<string name="downloads_removed">Pliki do pobrania zostały usunięte</string>
<string name="suggestions_enable_prompt">Czy chcesz otrzymywać spersonalizowane sugestie dotyczące mangi\?</string>
<string name="web_view_unavailable">WebView niedostępny: sprawdź, czy dostawca WebView jest zainstalowany</string>
<string name="clear_network_cache">Wyczyść pamięć podręczną sieci</string>
<string name="type">Typ</string>
<string name="address">Adres</string>
<string name="port">Port</string>
<string name="proxy">Proxy</string>
<string name="sync_auth_hint">Możesz zalogować się na istniejące konto lub utworzyć nowe</string>
</resources>
<string name="confirm_exit">Naciśnij ponownie Wstecz, aby wyjść</string>
<string name="exit_confirmation_summary">Naciśnij dwukrotnie przycisk Wstecz, aby wyjść z aplikacji</string>
<string name="not_found_404">Treść nie została znaleziona lub została usunięta</string>
<string name="reader_info_bar">Pokaż pasek informacji w czytniku</string>
<string name="comics_archive">Archiwum komiksów</string>
<string name="folder_with_images">Folder z obrazami</string>
<string name="importing_manga">Importowanie mangi</string>
<string name="import_completed">Importowanie zakończone</string>
<string name="import_completed_hint">Możesz usunąć oryginalny plik z pamięci, aby zaoszczędzić miejsce</string>
<string name="import_will_start_soon">Import rozpocznie się wkrótce</string>
<string name="color_correction_hint">Wybrane ustawienia kolorów zostaną zapamiętane dla tej mangi</string>
<string name="history_shortcuts">Pokaż ostatnie skróty do mang</string>
<string name="history_shortcuts_summary">Pokaż ostatnie mangi po długim naciśnięciu ikony aplikacji</string>
<string name="reader_control_ltr_summary">Stuknięcie w prawą krawędź lub naciśnięcie prawego klawisza zawsze powoduje przejście do następnej strony</string>
<string name="reader_control_ltr">Ergonomiczne sterowanie czytnikiem</string>
<string name="text_unsaved_changes_prompt">Zapisać czy odrzucić niezapisane zmiany?</string>
<string name="error_no_space_left">Brak miejsca w urządzeniu</string>
<string name="reader_slider">Pokaż suwak przełączania stron</string>
<string name="webtoon_zoom">Powiększanie webtoon</string>
<string name="clear_new_chapters_counters">Wyczyść też informacje o nowych rozdziałach</string>
<string name="reset">Resetuj</string>
<string name="manga_error_description_pattern">Szczegóły błędu:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Spróbuj &lt;a href=%2$s&gt;otworzyć mangę w przeglądarce internetowej&lt;/a&gt;, aby upewnić się, że jest dostępna w swoim źródle&lt;br&gt;2. Upewnij się, że używasz &lt;a href=kotatsu://about&gt;najnowszej wersji Kotatsu&lt;/a&gt;&lt;br&gt;3. Jeśli jest dostępny, wyślij raport o błędzie do programistów.</string>
<string name="theme_name_mamimi">Mamimi</string>
<string name="theme_name_kanade">Kanade</string>
<string name="services">Usługi</string>
<string name="nothing_here">Tutaj nic nie ma</string>
<string name="scrobbling_empty_hint">By śledzić postęp w czytaniu, wybierz Menu → Śledź na ekranie detali mangi.</string>
<string name="find_similar">Znajdź podobne</string>
<string name="user_agent">Nagłówek UserAgent</string>
<string name="translations">Tłumaczenia</string>
<string name="share_logs">Udostępnij dzienniki</string>
<string name="enable_logging_summary">Zapisz niektóre działania do celów debugowania</string>
<string name="allow_unstable_updates">Zezwól na niestabilne altualizacje</string>
<string name="got_it">Rozumiem</string>
<string name="settings_apply_restart_required">Uruchom ponownie aplikację by wprowadzić te zmiany</string>
<string name="speed">Prędkość</string>
<string name="sources_reorder_tip">Stuknij i przytrzymaj element, aby zmienić jego kolejność</string>
<string name="comics_archive_import_description">Możesz wybrać jeden lub więcej plików .cbz lub .zip, każdy plik zostanie rozpoznany jako osobna manga.</string>
<string name="folder_with_images_import_description">Możesz wybrać katalog z archiwami lub obrazami. Każde archiwum (lub podkatalog) zostanie rozpoznane jako rozdział.</string>
<string name="enable">Włączać</string>
<string name="prefetch_content">Wstępne ładowanie treści</string>
<string name="mark_as_current">Oznacz jako aktualne</string>
<string name="enable_logging">Włącz logowanie</string>
<string name="show_suspicious_content">Pokaż podejrzane treści</string>
<string name="color_theme">Schemat kolorów</string>
<string name="show_in_grid_view">Pokaż w widoku siatki</string>
<string name="theme_name_miku">Miku</string>
<string name="theme_name_dynamic">Dynamiczne</string>
<string name="theme_name_asuka">Asuka</string>
<string name="theme_name_rikka">Rikka</string>
<string name="theme_name_sakura">Sakura</string>
<string name="theme_name_mion">Mion</string>
<string name="ignore_ssl_errors">Ignoruj błędy SSL</string>
<string name="mirror_switching">Wybierz lustro automatycznie</string>
<string name="restore_backup_description">Zaimportuj utworzoną wcześniej kopię zapasową danych użytkownika</string>
<string name="show_on_shelf">Pokaż na półce</string>
<string name="mirror_switching_summary">Automatycznie przełączaj domeny dla zdalnych źródeł w przypadku błędów, jeśli dostępne są kopie lustrzane</string>
<string name="pause">Pauza</string>
<string name="resume">Wznawiać</string>
<string name="paused">Wstrzymane</string>
<string name="cancel_all">Anulować całość</string>
<string name="downloads_wifi_only">Pobieraj tylko przez Wi-Fi</string>
<string name="downloads_wifi_only_summary">Zatrzymaj pobieranie po przełączeniu na sieć komórkową</string>
<string name="suggestion_manga">Sugestia: %s</string>
<string name="suggestions_notifications_summary">Czasami wyświetlaj powiadomienia z sugerowaną mangą</string>
<string name="more">Więcej</string>
<string name="no_thanks">Nie, dziękuję</string>
<string name="cancel_all_downloads_confirm">Wszystkie aktywne pobrania zostaną anulowane, częściowo pobrane dane zostaną utracone</string>
<string name="remove_completed">Usuwanie zakończone</string>
<string name="language">Język</string>
<string name="allow_unstable_updates_summary">Zaproponuj aktualizacje do wersji beta aplikacji</string>
<string name="download_started">Pobieranie rozpoczęte</string>
<string name="sync_settings">Ustawienia synchronizacji</string>
<string name="server_address">Adres serwera</string>
<string name="sync_host_description">Możesz użyć samoobsługowego serwera synchronizacji lub serwera domyślnego. Nie zmieniaj tego, jeśli nie jesteś pewien, co robisz.</string>
<string name="remove_completed_downloads_confirm">Twoja historia pobrań zostanie trwale usunięta</string>
<string name="text_downloads_list_holder">Nie masz żadnych pobrań</string>
<string name="downloads_paused">Pobieranie zostało wstrzymane</string>
<string name="downloads_resumed">Pobieranie zostało wznowione</string>
<string name="downloads_cancelled">Pobieranie zostało anulowane</string>
<string name="downloads_removed">Pliki do pobrania zostały usunięte</string>
<string name="suggestions_enable_prompt">Czy chcesz otrzymywać spersonalizowane sugestie dotyczące mangi\?</string>
<string name="web_view_unavailable">WebView niedostępny: sprawdź, czy dostawca WebView jest zainstalowany</string>
<string name="clear_network_cache">Wyczyść pamięć podręczną sieci</string>
<string name="type">Typ</string>
<string name="address">Adres</string>
<string name="port">Port</string>
<string name="proxy">Proxy</string>
<string name="sync_auth_hint">Możesz zalogować się na istniejące konto lub utworzyć nowe</string>
<string name="password">Hasło</string>
<string name="invalid_value_message">Nieprawidłowa wartość</string>
<string name="images_proxy_title">Proxy optymalizacji obrazów</string>
<string name="images_procy_description">Użyj wsrv.nl usługa zmniejszająca zużycie ruchu i przyspieszająca ładowanie obrazu, jeśli to możliwe</string>
<string name="downloaded">Pobrane</string>
<string name="username">Nazwa użytkownika</string>
<string name="authorization_optional">Autoryzacja (opcjonalnie)</string>
<string name="invert_colors">Odwróć kolory</string>
<string name="invalid_port_number">Nieprawidłowy numer portu</string>
<string name="network">Sieć</string>
<string name="data_and_privacy">Dane i prywatność</string>
<string name="restore_summary">Przywróć wcześniej utworzoną kopię zapasową</string>
<string name="webtoon_zoom_summary">Zezwalaj na powiększanie gestu w trybie webtoon</string>
<string name="show_pages_numbers_summary">Pokaż numery stron w dolnym rogu</string>
<string name="pages_animation_summary">Animacja przewracania stron</string>
<string name="reader_info_bar_summary">Pokaż aktualny czas i postęp czytania u góry ekranu</string>
<string name="details_button_tip">Naciśnij i przytrzymaj przycisk Czytaj, aby zobaczyć więcej opcji</string>
<string name="manga_branch_title_template">%1$s (%2$s)</string>
</resources>

View File

@@ -100,10 +100,10 @@
<string name="manga_shelf">Estante</string>
<string name="done">Feito</string>
<string name="zoom_mode_keep_start">Manter no início</string>
<string name="clear_updates_feed">Limpar feed de atualizações</string>
<string name="clear_updates_feed">Limpar atualizações de fluxo</string>
<string name="updates_feed_cleared">Limpo</string>
<string name="update">Atualizar</string>
<string name="feed_will_update_soon">A atualização do feed começará em breve</string>
<string name="feed_will_update_soon">A atualização do fluxo começará em breve</string>
<string name="track_sources">Procure atualizações</string>
<string name="dont_check">Não verifique</string>
<string name="enter_password">Digite a senha</string>
@@ -137,7 +137,7 @@
<string name="captcha_required">CAPTCHA obrigatório</string>
<string name="captcha_solve">Resolver</string>
<string name="cookies_cleared">Todos os cookies foram removidos</string>
<string name="clear_feed">Limpar feed</string>
<string name="clear_feed">Limpar o fluxo</string>
<string name="text_clear_updates_feed_prompt">Limpar todo o histórico de atualizações permanentemente\?</string>
<string name="check_for_new_chapters">Em busca de novos capítulos</string>
<string name="reverse">Reverter</string>
@@ -185,7 +185,7 @@
<string name="protect_application">Proteja a app</string>
<string name="protect_application_summary">Peça a senha ao iniciar o Kotatsu</string>
<string name="zoom_mode_fit_height">Ajustar à altura</string>
<string name="black_dark_theme">Escuro</string>
<string name="black_dark_theme">Preto</string>
<string name="black_dark_theme_summary">Usa menos energia em telas AMOLED</string>
<string name="reader_mode_hint">A configuração escolhida será lembrada para este mangá</string>
<string name="backup_information">Pode criar um backup do seu histórico e favoritos e restaurá-lo</string>
@@ -341,7 +341,7 @@
<string name="import_completed">Importação concluída</string>
<string name="import_completed_hint">Você pode excluir o arquivo original do armazenamento para economizar espaço</string>
<string name="import_will_start_soon">A importação começará em breve</string>
<string name="feed">Fluxo de conteúdo</string>
<string name="feed">Fluxo</string>
<string name="manga_error_description_pattern">Detalhes do erro:&lt;br&gt;&lt;tt&gt;%1$s&lt;/tt&gt;&lt;br&gt;&lt;br&gt;1. Tente &lt;a href=%2$s&gt;abra a página do mangá em um navegador da web&lt;/a&gt; para garantir que o mesmo esteja disponível em sua fonte&lt;br&gt;2. Se estiver disponível, envie um relatório de erro para os desenvolvedores.</string>
<string name="reader_control_ltr_summary">Tocar na borda direita ou pressionar a tecla direita sempre muda para a próxima página</string>
<string name="reader_control_ltr">Controle ergonômico do leitor</string>
@@ -371,4 +371,64 @@
<string name="details_button_tip">Pressione e segure o botão Ler para ver mais opções</string>
<string name="webtoon_zoom">Zoom Webtoon</string>
<string name="allow_unstable_updates_summary">Propor atualizações para versões beta do aplicativo</string>
<string name="got_it">Entendi</string>
<string name="sources_reorder_tip">Toque e segure em um item para reordená-lo</string>
<string name="comics_archive_import_description">Você pode selecionar um ou mais arquivos .cbz ou .zip, cada arquivo será reconhecido como um mangá separado.</string>
<string name="folder_with_images_import_description">Você pode selecionar um diretório com arquivos ou imagens. Cada arquivo (ou subdiretório) será reconhecido como um capítulo.</string>
<string name="sync_host_description">Você pode usar um servidor de sincronização auto-hospedado ou um padrão. Não mude isso se não tiver certeza do que está fazendo.</string>
<string name="address">Endereço</string>
<string name="port">Porta</string>
<string name="data_and_privacy">Dados e privacidade</string>
<string name="invalid_port_number">Número de porta inválido</string>
<string name="network">Rede</string>
<string name="restore_summary">Restaurar backup criado anteriormente</string>
<string name="webtoon_zoom_summary">Permitir zoom no gesto no modo webtoon</string>
<string name="reader_info_bar_summary">Mostrar a hora atual e o progresso da leitura na parte superior da tela</string>
<string name="pages_animation_summary">Animação de virada de página</string>
<string name="show_on_shelf">Mostrar na prateleira</string>
<string name="sync_auth_hint">Você pode entrar em uma conta existente ou criar uma nova</string>
<string name="find_similar">Encontrar semelhante</string>
<string name="sync_settings">Configurações de sincronização</string>
<string name="server_address">Endereço do servidor</string>
<string name="ignore_ssl_errors">Ignorar erros de SSL</string>
<string name="mirror_switching">Escolher espelho automaticamente</string>
<string name="mirror_switching_summary">Alternar domínios automaticamente para fontes remotas em caso de erros, se espelhos estiverem disponíveis</string>
<string name="pause">Pausa</string>
<string name="downloads_wifi_only">Baixe apenas via Wi-Fi</string>
<string name="downloads_wifi_only_summary">Interrompa o download ao mudar para uma rede móvel</string>
<string name="cancel_all_downloads_confirm">Todos os downloads ativos serão cancelados, dados parcialmente baixados serão perdidos</string>
<string name="text_downloads_list_holder">Você não tem nenhum download</string>
<string name="downloads_resumed">Os downloads foram retomados</string>
<string name="downloads_paused">Os downloads foram pausados</string>
<string name="downloads_removed">Os downloads foram removidos</string>
<string name="downloads_cancelled">Os downloads foram cancelados</string>
<string name="suggestions_enable_prompt">Quer receber sugestões personalizadas de mangás\?</string>
<string name="translations">Traduções</string>
<string name="web_view_unavailable">WebView não disponível: verifique se o provedor WebView está instalado</string>
<string name="clear_network_cache">Limpar cache de rede</string>
<string name="invalid_value_message">Valor inválido</string>
<string name="downloaded">Baixado</string>
<string name="authorization_optional">Autorização (opcional)</string>
<string name="show_pages_numbers_summary">Mostrar números de página no canto inferior</string>
<string name="user_agent">Cabeçalho UserAgent</string>
<string name="speed">Velocidade</string>
<string name="manga_branch_title_template">%1$s (%2$s)</string>
<string name="images_proxy_title">Proxy de otimização de imagens</string>
<string name="images_procy_description">Use o serviço wsrv.nl para reduzir o uso de tráfego e acelerar o carregamento de imagens, se possível</string>
<string name="invert_colors">Cores invertidas</string>
<string name="username">Nome de usuário</string>
<string name="password">Senha</string>
<string name="type">Tipo</string>
<string name="proxy">Proxy</string>
<string name="resume">Retomar</string>
<string name="paused">Pausado</string>
<string name="cancel_all">Cancelar tudo</string>
<string name="restore_backup_description">Importar um backup criado anteriormente dos dados do usuário</string>
<string name="suggestion_manga">Sugestão: %s</string>
<string name="suggestions_notifications_summary">Às vezes, mostra notificações com mangás sugeridos</string>
<string name="remove_completed_downloads_confirm">Seu histórico de downloads será excluído permanentemente</string>
<string name="more">Mais</string>
<string name="enable">Activar</string>
<string name="no_thanks">Não obrigado</string>
<string name="remove_completed">Remoção concluída</string>
</resources>

View File

@@ -431,4 +431,16 @@
<string name="show_pages_numbers_summary">Показывать номера страниц в нижнем углу</string>
<string name="pages_animation_summary">Анимация перелистывания страниц</string>
<string name="details_button_tip">Нажмите и удерживайте кнопку «Читать», чтобы просмотреть дополнительные параметры</string>
<string name="clear_source_cookies_summary">Очистить куки для указанного домена. В большинстве случаев это аннулирует авторизацию</string>
<string name="download_option_next_unread_n_chapters">Первые непрочитанные %s</string>
<string name="download_option_all_unread">Все непрочитанные главы</string>
<string name="download_option_all_chapters">Все главы с переводом %s</string>
<string name="download_option_whole_manga">Мангу целиком</string>
<string name="download_option_first_n_chapters">Первые %s</string>
<string name="download_option_all_unread_b">Все непрочитанные главы (%s)</string>
<string name="download_option_manual_selection">Выбрать главы вручную</string>
<string name="no_access_to_file">У вас нет доступа к этому файлу или каталогу</string>
<string name="custom_directory">Пользовательский каталог</string>
<string name="local_manga_directories">Локальные каталоги манги</string>
<string name="pick_custom_directory">Выбрать пользовательский каталог</string>
</resources>

View File

@@ -1,30 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="local_storage">Локално складиште</string>
<string name="error_occurred">Грешка се појавила</string>
<string name="favourites">Фаворити</string>
<string name="history">Историја</string>
<string name="network_error">Мрежна грешка</string>
<string name="details">Детаљи</string>
<string name="chapters">Поглавља</string>
<string name="list">Листа</string>
<string name="detailed_list">Детаљна листа</string>
<string name="grid">Табла</string>
<string name="list_mode">Режим листе</string>
<string name="settings">Подешавања</string>
<string name="remote_sources">Извори садржаја</string>
<string name="loading_">Учитавање…</string>
<string name="chapter_d_of_d">Поглавље %1$d од %2$d</string>
<string name="close">Затворити</string>
<string name="try_again">Покушајте поново</string>
<string name="clear_history">Очисти историју</string>
<string name="nothing_found">Ништа није пронађено</string>
<string name="history_is_empty">Још нема историје</string>
<string name="read">Читати</string>
<string name="you_have_not_favourites_yet">Још нема фаворита</string>
<string name="add_new_category">Нова категорија</string>
<string name="add">Додати</string>
<string name="save">Сачувати</string>
<string name="share">Објави</string>
<string name="create_shortcut">Направити пречицу…</string>
</resources>
<string name="local_storage">Локално складиште</string>
<string name="error_occurred">Грешка се појавила</string>
<string name="favourites">Фаворити</string>
<string name="history">Историја</string>
<string name="network_error">Мрежна грешка</string>
<string name="details">Детаљи</string>
<string name="chapters">Поглавља</string>
<string name="list">Листа</string>
<string name="detailed_list">Детаљна листа</string>
<string name="grid">Табла</string>
<string name="list_mode">Режим листе</string>
<string name="settings">Подешавања</string>
<string name="remote_sources">Манга извори</string>
<string name="loading_">Учитавање…</string>
<string name="chapter_d_of_d">Поглавље %1$d од %2$d</string>
<string name="close">Затворити</string>
<string name="try_again">Покушајте поново</string>
<string name="clear_history">Очисти историју</string>
<string name="nothing_found">Ништа није пронађено</string>
<string name="history_is_empty">Још нема историје</string>
<string name="read">Читати</string>
<string name="you_have_not_favourites_yet">Још нема фаворита</string>
<string name="add_new_category">Нова категорија</string>
<string name="add">Додати</string>
<string name="save">Сачувати</string>
<string name="share">Објави</string>
<string name="create_shortcut">Направити пречицу…</string>
<string name="invalid_port_number">Неважећи број порта</string>
<string name="search_manga">Претражи мангу</string>
<string name="by_name">Име</string>
<string name="clear_pages_cache">Обришите кеш странице</string>
<string name="manga_downloading_">Преузимање…</string>
<string name="switch_pages">Окретање страница</string>
<string name="delete_manga">Уклоните мангу</string>
<string name="search_on_s">Претрага по %s</string>
<string name="internal_storage">Интерна меморија</string>
<string name="external_storage">Спољна меморија</string>
<string name="language">Језик</string>
<string name="allow_unstable_updates">Дозволите нестабилна ажурирања</string>
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
<string name="standard">Стандардни</string>
<string name="webtoon">Манхва</string>
<string name="read_mode">Режим читања</string>
<string name="grid_size">Величина мреже</string>
<string name="clear_thumbs_cache">Обришите кеш сличица</string>
<string name="clear_search_history">Обришите историју претраге</string>
<string name="gestures_only">Само гестови</string>
<string name="app_update_available">Доступна је нова верзија апликације</string>
<string name="open_in_browser">Отворите у веб прегледачу</string>
<string name="notification_sound">Звук обавештења</string>
<string name="vibration">Вибрација</string>
<string name="text_empty_holder_primary">Овде је некако празно…</string>
<string name="pages_animation">Анимација превлачења</string>
<string name="about">О апликацији</string>
<string name="app_version">Верзија %s</string>
<string name="black_dark_theme">Црна</string>
<string name="black_dark_theme_summary">Троши мање енергије на AMOLED екранима</string>
<string name="show_pages_numbers">Нумерисање страница</string>
<string name="preload_pages">Претходно учитавање страница</string>
<string name="appearance">Изглед</string>
<string name="check_new_chapters_title">Проверите да ли постоје нова поглавља и обавестите их</string>
<string name="show_notification_new_chapters_on">Добићете обавештења о ажурирањима манге коју читате</string>
<string name="default_mode">Подразумевани режим</string>
<string name="network_unavailable">Мрежа није доступна</string>
<string name="network_unavailable_hint">Укључите Wi-Fi или мобилну мрежу да бисте читали мангу на мрежи</string>
<string name="allow_unstable_updates_summary">Понудите ажурирања за бета верзије апликације</string>
<string name="translations">Преводи</string>
<string name="data_and_privacy">Подаци и приватност</string>
<string name="network">Мрежа</string>
<string name="show_pages_numbers_summary">Прикажите бројеве страница у доњем углу</string>
<string name="pages_animation_summary">Анимација окретања страница</string>
<string name="images_proxy_title">Проки сервер за оптимизацију слика</string>
<string name="username">Корисничко име</string>
<string name="reader_info_bar_summary">Прикажите тренутно време и напредак читања на врху екрана</string>
<string name="authorization_optional">Ауторизација (опционално)</string>
<string name="images_procy_description">Користите wsrv.nl услуга за смањење употребе саобраћаја и убрзавање учитавања слика ако је могуће</string>
<string name="manga_branch_title_template">%1$s (%2$s)</string>
<string name="details_button_tip">Притисните и држите дугме за читање да бисте видели више опција</string>
<string name="computing_">Рачунање…</string>
<string name="search">Претрага</string>
<string name="by_rating">Оцена</string>
<string name="sort_order">Редослед сортирања</string>
<string name="newest">Најновије</string>
<string name="light">Светла</string>
<string name="dark">Мрачна</string>
<string name="automatic">Како систем</string>
<string name="filter">Филтер</string>
<string name="theme">Тема</string>
<string name="pages">Странице</string>
<string name="operation_not_supported">Ова операција није подржана</string>
<string name="error">Грешка</string>
<string name="new_chapters">Нова поглавља</string>
<string name="notifications_settings">Подешавања обавештења</string>
<string name="new_version_s">Нова верзија: %s</string>
<string name="about_app_translation_summary">Преведите ову апликацију</string>
<string name="about_app_translation">Превод</string>
<string name="screenshots_policy">Политика снимања екрана</string>
<string name="clear_network_cache">Очистите мрежну кеш меморију</string>
<string name="password">Лозинка</string>
<string name="show_in_grid_view">Прикажи као мрежу</string>
<string name="page_saved">Сачувано</string>
<string name="text_delete_local_manga">Трајно уклоните \"%s\" са уређаја\?</string>
<string name="processing_">Обрада…</string>
<string name="download_complete">Преузето</string>
<string name="downloads">Преузимања</string>
<string name="popular">Популарно</string>
<string name="updated">Ажуриран</string>
<string name="text_clear_history_prompt">Трајно избрисати сву историју читања\?</string>
<string name="remove">Уклони</string>
<string name="save_page">Сачувај страницу</string>
<string name="share_image">Делите слику</string>
<string name="text_file_not_supported">Изаберите ZIP датотеку или CBZ датотеку.</string>
<string name="no_description">Нема описа</string>
<string name="taps_on_edges">Славине на ивицама</string>
<string name="reader_settings">Подешавања читача</string>
<string name="volume_buttons">Дугмад за јачину звука</string>
<string name="notifications">Обавештења</string>
<string name="pages_cache">Кеш страница</string>
<string name="text_shelf_holder_secondary">Пронађите шта да читате у одељку „Преглед“</string>
<string name="manga_shelf">Полица</string>
<string name="check_for_updates">Провери ажурирања</string>
<string name="feed">Фид</string>
<string name="services">Услуге</string>
<string name="show_on_shelf">Прикажи на полици</string>
<string name="explore">Преглед</string>
<string name="options">Опције</string>
</resources>

View File

@@ -431,4 +431,16 @@
<string name="pages_animation_summary">Анімація перегортання сторінок</string>
<string name="details_button_tip">Натисніть і утримуйте кнопку «Читати», щоб переглянути додаткові параметри</string>
<string name="webtoon_zoom_summary">Дозволити жест збільшення в режимі webtoon</string>
<string name="clear_source_cookies_summary">Очистити файли cookie лише для вказаного домену. У більшості випадків авторизація анулюється</string>
<string name="pick_custom_directory">Вибрати користувальницький каталог</string>
<string name="no_access_to_file">Ви не маєте доступу до цього файлу чи каталогу</string>
<string name="download_option_all_unread">Усі непрочитані розділи</string>
<string name="download_option_all_chapters">Усі розділи з перекладом %s</string>
<string name="download_option_whole_manga">Манга цілком</string>
<string name="download_option_all_unread_b">Усі непрочитані розділи (%s)</string>
<string name="download_option_manual_selection">Виберіть розділи вручну</string>
<string name="local_manga_directories">Локальні каталоги манґи</string>
<string name="custom_directory">Користувальницький каталог</string>
<string name="download_option_first_n_chapters">Перші %s</string>
<string name="download_option_next_unread_n_chapters">Перші непрочитані %s</string>
</resources>

View File

@@ -26,7 +26,7 @@
<string name="newest">Mới đăng</string>
<string name="by_rating">Đánh giá</string>
<string name="filter">Bộ lọc</string>
<string name="theme">Giao diện</string>
<string name="theme">Chủ đề</string>
<string name="pages">Danh sách trang</string>
<string name="clear">Xoá</string>
<string name="text_clear_history_prompt">Xoá vĩnh viễn toàn bộ lịch sử đọc truyện\?</string>
@@ -337,4 +337,67 @@
<string name="color_theme">Bảng màu</string>
<string name="nothing_here">Không có gì ở đây cả</string>
<string name="language">Ngôn ngữ</string>
<string name="compact">Nhỏ gọn</string>
<string name="services">Dịch vụ</string>
<string name="allow_unstable_updates">Cho phép các bản cập nhật không ổn định</string>
<string name="pages_animation_summary">Hiệu ứng chuyển trang</string>
<string name="_import">Nhập</string>
<string name="text_unsaved_changes_prompt">Lưu hay loại bỏ những thay đổi chưa được lưu\?</string>
<string name="download_started">Tải về bắt đầu</string>
<string name="theme_name_asuka">Asuka</string>
<string name="theme_name_mion">Mion</string>
<string name="theme_name_rikka">Rikka</string>
<string name="theme_name_sakura">Sakura</string>
<string name="theme_name_mamimi">Mamimi</string>
<string name="theme_name_kanade">Kanade</string>
<string name="got_it">Đã hiểu</string>
<string name="find_similar">Tìm truyện giống nhau</string>
<string name="sync_auth_hint">Đăng nhập vào tài khoản hoặc tạo một tài khoản mới</string>
<string name="sync_settings">Cài đặt đồng bộ hoá</string>
<string name="speed">Tốc độ</string>
<string name="restore_backup_description">Nhập một bản sao lưu dữ liệu người dùng đã được tạo trước đó</string>
<string name="pause">Tạm dừng</string>
<string name="suggestion_manga">Đề xuất: %s</string>
<string name="suggestions_notifications_summary">Đôi khi nhận thông báo với manga đã được đề xuất</string>
<string name="enable">Kích hoạt</string>
<string name="cancel_all_downloads_confirm">Tất cả tải xuống đang hoạt động sẽ bị huỷ bỏ, dữ liệu không hoàn toàn tải xuống sẽ bị mất</string>
<string name="downloads_paused">Tải xuống đã bị tạm dừng</string>
<string name="text_downloads_list_holder">Bạn chưa tải xuống manga nào</string>
<string name="downloads_cancelled">Tải xuống đã bị huỷ</string>
<string name="translations">Dịch thuật</string>
<string name="suggestions_enable_prompt">Bạn có muốn nhận đề xuất manga đã được cá nhân hoá không\?</string>
<string name="port">Cổng</string>
<string name="proxy">Proxy</string>
<string name="downloaded">Đã tải xuống</string>
<string name="password">Mật khẩu</string>
<string name="username">Tên người dùng</string>
<string name="invalid_value_message">Giá trị không hợp lệ</string>
<string name="webtoon_zoom_summary">Cho phép cử chỉ phóng to ở chế độ Webtoon</string>
<string name="data_and_privacy">Dữ liệu và quyền riêng tư</string>
<string name="details_button_tip">Chạm và giữ nút \"Đọc\" để hiển thị nhiều lựa chọn hơn</string>
<string name="show_pages_numbers_summary">Hiển thị số trang ở góc bên dưới</string>
<string name="clear_source_cookies_summary">Xoá cookies chỉ cho tên miền này. Trong hầu hết mọi trường hợp sẽ làm mất hiệu lực uỷ quyền</string>
<string name="ignore_ssl_errors">Bỏ qua lỗi SSL</string>
<string name="sources_reorder_tip">Chạm và giữ các nguồn truyện để sắp xếp</string>
<string name="settings_apply_restart_required">Vui lòng khởi động lại ứng dụng để áp dụng những thay đổi trên</string>
<string name="server_address">Địa chỉ máy chủ</string>
<string name="comics_archive_import_description">Bạn có thể chọn một hoặc nhiều file .cbz hoặc .zip, mỗi file sẽ được nhận dạng như một manga riêng biệt</string>
<string name="cancel_all">Huỷ bỏ tất cả</string>
<string name="downloads_wifi_only">Chỉ tải xuống qua Wi-Fi</string>
<string name="downloads_wifi_only_summary">Ngừng tải xuống khi chuyển qua mạng dữ liệu</string>
<string name="remove_completed_downloads_confirm">Lịch sử tải xuống của bạn sẽ bị xoá vĩnh viễn</string>
<string name="address">Địa chỉ</string>
<string name="invert_colors">Đảo màu</string>
<string name="invalid_port_number">Cổng không hợp lệ</string>
<string name="download_option_manual_selection">Chọn thủ công các chương</string>
<string name="download_option_all_unread">Tất cả các chương chưa đọc</string>
<string name="resume">Tiếp tục</string>
<string name="clear_new_chapters_counters">Xoá thông tin về chương mới</string>
<string name="source_disabled">Nguồn truyện đã được vô hiệu hoá</string>
<string name="sync_host_description">Bạn có thể dùng một máy chủ đồng bộ hoá của bạn (self-hosted) hoặc máy chủ đồng bộ hoá mặc định. Đừng thay đổi địa chủ máy chủ nếu bạn không chắc chắn mình đang làm gì.</string>
<string name="downloads_resumed">Tải xuống đã được tiếp tục</string>
<string name="downloads_removed">Tải xuống đã bị xoá bỏ</string>
<string name="more">Thêm nữa</string>
<string name="no_thanks">Không, cảm ơn</string>
<string name="download_option_all_chapters">Số chương đã được dịch: %s</string>
</resources>

View File

@@ -437,4 +437,16 @@
<string name="show_pages_numbers_summary">Show page numbers in bottom corner</string>
<string name="pages_animation_summary">Animate page switching</string>
<string name="details_button_tip">Press and hold the Read button to see more options</string>
<string name="clear_source_cookies_summary">Clear cookies for specified domain only. In most cases will invalidate authorization</string>
<string name="download_option_all_chapters">All chapters with translation %s</string>
<string name="download_option_whole_manga">The whole manga</string>
<string name="download_option_first_n_chapters">First %s</string>
<string name="download_option_next_unread_n_chapters">Next unread %s</string>
<string name="download_option_all_unread">All unread chapters</string>
<string name="download_option_all_unread_b">All unread chapters (%s)</string>
<string name="download_option_manual_selection">Select chapters manually</string>
<string name="custom_directory">Custom directory</string>
<string name="pick_custom_directory">Pick custom directory</string>
<string name="no_access_to_file">You have no access to this file or directory</string>
<string name="local_manga_directories">Local manga directories</string>
</resources>

View File

@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
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">
<Preference
android:key="local_manga_dirs"
android:persistent="false"
android:title="@string/local_manga_directories" />
<Preference
android:key="local_storage"
@@ -11,7 +17,8 @@
android:defaultValue="false"
android:key="downloads_wifi"
android:summary="@string/downloads_wifi_only_summary"
android:title="@string/downloads_wifi_only" />
android:title="@string/downloads_wifi_only"
app:allowDividerAbove="true" />
<SwitchPreferenceCompat
android:defaultValue="false"

View File

@@ -10,4 +10,11 @@
android:title="@string/sign_in"
app:allowDividerAbove="true" />
</PreferenceScreen>
<Preference
android:key="cookies_clear"
android:order="101"
android:persistent="false"
android:summary="@string/clear_source_cookies_summary"
android:title="@string/clear_cookies" />
</PreferenceScreen>