Merge branch 'devel' into feature/mal
# Conflicts: # app/src/main/java/org/koitharu/kotatsu/settings/HistorySettingsFragment.kt # app/src/main/res/values/strings.xmlpull/302/head
commit
2c71110fa5
@ -0,0 +1,84 @@
|
|||||||
|
package org.koitharu.kotatsu.core.network.cookies
|
||||||
|
|
||||||
|
import android.util.Base64
|
||||||
|
import okhttp3.Cookie
|
||||||
|
import java.io.ByteArrayInputStream
|
||||||
|
import java.io.ByteArrayOutputStream
|
||||||
|
import java.io.ObjectInputStream
|
||||||
|
import java.io.ObjectOutputStream
|
||||||
|
|
||||||
|
|
||||||
|
class CookieWrapper(
|
||||||
|
val cookie: Cookie,
|
||||||
|
) {
|
||||||
|
|
||||||
|
constructor(encodedString: String) : this(
|
||||||
|
ObjectInputStream(ByteArrayInputStream(Base64.decode(encodedString, Base64.NO_WRAP))).use {
|
||||||
|
val name = it.readUTF()
|
||||||
|
val value = it.readUTF()
|
||||||
|
val expiresAt = it.readLong()
|
||||||
|
val domain = it.readUTF()
|
||||||
|
val path = it.readUTF()
|
||||||
|
val secure = it.readBoolean()
|
||||||
|
val httpOnly = it.readBoolean()
|
||||||
|
val persistent = it.readBoolean()
|
||||||
|
val hostOnly = it.readBoolean()
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
}.build()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
fun encode(): String {
|
||||||
|
val output = ByteArrayOutputStream()
|
||||||
|
ObjectOutputStream(output).use {
|
||||||
|
it.writeUTF(cookie.name)
|
||||||
|
it.writeUTF(cookie.value)
|
||||||
|
it.writeLong(cookie.expiresAt)
|
||||||
|
it.writeUTF(cookie.domain)
|
||||||
|
it.writeUTF(cookie.path)
|
||||||
|
it.writeBoolean(cookie.secure)
|
||||||
|
it.writeBoolean(cookie.httpOnly)
|
||||||
|
it.writeBoolean(cookie.persistent)
|
||||||
|
it.writeBoolean(cookie.hostOnly)
|
||||||
|
}
|
||||||
|
return Base64.encodeToString(output.toByteArray(), Base64.NO_WRAP)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isExpired() = cookie.expiresAt < System.currentTimeMillis()
|
||||||
|
|
||||||
|
fun key(): String {
|
||||||
|
return (if (cookie.secure) "https" else "http") + "://" + cookie.domain + cookie.path + "|" + cookie.name
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (this === other) return true
|
||||||
|
if (javaClass != other?.javaClass) return false
|
||||||
|
|
||||||
|
other as CookieWrapper
|
||||||
|
|
||||||
|
if (cookie != other.cookie) return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
return cookie.hashCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package org.koitharu.kotatsu.core.network.cookies
|
||||||
|
|
||||||
|
import androidx.annotation.WorkerThread
|
||||||
|
import okhttp3.Cookie
|
||||||
|
import okhttp3.CookieJar
|
||||||
|
import okhttp3.HttpUrl
|
||||||
|
|
||||||
|
interface MutableCookieJar : CookieJar {
|
||||||
|
|
||||||
|
@WorkerThread
|
||||||
|
override fun loadForRequest(url: HttpUrl): List<Cookie>
|
||||||
|
|
||||||
|
@WorkerThread
|
||||||
|
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>)
|
||||||
|
|
||||||
|
suspend fun clear(): Boolean
|
||||||
|
}
|
||||||
@ -0,0 +1,89 @@
|
|||||||
|
package org.koitharu.kotatsu.core.network.cookies
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.annotation.WorkerThread
|
||||||
|
import androidx.collection.ArrayMap
|
||||||
|
import androidx.core.content.edit
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import okhttp3.Cookie
|
||||||
|
import okhttp3.HttpUrl
|
||||||
|
import org.koitharu.kotatsu.utils.ext.printStackTraceDebug
|
||||||
|
|
||||||
|
private const val PREFS_NAME = "cookies"
|
||||||
|
|
||||||
|
class PreferencesCookieJar(
|
||||||
|
context: Context,
|
||||||
|
) : MutableCookieJar {
|
||||||
|
|
||||||
|
private val cache = ArrayMap<String, CookieWrapper>()
|
||||||
|
private val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
|
||||||
|
private var isLoaded = false
|
||||||
|
|
||||||
|
@WorkerThread
|
||||||
|
override fun loadForRequest(url: HttpUrl): List<Cookie> {
|
||||||
|
loadPersistent()
|
||||||
|
val expired = HashSet<String>()
|
||||||
|
val result = ArrayList<Cookie>()
|
||||||
|
for ((key, cookie) in cache) {
|
||||||
|
if (cookie.isExpired()) {
|
||||||
|
expired += key
|
||||||
|
} else if (cookie.cookie.matches(url)) {
|
||||||
|
result += cookie.cookie
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (expired.isNotEmpty()) {
|
||||||
|
cache.removeAll(expired)
|
||||||
|
removePersistent(expired)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
@WorkerThread
|
||||||
|
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
|
||||||
|
val wrapped = cookies.map { CookieWrapper(it) }
|
||||||
|
prefs.edit(commit = true) {
|
||||||
|
for (cookie in wrapped) {
|
||||||
|
val key = cookie.key()
|
||||||
|
cache[key] = cookie
|
||||||
|
if (cookie.cookie.persistent) {
|
||||||
|
putString(key, cookie.encode())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun clear(): Boolean {
|
||||||
|
cache.clear()
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
prefs.edit(commit = true) { clear() }
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
private fun loadPersistent() {
|
||||||
|
if (!isLoaded) {
|
||||||
|
val map = prefs.all
|
||||||
|
cache.ensureCapacity(map.size)
|
||||||
|
for ((k, v) in map) {
|
||||||
|
val cookie = try {
|
||||||
|
CookieWrapper(v as String)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTraceDebug()
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
cache[k] = cookie
|
||||||
|
}
|
||||||
|
isLoaded = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun removePersistent(keys: Collection<String>) {
|
||||||
|
prefs.edit(commit = true) {
|
||||||
|
for (key in keys) {
|
||||||
|
remove(key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package org.koitharu.kotatsu.core.os
|
||||||
|
|
||||||
|
import android.net.ConnectivityManager
|
||||||
|
import android.net.ConnectivityManager.NetworkCallback
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkRequest
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
|
import org.koitharu.kotatsu.utils.MediatorStateFlow
|
||||||
|
import org.koitharu.kotatsu.utils.ext.isNetworkAvailable
|
||||||
|
|
||||||
|
class NetworkState(
|
||||||
|
private val connectivityManager: ConnectivityManager,
|
||||||
|
) : MediatorStateFlow<Boolean>(connectivityManager.isNetworkAvailable) {
|
||||||
|
|
||||||
|
private val callback = NetworkCallbackImpl()
|
||||||
|
|
||||||
|
override fun onActive() {
|
||||||
|
invalidate()
|
||||||
|
val request = NetworkRequest.Builder().build()
|
||||||
|
connectivityManager.registerNetworkCallback(request, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onInactive() {
|
||||||
|
connectivityManager.unregisterNetworkCallback(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun awaitForConnection() {
|
||||||
|
if (value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
first { it }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun invalidate() {
|
||||||
|
publishValue(connectivityManager.isNetworkAvailable)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inner class NetworkCallbackImpl : NetworkCallback() {
|
||||||
|
|
||||||
|
override fun onAvailable(network: Network) = invalidate()
|
||||||
|
|
||||||
|
override fun onLost(network: Network) = invalidate()
|
||||||
|
|
||||||
|
override fun onUnavailable() = invalidate()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,78 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.core.os
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.net.ConnectivityManager.NetworkCallback
|
|
||||||
import android.net.Network
|
|
||||||
import android.net.NetworkRequest
|
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
|
||||||
import kotlinx.coroutines.channels.ProducerScope
|
|
||||||
import kotlinx.coroutines.channels.awaitClose
|
|
||||||
import kotlinx.coroutines.channels.onSuccess
|
|
||||||
import kotlinx.coroutines.channels.trySendBlocking
|
|
||||||
import kotlinx.coroutines.flow.FlowCollector
|
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
|
||||||
import kotlinx.coroutines.flow.callbackFlow
|
|
||||||
import kotlinx.coroutines.flow.first
|
|
||||||
import org.koitharu.kotatsu.utils.ext.connectivityManager
|
|
||||||
import org.koitharu.kotatsu.utils.ext.isNetworkAvailable
|
|
||||||
import javax.inject.Inject
|
|
||||||
import javax.inject.Singleton
|
|
||||||
|
|
||||||
@Singleton
|
|
||||||
class NetworkStateObserver @Inject constructor(
|
|
||||||
@ApplicationContext context: Context,
|
|
||||||
) : StateFlow<Boolean> {
|
|
||||||
|
|
||||||
private val connectivityManager = context.connectivityManager
|
|
||||||
|
|
||||||
override val replayCache: List<Boolean>
|
|
||||||
get() = listOf(value)
|
|
||||||
|
|
||||||
override val value: Boolean
|
|
||||||
get() = connectivityManager.isNetworkAvailable
|
|
||||||
|
|
||||||
override suspend fun collect(collector: FlowCollector<Boolean>): Nothing {
|
|
||||||
collector.emit(value)
|
|
||||||
while (true) {
|
|
||||||
observeImpl().collect(collector)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
suspend fun awaitForConnection(): Unit {
|
|
||||||
if (value) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first { it }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun observeImpl() = callbackFlow<Boolean> {
|
|
||||||
val request = NetworkRequest.Builder().build()
|
|
||||||
val callback = FlowNetworkCallback(this)
|
|
||||||
connectivityManager.registerNetworkCallback(request, callback)
|
|
||||||
awaitClose {
|
|
||||||
connectivityManager.unregisterNetworkCallback(callback)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private inner class FlowNetworkCallback(
|
|
||||||
private val producerScope: ProducerScope<Boolean>,
|
|
||||||
) : NetworkCallback() {
|
|
||||||
|
|
||||||
private var prevValue = value
|
|
||||||
|
|
||||||
override fun onAvailable(network: Network) = update()
|
|
||||||
|
|
||||||
override fun onLost(network: Network) = update()
|
|
||||||
|
|
||||||
override fun onUnavailable() = update()
|
|
||||||
|
|
||||||
private fun update() {
|
|
||||||
val newValue = connectivityManager.isNetworkAvailable
|
|
||||||
if (newValue != prevValue) {
|
|
||||||
producerScope.trySendBlocking(newValue).onSuccess {
|
|
||||||
prevValue = newValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package org.koitharu.kotatsu.utils
|
||||||
|
|
||||||
|
import kotlinx.coroutines.flow.FlowCollector
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
|
|
||||||
|
abstract class MediatorStateFlow<T>(initialValue: T) : StateFlow<T> {
|
||||||
|
|
||||||
|
private val delegate = MutableStateFlow(initialValue)
|
||||||
|
private val collectors = AtomicInteger(0)
|
||||||
|
|
||||||
|
final override val replayCache: List<T>
|
||||||
|
get() = delegate.replayCache
|
||||||
|
|
||||||
|
final override val value: T
|
||||||
|
get() = delegate.value
|
||||||
|
|
||||||
|
final override suspend fun collect(collector: FlowCollector<T>): Nothing {
|
||||||
|
try {
|
||||||
|
if (collectors.getAndIncrement() == 0) {
|
||||||
|
onActive()
|
||||||
|
}
|
||||||
|
delegate.collect(collector)
|
||||||
|
} finally {
|
||||||
|
if (collectors.decrementAndGet() == 0) {
|
||||||
|
onInactive()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun publishValue(v: T) {
|
||||||
|
delegate.value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun onActive()
|
||||||
|
|
||||||
|
abstract fun onInactive()
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_settings"
|
||||||
|
android:title="@string/settings" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_hide"
|
||||||
|
android:title="@string/hide" />
|
||||||
|
|
||||||
|
</menu>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources></resources>
|
||||||
@ -0,0 +1,108 @@
|
|||||||
|
<?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="warning">경고</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="read_from_start">처음부터 읽기</string>
|
||||||
|
<string name="light_indicator">LED 표시</string>
|
||||||
|
<string name="vibration">진동</string>
|
||||||
|
<string name="rename">이름 바꾸기</string>
|
||||||
|
<string name="category_delete_confirm">즐겨찾기에서 \"%s\" 카테고리를 제거하시겠습니까\?
|
||||||
|
\n포함된 모든 만화가 지워집니다.</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="waiting_for_network">네트워크 연결을 기다리는 중…</string>
|
||||||
|
<string name="clear_updates_feed">업데이트 피드 지우기</string>
|
||||||
|
<string name="close_menu">메뉴 닫기</string>
|
||||||
|
<string name="open_menu">메뉴 열기</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="history_and_cache">기록 및 캐시</string>
|
||||||
|
<string name="cache">캐시</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="wait_for_loading_finish">잠시만 기다려주세요…</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="network_consumption_warning">이 동작은 많은 데이터 사용을</string>
|
||||||
|
<string name="clear_thumbs_cache">썸네일 캐시 지우기</string>
|
||||||
|
<string name="dont_ask_again">다시 묻지 않음</string>
|
||||||
|
<string name="cancelling_">취소 중…</string>
|
||||||
|
<string name="error">오류</string>
|
||||||
|
<string name="application_update">업데이트 확인</string>
|
||||||
|
<string name="show_notification_app_update">업데이트 가능 시 알림 설정</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="categories_">카테고리…</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>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<plurals name="new_chapters">
|
||||||
|
<item quantity="one">%1$d nowy rozdział</item>
|
||||||
|
<item quantity="few">%1$d nowe rozdziały</item>
|
||||||
|
<item quantity="many">%1$d nowych rozdziałów</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="minutes_ago">
|
||||||
|
<item quantity="one">%1$d minutę temu</item>
|
||||||
|
<item quantity="few">%1$d minuty temu</item>
|
||||||
|
<item quantity="many">%1$d minut temu</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="pages">
|
||||||
|
<item quantity="one">Łącznie %1$d strona</item>
|
||||||
|
<item quantity="few">Łącznie %1$d strony</item>
|
||||||
|
<item quantity="many">Łącznie %1$d stron</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="hours_ago">
|
||||||
|
<item quantity="one">%1$d godzinę temu</item>
|
||||||
|
<item quantity="few">%1$d godziny temu</item>
|
||||||
|
<item quantity="many">%1$d godzin temu</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="days_ago">
|
||||||
|
<item quantity="one">%1$d dzień temu</item>
|
||||||
|
<item quantity="few">%1$d dni temu</item>
|
||||||
|
<item quantity="many">%1$d dni temu</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="items">
|
||||||
|
<item quantity="one">%1$d przedmiot</item>
|
||||||
|
<item quantity="few">%1$d przedmioty</item>
|
||||||
|
<item quantity="many">%1$d przedmiotów</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="chapters_from_x">
|
||||||
|
<item quantity="one">%1$d rozdział z %2$d</item>
|
||||||
|
<item quantity="few">%1$d rozdziały z %2$d</item>
|
||||||
|
<item quantity="many">%1$d rozdziałów z %2$d</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="chapters">
|
||||||
|
<item quantity="one">%1$d rozdział</item>
|
||||||
|
<item quantity="few">%1$d rozdziały</item>
|
||||||
|
<item quantity="many">%1$d rozdziałów</item>
|
||||||
|
</plurals>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,397 @@
|
|||||||
|
<?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="_s_removed_from_history">„%s” usunięte z historii</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="changelog">Lista zmian</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="seconds_pattern">%ss</string>
|
||||||
|
<string name="off_short">Wyłącz</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="downloading_manga">Pobieranie mangi</string>
|
||||||
|
<string name="removed_from_favourites">Usunięto z ulubionych</string>
|
||||||
|
<string name="enter_email_text">Wprowadź swój email aby kontynuować</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="date_format">Format daty</string>
|
||||||
|
<string name="genres">Gatunki</string>
|
||||||
|
<string name="find_genre">Znajdź gatunek</string>
|
||||||
|
<string name="read_more">Czytaj więcej</string>
|
||||||
|
<string name="other">Inne</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="checking_for_updates">Sprawdzanie aktualizacji…</string>
|
||||||
|
<string name="app_version">Wersja %s</string>
|
||||||
|
<string name="about">O aplikacji</string>
|
||||||
|
<string name="categories_">Kategorie…</string>
|
||||||
|
<string name="rename">Zmień nazwę</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="close_menu">Zamknij kartę</string>
|
||||||
|
<string name="open_menu">Otwórz kartę</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="history_and_cache">Historia i pamięć podręczna</string>
|
||||||
|
<string name="clear_pages_cache">Wyczyść pamięć podręczną stron</string>
|
||||||
|
<string name="cache">Pamięć podręczna</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="dont_ask_again">Nie pytaj ponownie</string>
|
||||||
|
<string name="cancelling_">Anulowanie…</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="application_update">Sprawdź dostępność nowej wersji aplikacji</string>
|
||||||
|
<string name="app_update_available">Nowa wersja aplikacji jest dostępna</string>
|
||||||
|
<string name="show_notification_app_update">Pokaż powiadomienie gdy nowa wersja 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="read_from_start">Czytaj od początku</string>
|
||||||
|
<string name="category_delete_confirm">Usunąć kategorię „%s” z Twoich ulubionych? Wszystkie mangi w niej będą z niej usunięte.</string>
|
||||||
|
<string name="text_categories_holder">Możesz użyć kategorii do organizowania swoich ulubionych. Kliknij «+» aby stworzyć kategorię</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="waiting_for_network">Czekanie na sieć…</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="enter_category_name">Wprowadź nazwę kategorii</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="warning">Uwaga</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="search_only_on_s">Szukaj tylko na %s</string>
|
||||||
|
<string name="about_app_translation_summary">Przetłumacz tą aplikację</string>
|
||||||
|
<string name="about_app_translation">Tłumaczenie</string>
|
||||||
|
<string name="error_empty_name">Musisz wpisać nazwę</string>
|
||||||
|
<string name="available_sources">Dostępne źródła</string>
|
||||||
|
<string name="dynamic_theme">Motyw dynamiczny</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="related">Szukaj podobnych</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="text_downloads_holder">Brak aktywnych pobrań</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="restart">Uruchom ponownie</string>
|
||||||
|
<string name="clear_search_history">Wyczyść historię wyszukiwania</string>
|
||||||
|
<string name="operation_not_supported">Ta operacja nie jest obsługiwana</string>
|
||||||
|
<string name="wait_for_loading_finish">Poczekaj na zakończenie ładowania…</string>
|
||||||
|
<string name="sort_order">Tryb sortowania</string>
|
||||||
|
<string name="content">Treści</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="network_consumption_warning">Może to spowodować przeniesienie dużej ilości danych</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="update_check_failed">Nie można wyszukać aktualizacji</string>
|
||||||
|
<string name="right_to_left">Od prawej do lewej</string>
|
||||||
|
<string name="zoom_mode_keep_start">Trzymaj na starcie</string>
|
||||||
|
<string name="report_github">Utwórz problem na GitHubie</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="chapters_checking_progress">Sprawdzanie nowych rozdziałów: %1$d z %2$d</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="_and_x_more">…i jeszcze %1$d</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_text">Pobierz lub przeczytaj ten brakujący rozdział online.</string>
|
||||||
|
<string name="chapter_is_missing">Brak rozdziału</string>
|
||||||
|
<string name="about_feedback">Komentarz</string>
|
||||||
|
<string name="about_feedback_4pda">Temat na 4PDA</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="dynamic_theme_summary">Stosuje motyw utworzony na podstawie schematu kolorów Twojej tapety</string>
|
||||||
|
<string name="importing_progress">Importowanie mangi: %1$d z %2$d</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 lokalnie na tym urządzeniu. Twoje dane osobowe nie są przekazywane do żadnych usług</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="batch_manga_save_confirm">Pobrać wszystkie wybrane mangi i ich rozdziały? Może to zużyć dużo danych i pamięci.</string>
|
||||||
|
<string name="parallel_downloads">Pobieranie równoległe</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. Może to zająć trochę czasu</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? Wszystkie 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="removed_from_s">Usunięto z „%s”</string>
|
||||||
|
<string name="not_found_404">Treść nie została znaleziona lub została usunięta</string>
|
||||||
|
<string name="app_update_available_s">Dostępna aktualizacja aplikacji: %s</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="webtoon_zoom_summary">Zezwalaj na gest powiększania/pomniejszania w trybie webtoon (beta)</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:<br><tt>%1$s</tt><br><br>1. Spróbuj <a href=%2$s>otworzyć mangę w przeglądarce internetowej</a> aby upewnić się, że jest dostępna w źródle<br>2. Jeśli jest dostępna, wyślij raport o błędzie do programistów.</string>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<bool name="com_samsung_android_icon_container_has_icon_container">false</bool>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<locale-config
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<locale android:name="en" />
|
||||||
|
<locale android:name="ar" />
|
||||||
|
<locale android:name="be" />
|
||||||
|
<locale android:name="bn" />
|
||||||
|
<locale android:name="de" />
|
||||||
|
<locale android:name="el" />
|
||||||
|
<locale android:name="es" />
|
||||||
|
<locale android:name="fa" />
|
||||||
|
<locale android:name="fi" />
|
||||||
|
<locale android:name="fr" />
|
||||||
|
<locale android:name="in" />
|
||||||
|
<locale android:name="it" />
|
||||||
|
<locale android:name="ja" />
|
||||||
|
<locale android:name="nb-rNO" />
|
||||||
|
<locale android:name="pl" />
|
||||||
|
<locale android:name="pt" />
|
||||||
|
<locale android:name="pt-rBR" />
|
||||||
|
<locale android:name="ru" />
|
||||||
|
<locale android:name="si" />
|
||||||
|
<locale android:name="sr" />
|
||||||
|
<locale android:name="sv" />
|
||||||
|
<locale android:name="tr" />
|
||||||
|
<locale android:name="uk" />
|
||||||
|
<locale android:name="zh-rCN" />
|
||||||
|
<locale android:name="zh-rTW" />
|
||||||
|
</locale-config>
|
||||||
Loading…
Reference in New Issue