Merge branch 'devel' into feature/nextgen

# Conflicts:
#	app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt
#	app/src/main/res/values/strings.xml
This commit is contained in:
Zakhar Timoshenko
2022-07-20 21:39:43 +03:00
17 changed files with 362 additions and 326 deletions

View File

@@ -14,8 +14,8 @@ android {
applicationId 'org.koitharu.kotatsu'
minSdkVersion 21
targetSdkVersion 32
versionCode 417
versionName '3.4.5'
versionCode 418
versionName '3.4.6'
generatedDensities = []
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -83,7 +83,7 @@ afterEvaluate {
}
}
dependencies {
implementation('com.github.nv95:kotatsu-parsers:30071709af') {
implementation('com.github.nv95:kotatsu-parsers:fadb06aabb') {
exclude group: 'org.json', module: 'json'
}
@@ -127,7 +127,6 @@ dependencies {
implementation 'ch.acra:acra-mail:5.9.5'
implementation 'ch.acra:acra-dialog:5.9.5'
debugImplementation 'org.jsoup:jsoup:1.15.2'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
testImplementation 'junit:junit:4.13.2'

View File

@@ -1,3 +0,0 @@
package org.koitharu.kotatsu.core.exceptions
class MangaNotFoundException(s: String? = null) : RuntimeException(s)

View File

@@ -8,9 +8,11 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.suspendCancellableCoroutine
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.browser.BrowserActivity
import org.koitharu.kotatsu.browser.cloudflare.CloudFlareDialog
import org.koitharu.kotatsu.core.exceptions.CloudFlareProtectedException
import org.koitharu.kotatsu.parsers.exception.AuthRequiredException
import org.koitharu.kotatsu.parsers.exception.NotFoundException
import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.settings.sources.auth.SourceAuthActivity
import org.koitharu.kotatsu.utils.TaggedActivityResult
@@ -43,6 +45,10 @@ class ExceptionResolver private constructor(
suspend fun resolve(e: Throwable): Boolean = when (e) {
is CloudFlareProtectedException -> resolveCF(e.url)
is AuthRequiredException -> resolveAuthException(e.source)
is NotFoundException -> {
openInBrowser(e.url)
false
}
else -> false
}
@@ -69,6 +75,11 @@ class ExceptionResolver private constructor(
sourceAuthContract.launch(source)
}
private fun openInBrowser(url: String) {
val context = activity ?: fragment?.activity ?: return
context.startActivity(BrowserActivity.newIntent(context, url, null))
}
private fun getFragmentManager() = checkNotNull(fragment?.childFragmentManager ?: activity?.supportFragmentManager)
companion object {
@@ -77,6 +88,7 @@ class ExceptionResolver private constructor(
fun getResolveStringId(e: Throwable) = when (e) {
is CloudFlareProtectedException -> R.string.captcha_solve
is AuthRequiredException -> R.string.sign_in
is NotFoundException -> if (e.url.isNotEmpty()) R.string.open_in_browser else 0
else -> 0
}

View File

@@ -5,7 +5,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import org.koitharu.kotatsu.base.domain.MangaDataRepository
import org.koitharu.kotatsu.base.domain.MangaIntent
import org.koitharu.kotatsu.core.exceptions.MangaNotFoundException
import org.koitharu.kotatsu.core.model.MangaHistory
import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.prefs.AppSettings
@@ -13,6 +12,7 @@ import org.koitharu.kotatsu.details.ui.model.ChapterListItem
import org.koitharu.kotatsu.details.ui.model.toListItem
import org.koitharu.kotatsu.history.domain.HistoryRepository
import org.koitharu.kotatsu.local.domain.LocalMangaRepository
import org.koitharu.kotatsu.parsers.exception.NotFoundException
import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaSource
@@ -40,8 +40,7 @@ class MangaDetailsDelegate(
val mangaId = intent.manga?.id ?: intent.mangaId
suspend fun doLoad() {
var manga = mangaDataRepository.resolveIntent(intent)
?: throw MangaNotFoundException("Cannot find manga")
var manga = mangaDataRepository.resolveIntent(intent) ?: throw NotFoundException("Cannot find manga", "")
mangaData.value = manga
manga = MangaRepository(manga.source).getDetails(manga)
// find default branch

View File

@@ -137,6 +137,11 @@ class ReaderActivity :
return false
}
}
R.id.action_save_page -> {
viewModel.saveCurrentState(readerManager.currentReader?.getCurrentState())
val page = viewModel.getCurrentPage() ?: return false
viewModel.saveCurrentPage(page, savePageRequest)
}
R.id.action_bookmark -> {
if (viewModel.isBookmarkAdded.value == true) {
viewModel.removeBookmark()

View File

@@ -16,11 +16,11 @@ import org.koitharu.kotatsu.base.domain.MangaUtils
import org.koitharu.kotatsu.base.ui.BaseViewModel
import org.koitharu.kotatsu.bookmarks.domain.Bookmark
import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository
import org.koitharu.kotatsu.core.exceptions.MangaNotFoundException
import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.prefs.*
import org.koitharu.kotatsu.history.domain.HistoryRepository
import org.koitharu.kotatsu.history.domain.PROGRESS_NONE
import org.koitharu.kotatsu.parsers.exception.NotFoundException
import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaPage
@@ -251,7 +251,7 @@ class ReaderViewModel(
private fun loadImpl() {
loadingJob = launchLoadingJob(Dispatchers.Default) {
var manga = dataRepository.resolveIntent(intent) ?: throw MangaNotFoundException("Cannot find manga")
var manga = dataRepository.resolveIntent(intent) ?: throw NotFoundException("Cannot find manga", "")
mangaData.value = manga
val repo = MangaRepository(manga.source)
manga = repo.getDetails(manga)

View File

@@ -8,6 +8,7 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.exceptions.*
import org.koitharu.kotatsu.parsers.exception.AuthRequiredException
import org.koitharu.kotatsu.parsers.exception.ContentUnavailableException
import org.koitharu.kotatsu.parsers.exception.NotFoundException
import org.koitharu.kotatsu.parsers.exception.ParseException
import java.net.SocketTimeoutException
@@ -24,6 +25,7 @@ fun Throwable.getDisplayMessage(resources: Resources): String = when (this) {
is ParseException -> shortMessage
is SocketTimeoutException -> resources.getString(R.string.network_error)
is WrongPasswordException -> resources.getString(R.string.wrong_password)
is NotFoundException -> resources.getString(R.string.not_found_404)
else -> localizedMessage
} ?: resources.getString(R.string.error_occurred)
@@ -32,7 +34,7 @@ fun Throwable.isReportable(): Boolean {
return true
}
return this is ParseException || this is IllegalArgumentException ||
this is IllegalStateException || this is RuntimeException
this is IllegalStateException || this.javaClass == RuntimeException::class.java
}
fun Throwable.report(message: String?) {

View File

@@ -314,4 +314,7 @@
<string name="status_completed">Abgeschlossen</string>
<string name="exclude_nsfw_from_history_summary">Manga, die als NSFW markiert sind, werden nicht in den Verlauf aufgenommen und Ihr Fortschritt wird nicht gespeichert.</string>
<string name="data_deletion">Datenlöschung</string>
<string name="invalid_domain_message">Ungültige Domäne</string>
<string name="status_reading">Lesen</string>
<string name="select_range">Bereich auswählen</string>
</resources>

View File

@@ -317,4 +317,5 @@
<string name="exclude_nsfw_from_history_summary">El manga marcado como NSFW nunca se añadirá al historial y no se guardará tu progreso</string>
<string name="clear_cookies_summary">Puede ayudar en caso de algunos problemas. Todas las autorizaciones serán invalidadas</string>
<string name="show_all">Mostrar todo</string>
<string name="invalid_domain_message">Dominio no válido</string>
</resources>

View File

@@ -308,4 +308,5 @@
<string name="status_re_reading">Lukemassa uudelleen</string>
<string name="data_deletion">Tietojen poistaminen</string>
<string name="show_all">Näytä kaikki</string>
<string name="select_range">Valitse alue</string>
</resources>

View File

@@ -317,4 +317,6 @@
<string name="logout">Se déconnecter</string>
<string name="status_completed">Terminé</string>
<string name="status_re_reading">Relecture</string>
<string name="invalid_domain_message">Domaine invalide</string>
<string name="select_range">Sélectionner une plage</string>
</resources>

View File

@@ -317,4 +317,6 @@
<string name="status_planned">Pianificato</string>
<string name="status_completed">Finito</string>
<string name="status_dropped">Abbandonato</string>
<string name="invalid_domain_message">Dominio non valido</string>
<string name="select_range">Seleziona l\'intervallo</string>
</resources>

View File

@@ -317,4 +317,5 @@
<string name="show_reading_indicators">読書の進行状況インジケーターを表示</string>
<string name="exclude_nsfw_from_history_summary">NSFWとマークされたマンガは履歴に追加されず、進行状況も保存されない</string>
<string name="show_all">すべて表示</string>
<string name="invalid_domain_message">無効なドメイン</string>
</resources>

View File

@@ -317,4 +317,6 @@
<string name="status_planned">Planlandı</string>
<string name="status_re_reading">Yeniden okunuyor</string>
<string name="show_all">Tümünü göster</string>
<string name="invalid_domain_message">Geçersiz etki alanı</string>
<string name="select_range">Aralık seç</string>
</resources>

View File

@@ -1,305 +1,321 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="wait_for_loading_finish">Дочекайтеся завершення завантаження…</string>
<string name="delete">Видалити</string>
<string name="nothing_found">Нічого не знайдено</string>
<string name="add_to_favourites">Додати до улюблених</string>
<string name="clear_history">Очистити історію</string>
<string name="history_is_empty">Історії ще немає</string>
<string name="add">Додати</string>
<string name="save">Зберегти</string>
<string name="local_storage">Локальне сховище</string>
<string name="network_error">Не вдалося підключитися до Інтернету</string>
<string name="details">Деталі</string>
<string name="try_again">Спробуйте ще раз</string>
<string name="open_menu">Відкрити меню</string>
<string name="you_have_not_favourites_yet">Улюблених ще немає</string>
<string name="add_new_category">Нова категорія</string>
<string name="enter_category_name">Введіть назву категорії</string>
<string name="download_complete">Завантажено</string>
<string name="favourites">Уподобання</string>
<string name="history">Історія</string>
<string name="error_occurred">Сталася помилка</string>
<string name="chapters">Розділи</string>
<string name="list">Список</string>
<string name="detailed_list">Детальний список</string>
<string name="list_mode">Режим списку</string>
<string name="settings">Налаштування</string>
<string name="remote_sources">Віддалені джерела</string>
<string name="loading_">Завантаження…</string>
<string name="computing_">Обчислення…</string>
<string name="chapter_d_of_d">Розділ %1$d із %2$d</string>
<string name="close">Закрити</string>
<string name="read">Читати</string>
<string name="grid">Таблиця</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="processing_">Обробка…</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="light">Світла</string>
<string name="dark">Темна</string>
<string name="pages">Сторінки</string>
<string name="text_clear_history_prompt">Очистити всю історію читання перманентно\?</string>
<string name="remove">Видалити</string>
<string name="_s_removed_from_history">\"%s\" видалено з історії</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="operation_not_supported">Ця операція не підтримується</string>
<string name="text_file_not_supported">Виберіть файл ZIP або CBZ.</string>
<string name="no_description">Немає опису</string>
<string name="history_and_cache">Історія та кеш</string>
<string name="clear_pages_cache">Очистити кеш сторінок</string>
<string name="cache">Кеш</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="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="volume_buttons">Кнопки гучності</string>
<string name="cancelling_">Скасування…</string>
<string name="error">Помилка</string>
<string name="clear_thumbs_cache">Очистити кеш мініатюр</string>
<string name="clear_search_history">Очистити історію пошуку</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="application_update">Перевірити наявність нових версій додатка</string>
<string name="app_update_available">Доступна нова версія додатка</string>
<string name="large_manga_save_confirm">Ця манґа має %s. Зберегти все це\?</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="new_chapters">Нові розділи</string>
<string name="download">Завантажити</string>
<string name="read_from_start">Читати з початку</string>
<string name="restart">Перезавантажити</string>
<string name="vibration">Вібрація</string>
<string name="favourites_categories">Улюблені категорії</string>
<string name="category_delete_confirm">Вилучити категорію \"%s\" зі своїх уподобань\?
<string name="wait_for_loading_finish">Дочекайтеся завершення завантаження…</string>
<string name="delete">Видалити</string>
<string name="nothing_found">Нічого не знайдено</string>
<string name="add_to_favourites">Додати до улюблених</string>
<string name="clear_history">Очистити історію</string>
<string name="history_is_empty">Історії ще немає</string>
<string name="add">Додати</string>
<string name="save">Зберегти</string>
<string name="local_storage">Локальне сховище</string>
<string name="network_error">Не вдалося підключитися до Інтернету</string>
<string name="details">Деталі</string>
<string name="try_again">Спробуйте ще раз</string>
<string name="open_menu">Відкрити меню</string>
<string name="you_have_not_favourites_yet">Улюблених ще немає</string>
<string name="add_new_category">Нова категорія</string>
<string name="enter_category_name">Введіть назву категорії</string>
<string name="download_complete">Завантажено</string>
<string name="favourites">Уподобання</string>
<string name="history">Історія</string>
<string name="error_occurred">Сталася помилка</string>
<string name="chapters">Розділи</string>
<string name="list">Список</string>
<string name="detailed_list">Детальний список</string>
<string name="list_mode">Режим списку</string>
<string name="settings">Налаштування</string>
<string name="remote_sources">Віддалені джерела</string>
<string name="loading_">Завантаження…</string>
<string name="computing_">Обчислення…</string>
<string name="chapter_d_of_d">Розділ %1$d із %2$d</string>
<string name="close">Закрити</string>
<string name="read">Читати</string>
<string name="grid">Таблиця</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="processing_">Обробка…</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="light">Світла</string>
<string name="dark">Темна</string>
<string name="pages">Сторінки</string>
<string name="text_clear_history_prompt">Очистити всю історію читання перманентно\?</string>
<string name="remove">Видалити</string>
<string name="_s_removed_from_history">\"%s\" видалено з історії</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="operation_not_supported">Ця операція не підтримується</string>
<string name="text_file_not_supported">Виберіть файл ZIP або CBZ.</string>
<string name="no_description">Немає опису</string>
<string name="history_and_cache">Історія та кеш</string>
<string name="clear_pages_cache">Очистити кеш сторінок</string>
<string name="cache">Кеш</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="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="volume_buttons">Кнопки гучності</string>
<string name="cancelling_">Скасування…</string>
<string name="error">Помилка</string>
<string name="clear_thumbs_cache">Очистити кеш мініатюр</string>
<string name="clear_search_history">Очистити історію пошуку</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="application_update">Перевірити наявність нових версій додатка</string>
<string name="app_update_available">Доступна нова версія додатка</string>
<string name="large_manga_save_confirm">Ця манґа має %s. Зберегти все це\?</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="new_chapters">Нові розділи</string>
<string name="download">Завантажити</string>
<string name="read_from_start">Читати з початку</string>
<string name="restart">Перезавантажити</string>
<string name="vibration">Вібрація</string>
<string name="favourites_categories">Улюблені категорії</string>
<string name="category_delete_confirm">Вилучити категорію \"%s\" зі своїх уподобань\?
\nВся манґа в ній буде втрачена.</string>
<string name="remove_category">Видалити</string>
<string name="text_empty_holder_primary">Тут якось пусто…</string>
<string name="text_search_holder_secondary">Спробуйте переформулювати запит.</string>
<string name="text_history_holder_primary">Те, що ви читаєте, буде показано тут</string>
<string name="text_history_holder_secondary">Знайдіть, що читати, у бічному меню.</string>
<string name="text_local_holder_primary">Спочатку збережіть щось</string>
<string name="text_local_holder_secondary">Збережіть його з онлайн-джерела або імпортуйте файли.</string>
<string name="manga_shelf">Полиця</string>
<string name="recent_manga">Недавні</string>
<string name="pages_animation">Анімація перегортання</string>
<string name="manga_save_location">Тека для завантажень</string>
<string name="other_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="related">Схожі</string>
<string name="new_version_s">Нова версія: %s</string>
<string name="size_s">Розмір: %s</string>
<string name="waiting_for_network">Очікування мережі…</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="track_sources">Стежити за оновленнями</string>
<string name="dont_check">Не перевіряти</string>
<string name="wrong_password">Неправильний пароль</string>
<string name="protect_application">Захистити додаток</string>
<string name="protect_application_summary">Запитувати пароль під час запуску Kotatsu</string>
<string name="repeat_password">Повторіть пароль</string>
<string name="passwords_mismatch">Паролі не співпадають</string>
<string name="about">Про програму</string>
<string name="app_version">Версія %s</string>
<string name="check_for_updates">Перевірити наявність оновлень</string>
<string name="checking_for_updates">Перевірка наявності оновлень…</string>
<string name="update_check_failed">Не вдалося перевірити оновлення</string>
<string name="no_update_available">Немає доступних оновлень</string>
<string name="create_category">Нова категорія</string>
<string name="scale_mode">Режим масштабування</string>
<string name="zoom_mode_fit_center">Вмістити в екран</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="backup_restore">Резервне копіювання та відновлення</string>
<string name="data_restored">Відновлено</string>
<string name="preparing_">Підготовка…</string>
<string name="report_github">Створити проблему на GitHub</string>
<string name="file_not_found">Файл не знайдено</string>
<string name="data_restored_with_errors">Дані відновлено, але є деякі помилки</string>
<string name="backup_information">Ви можете створити резервну копію своєї історії та уподобань і відновити їх</string>
<string name="just_now">Тільки що</string>
<string name="tap_to_try_again">Торкніться, щоб спробувати ще раз</string>
<string name="reader_mode_hint">Обраний режим буде запам\'ятован для цієї манги</string>
<string name="captcha_required">Потрібна CAPTCHA</string>
<string name="captcha_solve">Пройти</string>
<string name="clear_cookies">Очистити кукі</string>
<string name="cookies_cleared">Всі кукі були видалені</string>
<string name="clear_feed">Очистити стрічку</string>
<string name="check_for_new_chapters">Перевірити нові розділи</string>
<string name="reverse">В зворотньому порядку</string>
<string name="sign_in">Увійти</string>
<string name="auth_required">Увійдіть, щоб переглянути цей вміст</string>
<string name="default_s">За замовчуванням: %s</string>
<string name="_and_x_more">…і ще %1$d</string>
<string name="next">Далі</string>
<string name="protect_application_subtitle">Введіть пароль для запуску програми</string>
<string name="confirm">Підтвердити</string>
<string name="password_length_hint">Пароль має містити 4 символи або більше</string>
<string name="search_only_on_s">Пошук лише на %s</string>
<string name="welcome">Ласкаво просимо</string>
<string name="backup_saved">Резервна копія збережена</string>
<string name="read_more">Докладніше</string>
<string name="queued">У черзі</string>
<string name="text_downloads_holder">Немає активних завантажень</string>
<string name="about_app_translation_summary">Допомогти з перекладом програми</string>
<string name="about_app_translation">Переклад</string>
<string name="about_feedback_4pda">Тема на 4PDA</string>
<string name="auth_complete">Авторизація виконана</string>
<string name="auth_not_supported_by">Вхід на %s не підтримується</string>
<string name="text_clear_cookies_prompt">Ви вийдете з усіх джерел</string>
<string name="state_finished">Завершена</string>
<string name="state_ongoing">Триває</string>
<string name="date_format">Формат дати</string>
<string name="exclude_nsfw_from_history">Виключити NSFW манґу з історії</string>
<string name="error_empty_name">Ви повинні ввести ім’я</string>
<string name="show_pages_numbers">Показувати номери сторінок</string>
<string name="enabled_sources">Включені джерела</string>
<string name="dynamic_theme_summary">Застосовує тему програми, засновану на палітрі кольорів шпалер на пристрої</string>
<string name="importing_progress">Імпорт манґи: %1$d з %2$d</string>
<string name="screenshots_policy">Політика щодо знімків екрана</string>
<string name="screenshots_allow">Дозволити</string>
<string name="suggestions_summary">Пропонувати манґу на основі ваших уподобань</string>
<string name="suggestions_info">Усі дані аналізуються локально на цьому пристрої. Передача ваших персональних даних у будь-які сервіси не здійснюється</string>
<string name="text_suggestion_holder">Почніть читати манґу, і ви отримаєте персоналізовані пропозиції</string>
<string name="enabled">Увімкнено</string>
<string name="disabled">Вимкнено</string>
<string name="reset_filter">Скинути фільтр</string>
<string name="find_genre">Знайти жанр</string>
<string name="onboard_text">Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях.</string>
<string name="only_using_wifi">Тільки по Wi-Fi</string>
<string name="preload_pages">Попереднє завантаження сторінок</string>
<string name="logged_in_as">Ви увійшли як %s</string>
<string name="nsfw">18+</string>
<string name="various_languages">Різні мови</string>
<string name="search_chapters">Знайти розділ</string>
<string name="chapters_empty">Немає розділів у цій манзі</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="content">Зміст</string>
<string name="suggestions_updating">Оновлення пропозицій</string>
<string name="text_delete_local_manga_batch">Видалити вибрані елементи з пристрою назавжди\?</string>
<string name="removal_completed">Видалення завершено</string>
<string name="batch_manga_save_confirm">Ви впевнені, що хочете завантажити всю вибрану манґу з усіма її розділами\? Це може споживати багато трафіку та пам’яті</string>
<string name="parallel_downloads">Завантажувати паралельно</string>
<string name="download_slowdown">Сповільнення завантаження</string>
<string name="local_manga_processing">Обробка збереженої манґи</string>
<string name="hide">Приховати</string>
<string name="new_sources_text">Доступні нові джерела манґи</string>
<string name="close_menu">Закрити меню</string>
<string name="manga_downloading_">Завантаження…</string>
<string name="clear">Очистити</string>
<string name="downloads">Завантаження</string>
<string name="automatic">Як в системі</string>
<string name="chapter_is_missing_text">Завантажте або прочитайте цей відсутній розділ онлайн.</string>
<string name="chapter_is_missing">Розділ відсутній</string>
<string name="about_feedback">Зворотній зв\'язок</string>
<string name="genres">Жанри</string>
<string name="system_default">За замовчуванням</string>
<string name="always">Завжди</string>
<string name="_continue">Продовжити</string>
<string name="_import">Імпорт</string>
<string name="taps_on_edges">Натискання по краях</string>
<string name="warning">Попередження</string>
<string name="network_consumption_warning">Це може призвести до витрати великої кількості трафіку</string>
<string name="dont_ask_again">Більше не питати</string>
<string name="notifications_settings">Налаштування сповіщень</string>
<string name="rename">Перейменувати</string>
<string name="show_notification_app_update">Показувати сповіщення, якщо доступна нова версія</string>
<string name="open_in_browser">Відкрити у веб-браузері</string>
<string name="not_available">Недоступно</string>
<string name="cannot_find_available_storage">Немає доступного сховища</string>
<string name="text_feed_holder">Нові розділи того, що ви читаєте, показано тут</string>
<string name="search_results">Результати пошуку</string>
<string name="enter_password">Введіть пароль</string>
<string name="notification_sound">Звук сповіщень</string>
<string name="light_indicator">Світлодіодний індикатор</string>
<string name="categories_">Категорії…</string>
<string name="text_categories_holder">Ви можете використовувати категорії для впорядкування своїх уподобань. Натисніть «+», щоб створити категорію</string>
<string name="yesterday">Учора</string>
<string name="right_to_left">Справа наліво (←)</string>
<string name="create_backup">Створити резервну копію</string>
<string name="restore_backup">Відновити з резервної копії</string>
<string name="data_restored_success">Всі дані були відновлені</string>
<string name="group">Групувати</string>
<string name="today">Сьогодні</string>
<string name="silent">Без звуку</string>
<string name="long_ago">Давно</string>
<string name="chapters_checking_progress">Перевірка наявності нових розділів: %1$d з %2$d</string>
<string name="text_clear_updates_feed_prompt">Очистити всю історію оновлень назавжди\?</string>
<string name="tracker_warning">Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання.</string>
<string name="text_clear_search_history_prompt">Видалити всі останні пошукові запити назавжди\?</string>
<string name="other">Інше</string>
<string name="available_sources">Доступні джерела</string>
<string name="dynamic_theme">Динамічна тема</string>
<string name="screenshots_block_nsfw">Блок на NSFW</string>
<string name="screenshots_block_all">Завжди блокувати</string>
<string name="suggestions">Пропозиції</string>
<string name="suggestions_enable">Увімкнути пропозиції</string>
<string name="exclude_nsfw_from_suggestions">Не пропонувати NSFW манґу</string>
<string name="filter_load_error">Не вдалося завантажити список жанрів</string>
<string name="never">Ніколи</string>
<string name="appearance">Зовнішній вигляд</string>
<string name="suggestions_excluded_genres">Виключити жанри</string>
<string name="suggestions_excluded_genres_summary">Укажіть жанри, які ви не хочете бачити в пропозиціях</string>
<string name="download_slowdown_summary">Допомагає уникнути блокування вашої IP-адреси</string>
<string name="chapters_will_removed_background">Розділи будуть видалені у фоновому режимі. Це може зайняти деякий час</string>
<string name="check_new_chapters_title">Перевіряти наявність нових розділів і повідомляти про них</string>
<string name="show_notification_new_chapters_on">Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте</string>
<string name="notifications_enable">Увімкнути сповіщення</string>
<string name="show_notification_new_chapters_off">Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку</string>
<string name="empty_favourite_categories">Немає улюблених категорій</string>
<string name="name">Назва</string>
<string name="edit">Змінити</string>
<string name="edit_category">Змінити категорію</string>
<string name="bookmark_add">Додати закладку</string>
<string name="bookmark_remove">Видалити закладку</string>
<string name="bookmarks">Закладки</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 через HTTPS</string>
<string name="default_mode">Режим за замовчуванням</string>
<string name="detect_reader_mode_summary">Автоматично визначати, чи є манга вебтуном</string>
<string name="detect_reader_mode">Автовизначення режиму читання</string>
<string name="disable_battery_optimization">Вимкнути оптимізацію акумулятора</string>
<string name="disable_battery_optimization_summary">Допомагає з перевірками фонових оновлень</string>
<string name="crash_text">Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити.</string>
<string name="send">Надіслати</string>
<string name="disable_all">Вимкнути все</string>
<string name="use_fingerprint">Використовувати відбиток пальця, якщо доступно</string>
<string name="appwidget_shelf_description">Манга з Вашого улюбленого</string>
<string name="appwidget_recent_description">Манга, яку Ви нещодавно читали</string>
<string name="remove_category">Видалити</string>
<string name="text_empty_holder_primary">Тут якось пусто…</string>
<string name="text_search_holder_secondary">Спробуйте переформулювати запит.</string>
<string name="text_history_holder_primary">Те, що ви читаєте, буде показано тут</string>
<string name="text_history_holder_secondary">Знайдіть, що читати, у бічному меню.</string>
<string name="text_local_holder_primary">Спочатку збережіть щось</string>
<string name="text_local_holder_secondary">Збережіть його з онлайн-джерела або імпортуйте файли.</string>
<string name="manga_shelf">Полиця</string>
<string name="recent_manga">Недавні</string>
<string name="pages_animation">Анімація перегортання</string>
<string name="manga_save_location">Тека для завантажень</string>
<string name="other_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="related">Схожі</string>
<string name="new_version_s">Нова версія: %s</string>
<string name="size_s">Розмір: %s</string>
<string name="waiting_for_network">Очікування мережі…</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="track_sources">Стежити за оновленнями</string>
<string name="dont_check">Не перевіряти</string>
<string name="wrong_password">Неправильний пароль</string>
<string name="protect_application">Захистити додаток</string>
<string name="protect_application_summary">Запитувати пароль під час запуску Kotatsu</string>
<string name="repeat_password">Повторіть пароль</string>
<string name="passwords_mismatch">Паролі не співпадають</string>
<string name="about">Про програму</string>
<string name="app_version">Версія %s</string>
<string name="check_for_updates">Перевірити наявність оновлень</string>
<string name="checking_for_updates">Перевірка наявності оновлень…</string>
<string name="update_check_failed">Не вдалося перевірити оновлення</string>
<string name="no_update_available">Немає доступних оновлень</string>
<string name="create_category">Нова категорія</string>
<string name="scale_mode">Режим масштабування</string>
<string name="zoom_mode_fit_center">Вмістити в екран</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="backup_restore">Резервне копіювання та відновлення</string>
<string name="data_restored">Відновлено</string>
<string name="preparing_">Підготовка…</string>
<string name="report_github">Створити проблему на GitHub</string>
<string name="file_not_found">Файл не знайдено</string>
<string name="data_restored_with_errors">Дані відновлено, але є деякі помилки</string>
<string name="backup_information">Ви можете створити резервну копію своєї історії та уподобань і відновити їх</string>
<string name="just_now">Тільки що</string>
<string name="tap_to_try_again">Торкніться, щоб спробувати ще раз</string>
<string name="reader_mode_hint">Обраний режим буде запам\'ятован для цієї манги</string>
<string name="captcha_required">Потрібна CAPTCHA</string>
<string name="captcha_solve">Пройти</string>
<string name="clear_cookies">Очистити кукі</string>
<string name="cookies_cleared">Всі кукі були видалені</string>
<string name="clear_feed">Очистити стрічку</string>
<string name="check_for_new_chapters">Перевірити нові розділи</string>
<string name="reverse">В зворотньому порядку</string>
<string name="sign_in">Увійти</string>
<string name="auth_required">Увійдіть, щоб переглянути цей вміст</string>
<string name="default_s">За замовчуванням: %s</string>
<string name="_and_x_more">…і ще %1$d</string>
<string name="next">Далі</string>
<string name="protect_application_subtitle">Введіть пароль для запуску програми</string>
<string name="confirm">Підтвердити</string>
<string name="password_length_hint">Пароль має містити 4 символи або більше</string>
<string name="search_only_on_s">Пошук лише на %s</string>
<string name="welcome">Ласкаво просимо</string>
<string name="backup_saved">Резервна копія збережена</string>
<string name="read_more">Докладніше</string>
<string name="queued">У черзі</string>
<string name="text_downloads_holder">Немає активних завантажень</string>
<string name="about_app_translation_summary">Допомогти з перекладом програми</string>
<string name="about_app_translation">Переклад</string>
<string name="about_feedback_4pda">Тема на 4PDA</string>
<string name="auth_complete">Авторизація виконана</string>
<string name="auth_not_supported_by">Вхід на %s не підтримується</string>
<string name="text_clear_cookies_prompt">Ви вийдете з усіх джерел</string>
<string name="state_finished">Завершена</string>
<string name="state_ongoing">Триває</string>
<string name="date_format">Формат дати</string>
<string name="exclude_nsfw_from_history">Виключити NSFW манґу з історії</string>
<string name="error_empty_name">Ви повинні ввести ім’я</string>
<string name="show_pages_numbers">Показувати номери сторінок</string>
<string name="enabled_sources">Включені джерела</string>
<string name="dynamic_theme_summary">Застосовує тему програми, засновану на палітрі кольорів шпалер на пристрої</string>
<string name="importing_progress">Імпорт манґи: %1$d з %2$d</string>
<string name="screenshots_policy">Політика щодо знімків екрана</string>
<string name="screenshots_allow">Дозволити</string>
<string name="suggestions_summary">Пропонувати манґу на основі ваших уподобань</string>
<string name="suggestions_info">Усі дані аналізуються локально на цьому пристрої. Передача ваших персональних даних у будь-які сервіси не здійснюється</string>
<string name="text_suggestion_holder">Почніть читати манґу, і ви отримаєте персоналізовані пропозиції</string>
<string name="enabled">Увімкнено</string>
<string name="disabled">Вимкнено</string>
<string name="reset_filter">Скинути фільтр</string>
<string name="find_genre">Знайти жанр</string>
<string name="onboard_text">Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях.</string>
<string name="only_using_wifi">Тільки по Wi-Fi</string>
<string name="preload_pages">Попереднє завантаження сторінок</string>
<string name="logged_in_as">Ви увійшли як %s</string>
<string name="nsfw">18+</string>
<string name="various_languages">Різні мови</string>
<string name="search_chapters">Знайти розділ</string>
<string name="chapters_empty">Немає розділів у цій манзі</string>
<string name="percent_string_pattern">%1$s%%</string>
<string name="content">Зміст</string>
<string name="suggestions_updating">Оновлення пропозицій</string>
<string name="text_delete_local_manga_batch">Видалити вибрані елементи з пристрою назавжди\?</string>
<string name="removal_completed">Видалення завершено</string>
<string name="batch_manga_save_confirm">Ви впевнені, що хочете завантажити всю вибрану манґу з усіма її розділами\? Це може споживати багато трафіку та пам’яті</string>
<string name="parallel_downloads">Завантажувати паралельно</string>
<string name="download_slowdown">Сповільнення завантаження</string>
<string name="local_manga_processing">Обробка збереженої манґи</string>
<string name="hide">Приховати</string>
<string name="new_sources_text">Доступні нові джерела манґи</string>
<string name="close_menu">Закрити меню</string>
<string name="manga_downloading_">Завантаження…</string>
<string name="clear">Очистити</string>
<string name="downloads">Завантаження</string>
<string name="automatic">Як в системі</string>
<string name="chapter_is_missing_text">Завантажте або прочитайте цей відсутній розділ онлайн.</string>
<string name="chapter_is_missing">Розділ відсутній</string>
<string name="about_feedback">Зворотній зв\'язок</string>
<string name="genres">Жанри</string>
<string name="system_default">За замовчуванням</string>
<string name="always">Завжди</string>
<string name="_continue">Продовжити</string>
<string name="_import">Імпорт</string>
<string name="taps_on_edges">Натискання по краях</string>
<string name="warning">Попередження</string>
<string name="network_consumption_warning">Це може призвести до витрати великої кількості трафіку</string>
<string name="dont_ask_again">Більше не питати</string>
<string name="notifications_settings">Налаштування сповіщень</string>
<string name="rename">Перейменувати</string>
<string name="show_notification_app_update">Показувати сповіщення, якщо доступна нова версія</string>
<string name="open_in_browser">Відкрити у веб-браузері</string>
<string name="not_available">Недоступно</string>
<string name="cannot_find_available_storage">Немає доступного сховища</string>
<string name="text_feed_holder">Нові розділи того, що ви читаєте, показано тут</string>
<string name="search_results">Результати пошуку</string>
<string name="enter_password">Введіть пароль</string>
<string name="notification_sound">Звук сповіщень</string>
<string name="light_indicator">Світлодіодний індикатор</string>
<string name="categories_">Категорії…</string>
<string name="text_categories_holder">Ви можете використовувати категорії для впорядкування своїх уподобань. Натисніть «+», щоб створити категорію</string>
<string name="yesterday">Учора</string>
<string name="right_to_left">Справа наліво (←)</string>
<string name="create_backup">Створити резервну копію</string>
<string name="restore_backup">Відновити з резервної копії</string>
<string name="data_restored_success">Всі дані були відновлені</string>
<string name="group">Групувати</string>
<string name="today">Сьогодні</string>
<string name="silent">Без звуку</string>
<string name="long_ago">Давно</string>
<string name="chapters_checking_progress">Перевірка наявності нових розділів: %1$d з %2$d</string>
<string name="text_clear_updates_feed_prompt">Очистити всю історію оновлень назавжди\?</string>
<string name="tracker_warning">Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання.</string>
<string name="text_clear_search_history_prompt">Видалити всі останні пошукові запити назавжди\?</string>
<string name="other">Інше</string>
<string name="available_sources">Доступні джерела</string>
<string name="dynamic_theme">Динамічна тема</string>
<string name="screenshots_block_nsfw">Блок на NSFW</string>
<string name="screenshots_block_all">Завжди блокувати</string>
<string name="suggestions">Пропозиції</string>
<string name="suggestions_enable">Увімкнути пропозиції</string>
<string name="exclude_nsfw_from_suggestions">Не пропонувати NSFW манґу</string>
<string name="filter_load_error">Не вдалося завантажити список жанрів</string>
<string name="never">Ніколи</string>
<string name="appearance">Зовнішній вигляд</string>
<string name="suggestions_excluded_genres">Виключити жанри</string>
<string name="suggestions_excluded_genres_summary">Укажіть жанри, які ви не хочете бачити в пропозиціях</string>
<string name="download_slowdown_summary">Допомагає уникнути блокування вашої IP-адреси</string>
<string name="chapters_will_removed_background">Розділи будуть видалені у фоновому режимі. Це може зайняти деякий час</string>
<string name="check_new_chapters_title">Перевіряти наявність нових розділів і повідомляти про них</string>
<string name="show_notification_new_chapters_on">Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте</string>
<string name="notifications_enable">Увімкнути сповіщення</string>
<string name="show_notification_new_chapters_off">Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку</string>
<string name="empty_favourite_categories">Немає улюблених категорій</string>
<string name="name">Назва</string>
<string name="edit">Змінити</string>
<string name="edit_category">Змінити категорію</string>
<string name="bookmark_add">Додати закладку</string>
<string name="bookmark_remove">Видалити закладку</string>
<string name="bookmarks">Закладки</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 через HTTPS</string>
<string name="default_mode">Режим за замовчуванням</string>
<string name="detect_reader_mode_summary">Автоматично визначати, чи є манга вебтуном</string>
<string name="detect_reader_mode">Автовизначення режиму читання</string>
<string name="disable_battery_optimization">Вимкнути оптимізацію акумулятора</string>
<string name="disable_battery_optimization_summary">Допомагає з перевірками фонових оновлень</string>
<string name="crash_text">Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити.</string>
<string name="send">Надіслати</string>
<string name="disable_all">Вимкнути все</string>
<string name="use_fingerprint">Використовувати відбиток пальця, якщо доступно</string>
<string name="appwidget_shelf_description">Манга з Вашого улюбленого</string>
<string name="appwidget_recent_description">Манга, яку Ви нещодавно читали</string>
<string name="invalid_domain_message">Недійсний домен</string>
<string name="report">Звіт</string>
<string name="tracking">Відстеження</string>
<string name="logout">Вийти</string>
<string name="status_planned">Заплановано</string>
<string name="status_reading">Читаю</string>
<string name="status_re_reading">Перечитую</string>
<string name="status_completed">Завершено</string>
<string name="status_on_hold">Відкладено</string>
<string name="status_dropped">Занедбано</string>
<string name="show_reading_indicators">Показувати індикатори прогресу читання</string>
<string name="data_deletion">Видалення даних</string>
<string name="show_reading_indicators_summary">Показати відсоток прочитаного в історії та обраному</string>
<string name="exclude_nsfw_from_history_summary">Манґа, позначена як NSFW, ніколи не буде додана до історії і ваш прогрес не буде збережений</string>
<string name="clear_cookies_summary">Може допомогти в разі виникнення проблем. Усі авторизації будуть анульовані</string>
<string name="show_all">Показати всі</string>
</resources>

View File

@@ -357,4 +357,5 @@
<string name="removed_from_favourites">Removed from favourites</string>
<string name="removed_from_s">Removed from \"%s\"</string>
<string name="options">Options</string>
<string name="not_found_404">Content not found or removed</string>
</resources>

View File

@@ -1,15 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="manga-ext"
path="/manga" />
<files-path
name="manga"
path="/manga" />
<external-files-path
name="backups-ext"
path="/backups" />
<files-path
name="backups"
path="/backups" />
<!-- https://issuetracker.google.com/issues/37125252 -->
<!--suppress AndroidElementNotAllowed -->
<root-path
name="root"
path="." />
</paths>