mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-27 11:37:51 +02:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
cdbefd9191 | |||
2e9d89574d | |||
569c99496b | |||
ea3b8767de | |||
8e8c30c1eb | |||
d921ba81c8 | |||
ad9f646102 | |||
2ef277bcef | |||
9e396e1624 | |||
9708d84e60 | |||
4efc195548 | |||
0d15cbe334 | |||
e381d9fc8e | |||
85ed7a7457 |
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
I acknowledge that:
|
I acknowledge that:
|
||||||
|
|
||||||
- I have updated to the latest version of the app (stable is v0.10.0)
|
- I have updated to the latest version of the app (stable is v0.10.2)
|
||||||
- I have updated all extensions
|
- I have updated all extensions
|
||||||
- If this is an issue with an extension, that I should be opening an issue in https://github.com/inorichi/tachiyomi-extensions
|
- If this is an issue with an extension, that I should be opening an issue in https://github.com/inorichi/tachiyomi-extensions
|
||||||
|
|
||||||
|
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -9,7 +9,7 @@ labels: "bug"
|
|||||||
|
|
||||||
I acknowledge that:
|
I acknowledge that:
|
||||||
|
|
||||||
- I have updated to the latest version of the app (stable is v0.10.0)
|
- I have updated to the latest version of the app (stable is v0.10.2)
|
||||||
- I have updated all extensions
|
- I have updated all extensions
|
||||||
- If this is an issue with an extension, that I should be opening an issue in https://github.com/inorichi/tachiyomi-extensions
|
- If this is an issue with an extension, that I should be opening an issue in https://github.com/inorichi/tachiyomi-extensions
|
||||||
|
|
||||||
|
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -9,7 +9,7 @@ labels: "feature"
|
|||||||
|
|
||||||
I acknowledge that:
|
I acknowledge that:
|
||||||
|
|
||||||
- I have updated to the latest version of the app (stable is v0.10.0)
|
- I have updated to the latest version of the app (stable is v0.10.2)
|
||||||
- I have updated all extensions
|
- I have updated all extensions
|
||||||
- If this is an issue with an extension, that I should be opening an issue in https://github.com/inorichi/tachiyomi-extensions
|
- If this is an issue with an extension, that I should be opening an issue in https://github.com/inorichi/tachiyomi-extensions
|
||||||
|
|
||||||
|
@ -40,8 +40,8 @@ android {
|
|||||||
minSdkVersion AndroidConfig.minSdk
|
minSdkVersion AndroidConfig.minSdk
|
||||||
targetSdkVersion AndroidConfig.targetSdk
|
targetSdkVersion AndroidConfig.targetSdk
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
versionCode 46
|
versionCode 48
|
||||||
versionName "0.10.0"
|
versionName "0.10.2"
|
||||||
|
|
||||||
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
|
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
|
||||||
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""
|
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""
|
||||||
@ -200,7 +200,7 @@ dependencies {
|
|||||||
implementation 'io.requery:sqlite-android:3.32.2'
|
implementation 'io.requery:sqlite-android:3.32.2'
|
||||||
|
|
||||||
// Preferences
|
// Preferences
|
||||||
implementation 'com.github.tfcporciuncula:flow-preferences:1.1.1'
|
implementation 'com.github.tfcporciuncula:flow-preferences:1.3.0'
|
||||||
|
|
||||||
// Model View Presenter
|
// Model View Presenter
|
||||||
final nucleus_version = '3.0.0'
|
final nucleus_version = '3.0.0'
|
||||||
@ -276,8 +276,7 @@ dependencies {
|
|||||||
|
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||||
|
|
||||||
// Do not update until we bump to Kotlin 1.4, see https://github.com/Kotlin/kotlinx.coroutines/issues/2049
|
final coroutines_version = '1.3.8'
|
||||||
final coroutines_version = '1.3.6'
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ import eu.kanade.tachiyomi.util.lang.chop
|
|||||||
import eu.kanade.tachiyomi.util.system.notificationBuilder
|
import eu.kanade.tachiyomi.util.system.notificationBuilder
|
||||||
import eu.kanade.tachiyomi.util.system.notificationManager
|
import eu.kanade.tachiyomi.util.system.notificationManager
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
import uy.kohesive.injekt.api.get
|
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,12 +24,22 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
|
|
||||||
private val preferences: PreferencesHelper by injectLazy()
|
private val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
private val progressNotificationBuilder = context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_PROGRESS) {
|
private val progressNotificationBuilder by lazy {
|
||||||
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
|
context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_PROGRESS) {
|
||||||
|
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val completeNotificationBuilder = context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_COMPLETE) {
|
private val completeNotificationBuilder by lazy {
|
||||||
setAutoCancel(false)
|
context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_COMPLETE) {
|
||||||
|
setAutoCancel(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val errorNotificationBuilder by lazy {
|
||||||
|
context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_ERROR) {
|
||||||
|
setAutoCancel(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,7 +62,7 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
*
|
*
|
||||||
* @param id the id of the notification.
|
* @param id the id of the notification.
|
||||||
*/
|
*/
|
||||||
private fun NotificationCompat.Builder.show(id: Int = Notifications.ID_DOWNLOAD_CHAPTER) {
|
private fun NotificationCompat.Builder.show(id: Int) {
|
||||||
context.notificationManager.notify(id, build())
|
context.notificationManager.notify(id, build())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +80,7 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
* those can only be dismissed by the user.
|
* those can only be dismissed by the user.
|
||||||
*/
|
*/
|
||||||
fun dismiss() {
|
fun dismiss() {
|
||||||
context.notificationManager.cancel(Notifications.ID_DOWNLOAD_CHAPTER)
|
context.notificationManager.cancel(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,14 +121,15 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setProgress(download.pages!!.size, download.downloadedImages, false)
|
setProgress(download.pages!!.size, download.downloadedImages, false)
|
||||||
|
|
||||||
|
show(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS)
|
||||||
}
|
}
|
||||||
progressNotificationBuilder.show()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show notification when download is paused.
|
* Show notification when download is paused.
|
||||||
*/
|
*/
|
||||||
fun onDownloadPaused() {
|
fun onPaused() {
|
||||||
with(progressNotificationBuilder) {
|
with(progressNotificationBuilder) {
|
||||||
setContentTitle(context.getString(R.string.chapter_paused))
|
setContentTitle(context.getString(R.string.chapter_paused))
|
||||||
setContentText(context.getString(R.string.download_notifier_download_paused))
|
setContentText(context.getString(R.string.download_notifier_download_paused))
|
||||||
@ -141,8 +151,9 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
context.getString(R.string.action_cancel_all),
|
context.getString(R.string.action_cancel_all),
|
||||||
NotificationReceiver.clearDownloadsPendingBroadcast(context)
|
NotificationReceiver.clearDownloadsPendingBroadcast(context)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
show(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS)
|
||||||
}
|
}
|
||||||
progressNotificationBuilder.show()
|
|
||||||
|
|
||||||
// Reset initial values
|
// Reset initial values
|
||||||
isDownloading = false
|
isDownloading = false
|
||||||
@ -151,18 +162,21 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
/**
|
/**
|
||||||
* This function shows a notification to inform download tasks are done.
|
* This function shows a notification to inform download tasks are done.
|
||||||
*/
|
*/
|
||||||
fun downloadFinished() {
|
fun onComplete() {
|
||||||
// Create notification
|
if (!errorThrown) {
|
||||||
with(completeNotificationBuilder) {
|
// Create notification
|
||||||
setContentTitle(context.getString(R.string.download_notifier_downloader_title))
|
with(completeNotificationBuilder) {
|
||||||
setContentText(context.getString(R.string.download_notifier_download_finish))
|
setContentTitle(context.getString(R.string.download_notifier_downloader_title))
|
||||||
setSmallIcon(android.R.drawable.stat_sys_download_done)
|
setContentText(context.getString(R.string.download_notifier_download_finish))
|
||||||
clearActions()
|
setSmallIcon(android.R.drawable.stat_sys_download_done)
|
||||||
setAutoCancel(true)
|
clearActions()
|
||||||
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
|
setAutoCancel(true)
|
||||||
setProgress(0, 0, false)
|
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
|
||||||
|
setProgress(0, 0, false)
|
||||||
|
|
||||||
|
show(Notifications.ID_DOWNLOAD_CHAPTER_COMPLETE)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
completeNotificationBuilder.show(Notifications.ID_DOWNLOAD_CHAPTER_COMPLETE)
|
|
||||||
|
|
||||||
// Reset states to default
|
// Reset states to default
|
||||||
errorThrown = false
|
errorThrown = false
|
||||||
@ -175,7 +189,7 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
* @param reason the text to show.
|
* @param reason the text to show.
|
||||||
*/
|
*/
|
||||||
fun onWarning(reason: String) {
|
fun onWarning(reason: String) {
|
||||||
with(completeNotificationBuilder) {
|
with(errorNotificationBuilder) {
|
||||||
setContentTitle(context.getString(R.string.download_notifier_downloader_title))
|
setContentTitle(context.getString(R.string.download_notifier_downloader_title))
|
||||||
setContentText(reason)
|
setContentText(reason)
|
||||||
setSmallIcon(android.R.drawable.stat_sys_warning)
|
setSmallIcon(android.R.drawable.stat_sys_warning)
|
||||||
@ -183,8 +197,9 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
clearActions()
|
clearActions()
|
||||||
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
|
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
|
||||||
setProgress(0, 0, false)
|
setProgress(0, 0, false)
|
||||||
|
|
||||||
|
show(Notifications.ID_DOWNLOAD_CHAPTER_ERROR)
|
||||||
}
|
}
|
||||||
completeNotificationBuilder.show()
|
|
||||||
|
|
||||||
// Reset download information
|
// Reset download information
|
||||||
isDownloading = false
|
isDownloading = false
|
||||||
@ -199,7 +214,7 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
*/
|
*/
|
||||||
fun onError(error: String? = null, chapter: String? = null) {
|
fun onError(error: String? = null, chapter: String? = null) {
|
||||||
// Create notification
|
// Create notification
|
||||||
with(completeNotificationBuilder) {
|
with(errorNotificationBuilder) {
|
||||||
setContentTitle(
|
setContentTitle(
|
||||||
chapter
|
chapter
|
||||||
?: context.getString(R.string.download_notifier_downloader_title)
|
?: context.getString(R.string.download_notifier_downloader_title)
|
||||||
@ -210,8 +225,9 @@ internal class DownloadNotifier(private val context: Context) {
|
|||||||
setAutoCancel(false)
|
setAutoCancel(false)
|
||||||
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
|
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
|
||||||
setProgress(0, 0, false)
|
setProgress(0, 0, false)
|
||||||
|
|
||||||
|
show(Notifications.ID_DOWNLOAD_CHAPTER_ERROR)
|
||||||
}
|
}
|
||||||
completeNotificationBuilder.show(Notifications.ID_DOWNLOAD_CHAPTER_ERROR)
|
|
||||||
|
|
||||||
// Reset download information
|
// Reset download information
|
||||||
errorThrown = true
|
errorThrown = true
|
||||||
|
@ -83,7 +83,7 @@ class DownloadService : Service() {
|
|||||||
*/
|
*/
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
startForeground(Notifications.ID_DOWNLOAD_CHAPTER, getPlaceholderNotification())
|
startForeground(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS, getPlaceholderNotification())
|
||||||
wakeLock = acquireWakeLock(javaClass.name)
|
wakeLock = acquireWakeLock(javaClass.name)
|
||||||
runningRelay.call(true)
|
runningRelay.call(true)
|
||||||
subscriptions = CompositeSubscription()
|
subscriptions = CompositeSubscription()
|
||||||
|
@ -137,9 +137,9 @@ class Downloader(
|
|||||||
} else {
|
} else {
|
||||||
if (notifier.paused) {
|
if (notifier.paused) {
|
||||||
notifier.paused = false
|
notifier.paused = false
|
||||||
notifier.onDownloadPaused()
|
notifier.onPaused()
|
||||||
} else {
|
} else {
|
||||||
notifier.downloadFinished()
|
notifier.onComplete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,10 +32,11 @@ object Notifications {
|
|||||||
*/
|
*/
|
||||||
private const val GROUP_DOWNLOADER = "group_downloader"
|
private const val GROUP_DOWNLOADER = "group_downloader"
|
||||||
const val CHANNEL_DOWNLOADER_PROGRESS = "downloader_progress_channel"
|
const val CHANNEL_DOWNLOADER_PROGRESS = "downloader_progress_channel"
|
||||||
const val ID_DOWNLOAD_CHAPTER = -201
|
const val ID_DOWNLOAD_CHAPTER_PROGRESS = -201
|
||||||
const val CHANNEL_DOWNLOADER_COMPLETE = "downloader_complete_channel"
|
const val CHANNEL_DOWNLOADER_COMPLETE = "downloader_complete_channel"
|
||||||
const val ID_DOWNLOAD_CHAPTER_ERROR = -202
|
|
||||||
const val ID_DOWNLOAD_CHAPTER_COMPLETE = -203
|
const val ID_DOWNLOAD_CHAPTER_COMPLETE = -203
|
||||||
|
const val CHANNEL_DOWNLOADER_ERROR = "downloader_error_channel"
|
||||||
|
const val ID_DOWNLOAD_CHAPTER_ERROR = -202
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notification channel and ids used by the library updater.
|
* Notification channel and ids used by the library updater.
|
||||||
@ -104,6 +105,13 @@ object Notifications {
|
|||||||
group = GROUP_DOWNLOADER
|
group = GROUP_DOWNLOADER
|
||||||
setShowBadge(false)
|
setShowBadge(false)
|
||||||
},
|
},
|
||||||
|
NotificationChannel(
|
||||||
|
CHANNEL_DOWNLOADER_ERROR, context.getString(R.string.channel_errors),
|
||||||
|
NotificationManager.IMPORTANCE_LOW
|
||||||
|
).apply {
|
||||||
|
group = GROUP_DOWNLOADER
|
||||||
|
setShowBadge(false)
|
||||||
|
},
|
||||||
NotificationChannel(
|
NotificationChannel(
|
||||||
CHANNEL_NEW_CHAPTERS, context.getString(R.string.channel_new_chapters),
|
CHANNEL_NEW_CHAPTERS, context.getString(R.string.channel_new_chapters),
|
||||||
NotificationManager.IMPORTANCE_DEFAULT
|
NotificationManager.IMPORTANCE_DEFAULT
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package eu.kanade.tachiyomi.ui.browse.source
|
package eu.kanade.tachiyomi.ui.browse
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Canvas
|
import android.graphics.Canvas
|
||||||
@ -23,8 +23,8 @@ class SourceDividerItemDecoration(context: Context) : RecyclerView.ItemDecoratio
|
|||||||
for (i in 0 until childCount - 1) {
|
for (i in 0 until childCount - 1) {
|
||||||
val child = parent.getChildAt(i)
|
val child = parent.getChildAt(i)
|
||||||
val holder = parent.getChildViewHolder(child)
|
val holder = parent.getChildViewHolder(child)
|
||||||
if (holder is SourceHolder &&
|
if (holder is SourceListItem &&
|
||||||
parent.getChildViewHolder(parent.getChildAt(i + 1)) is SourceHolder
|
parent.getChildViewHolder(parent.getChildAt(i + 1)) is SourceListItem
|
||||||
) {
|
) {
|
||||||
val top = child.bottom + child.marginBottom
|
val top = child.bottom + child.marginBottom
|
||||||
val bottom = top + divider.intrinsicHeight
|
val bottom = top + divider.intrinsicHeight
|
@ -0,0 +1,5 @@
|
|||||||
|
package eu.kanade.tachiyomi.ui.browse
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
||||||
|
|
||||||
|
interface SourceListItem : SlicedHolder
|
@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.extension.model.Extension
|
|||||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
import eu.kanade.tachiyomi.ui.browse.BrowseController
|
import eu.kanade.tachiyomi.ui.browse.BrowseController
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
|
||||||
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsController
|
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsController
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
@ -75,7 +76,7 @@ open class ExtensionController :
|
|||||||
// Create recycler and set adapter.
|
// Create recycler and set adapter.
|
||||||
binding.recycler.layoutManager = LinearLayoutManager(view.context)
|
binding.recycler.layoutManager = LinearLayoutManager(view.context)
|
||||||
binding.recycler.adapter = adapter
|
binding.recycler.adapter = adapter
|
||||||
binding.recycler.addItemDecoration(ExtensionDividerItemDecoration(view.context))
|
binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context))
|
||||||
adapter?.fastScroller = binding.fastScroller
|
adapter?.fastScroller = binding.fastScroller
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
package eu.kanade.tachiyomi.ui.browse.extension
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Canvas
|
|
||||||
import android.graphics.Rect
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.view.View
|
|
||||||
import androidx.core.view.marginBottom
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
|
|
||||||
class ExtensionDividerItemDecoration(context: Context) : RecyclerView.ItemDecoration() {
|
|
||||||
|
|
||||||
private val divider: Drawable
|
|
||||||
|
|
||||||
init {
|
|
||||||
val a = context.obtainStyledAttributes(intArrayOf(android.R.attr.listDivider))
|
|
||||||
divider = a.getDrawable(0)!!
|
|
||||||
a.recycle()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
|
|
||||||
val childCount = parent.childCount
|
|
||||||
for (i in 0 until childCount - 1) {
|
|
||||||
val child = parent.getChildAt(i)
|
|
||||||
val holder = parent.getChildViewHolder(child)
|
|
||||||
if (holder is ExtensionHolder &&
|
|
||||||
parent.getChildViewHolder(parent.getChildAt(i + 1)) is ExtensionHolder
|
|
||||||
) {
|
|
||||||
val top = child.bottom + child.marginBottom
|
|
||||||
val bottom = top + divider.intrinsicHeight
|
|
||||||
val left = parent.paddingStart + holder.margin
|
|
||||||
val right = parent.width - parent.paddingEnd - holder.margin
|
|
||||||
|
|
||||||
divider.setBounds(left, top, right, bottom)
|
|
||||||
divider.draw(c)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemOffsets(
|
|
||||||
outRect: Rect,
|
|
||||||
view: View,
|
|
||||||
parent: RecyclerView,
|
|
||||||
state: RecyclerView.State
|
|
||||||
) {
|
|
||||||
outRect.set(0, 0, 0, divider.intrinsicHeight)
|
|
||||||
}
|
|
||||||
}
|
|
@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.extension.model.Extension
|
|||||||
import eu.kanade.tachiyomi.extension.model.InstallStep
|
import eu.kanade.tachiyomi.extension.model.InstallStep
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceListItem
|
||||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
||||||
import io.github.mthli.slice.Slice
|
import io.github.mthli.slice.Slice
|
||||||
import kotlinx.android.synthetic.main.extension_card_item.card
|
import kotlinx.android.synthetic.main.extension_card_item.card
|
||||||
@ -19,6 +20,7 @@ import kotlinx.android.synthetic.main.extension_card_item.warning
|
|||||||
|
|
||||||
class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) :
|
class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) :
|
||||||
BaseFlexibleViewHolder(view, adapter),
|
BaseFlexibleViewHolder(view, adapter),
|
||||||
|
SourceListItem,
|
||||||
SlicedHolder {
|
SlicedHolder {
|
||||||
|
|
||||||
override val slice = Slice(card).apply {
|
override val slice = Slice(card).apply {
|
||||||
|
@ -10,8 +10,8 @@ import eu.davidea.flexibleadapter.items.IFlexible
|
|||||||
import eu.kanade.tachiyomi.databinding.MigrationMangaControllerBinding
|
import eu.kanade.tachiyomi.databinding.MigrationMangaControllerBinding
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
|
||||||
import eu.kanade.tachiyomi.ui.browse.migration.search.SearchController
|
import eu.kanade.tachiyomi.ui.browse.migration.search.SearchController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourceDividerItemDecoration
|
|
||||||
|
|
||||||
class MigrationMangaController :
|
class MigrationMangaController :
|
||||||
NucleusController<MigrationMangaControllerBinding, MigrationMangaPresenter>,
|
NucleusController<MigrationMangaControllerBinding, MigrationMangaPresenter>,
|
||||||
|
@ -8,8 +8,8 @@ import eu.davidea.flexibleadapter.FlexibleAdapter
|
|||||||
import eu.kanade.tachiyomi.databinding.MigrationSourcesControllerBinding
|
import eu.kanade.tachiyomi.databinding.MigrationSourcesControllerBinding
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
|
||||||
import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationMangaController
|
import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationMangaController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourceDividerItemDecoration
|
|
||||||
|
|
||||||
class MigrationSourcesController :
|
class MigrationSourcesController :
|
||||||
NucleusController<MigrationSourcesControllerBinding, MigrationSourcesPresenter>(),
|
NucleusController<MigrationSourcesControllerBinding, MigrationSourcesPresenter>(),
|
||||||
|
@ -4,6 +4,7 @@ import android.view.View
|
|||||||
import eu.kanade.tachiyomi.source.icon
|
import eu.kanade.tachiyomi.source.icon
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceListItem
|
||||||
import io.github.mthli.slice.Slice
|
import io.github.mthli.slice.Slice
|
||||||
import kotlinx.android.synthetic.main.source_main_controller_card_item.card
|
import kotlinx.android.synthetic.main.source_main_controller_card_item.card
|
||||||
import kotlinx.android.synthetic.main.source_main_controller_card_item.image
|
import kotlinx.android.synthetic.main.source_main_controller_card_item.image
|
||||||
@ -11,6 +12,7 @@ import kotlinx.android.synthetic.main.source_main_controller_card_item.title
|
|||||||
|
|
||||||
class SourceHolder(view: View, override val adapter: SourceAdapter) :
|
class SourceHolder(view: View, override val adapter: SourceAdapter) :
|
||||||
BaseFlexibleViewHolder(view, adapter),
|
BaseFlexibleViewHolder(view, adapter),
|
||||||
|
SourceListItem,
|
||||||
SlicedHolder {
|
SlicedHolder {
|
||||||
|
|
||||||
override val slice = Slice(card).apply {
|
override val slice = Slice(card).apply {
|
||||||
|
@ -30,6 +30,7 @@ import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
|||||||
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
|
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
import eu.kanade.tachiyomi.ui.browse.BrowseController
|
import eu.kanade.tachiyomi.ui.browse.BrowseController
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.latest.LatestUpdatesController
|
import eu.kanade.tachiyomi.ui.browse.source.latest.LatestUpdatesController
|
||||||
|
@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.source.LocalSource
|
|||||||
import eu.kanade.tachiyomi.source.icon
|
import eu.kanade.tachiyomi.source.icon
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
|
||||||
|
import eu.kanade.tachiyomi.ui.browse.SourceListItem
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
import eu.kanade.tachiyomi.util.view.setVectorCompat
|
import eu.kanade.tachiyomi.util.view.setVectorCompat
|
||||||
import io.github.mthli.slice.Slice
|
import io.github.mthli.slice.Slice
|
||||||
@ -18,6 +19,7 @@ import kotlinx.android.synthetic.main.source_main_controller_card_item.title
|
|||||||
|
|
||||||
class SourceHolder(private val view: View, override val adapter: SourceAdapter) :
|
class SourceHolder(private val view: View, override val adapter: SourceAdapter) :
|
||||||
BaseFlexibleViewHolder(view, adapter),
|
BaseFlexibleViewHolder(view, adapter),
|
||||||
|
SourceListItem,
|
||||||
SlicedHolder {
|
SlicedHolder {
|
||||||
|
|
||||||
override val slice = Slice(card).apply {
|
override val slice = Slice(card).apply {
|
||||||
|
@ -103,7 +103,10 @@ class SourcePresenter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateLastUsedSource(sourceId: Long) {
|
private fun updateLastUsedSource(sourceId: Long) {
|
||||||
val source = (sourceManager.get(sourceId) as? CatalogueSource)?.let { SourceItem(it) }
|
val source = (sourceManager.get(sourceId) as? CatalogueSource)?.let {
|
||||||
|
val isPinned = it.id.toString() in preferences.pinnedSources().get()
|
||||||
|
SourceItem(it, null, isPinned)
|
||||||
|
}
|
||||||
source?.let { view?.setLastUsedSource(it) }
|
source?.let { view?.setLastUsedSource(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,11 +16,14 @@ class TriStateSectionItem(filter: Filter.TriState) : TriStateItem(filter), ISect
|
|||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (javaClass != other?.javaClass) return false
|
if (javaClass != other?.javaClass) return false
|
||||||
return filter == (other as TriStateSectionItem).filter
|
|
||||||
|
other as TriStateSectionItem
|
||||||
|
if (head != other.head) return false
|
||||||
|
return filter == other.filter
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return filter.hashCode()
|
return filter.hashCode() + (head?.hashCode() ?: 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,11 +40,14 @@ class TextSectionItem(filter: Filter.Text) : TextItem(filter), ISectionable<Text
|
|||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (javaClass != other?.javaClass) return false
|
if (javaClass != other?.javaClass) return false
|
||||||
return filter == (other as TextSectionItem).filter
|
|
||||||
|
other as TextSectionItem
|
||||||
|
if (head != other.head) return false
|
||||||
|
return filter == other.filter
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return filter.hashCode()
|
return filter.hashCode() + (head?.hashCode() ?: 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,11 +64,14 @@ class CheckboxSectionItem(filter: Filter.CheckBox) : CheckboxItem(filter), ISect
|
|||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (javaClass != other?.javaClass) return false
|
if (javaClass != other?.javaClass) return false
|
||||||
return filter == (other as CheckboxSectionItem).filter
|
|
||||||
|
other as CheckboxSectionItem
|
||||||
|
if (head != other.head) return false
|
||||||
|
return filter == other.filter
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return filter.hashCode()
|
return filter.hashCode() + (head?.hashCode() ?: 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,10 +88,13 @@ class SelectSectionItem(filter: Filter.Select<*>) : SelectItem(filter), ISection
|
|||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (javaClass != other?.javaClass) return false
|
if (javaClass != other?.javaClass) return false
|
||||||
return filter == (other as SelectSectionItem).filter
|
|
||||||
|
other as SelectSectionItem
|
||||||
|
if (head != other.head) return false
|
||||||
|
return filter == other.filter
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return filter.hashCode()
|
return filter.hashCode() + (head?.hashCode() ?: 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
|
|||||||
R.id.action_settings -> ReaderSettingsSheet(this).show()
|
R.id.action_settings -> ReaderSettingsSheet(this).show()
|
||||||
R.id.action_custom_filter -> {
|
R.id.action_custom_filter -> {
|
||||||
val sheet = ReaderColorFilterSheet(this)
|
val sheet = ReaderColorFilterSheet(this)
|
||||||
// Remove dimmed backdrop so changes can be previewd
|
// Remove dimmed backdrop so changes can be previewed
|
||||||
.apply { window?.setDimAmount(0f) }
|
.apply { window?.setDimAmount(0f) }
|
||||||
|
|
||||||
// Hide toolbars while sheet is open for better preview
|
// Hide toolbars while sheet is open for better preview
|
||||||
@ -658,9 +658,11 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
|
|||||||
.onEach { setTrueColor(it) }
|
.onEach { setTrueColor(it) }
|
||||||
.launchIn(scope)
|
.launchIn(scope)
|
||||||
|
|
||||||
preferences.cutoutShort().asFlow()
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
.onEach { setCutoutShort(it) }
|
preferences.cutoutShort().asFlow()
|
||||||
.launchIn(scope)
|
.onEach { setCutoutShort(it) }
|
||||||
|
.launchIn(scope)
|
||||||
|
}
|
||||||
|
|
||||||
preferences.keepScreenOn().asFlow()
|
preferences.keepScreenOn().asFlow()
|
||||||
.onEach { setKeepScreenOn(it) }
|
.onEach { setKeepScreenOn(it) }
|
||||||
|
@ -36,13 +36,15 @@ fun syncChaptersWithSource(
|
|||||||
// Chapters from db.
|
// Chapters from db.
|
||||||
val dbChapters = db.getChapters(manga).executeAsBlocking()
|
val dbChapters = db.getChapters(manga).executeAsBlocking()
|
||||||
|
|
||||||
val sourceChapters = rawSourceChapters.mapIndexed { i, sChapter ->
|
val sourceChapters = rawSourceChapters
|
||||||
Chapter.create().apply {
|
.distinctBy { it.url }
|
||||||
copyFrom(sChapter)
|
.mapIndexed { i, sChapter ->
|
||||||
manga_id = manga.id
|
Chapter.create().apply {
|
||||||
source_order = i
|
copyFrom(sChapter)
|
||||||
|
manga_id = manga.id
|
||||||
|
source_order = i
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Chapters from the source not in db.
|
// Chapters from the source not in db.
|
||||||
val toAdd = mutableListOf<Chapter>()
|
val toAdd = mutableListOf<Chapter>()
|
||||||
|
@ -34,11 +34,14 @@ object DiskUtil {
|
|||||||
* Gets the available space for the disk that a file path points to, in bytes.
|
* Gets the available space for the disk that a file path points to, in bytes.
|
||||||
*/
|
*/
|
||||||
fun getAvailableStorageSpace(f: UniFile): Long {
|
fun getAvailableStorageSpace(f: UniFile): Long {
|
||||||
val stat = StatFs(f.filePath)
|
val stat = try {
|
||||||
val availBlocks = stat.availableBlocksLong
|
StatFs(f.filePath)
|
||||||
val blockSize = stat.blockSizeLong
|
} catch (_: Exception) {
|
||||||
|
// Assume that exception is thrown when path is on external storage
|
||||||
|
StatFs(Environment.getExternalStorageDirectory().path)
|
||||||
|
}
|
||||||
|
|
||||||
return availBlocks * blockSize
|
return stat.availableBlocksLong * stat.blockSizeLong
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/holder"
|
android:id="@+id/holder"
|
||||||
style="@style/Theme.Widget.CardView.Item"
|
style="@style/Theme.Widget.CardView.Item"
|
||||||
android:padding="0dp">
|
android:padding="0dp">
|
||||||
@ -19,7 +20,8 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintDimensionRatio="h,3:2"
|
app:layout_constraintDimensionRatio="h,3:2"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:src="@mipmap/ic_launcher" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
@ -38,13 +40,15 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textAppearance="@style/TextAppearance.Medium" />
|
android:textAppearance="@style/TextAppearance.Medium"
|
||||||
|
tools:text="Title" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/manga_subtitle"
|
android:id="@+id/manga_subtitle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp" />
|
android:layout_marginTop="4dp"
|
||||||
|
tools:text="Subtitle" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -59,7 +63,7 @@
|
|||||||
app:layout_constraintEnd_toStartOf="@+id/resume"
|
app:layout_constraintEnd_toStartOf="@+id/resume"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/ic_delete_24dp"
|
app:srcCompat="@drawable/ic_delete_24dp"
|
||||||
app:tint="?attr/colorOnPrimary" />
|
app:tint="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/resume"
|
android:id="@+id/resume"
|
||||||
@ -73,7 +77,7 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/ic_play_arrow_24dp"
|
app:srcCompat="@drawable/ic_play_arrow_24dp"
|
||||||
app:tint="?attr/colorOnPrimary" />
|
app:tint="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
<string name="portrait">ঘুরান</string>
|
<string name="portrait">ঘুরান</string>
|
||||||
<string name="landscape">আড়াআড়ি ভাবে</string>
|
<string name="landscape">আড়াআড়ি ভাবে</string>
|
||||||
<string name="default_columns">ডিফল্ট</string>
|
<string name="default_columns">ডিফল্ট</string>
|
||||||
<string name="pref_library_update_interval">"মাংগাশালা আপডেট কাল"</string>
|
<string name="pref_library_update_interval">মাংগাশালা আপডেট কাল</string>
|
||||||
<string name="update_never">সারগ্রন্থ</string>
|
<string name="update_never">সারগ্রন্থ</string>
|
||||||
<string name="update_1hour">ঘন্টায়</string>
|
<string name="update_1hour">ঘন্টায়</string>
|
||||||
<string name="update_2hour">প্রতি ২ ঘন্টায়</string>
|
<string name="update_2hour">প্রতি ২ ঘন্টায়</string>
|
||||||
@ -178,7 +178,9 @@
|
|||||||
<string name="pref_backup_slots">স্বয়ংক্রিয় ব্যাকআপের উচ্চমাত্রা</string>
|
<string name="pref_backup_slots">স্বয়ংক্রিয় ব্যাকআপের উচ্চমাত্রা</string>
|
||||||
<string name="backup_created">পুনরুদ্ধার তৈরী হয়েছে</string>
|
<string name="backup_created">পুনরুদ্ধার তৈরী হয়েছে</string>
|
||||||
<string name="restore_completed">পুনরুদ্ধার হয়েছে</string>
|
<string name="restore_completed">পুনরুদ্ধার হয়েছে</string>
|
||||||
<string name="backup_restore_content">পুনরুদ্ধারের সন্ধান করার জন্য উৎস ব্যবহার করা হয়, ক্যারিয়ারের খরচগুলি প্রযোজ্য হতে পারে। এছাড়াও নিশ্চিত করুন যে আপনি পুনরুদ্ধারের আগে উৎসগুলোতে যথাযথভাবে লগ-ইন করা আছেন যেখানে প্রোয়জন হয়।</string>
|
<string name="backup_restore_content">পুনরুদ্ধারের সন্ধান করার জন্য উৎস ব্যবহার করা হয়, ক্যারিয়ারের খরচগুলি প্রযোজ্য হতে পারে। এছাড়াও নিশ্চিত করুন যে আপনি
|
||||||
|
\n
|
||||||
|
\nপুনরুদ্ধারের আগে উৎসগুলোতে যথাযথভাবে লগ-ইন করা আছেন যেখানে প্রোয়জন হয়।</string>
|
||||||
<string name="backup_choice">আপনি কি ব্যাকআপ করতে ইচ্ছুক?</string>
|
<string name="backup_choice">আপনি কি ব্যাকআপ করতে ইচ্ছুক?</string>
|
||||||
<string name="restoring_backup">ব্যাকআপ পুনরুদ্ধার হচ্ছে</string>
|
<string name="restoring_backup">ব্যাকআপ পুনরুদ্ধার হচ্ছে</string>
|
||||||
<string name="creating_backup">ব্যাকআপ তৈরী হচ্ছে</string>
|
<string name="creating_backup">ব্যাকআপ তৈরী হচ্ছে</string>
|
||||||
|
@ -195,7 +195,7 @@
|
|||||||
<string name="update_check_notification_file_download">Stáhnout aktualizaci</string>
|
<string name="update_check_notification_file_download">Stáhnout aktualizaci</string>
|
||||||
<string name="update_check_notification_download_complete">Stahování dokončeno</string>
|
<string name="update_check_notification_download_complete">Stahování dokončeno</string>
|
||||||
<string name="update_check_notification_download_error">Chyba při stahování</string>
|
<string name="update_check_notification_download_error">Chyba při stahování</string>
|
||||||
<string name="update_check_notification_update_available">Dostupná aktualizace</string>
|
<string name="update_check_notification_update_available">Dostupná aktualizace!</string>
|
||||||
<string name="information_no_recent">Žádné nedávné kapitoly</string>
|
<string name="information_no_recent">Žádné nedávné kapitoly</string>
|
||||||
<string name="information_no_recent_manga">Žádné nedávno čtené mangy</string>
|
<string name="information_no_recent_manga">Žádné nedávno čtené mangy</string>
|
||||||
<string name="download_notifier_title_error">Chyba</string>
|
<string name="download_notifier_title_error">Chyba</string>
|
||||||
@ -349,6 +349,7 @@
|
|||||||
<string name="pref_restore_backup_summ">Obnovit knihovnu ze záložního souboru</string>
|
<string name="pref_restore_backup_summ">Obnovit knihovnu ze záložního souboru</string>
|
||||||
<string name="pref_backup_slots">Maximální automatické zálohování</string>
|
<string name="pref_backup_slots">Maximální automatické zálohování</string>
|
||||||
<string name="backup_restore_content">Obnovení používá zdroje pro načítání dat, mohou být účtovány poplatky od operátora (v případě použití datového připojení).
|
<string name="backup_restore_content">Obnovení používá zdroje pro načítání dat, mohou být účtovány poplatky od operátora (v případě použití datového připojení).
|
||||||
|
\n
|
||||||
\nTaké se před obnovením ujistěte, že jste správně přihlášeni do zdrojů, které to vyžadují.</string>
|
\nTaké se před obnovením ujistěte, že jste správně přihlášeni do zdrojů, které to vyžadují.</string>
|
||||||
<string name="choices_reset">Volby dialogu se vynulují</string>
|
<string name="choices_reset">Volby dialogu se vynulují</string>
|
||||||
<string name="login_title">Přihlásit se do %1$s</string>
|
<string name="login_title">Přihlásit se do %1$s</string>
|
||||||
@ -401,4 +402,5 @@
|
|||||||
<string name="logout_title">Odhlásit z %1$s\?</string>
|
<string name="logout_title">Odhlásit z %1$s\?</string>
|
||||||
<string name="logout_success">Byl jste odhlášen</string>
|
<string name="logout_success">Byl jste odhlášen</string>
|
||||||
<string name="paused">Pozastaveno</string>
|
<string name="paused">Pozastaveno</string>
|
||||||
|
<string name="label_more">Více</string>
|
||||||
</resources>
|
</resources>
|
@ -634,4 +634,5 @@
|
|||||||
<string name="group_downloader">Descargas</string>
|
<string name="group_downloader">Descargas</string>
|
||||||
<string name="channel_complete">Completo</string>
|
<string name="channel_complete">Completo</string>
|
||||||
<string name="channel_progress">Progreso</string>
|
<string name="channel_progress">Progreso</string>
|
||||||
|
<string name="channel_errors">Errores</string>
|
||||||
</resources>
|
</resources>
|
@ -603,4 +603,5 @@
|
|||||||
<string name="channel_complete">पूर्ण</string>
|
<string name="channel_complete">पूर्ण</string>
|
||||||
<string name="channel_progress">प्रगती</string>
|
<string name="channel_progress">प्रगती</string>
|
||||||
<string name="download_notifier_download_finish">डाउनलोड सम्पन्न हुआ</string>
|
<string name="download_notifier_download_finish">डाउनलोड सम्पन्न हुआ</string>
|
||||||
|
<string name="channel_errors">त्रुटियाँ</string>
|
||||||
</resources>
|
</resources>
|
@ -191,7 +191,7 @@
|
|||||||
<string name="action_select_inverse">Kiválasztás megfordítása</string>
|
<string name="action_select_inverse">Kiválasztás megfordítása</string>
|
||||||
<string name="action_sort_last_checked">Utoljára ellenőrizve</string>
|
<string name="action_sort_last_checked">Utoljára ellenőrizve</string>
|
||||||
<string name="action_menu">Menü</string>
|
<string name="action_menu">Menü</string>
|
||||||
<string name="confirm_exit">A befejezéshez nyomd meg újfent a Vissza gombot!</string>
|
<string name="confirm_exit">A befejezéshez nyomd meg újfent a Vissza gombot</string>
|
||||||
<string name="unlock_app">Tachiyomi feloldása</string>
|
<string name="unlock_app">Tachiyomi feloldása</string>
|
||||||
<string name="information_empty_library">A könyvtárad üres. Adj hozzá új sorozatokat a Böngészőből.</string>
|
<string name="information_empty_library">A könyvtárad üres. Adj hozzá új sorozatokat a Böngészőből.</string>
|
||||||
<string name="information_no_recent">Nincs új frissítés</string>
|
<string name="information_no_recent">Nincs új frissítés</string>
|
||||||
@ -205,7 +205,7 @@
|
|||||||
<string name="download_notifier_page_error">Egy oldal hiányzik a könyvtárból</string>
|
<string name="download_notifier_page_error">Egy oldal hiányzik a könyvtárból</string>
|
||||||
<string name="download_notifier_unknown_error">Egy váratlan hiba miatt nem sikerült letölteni a fejezetet</string>
|
<string name="download_notifier_unknown_error">Egy váratlan hiba miatt nem sikerült letölteni a fejezetet</string>
|
||||||
<string name="download_notifier_title_error">Hiba</string>
|
<string name="download_notifier_title_error">Hiba</string>
|
||||||
<string name="information_webview_outdated">A jobb kompatibilitás érdekében kérlek, frissítsd a WebView alkalmazást!</string>
|
<string name="information_webview_outdated">A jobb kompatibilitás érdekében kérlek, frissítsd a WebView alkalmazást</string>
|
||||||
<plurals name="update_check_notification_ext_updates">
|
<plurals name="update_check_notification_ext_updates">
|
||||||
<item quantity="one">Egy új bővítményfrissítés érhető el</item>
|
<item quantity="one">Egy új bővítményfrissítés érhető el</item>
|
||||||
<item quantity="other">%d bővítményfrissítés érhető el</item>
|
<item quantity="other">%d bővítményfrissítés érhető el</item>
|
||||||
|
@ -592,4 +592,5 @@
|
|||||||
<string name="channel_complete">Lengkap</string>
|
<string name="channel_complete">Lengkap</string>
|
||||||
<string name="channel_progress">Kemajuan</string>
|
<string name="channel_progress">Kemajuan</string>
|
||||||
<string name="download_notifier_download_finish">Unduhan selesai</string>
|
<string name="download_notifier_download_finish">Unduhan selesai</string>
|
||||||
|
<string name="channel_errors">error</string>
|
||||||
</resources>
|
</resources>
|
@ -87,7 +87,7 @@
|
|||||||
<string name="action_webview_back">უკან</string>
|
<string name="action_webview_back">უკან</string>
|
||||||
<string name="action_webview_forward">წინ</string>
|
<string name="action_webview_forward">წინ</string>
|
||||||
<string name="action_webview_refresh">განახლება</string>
|
<string name="action_webview_refresh">განახლება</string>
|
||||||
<string name="loading">იტვირთება...</string>
|
<string name="loading">იტვირთება…</string>
|
||||||
<string name="app_not_available">აპლიკაცია არ არის ხელმისაწვდომი</string>
|
<string name="app_not_available">აპლიკაცია არ არის ხელმისაწვდომი</string>
|
||||||
<string name="short_recent_updates">განახლებები</string>
|
<string name="short_recent_updates">განახლებები</string>
|
||||||
<string name="pref_category_general">ზოგადი</string>
|
<string name="pref_category_general">ზოგადი</string>
|
||||||
@ -302,7 +302,7 @@
|
|||||||
<string name="logout_success">გამოსვლა წარმატებით მოხერხდა</string>
|
<string name="logout_success">გამოსვლა წარმატებით მოხერხდა</string>
|
||||||
<string name="invalid_login">შესვლა ვერ მოხერხდა</string>
|
<string name="invalid_login">შესვლა ვერ მოხერხდა</string>
|
||||||
<string name="unknown_error">დაფიქსირდა უცნობი შეცდომა</string>
|
<string name="unknown_error">დაფიქსირდა უცნობი შეცდომა</string>
|
||||||
<string name="library_search_hint">სათაური ან ავტორი...</string>
|
<string name="library_search_hint">სათაური ან ავტორი…</string>
|
||||||
<string name="updating_category">კატეგორია ახლდება</string>
|
<string name="updating_category">კატეგორია ახლდება</string>
|
||||||
<string name="local_source_badge">ლოკალური</string>
|
<string name="local_source_badge">ლოკალური</string>
|
||||||
<string name="confirm_delete_manga">დარწმუნებული ხართ რომ გსურთ წაშალოთ შერჩეული მანგა?</string>
|
<string name="confirm_delete_manga">დარწმუნებული ხართ რომ გსურთ წაშალოთ შერჩეული მანგა?</string>
|
||||||
@ -320,7 +320,7 @@
|
|||||||
<string name="last_used_source">ბოლოს გამოყენებული</string>
|
<string name="last_used_source">ბოლოს გამოყენებული</string>
|
||||||
<string name="invalid_combination">ნაგულისხმევის მონიშვნა შეუძლებელია სხვა კატეგორიასთან ერთად</string>
|
<string name="invalid_combination">ნაგულისხმევის მონიშვნა შეუძლებელია სხვა კატეგორიასთან ერთად</string>
|
||||||
<string name="added_to_library">მანგა დაემატა თქვენს ბიბლიოთეკას</string>
|
<string name="added_to_library">მანგა დაემატა თქვენს ბიბლიოთეკას</string>
|
||||||
<string name="action_global_search_hint">გლობალური ძებნა...</string>
|
<string name="action_global_search_hint">გლობალური ძებნა…</string>
|
||||||
<string name="latest">უკანასკნელი</string>
|
<string name="latest">უკანასკნელი</string>
|
||||||
<string name="browse">დათვალიერება</string>
|
<string name="browse">დათვალიერება</string>
|
||||||
<string name="manga_detail_tab">ინფორმაცია</string>
|
<string name="manga_detail_tab">ინფორმაცია</string>
|
||||||
@ -338,7 +338,8 @@
|
|||||||
<string name="manga_info_expand">მეტი ინფორმაციის ჩვენება</string>
|
<string name="manga_info_expand">მეტი ინფორმაციის ჩვენება</string>
|
||||||
<string name="manga_info_collapse">ნაკლები ინფორმაციის ჩვენება</string>
|
<string name="manga_info_collapse">ნაკლები ინფორმაციის ჩვენება</string>
|
||||||
<string name="delete_downloads_for_manga">გადმოწერილი თავების წაშლა</string>
|
<string name="delete_downloads_for_manga">გადმოწერილი თავების წაშლა</string>
|
||||||
<string name="copied_to_clipboard">დაკოპირებულია ბუფერში:\\n%1$s</string>
|
<string name="copied_to_clipboard">დაკოპირებულია ბუფერში:
|
||||||
|
\n%1$s</string>
|
||||||
<string name="source_not_installed">წყარო არ არის დაინსტალირებული: %1$s</string>
|
<string name="source_not_installed">წყარო არ არის დაინსტალირებული: %1$s</string>
|
||||||
<string name="snack_add_to_library">დავამატო მანგა ბიბლიოთეკაში?</string>
|
<string name="snack_add_to_library">დავამატო მანგა ბიბლიოთეკაში?</string>
|
||||||
<string name="manga_chapters_tab">თავები</string>
|
<string name="manga_chapters_tab">თავები</string>
|
||||||
@ -392,9 +393,9 @@
|
|||||||
<string name="snack_categories_deleted">კატეგორიები წაიშალა</string>
|
<string name="snack_categories_deleted">კატეგორიები წაიშალა</string>
|
||||||
<string name="dialog_with_checkbox_remove_description">ეს წაშლის ამ თავის წაკითხვის თარიღს. დარწმუნებული ხართ?</string>
|
<string name="dialog_with_checkbox_remove_description">ეს წაშლის ამ თავის წაკითხვის თარიღს. დარწმუნებული ხართ?</string>
|
||||||
<string name="picture_saved">სურათი შენახულია</string>
|
<string name="picture_saved">სურათი შენახულია</string>
|
||||||
<string name="saving_picture">სურათი ინახება...</string>
|
<string name="saving_picture">სურათი ინახება</string>
|
||||||
<string name="options">პარამეტრები</string>
|
<string name="options">პარამეტრები</string>
|
||||||
<string name="downloading">გადმოწერა...</string>
|
<string name="downloading">გადმოწერა…</string>
|
||||||
<string name="download_progress">გადმოწერილია %1$d%%</string>
|
<string name="download_progress">გადმოწერილია %1$d%%</string>
|
||||||
<string name="chapter_progress">გვერდი: %1$d</string>
|
<string name="chapter_progress">გვერდი: %1$d</string>
|
||||||
<string name="chapter_subtitle">თავი: %1$d</string>
|
<string name="chapter_subtitle">თავი: %1$d</string>
|
||||||
@ -409,7 +410,7 @@
|
|||||||
<string name="transition_previous">წინა:</string>
|
<string name="transition_previous">წინა:</string>
|
||||||
<string name="transition_no_next">შემდეგი თავი არ არის</string>
|
<string name="transition_no_next">შემდეგი თავი არ არის</string>
|
||||||
<string name="transition_no_previous">წინა თავი არ არის</string>
|
<string name="transition_no_previous">წინა თავი არ არის</string>
|
||||||
<string name="transition_pages_loading">გვერდები იტვირთება...</string>
|
<string name="transition_pages_loading">გვერდები იტვირთება…</string>
|
||||||
<string name="transition_pages_error">გვერდების ჩატვირთვა ვერ მოხერხდა: %1$s</string>
|
<string name="transition_pages_error">გვერდების ჩატვირთვა ვერ მოხერხდა: %1$s</string>
|
||||||
<string name="page_list_empty_error">ვერცერთი გვერდი ვერ მოიძევნა</string>
|
<string name="page_list_empty_error">ვერცერთი გვერდი ვერ მოიძევნა</string>
|
||||||
<string name="updating_library">ბიბლიოთეკის განახლება</string>
|
<string name="updating_library">ბიბლიოთეკის განახლება</string>
|
||||||
@ -427,7 +428,7 @@
|
|||||||
<string name="notification_chapters_single_and_more">თავი %1$s და %2$d მეტი</string>
|
<string name="notification_chapters_single_and_more">თავი %1$s და %2$d მეტი</string>
|
||||||
<string name="notification_chapters_multiple">თავები %1$s</string>
|
<string name="notification_chapters_multiple">თავები %1$s</string>
|
||||||
<string name="notification_cover_update_failed">ვერ მოხერხდა ყდის განახლება</string>
|
<string name="notification_cover_update_failed">ვერ მოხერხდა ყდის განახლება</string>
|
||||||
<string name="notification_first_add_to_library">"გთხოვთ ჯერ დაამატოთ მანგა თქვენს ბიბლიოთეკაში "</string>
|
<string name="notification_first_add_to_library">გთხოვთ ჯერ დაამატოთ მანგა თქვენს ბიბლიოთეკაში</string>
|
||||||
<string name="notification_not_connected_to_ac_title">სინქრონიზაცია გაუქმებულია</string>
|
<string name="notification_not_connected_to_ac_title">სინქრონიზაცია გაუქმებულია</string>
|
||||||
<string name="notification_no_connection_title">სინქრონიზაცია გაუქმებულია</string>
|
<string name="notification_no_connection_title">სინქრონიზაცია გაუქმებულია</string>
|
||||||
<string name="notification_not_connected_to_ac_body">არ არის შეერთებული დენის წყაროსთან</string>
|
<string name="notification_not_connected_to_ac_body">არ არის შეერთებული დენის წყაროსთან</string>
|
||||||
@ -437,10 +438,10 @@
|
|||||||
<string name="file_select_icon">ამოირჩიე მალსახმობის ნიშნაკი</string>
|
<string name="file_select_icon">ამოირჩიე მალსახმობის ნიშნაკი</string>
|
||||||
<string name="update_check_confirm">გადმოწერა</string>
|
<string name="update_check_confirm">გადმოწერა</string>
|
||||||
<string name="update_check_ignore">დაიგნორება</string>
|
<string name="update_check_ignore">დაიგნორება</string>
|
||||||
<string name="update_check_no_new_updates">"განახლება ვერ მოიძებნა "</string>
|
<string name="update_check_no_new_updates">განახლება ვერ მოიძებნა</string>
|
||||||
<string name="update_check_look_for_updates">განახლების ძებნა...</string>
|
<string name="update_check_look_for_updates">განახლების ძებნა…</string>
|
||||||
<string name="update_check_notification_file_download">განახლების გადმოწერა</string>
|
<string name="update_check_notification_file_download">განახლების გადმოწერა</string>
|
||||||
<string name="update_check_notification_download_in_progress">გადმოწერა...</string>
|
<string name="update_check_notification_download_in_progress">გადმოწერა…</string>
|
||||||
<string name="update_check_notification_download_complete">გადმოწერა დასრულებულია</string>
|
<string name="update_check_notification_download_complete">გადმოწერა დასრულებულია</string>
|
||||||
<string name="update_check_notification_download_error">გადმოწერის შეცდომა</string>
|
<string name="update_check_notification_download_error">გადმოწერის შეცდომა</string>
|
||||||
<string name="update_check_notification_update_available">ხელმისაწვდომია ახალი ვერსია!</string>
|
<string name="update_check_notification_update_available">ხელმისაწვდომია ახალი ვერსია!</string>
|
||||||
@ -513,10 +514,16 @@
|
|||||||
<string name="download_notifier_page_error">გვერდი გამოტოვებულია დირექტორიაში</string>
|
<string name="download_notifier_page_error">გვერდი გამოტოვებულია დირექტორიაში</string>
|
||||||
<string name="action_enable_all">ჩართე ყველა</string>
|
<string name="action_enable_all">ჩართე ყველა</string>
|
||||||
<string name="action_disable_all">გამორთე ყველა</string>
|
<string name="action_disable_all">გამორთე ყველა</string>
|
||||||
<string name="secure_screen_summary">"აპლიკაციებს შორის გადართვისას შემადგენლობის დამალვა და სკრინშოტების დაბლოკვა "</string>
|
<string name="secure_screen_summary">აპლიკაციებს შორის გადართვისას შემადგენლობის დამალვა და სკრინშოტების დაბლოკვა</string>
|
||||||
<string name="untrusted_extension_message">ეს დამატება ხელმოწერილია უცნობი სერთიფიკატის მიერ და არ არის აქტივირებული\\n\\nმავნე დამატებას შეუძლია წაიკითხოს შესვლის მონაცემები შენახული ამ აპლიკაციაში ან გაუშვას თავისი კოდი \\n\\nამ სერტიფიკატის ნდობით თქვენ თქვენს თავზე იღებთ რისკებს და პასუხისმგებლობას.</string>
|
<string name="untrusted_extension_message">ეს დამატება ხელმოწერილია უცნობი სერთიფიკატის მიერ და არ არის აქტივირებული\\n\\nმავნე დამატებას შეუძლია
|
||||||
|
\n
|
||||||
|
\nწაიკითხოს შესვლის მონაცემები შენახული ამ აპლიკაციაში ან გაუშვას თავისი კოდი \\n\\nამ სერტიფიკატის ნდობით თქვენ
|
||||||
|
\n
|
||||||
|
\nთქვენს თავზე იღებთ რისკებს და პასუხისმგებლობას.</string>
|
||||||
<string name="tracking_info">ცალმხრივი სინქრონიზაცია თვალყურის სადევნებელ სერვისებში თავების პროგრესის განსაახლებლად. მიადევნე თვალყური ინდივიდუალურ მანგებს მათი ჩანართებიდან</string>
|
<string name="tracking_info">ცალმხრივი სინქრონიზაცია თვალყურის სადევნებელ სერვისებში თავების პროგრესის განსაახლებლად. მიადევნე თვალყური ინდივიდუალურ მანგებს მათი ჩანართებიდან</string>
|
||||||
<string name="backup_restore_content">აღდგენა იყენებს წყაროებს მონაცემების გადმოსაწერად.\\n\\nდარწმუნდი რომ გაქვს დაინსტალირებული ყველა საჭირო დამატება და ხარ დალოგინებული წყაროებში და თვალყურის სადევნებელ სერვისებში ააღდგენამდე.</string>
|
<string name="backup_restore_content">აღდგენა იყენებს წყაროებს მონაცემების გადმოსაწერად.\\n\\nდარწმუნდი რომ გაქვს დაინსტალირებული ყველა
|
||||||
|
\n
|
||||||
|
\nსაჭირო დამატება და ხარ დალოგინებული წყაროებში და თვალყურის სადევნებელ სერვისებში ააღდგენამდე.</string>
|
||||||
<string name="pref_refresh_library_tracking_summary">ანახლებს სტატუსს, შეფასებას და ბოლო თავს წაკითხულს თვალყურის სადევნებელ სერვისებიდან</string>
|
<string name="pref_refresh_library_tracking_summary">ანახლებს სტატუსს, შეფასებას და ბოლო თავს წაკითხულს თვალყურის სადევნებელ სერვისებიდან</string>
|
||||||
<string name="download_notifier_page_ready_error">გვერდი ვერ ჩაიტვირთა</string>
|
<string name="download_notifier_page_ready_error">გვერდი ვერ ჩაიტვირთა</string>
|
||||||
<string name="filter_mode_overlay">გადაფარება</string>
|
<string name="filter_mode_overlay">გადაფარება</string>
|
||||||
|
@ -283,12 +283,12 @@
|
|||||||
<string name="update_check_confirm">다운로드</string>
|
<string name="update_check_confirm">다운로드</string>
|
||||||
<string name="update_check_ignore">무시</string>
|
<string name="update_check_ignore">무시</string>
|
||||||
<string name="update_check_no_new_updates">새로운 업데이트 없음</string>
|
<string name="update_check_no_new_updates">새로운 업데이트 없음</string>
|
||||||
<string name="update_check_look_for_updates">"업데이트를 찾는중 "</string>
|
<string name="update_check_look_for_updates">업데이트를 찾는중…</string>
|
||||||
<string name="update_check_notification_file_download">업데이트 다운로드</string>
|
<string name="update_check_notification_file_download">업데이트 다운로드</string>
|
||||||
<string name="update_check_notification_download_in_progress">다운로드 진행중</string>
|
<string name="update_check_notification_download_in_progress">다운로드 진행중…</string>
|
||||||
<string name="update_check_notification_download_complete">다운로드 완료됨</string>
|
<string name="update_check_notification_download_complete">다운로드 완료됨</string>
|
||||||
<string name="update_check_notification_download_error">다운로드 오류</string>
|
<string name="update_check_notification_download_error">다운로드 오류</string>
|
||||||
<string name="update_check_notification_update_available">업데이트 이용 가능</string>
|
<string name="update_check_notification_update_available">업데이트 이용 가능!</string>
|
||||||
<string name="description_cover">만화 표지</string>
|
<string name="description_cover">만화 표지</string>
|
||||||
<string name="information_no_downloads">다운로드 없음</string>
|
<string name="information_no_downloads">다운로드 없음</string>
|
||||||
<string name="information_no_recent">최신 챕터 없음</string>
|
<string name="information_no_recent">최신 챕터 없음</string>
|
||||||
@ -339,7 +339,7 @@
|
|||||||
<string name="invalid_combination">기본 카테고리는 다른 카테고리와 함께 선택될 수 없습니다</string>
|
<string name="invalid_combination">기본 카테고리는 다른 카테고리와 함께 선택될 수 없습니다</string>
|
||||||
<string name="added_to_library">만화가 서재에 추가되었습니다</string>
|
<string name="added_to_library">만화가 서재에 추가되었습니다</string>
|
||||||
<string name="browse">찾아보기</string>
|
<string name="browse">찾아보기</string>
|
||||||
<string name="manga_not_in_db">이 만화는 데이터베이스에서 제거되었습니다!</string>
|
<string name="manga_not_in_db">이 만화는 데이터베이스에서 제거되었습니다</string>
|
||||||
<string name="licensed">판권작</string>
|
<string name="licensed">판권작</string>
|
||||||
<string name="copied_to_clipboard">클립보드에 %1$s 복사됨</string>
|
<string name="copied_to_clipboard">클립보드에 %1$s 복사됨</string>
|
||||||
<string name="manga_chapter_no_title">제목 없음</string>
|
<string name="manga_chapter_no_title">제목 없음</string>
|
||||||
|
@ -205,21 +205,21 @@
|
|||||||
<string name="creating_backup">Oppretter sikkerhetskopi</string>
|
<string name="creating_backup">Oppretter sikkerhetskopi</string>
|
||||||
<string name="pref_clear_chapter_cache">Tøm kapittelhurtiglager</string>
|
<string name="pref_clear_chapter_cache">Tøm kapittelhurtiglager</string>
|
||||||
<string name="used_cache">Brukt: %1$s</string>
|
<string name="used_cache">Brukt: %1$s</string>
|
||||||
<string name="cache_deleted">Hurtiglager tømt. %1$d filer har blitt slettet.</string>
|
<string name="cache_deleted">Hurtiglager tømt. %1$d filer har blitt slettet</string>
|
||||||
<string name="cache_delete_error">Feil oppstod under tømming av hurtiglager</string>
|
<string name="cache_delete_error">Feil oppstod under tømming av hurtiglager</string>
|
||||||
<string name="pref_clear_cookies">Tøm kaker</string>
|
<string name="pref_clear_cookies">Tøm kaker</string>
|
||||||
<string name="cookies_cleared">Kaker tømt</string>
|
<string name="cookies_cleared">Kaker tømt</string>
|
||||||
<string name="choices_reset">Dialogvinduvalg tilbakestilt</string>
|
<string name="choices_reset">Dialogvinduvalg tilbakestilt</string>
|
||||||
<string name="pref_clear_database">Tøm database</string>
|
<string name="pref_clear_database">Tøm database</string>
|
||||||
<string name="pref_clear_database_summary">Slett manga og kapittel som ikke finnes i biblioteket ditt</string>
|
<string name="pref_clear_database_summary">Slett manga og kapittel som ikke finnes i biblioteket ditt</string>
|
||||||
<string name="clear_database_confirmation">Er du sikker\? Leste kapittel og framdrift for manga som ikke er i biblioteket vil gå tapt.</string>
|
<string name="clear_database_confirmation">Er du sikker\? Leste kapittel og framdrift for manga som ikke er i biblioteket vil gå tapt</string>
|
||||||
<string name="clear_database_completed">Oppføringer slettet</string>
|
<string name="clear_database_completed">Oppføringer slettet</string>
|
||||||
<string name="pref_refresh_library_tracking">Gjenopprett sporingsmetadata</string>
|
<string name="pref_refresh_library_tracking">Gjenopprett sporingsmetadata</string>
|
||||||
<string name="pref_refresh_library_tracking_summary">Oppdaterer status, poengsum og sist leste kapittel fra sporingstjenestene</string>
|
<string name="pref_refresh_library_tracking_summary">Oppdaterer status, poengsum og sist leste kapittel fra sporingstjenestene</string>
|
||||||
<string name="version">Versjon</string>
|
<string name="version">Versjon</string>
|
||||||
<string name="build_time">Byggtid</string>
|
<string name="build_time">Byggtid</string>
|
||||||
<string name="pref_enable_acra">Send kræsjrapporter</string>
|
<string name="pref_enable_acra">Send kræsjrapporter</string>
|
||||||
<string name="pref_acra_summary">Hjelper til med fiksing av feil. Ingen sensitiv data vil bli sendt.</string>
|
<string name="pref_acra_summary">Hjelper til med fiksing av feil. Ingen sensitiv data vil bli sendt</string>
|
||||||
<string name="login_title">Innlogging for %1$s</string>
|
<string name="login_title">Innlogging for %1$s</string>
|
||||||
<string name="username">Brukernavn</string>
|
<string name="username">Brukernavn</string>
|
||||||
<string name="password">Passord</string>
|
<string name="password">Passord</string>
|
||||||
@ -295,7 +295,7 @@
|
|||||||
<string name="track_start_date">Startet</string>
|
<string name="track_start_date">Startet</string>
|
||||||
<string name="track_type">Type</string>
|
<string name="track_type">Type</string>
|
||||||
<string name="track_author">Forfatter</string>
|
<string name="track_author">Forfatter</string>
|
||||||
<string name="error_category_exists">En kategori ved dette navnet finnes allerede.</string>
|
<string name="error_category_exists">En kategori ved dette navnet finnes allerede!</string>
|
||||||
<string name="snack_categories_deleted">Kategorier slettet</string>
|
<string name="snack_categories_deleted">Kategorier slettet</string>
|
||||||
<string name="dialog_with_checkbox_remove_description">Lesningsdato for dette kapittelet vil bli fjernet. Er du sikker\?</string>
|
<string name="dialog_with_checkbox_remove_description">Lesningsdato for dette kapittelet vil bli fjernet. Er du sikker\?</string>
|
||||||
<string name="dialog_with_checkbox_reset">Tilbakestill alle kapittel for denne mangaen</string>
|
<string name="dialog_with_checkbox_reset">Tilbakestill alle kapittel for denne mangaen</string>
|
||||||
@ -348,7 +348,7 @@
|
|||||||
\nForsikre deg om at du har installert alle nødvendige utvidelser og er logget inn i kilder og sporingstjenester før du gjenoppretter.</string>
|
\nForsikre deg om at du har installert alle nødvendige utvidelser og er logget inn i kilder og sporingstjenester før du gjenoppretter.</string>
|
||||||
<string name="confirm_set_image_as_cover">Bruk dette bildet som omslag\?</string>
|
<string name="confirm_set_image_as_cover">Bruk dette bildet som omslag\?</string>
|
||||||
<string name="migration_info">Trykk for å velge kilde å migrere fra</string>
|
<string name="migration_info">Trykk for å velge kilde å migrere fra</string>
|
||||||
<string name="download_queue_error">Kunne ikke laste ned kapitler. Du kan prøve igjen i nedlastingsdelen.</string>
|
<string name="download_queue_error">Kunne ikke laste ned kapitler. Du kan prøve igjen i nedlastingsdelen</string>
|
||||||
<string name="notification_update_progress">Oppdateringsfremdrift: %1$d/%2$d</string>
|
<string name="notification_update_progress">Oppdateringsfremdrift: %1$d/%2$d</string>
|
||||||
<string name="notification_first_add_to_library">Legg til mangaen i biblioteket ditt før du gjør dette</string>
|
<string name="notification_first_add_to_library">Legg til mangaen i biblioteket ditt før du gjør dette</string>
|
||||||
<string name="notification_not_connected_to_ac_title">Synkronisering avbrutt</string>
|
<string name="notification_not_connected_to_ac_title">Synkronisering avbrutt</string>
|
||||||
|
@ -603,4 +603,5 @@
|
|||||||
<string name="group_backup_restore">Backup e restauração</string>
|
<string name="group_backup_restore">Backup e restauração</string>
|
||||||
<string name="group_downloader">Downloads</string>
|
<string name="group_downloader">Downloads</string>
|
||||||
<string name="channel_complete">Concluído</string>
|
<string name="channel_complete">Concluído</string>
|
||||||
|
<string name="channel_errors">Erros</string>
|
||||||
</resources>
|
</resources>
|
@ -49,7 +49,7 @@
|
|||||||
<string name="action_stop">Стоп</string>
|
<string name="action_stop">Стоп</string>
|
||||||
<string name="action_update">Обновить</string>
|
<string name="action_update">Обновить</string>
|
||||||
<string name="action_update_library">Обновить библиотеку</string>
|
<string name="action_update_library">Обновить библиотеку</string>
|
||||||
<string name="all">Всё</string>
|
<string name="all">Все</string>
|
||||||
<string name="backup">Резервная копия</string>
|
<string name="backup">Резервная копия</string>
|
||||||
<string name="black_background">Черный</string>
|
<string name="black_background">Черный</string>
|
||||||
<string name="build_time">Дата сборки</string>
|
<string name="build_time">Дата сборки</string>
|
||||||
@ -621,4 +621,5 @@
|
|||||||
<string name="group_downloader">Загрузки</string>
|
<string name="group_downloader">Загрузки</string>
|
||||||
<string name="channel_complete">Завершено</string>
|
<string name="channel_complete">Завершено</string>
|
||||||
<string name="channel_progress">Прогресс</string>
|
<string name="channel_progress">Прогресс</string>
|
||||||
|
<string name="channel_errors">Ошибки</string>
|
||||||
</resources>
|
</resources>
|
@ -176,7 +176,7 @@
|
|||||||
<string name="rotation_lock">Zaključano</string>
|
<string name="rotation_lock">Zaključano</string>
|
||||||
<string name="rotation_force_portrait">Forsirano vertikalno</string>
|
<string name="rotation_force_portrait">Forsirano vertikalno</string>
|
||||||
<string name="rotation_force_landscape">Forsirano horizontalno</string>
|
<string name="rotation_force_landscape">Forsirano horizontalno</string>
|
||||||
<string name="color_filter_r_value">"R "</string>
|
<string name="color_filter_r_value">R</string>
|
||||||
<string name="color_filter_g_value">G</string>
|
<string name="color_filter_g_value">G</string>
|
||||||
<string name="color_filter_b_value">B</string>
|
<string name="color_filter_b_value">B</string>
|
||||||
<string name="color_filter_a_value">A</string>
|
<string name="color_filter_a_value">A</string>
|
||||||
|
@ -251,7 +251,7 @@
|
|||||||
<string name="action_global_search_hint">ค้นหาทั้งหมด…</string>
|
<string name="action_global_search_hint">ค้นหาทั้งหมด…</string>
|
||||||
<string name="latest">ล่าสุด</string>
|
<string name="latest">ล่าสุด</string>
|
||||||
<string name="browse">เปิดดู</string>
|
<string name="browse">เปิดดู</string>
|
||||||
<string name="manga_not_in_db">มังงะนี้ถูกลบออกจากฐานข้อมูล!</string>
|
<string name="manga_not_in_db">มังงะนี้ถูกลบออกจากฐานข้อมูล</string>
|
||||||
<string name="manga_detail_tab">ข้อมูล</string>
|
<string name="manga_detail_tab">ข้อมูล</string>
|
||||||
<string name="description">คำอธิบาย</string>
|
<string name="description">คำอธิบาย</string>
|
||||||
<string name="ongoing">ยังดำเนินการอยู่</string>
|
<string name="ongoing">ยังดำเนินการอยู่</string>
|
||||||
|
@ -210,6 +210,7 @@
|
|||||||
<string name="backup_created">Nagawa na ang backup</string>
|
<string name="backup_created">Nagawa na ang backup</string>
|
||||||
<string name="restore_completed">Nakumpleto na ang pagre-restore</string>
|
<string name="restore_completed">Nakumpleto na ang pagre-restore</string>
|
||||||
<string name="backup_restore_content">Ginagamit ng pagre-restore ang source para makakuha ng data, maaring magamit ang inyong data.
|
<string name="backup_restore_content">Ginagamit ng pagre-restore ang source para makakuha ng data, maaring magamit ang inyong data.
|
||||||
|
\n
|
||||||
\nSiguraduhin din na ikaw ay maayos na naka-login sa mga source that nangangailangan nito bago mag-restore.</string>
|
\nSiguraduhin din na ikaw ay maayos na naka-login sa mga source that nangangailangan nito bago mag-restore.</string>
|
||||||
<string name="pref_color_filter_mode">Blend mode ng color filter</string>
|
<string name="pref_color_filter_mode">Blend mode ng color filter</string>
|
||||||
<string name="filter_mode_default">Default</string>
|
<string name="filter_mode_default">Default</string>
|
||||||
@ -264,7 +265,7 @@
|
|||||||
<string name="action_global_search_hint">Pangkalahatang paghahanap…</string>
|
<string name="action_global_search_hint">Pangkalahatang paghahanap…</string>
|
||||||
<string name="latest">Pinakabago</string>
|
<string name="latest">Pinakabago</string>
|
||||||
<string name="browse">Mag-browse</string>
|
<string name="browse">Mag-browse</string>
|
||||||
<string name="manga_not_in_db">Ang manga na ito ay tinanggal mula sa database!</string>
|
<string name="manga_not_in_db">Ang manga na ito ay tinanggal mula sa database.</string>
|
||||||
<string name="manga_detail_tab">Impo</string>
|
<string name="manga_detail_tab">Impo</string>
|
||||||
<string name="description">Paglalarawan</string>
|
<string name="description">Paglalarawan</string>
|
||||||
<string name="ongoing">Nagpapatuloy</string>
|
<string name="ongoing">Nagpapatuloy</string>
|
||||||
@ -364,7 +365,7 @@
|
|||||||
<string name="update_check_no_new_updates">Walang mga bagong update</string>
|
<string name="update_check_no_new_updates">Walang mga bagong update</string>
|
||||||
<string name="update_check_look_for_updates">Naghahanap ng mga update…</string>
|
<string name="update_check_look_for_updates">Naghahanap ng mga update…</string>
|
||||||
<string name="update_check_notification_file_download">Download update</string>
|
<string name="update_check_notification_file_download">Download update</string>
|
||||||
<string name="update_check_notification_download_in_progress">Kasalukuyang nagda-download</string>
|
<string name="update_check_notification_download_in_progress">Kasalukuyang nagda-download…</string>
|
||||||
<string name="update_check_notification_download_complete">Nakumpleto ang pag-download</string>
|
<string name="update_check_notification_download_complete">Nakumpleto ang pag-download</string>
|
||||||
<string name="update_check_notification_download_error">Error sa pag-download</string>
|
<string name="update_check_notification_download_error">Error sa pag-download</string>
|
||||||
<string name="update_check_notification_update_available">Mayroong update</string>
|
<string name="update_check_notification_update_available">Mayroong update</string>
|
||||||
|
@ -74,6 +74,6 @@
|
|||||||
<color name="md_blue_grey_900">#263238</color>
|
<color name="md_blue_grey_900">#263238</color>
|
||||||
<color name="md_blue_grey_800">#37474F</color>
|
<color name="md_blue_grey_800">#37474F</color>
|
||||||
|
|
||||||
<color name="pale_green">#99CC99</color>
|
<color name="pale_green">#AAE1AA</color>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -678,6 +678,7 @@
|
|||||||
<string name="channel_common">Common</string>
|
<string name="channel_common">Common</string>
|
||||||
<string name="channel_progress">Progress</string>
|
<string name="channel_progress">Progress</string>
|
||||||
<string name="channel_complete">Complete</string>
|
<string name="channel_complete">Complete</string>
|
||||||
|
<string name="channel_errors">Errors</string>
|
||||||
<string name="channel_library">Library</string>
|
<string name="channel_library">Library</string>
|
||||||
<string name="group_downloader">Downloads</string>
|
<string name="group_downloader">Downloads</string>
|
||||||
<string name="group_backup_restore">Backup and restore</string>
|
<string name="group_backup_restore">Backup and restore</string>
|
||||||
|
Reference in New Issue
Block a user