diff --git a/README.md b/README.md
index 1d693109e..82e4fada7 100644
--- a/README.md
+++ b/README.md
@@ -10,9 +10,9 @@ Kotatsu is a free and open source manga reader for Android.
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/org.koitharu.kotatsu)
-Download APK from GitHub Releases:
+Download APK directly from GitHub:
-- [Latest release](https://github.com/KotatsuApp/Kotatsu/releases/latest)
+- **[Latest release](https://github.com/KotatsuApp/Kotatsu/releases/latest)**
### Main Features
@@ -24,8 +24,8 @@ Download APK from GitHub Releases:
* Tablet-optimized material design UI
* Standard and Webtoon-optimized reader
* Notifications about new chapters with updates feed
-* Available in multiple languages
-* Password protect access to the app
+* Shikimori integration (manga tracking)
+* Password/fingerprint protect access to the app
### Screenshots
@@ -38,23 +38,20 @@ Download APK from GitHub Releases:
### Localization
-
-
-
+[
](https://hosted.weblate.org/engage/kotatsu/)
Kotatsu is localized in a number of different languages, if you would like to help improve these or add new languages,
-please head over to the Weblate project page
+please head over to the [Weblate project page](https://hosted.weblate.org/engage/kotatsu/)
### License
[](http://www.gnu.org/licenses/gpl-3.0.en.html)
-Kotatsu is Free Software: You can use, study share and improve it at your
-will. Specifically you can redistribute and/or modify it under the terms of the
-[GNU General Public License](https://www.gnu.org/licenses/gpl.html) as
-published by the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+You may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications
+to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build &
+install instructions.
-### Disclaimer
+### DMCA disclaimer
-The developers of this application does not have any affiliation with the content providers available.
+The developers of this application does not have any affiliation with the content available in the app.
+It is collecting from the sources freely available through any web browser.
diff --git a/app/build.gradle b/app/build.gradle
index c55d86047..f74ad33c4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -14,8 +14,8 @@ android {
applicationId 'org.koitharu.kotatsu'
minSdkVersion 21
targetSdkVersion 32
- versionCode 412
- versionName '3.4'
+ versionCode 413
+ versionName '3.4.1'
generatedDensities = []
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -77,7 +77,7 @@ afterEvaluate {
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
- implementation('com.github.nv95:kotatsu-parsers:da3b0ae0cf') {
+ implementation('com.github.nv95:kotatsu-parsers:8c26f3c790') {
exclude group: 'org.json', module: 'json'
}
diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonLayoutManager.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonLayoutManager.kt
new file mode 100644
index 000000000..29f21d08e
--- /dev/null
+++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonLayoutManager.kt
@@ -0,0 +1,41 @@
+package org.koitharu.kotatsu.reader.ui.pager.webtoon
+
+import android.content.Context
+import android.util.AttributeSet
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import kotlin.math.sign
+
+class WebtoonLayoutManager : LinearLayoutManager {
+
+ private var scrollDirection: Int = 0
+
+ constructor(context: Context) : super(context)
+ constructor(
+ context: Context,
+ orientation: Int,
+ reverseLayout: Boolean,
+ ) : super(context, orientation, reverseLayout)
+
+ constructor(
+ context: Context,
+ attrs: AttributeSet?,
+ defStyleAttr: Int,
+ defStyleRes: Int,
+ ) : super(context, attrs, defStyleAttr, defStyleRes)
+
+ override fun scrollVerticallyBy(dy: Int, recycler: RecyclerView.Recycler?, state: RecyclerView.State): Int {
+ scrollDirection = dy.sign
+ return super.scrollVerticallyBy(dy, recycler, state)
+ }
+
+ override fun calculateExtraLayoutSpace(state: RecyclerView.State, extraLayoutSpace: IntArray) {
+ if (state.hasTargetScrollPosition()) {
+ super.calculateExtraLayoutSpace(state, extraLayoutSpace)
+ return
+ }
+ val pageSize = height
+ extraLayoutSpace[0] = if (scrollDirection < 0) pageSize else 0
+ extraLayoutSpace[1] = if (scrollDirection < 0) 0 else pageSize
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt
index 5a9721124..d0c25311d 100644
--- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonReaderFragment.kt
@@ -12,7 +12,6 @@ import org.koitharu.kotatsu.reader.ui.ReaderState
import org.koitharu.kotatsu.reader.ui.pager.BaseReader
import org.koitharu.kotatsu.reader.ui.pager.BaseReaderAdapter
import org.koitharu.kotatsu.reader.ui.pager.ReaderPage
-import org.koitharu.kotatsu.utils.ext.doOnCurrentItemChanged
import org.koitharu.kotatsu.utils.ext.findCenterViewPosition
import org.koitharu.kotatsu.utils.ext.firstVisibleItemPosition
import org.koitharu.kotatsu.utils.ext.viewLifecycleScope
@@ -33,7 +32,7 @@ class WebtoonReaderFragment : BaseReader() {
with(binding.recyclerView) {
setHasFixedSize(true)
adapter = webtoonAdapter
- doOnCurrentItemChanged(::notifyPageChanged)
+ addOnPageScrollListener(PageScrollListener())
}
}
@@ -93,4 +92,12 @@ class WebtoonReaderFragment : BaseReader() {
override fun switchPageTo(position: Int, smooth: Boolean) {
binding.recyclerView.firstVisibleItemPosition = position
}
+
+ private inner class PageScrollListener : WebtoonRecyclerView.OnPageScrollListener() {
+
+ override fun onPageChanged(recyclerView: WebtoonRecyclerView, index: Int) {
+ super.onPageChanged(recyclerView, index)
+ notifyPageChanged(index)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonRecyclerView.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonRecyclerView.kt
index dfb0bad8c..aa28971af 100644
--- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonRecyclerView.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonRecyclerView.kt
@@ -2,25 +2,27 @@ package org.koitharu.kotatsu.reader.ui.pager.webtoon
import android.content.Context
import android.util.AttributeSet
-import androidx.core.view.ViewCompat
+import androidx.core.view.ViewCompat.TYPE_TOUCH
import androidx.recyclerview.widget.RecyclerView
+import org.koitharu.kotatsu.utils.ext.findCenterViewPosition
+import java.util.*
class WebtoonRecyclerView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : RecyclerView(context, attrs, defStyleAttr) {
- override fun startNestedScroll(axes: Int) = startNestedScroll(axes, ViewCompat.TYPE_TOUCH)
+ private var onPageScrollListeners: MutableList? = null
- override fun startNestedScroll(axes: Int, type: Int): Boolean {
- return true
- }
+ override fun startNestedScroll(axes: Int) = startNestedScroll(axes, TYPE_TOUCH)
+
+ override fun startNestedScroll(axes: Int, type: Int): Boolean = true
override fun dispatchNestedPreScroll(
dx: Int,
dy: Int,
consumed: IntArray?,
offsetInWindow: IntArray?
- ) = dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow, ViewCompat.TYPE_TOUCH)
+ ) = dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow, TYPE_TOUCH)
override fun dispatchNestedPreScroll(
dx: Int,
@@ -34,6 +36,7 @@ class WebtoonRecyclerView @JvmOverloads constructor(
consumed[0] = 0
consumed[1] = consumedY
}
+ notifyScrollChanged(dy)
return consumedY != 0 || dy == 0
}
@@ -75,4 +78,39 @@ class WebtoonRecyclerView @JvmOverloads constructor(
}
return 0
}
+
+ fun addOnPageScrollListener(listener: OnPageScrollListener) {
+ val list = onPageScrollListeners ?: LinkedList().also { onPageScrollListeners = it }
+ list.add(listener)
+ }
+
+ fun removeOnPageScrollListener(listener: OnPageScrollListener) {
+ onPageScrollListeners?.remove(listener)
+ }
+
+ private fun notifyScrollChanged(dy: Int) {
+ val listeners = onPageScrollListeners
+ if (listeners.isNullOrEmpty()) {
+ return
+ }
+ val centerPosition = findCenterViewPosition()
+ listeners.forEach { it.dispatchScroll(this, dy, centerPosition) }
+ }
+
+ abstract class OnPageScrollListener {
+
+ private var lastPosition = NO_POSITION
+
+ fun dispatchScroll(recyclerView: WebtoonRecyclerView, dy: Int, centerPosition: Int) {
+ onScroll(recyclerView, dy)
+ if (centerPosition != NO_POSITION && centerPosition != lastPosition) {
+ lastPosition = centerPosition
+ onPageChanged(recyclerView, centerPosition)
+ }
+ }
+
+ open fun onScroll(recyclerView: WebtoonRecyclerView, dy: Int) = Unit
+
+ open fun onPageChanged(recyclerView: WebtoonRecyclerView, index: Int) = Unit
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt
index 586e40eef..bfd3959a9 100644
--- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt
@@ -91,22 +91,6 @@ fun View.resetTransformations() {
rotationY = 0f
}
-inline fun RecyclerView.doOnCurrentItemChanged(crossinline callback: (Int) -> Unit) {
- addOnScrollListener(object : RecyclerView.OnScrollListener() {
-
- private var lastItem = -1
-
- override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
- super.onScrolled(recyclerView, dx, dy)
- val item = recyclerView.findCenterViewPosition()
- if (item != RecyclerView.NO_POSITION && item != lastItem) {
- lastItem = item
- callback(item)
- }
- }
- })
-}
-
fun RecyclerView.findCenterViewPosition(): Int {
val centerX = width / 2f
val centerY = height / 2f
diff --git a/app/src/main/res/layout-w600dp/fragment_details.xml b/app/src/main/res/layout-w600dp/fragment_details.xml
index 5bf8629f4..e45f03909 100644
--- a/app/src/main/res/layout-w600dp/fragment_details.xml
+++ b/app/src/main/res/layout-w600dp/fragment_details.xml
@@ -42,9 +42,8 @@
+
+
+ app:layout_constraintTop_toBottomOf="@+id/barrier_header" />
diff --git a/app/src/main/res/layout/fragment_reader_webtoon.xml b/app/src/main/res/layout/fragment_reader_webtoon.xml
index bf60f0a5a..2a3020690 100644
--- a/app/src/main/res/layout/fragment_reader_webtoon.xml
+++ b/app/src/main/res/layout/fragment_reader_webtoon.xml
@@ -6,4 +6,4 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
\ No newline at end of file
+ app:layoutManager="org.koitharu.kotatsu.reader.ui.pager.webtoon.WebtoonLayoutManager" />
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index e1f523b01..07ab4f6bb 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -1,305 +1,320 @@
- Закрыть меню
- Открыть меню
- На устройстве
- Избранное
- История
- Произошла ошибка
- Не удалось подключиться к интернету
- Подробности
- Главы
- Список
- Подробный список
- Таблица
- Вид списка
- Настройки
- Онлайн каталоги
- Загрузка…
- Глава %1$d из %2$d
- Закрыть
- Повторить
- Очистить историю
- Ничего не найдено
- Истории пока нет
- Читать
- Избранного пока нет
- В избранное
- Новая категория
- Добавить
- Введите название
- Сохранить
- Поделиться
- Создать ярлык…
- Поделиться %s
- Поиск
- Поиск манги
- Загрузка…
- Обработка…
- Загружено
- Загрузки
- Имя
- Популярная
- Обновлённая
- Новая
- Рейтинг
- Порядок сортировки
- Фильтр
- Тема
- Светлая
- Тёмная
- Как в системе
- Страницы
- Очистить
- Очистить всю историю чтения полностью\?
- Удалить
- «%s» удалено из истории
- «%s» удалено с устройства
- Дождитесь завершения загрузки…
- Сохранить страницу
- Сохранено
- Поделиться изображением
- Импорт
- Удалить
- Операция не поддерживается
- Выберите CBZ-файл или ZIP
- Нет описания
- История и кэш
- Очистить кэш страниц
- Кэш
- Б|кБ|МБ|ГБ|ТБ
- Стандартный
- Манхва
- Режим чтения
- Размер таблицы
- Поиск по %s
- Удалить мангу
- Удалить \"%s\" с устройства навсегда\?
- Настройки чтения
- Листание страниц
- Нажатия по краям
- Кнопки громкости
- Продолжить
- Предупреждение
- Это может привести к расходу большого количества трафика
- Больше не спрашивать
- Отмена…
- Ошибка
- Очистить кэш миниатюр
- Очистить историю поиска
- Очищено
- Только жесты
- Внутренний накопитель
- Внешнее хранилище
- Домен
- Проверять наличие новых версий приложения
- Доступна новая версия приложения
- Показывать уведомление, если доступна новая версия
- Открыть в веб-браузере
- В этой манге %s. Сохранить их все\?
- Сохранить
- Уведомления
- Включено %1$d из %2$d
- Новые главы
- Загрузить
- Читать с начала
- Перезапустить
- Настройки уведомлений
- Звук уведомления
- Светодиодная индикация
- Вибросигнал
- Категории избранного
- Категории…
- Переименовать
- Удалить категорию \"%s\" из избранного\?
+ Закрыть меню
+ Открыть меню
+ На устройстве
+ Избранное
+ История
+ Произошла ошибка
+ Не удалось подключиться к интернету
+ Подробности
+ Главы
+ Список
+ Подробный список
+ Таблица
+ Вид списка
+ Настройки
+ Онлайн каталоги
+ Загрузка…
+ Глава %1$d из %2$d
+ Закрыть
+ Повторить
+ Очистить историю
+ Ничего не найдено
+ Истории пока нет
+ Читать
+ Избранного пока нет
+ В избранное
+ Новая категория
+ Добавить
+ Введите название
+ Сохранить
+ Поделиться
+ Создать ярлык…
+ Поделиться %s
+ Поиск
+ Поиск манги
+ Загрузка…
+ Обработка…
+ Загружено
+ Загрузки
+ Имя
+ Популярная
+ Обновлённая
+ Новая
+ Рейтинг
+ Порядок сортировки
+ Фильтр
+ Тема
+ Светлая
+ Тёмная
+ Как в системе
+ Страницы
+ Очистить
+ Очистить всю историю чтения полностью\?
+ Удалить
+ «%s» удалено из истории
+ «%s» удалено с устройства
+ Дождитесь завершения загрузки…
+ Сохранить страницу
+ Сохранено
+ Поделиться изображением
+ Импорт
+ Удалить
+ Операция не поддерживается
+ Выберите CBZ-файл или ZIP
+ Нет описания
+ История и кэш
+ Очистить кэш страниц
+ Кэш
+ Б|кБ|МБ|ГБ|ТБ
+ Стандартный
+ Манхва
+ Режим чтения
+ Размер таблицы
+ Поиск по %s
+ Удалить мангу
+ Удалить \"%s\" с устройства навсегда\?
+ Настройки чтения
+ Листание страниц
+ Нажатия по краям
+ Кнопки громкости
+ Продолжить
+ Предупреждение
+ Это может привести к расходу большого количества трафика
+ Больше не спрашивать
+ Отмена…
+ Ошибка
+ Очистить кэш миниатюр
+ Очистить историю поиска
+ Очищено
+ Только жесты
+ Внутренний накопитель
+ Внешнее хранилище
+ Домен
+ Проверять наличие новых версий приложения
+ Доступна новая версия приложения
+ Показывать уведомление, если доступна новая версия
+ Открыть в веб-браузере
+ В этой манге %s. Сохранить их все\?
+ Сохранить
+ Уведомления
+ Включено %1$d из %2$d
+ Новые главы
+ Загрузить
+ Читать с начала
+ Перезапустить
+ Настройки уведомлений
+ Звук уведомления
+ Светодиодная индикация
+ Вибросигнал
+ Категории избранного
+ Категории…
+ Переименовать
+ Удалить категорию \"%s\" из избранного\?
\nВся манга в ней будет потеряна.
- Удалить
- Как-то здесь пусто…
- Попробуйте переформулировать запрос.
- Вы можете использовать категории для организации своих избранных. Нажмите «+», чтобы создать категорию
- То, что вы прочитаете, будет отображено здесь
- Найдите, что почитать, в боковом меню.
- Сохраните что-нибудь
- Сохраните что-нибудь из онлайн-каталога или импортируйте из файла.
- Полка
- Недавнее
- Анимация листания
- Папка для загрузок
- Недоступно
- Нет доступного хранилища
- Другое хранилище
- Готово
- Всё избранное
- Категория пуста
- Прочитать позже
- Обновления
- Новые главы из того, что вы читаете, будут показаны здесь
- Результаты поиска
- Похожие
- Новая версия: %s
- Размер: %s
- Ожидание подключения…
- Очистить ленту обновлений
- Очищено
- Повернуть экран
- Обновить
- Обновление скоро начнётся
- Следить за обновлениями
- Не проверять
- Введите пароль
- Неверный пароль
- Защитить приложение
- Запрашивать пароль при запуске Kotatsu
- Повторите пароль
- Пароли не совпадают
- О программе
- Версия %s
- Проверить обновления
- Проверка обновления…
- Не удалось проверить обновления
- Нет доступных обновлений
- Справа налево (←)
- Создать категорию
- Масштабирование
- Вписать в экран
- Подогнать по высоте
- Подогнать по ширине
- Исходный размер
- Чёрная
- Потребляет меньше энергии на экранах AMOLED
- Резервное копирование и восстановление
- Создать резервную копию
- Восстановить данные
- Восстановлено
- Подготовка…
- Файл не найден
- Все данные были восстановлены
- Данные были восстановлены, но возникли некоторые ошибки
- Вы можете создать резервную копию избранного и истории и потом восстановить их
- Только что
- Вчера
- Давно
- Группировать
- Сегодня
- Попробовать ещё раз
- Выбранный режим будет сохранён для текущей манги
- Без звука
- Необходимо пройти CAPTCHA
- Пройти
- Очистить куки
- Все файлы cookie были удалены
- Проверка новых глав: %1$d из %2$d
- Очистить ленту
- Удалить всю историю обновлений навсегда\?
- Проверка новых глав
- В обратном порядке
- Войти
- Авторизуйтесь, чтобы просмотреть этот контент
- По умолчанию: %s
- …и ещё %1$d
- Далее
- Введите пароль для запуска приложения
- Подтвердить
- Пароль должен состоять из 4 символов или более
- Поиск только по %s
- Другие
- Добро пожаловать
- Удалить все последние поисковые запросы навсегда\?
- Резервная копия сохранена
- Некоторые устройства имеют различное поведение системы, что может привести к нарушению фоновых задач.
- Подробнее
- В очереди
- Нет активных загрузок
- Глава отсутствует
- Скачайте или прочитайте эту недостающую главу онлайн.
- Помочь с переводом приложения
- Перевод
- Тема на 4PDA
- Обратная связь
- Авторизация выполнена
- Вход в %s не поддерживается
- Вы выйдете из всех источников
- Жанры
- Завершено
- Онгоинг
- Формат даты
- По умолчанию
- Исключить NSFW мангу из истории
- Вы должны ввести имя
- Показывать номера страницы
- Включенные источники
- Доступные источники
- Динамическая тема
- Применяет тему приложения, основанную на цветовой палитре обоев на устройстве
- Политика скриншотов
- Разрешить
- Запретить для NSFW
- Всегда блокировать
- Рекомендации
- Включить рекомендации
- Предлагать мангу на основе Ваших предпочтений
- Все данные анализируются локально на устройстве. Ваши персональные данные не передаются в какие-либо сервисы
- Начните читать мангу, чтобы получать персональные предложения
- Не предлагать NSFW мангу
- Включено
- Выключено
- Не удалось загрузить список жанров
- Вычисление…
- Создать проблему на GitHub
- Импорт манги: %1$d из %2$d
- Сбросить фильтр
- Поиск по жанрам
- Выберите языки, на которых Вы хоите читать мангу. Это можно будет изменить позже в настройках.
- Никогда
- Только по Wi-Fi
- Всегда
- Предварительная загрузка страниц
- Вы авторизованы как %s
- 18+
- Разные языки
- Найти главу
- В этой манге нет глав
- Оформление
- Контент
- Обновление рекомендаций
- Исключить жанры
- Укажите жанры, которые Вы не хотите видеть в рекомендациях
- Удалить выбранную мангу с накопителя?
- Удаление завершено
- Загрузить выбранную мангу со всеми главами? Это может привести к большому расходу трафика и места на накопителе
- Загружать параллельно
- Замедление загрузки
- Помогает избежать блокировки IP-адреса
- Обработка сохранённой манги
- Главы будут удалены в фоновом режиме. Это может занять какое-то время
- Скрыть
- Доступны новые источники манги
- Проверять новые главы и уведомлять о них
- Вы будете получать уведомления об обновлении манги, которую Вы читаете
- Вы не будете получать уведомления, но новые главы будут отображаться в списке
- Включить уведомления
- Название
- Изменить
- Изменить категорию
- Отслеживание
- Нет категорий избранного
- Добавить закладку
- Удалить закладку
- Закладки
- Закладка удалена
- Закладка добавлена
- Отменить
- Удалено из истории
- DNS через HTTPS
- Режим по умолчанию
- Автоопределение режима чтения
- Автоматически определяет, является ли манга веб-комиксом
- Отключить оптимизацию батареи
- Помогает с фоновой проверкой обновлений
- Что-то пошло не так. Пожалуйста, отправьте отчёт разработчикам, чтобы помочь всё исправить
- Отправить
- Отключить все
- Использовать отпечаток пальца, если доступно
- Манга из Вашего избранного
- Манга, которую Вы недавно читали
+ Удалить
+ Как-то здесь пусто…
+ Попробуйте переформулировать запрос.
+ Вы можете использовать категории для организации своих избранных. Нажмите «+», чтобы создать категорию
+ То, что вы прочитаете, будет отображено здесь
+ Найдите, что почитать, в боковом меню.
+ Сохраните что-нибудь
+ Сохраните что-нибудь из онлайн-каталога или импортируйте из файла.
+ Полка
+ Недавнее
+ Анимация листания
+ Папка для загрузок
+ Недоступно
+ Нет доступного хранилища
+ Другое хранилище
+ Готово
+ Всё избранное
+ Категория пуста
+ Прочитать позже
+ Обновления
+ Новые главы из того, что вы читаете, будут показаны здесь
+ Результаты поиска
+ Похожие
+ Новая версия: %s
+ Размер: %s
+ Ожидание подключения…
+ Очистить ленту обновлений
+ Очищено
+ Повернуть экран
+ Обновить
+ Обновление скоро начнётся
+ Следить за обновлениями
+ Не проверять
+ Введите пароль
+ Неверный пароль
+ Защитить приложение
+ Запрашивать пароль при запуске Kotatsu
+ Повторите пароль
+ Пароли не совпадают
+ О программе
+ Версия %s
+ Проверить обновления
+ Проверка обновления…
+ Не удалось проверить обновления
+ Нет доступных обновлений
+ Справа налево (←)
+ Создать категорию
+ Масштабирование
+ Вписать в экран
+ Подогнать по высоте
+ Подогнать по ширине
+ Исходный размер
+ Чёрная
+ Потребляет меньше энергии на экранах AMOLED
+ Резервное копирование и восстановление
+ Создать резервную копию
+ Восстановить данные
+ Восстановлено
+ Подготовка…
+ Файл не найден
+ Все данные были восстановлены
+ Данные были восстановлены, но возникли некоторые ошибки
+ Вы можете создать резервную копию избранного и истории и потом восстановить их
+ Только что
+ Вчера
+ Давно
+ Группировать
+ Сегодня
+ Попробовать ещё раз
+ Выбранный режим будет сохранён для текущей манги
+ Без звука
+ Необходимо пройти CAPTCHA
+ Пройти
+ Очистить куки
+ Все файлы cookie были удалены
+ Проверка новых глав: %1$d из %2$d
+ Очистить ленту
+ Удалить всю историю обновлений навсегда\?
+ Проверка новых глав
+ В обратном порядке
+ Войти
+ Авторизуйтесь, чтобы просмотреть этот контент
+ По умолчанию: %s
+ …и ещё %1$d
+ Далее
+ Введите пароль для запуска приложения
+ Подтвердить
+ Пароль должен состоять из 4 символов или более
+ Поиск только по %s
+ Другие
+ Добро пожаловать
+ Удалить все последние поисковые запросы навсегда\?
+ Резервная копия сохранена
+ Некоторые устройства имеют различное поведение системы, что может привести к нарушению фоновых задач.
+ Подробнее
+ В очереди
+ Нет активных загрузок
+ Глава отсутствует
+ Скачайте или прочитайте эту недостающую главу онлайн.
+ Помочь с переводом приложения
+ Перевод
+ Тема на 4PDA
+ Обратная связь
+ Авторизация выполнена
+ Вход в %s не поддерживается
+ Вы выйдете из всех источников
+ Жанры
+ Завершено
+ Онгоинг
+ Формат даты
+ По умолчанию
+ Исключить NSFW мангу из истории
+ Вы должны ввести имя
+ Показывать номера страницы
+ Включенные источники
+ Доступные источники
+ Динамическая тема
+ Применяет тему приложения, основанную на цветовой палитре обоев на устройстве
+ Политика скриншотов
+ Разрешить
+ Запретить для NSFW
+ Всегда блокировать
+ Рекомендации
+ Включить рекомендации
+ Предлагать мангу на основе Ваших предпочтений
+ Все данные анализируются локально на устройстве. Ваши персональные данные не передаются в какие-либо сервисы
+ Начните читать мангу, чтобы получать персональные предложения
+ Не предлагать NSFW мангу
+ Включено
+ Выключено
+ Не удалось загрузить список жанров
+ Вычисление…
+ Создать проблему на GitHub
+ Импорт манги: %1$d из %2$d
+ Сбросить фильтр
+ Поиск по жанрам
+ Выберите языки, на которых Вы хоите читать мангу. Это можно будет изменить позже в настройках.
+ Никогда
+ Только по Wi-Fi
+ Всегда
+ Предварительная загрузка страниц
+ Вы авторизованы как %s
+ 18+
+ Разные языки
+ Найти главу
+ В этой манге нет глав
+ Оформление
+ Контент
+ Обновление рекомендаций
+ Исключить жанры
+ Укажите жанры, которые Вы не хотите видеть в рекомендациях
+ Удалить выбранную мангу с накопителя?
+ Удаление завершено
+ Загрузить выбранную мангу со всеми главами? Это может привести к большому расходу трафика и места на накопителе
+ Загружать параллельно
+ Замедление загрузки
+ Помогает избежать блокировки IP-адреса
+ Обработка сохранённой манги
+ Главы будут удалены в фоновом режиме. Это может занять какое-то время
+ Скрыть
+ Доступны новые источники манги
+ Проверять новые главы и уведомлять о них
+ Вы будете получать уведомления об обновлении манги, которую Вы читаете
+ Вы не будете получать уведомления, но новые главы будут отображаться в списке
+ Включить уведомления
+ Название
+ Изменить
+ Изменить категорию
+ Отслеживание
+ Нет категорий избранного
+ Добавить закладку
+ Удалить закладку
+ Закладки
+ Закладка удалена
+ Закладка добавлена
+ Отменить
+ Удалено из истории
+ DNS через HTTPS
+ Режим по умолчанию
+ Автоопределение режима чтения
+ Автоматически определяет, является ли манга веб-комиксом
+ Отключить оптимизацию батареи
+ Помогает с фоновой проверкой обновлений
+ Что-то пошло не так. Пожалуйста, отправьте отчёт разработчикам, чтобы помочь всё исправить
+ Отправить
+ Отключить все
+ Использовать отпечаток пальца, если доступно
+ Манга из Вашего избранного
+ Манга, которую Вы недавно читали
+ Читаю
+ Запланировано
+ Отложено
+ Заброшено
+ Завершено
+ Показать процент прочитанного в истории и избранном
+ Манга, помеченная как NSFW, никогда не будет добавлена в историю и ваш прогресс чтения не будет сохранен
+ %1$s%%
+ Отчёт
+ Выйти
+ Перечитываю
+ Показать индикаторы прогресса чтения
+ Удаление данных
+ Может помочь в случае каких-либо проблем. Все авторизации будут аннулированы
+ Показать все
\ No newline at end of file
diff --git a/metadata/en-US/full_description.txt b/metadata/en-US/full_description.txt
index 8c4f8945c..7fe456248 100644
--- a/metadata/en-US/full_description.txt
+++ b/metadata/en-US/full_description.txt
@@ -1,4 +1,6 @@
-Kotatsu is a free and open source manga reader for Android.
+Kotatsu is a free and open source manga reader for Android.
+
+
**Main Features:**
- Online manga catalogues
@@ -9,5 +11,5 @@ Kotatsu is a free and open source manga reader for Android.
- Tablet-optimized material design UI
- Standard and Webtoon-optimized reader
- Notifications about new chapters with updates feed
-- Available in multiple languages
-- Password protect access to the app
+- Shikimori integration (manga tracking)
+- Password/fingerprint protect access to the app
\ No newline at end of file
diff --git a/metadata/ru/full_description.txt b/metadata/ru/full_description.txt
index df079ccdd..2ccccbf51 100644
--- a/metadata/ru/full_description.txt
+++ b/metadata/ru/full_description.txt
@@ -1,4 +1,6 @@
-Kotatsu - приложения для чтения манги с открытым исходным кодом.
+Kotatsu - приложения для чтения манги с открытым исходным кодом.
+
+
**Основные возможности:**
- Онлайн каталоги с мангой
@@ -9,3 +11,5 @@ Kotatsu - приложения для чтения манги с открыты
- Интерфейс также оптимизирован для планшетов
- Поддержка манхвы (Webtoon)
- Уведомления о новых главах и лента обновлений
+- Интеграция с Shikimori
+- Защита доступа в приложение паролем/отпечатком пальца