Compare commits
33 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5192175ddc | ||
|
|
274a672637 | ||
|
|
c281ab5a39 | ||
|
|
0106afc93c | ||
|
|
d69b091858 | ||
|
|
f71274d90d | ||
|
|
a37b9a1036 | ||
|
|
a9b8174b10 | ||
|
|
20a0eda5db | ||
|
|
e231dba0b0 | ||
|
|
33bccd10fe | ||
|
|
9956f1ae4f | ||
|
|
09a3c5da23 | ||
|
|
b1d51bbefb | ||
|
|
9e7aaa6c91 | ||
|
|
9686c97731 | ||
|
|
663718ece4 | ||
|
|
e3048d1eb2 | ||
|
|
781438d83a | ||
|
|
f5625cc6b9 | ||
|
|
132d375d81 | ||
|
|
54007ecd28 | ||
|
|
03c2b55776 | ||
|
|
c6e46384f8 | ||
|
|
ce1c607f05 | ||
|
|
19bbe51f01 | ||
|
|
ff4a4eaf78 | ||
|
|
2cf08f74db | ||
|
|
cc6bbc9869 | ||
|
|
8d962516f4 | ||
|
|
ced4ca01cb | ||
|
|
1195323acd | ||
|
|
8d47b09e80 |
6
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
6
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
@@ -44,7 +44,7 @@ body:
|
||||
label: Kotatsu version
|
||||
description: You can find your Kotatsu version in **Settings → About**.
|
||||
placeholder: |
|
||||
Example: "3.3"
|
||||
Example: "3.3.1"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -85,9 +85,9 @@ body:
|
||||
required: true
|
||||
- label: I have written a short but informative title.
|
||||
required: true
|
||||
- label: If this is an issue with a source, I should be opening an issue in the [parsers repository](https://github.com/nv95/kotatsu-parsers/issues/new).
|
||||
- label: If this is an issue with a source, I should be opening an issue in the [parsers repository](https://github.com/KotatsuApp/kotatsu-parsers/issues/new).
|
||||
required: true
|
||||
- label: I have updated the app to version **[3.3](https://github.com/nv95/Kotatsu/releases/latest)**.
|
||||
- label: I have updated the app to version **[3.3.1](https://github.com/KotatsuApp/Kotatsu/releases/latest)**.
|
||||
required: true
|
||||
- label: I will fill out all of the requested information in this form.
|
||||
required: true
|
||||
4
.github/ISSUE_TEMPLATE/request_feature.yml
vendored
4
.github/ISSUE_TEMPLATE/request_feature.yml
vendored
@@ -31,9 +31,9 @@ body:
|
||||
required: true
|
||||
- label: I have written a short but informative title.
|
||||
required: true
|
||||
- label: If this is an issue with a source, I should be opening an issue in the [parsers repository](https://github.com/nv95/kotatsu-parsers/issues/new).
|
||||
- label: If this is an issue with a source, I should be opening an issue in the [parsers repository](https://github.com/KotatsuApp/kotatsu-parsers/issues/new).
|
||||
required: true
|
||||
- label: I have updated the app to version **[3.3](https://github.com/nv95/Kotatsu/releases/latest)**.
|
||||
- label: I have updated the app to version **[3.3.1](https://github.com/KotatsuApp/Kotatsu/releases/latest)**.
|
||||
required: true
|
||||
- label: I will fill out all of the requested information in this form.
|
||||
required: true
|
||||
@@ -10,7 +10,7 @@ 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 from GitHub Releases:
|
||||
|
||||
- [Latest release](https://github.com/KotatsuApp/Kotatsu/releases/latest)
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ android {
|
||||
applicationId 'org.koitharu.kotatsu'
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 32
|
||||
versionCode 410
|
||||
versionName '3.3.1'
|
||||
versionCode 411
|
||||
versionName '3.3.2'
|
||||
generatedDensities = []
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -73,7 +73,7 @@ afterEvaluate {
|
||||
}
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||
implementation('com.github.nv95:kotatsu-parsers:8a3b6df91d') {
|
||||
implementation('com.github.nv95:kotatsu-parsers:c92f89f307') {
|
||||
exclude group: 'org.json', module: 'json'
|
||||
}
|
||||
|
||||
@@ -82,19 +82,20 @@ dependencies {
|
||||
implementation 'androidx.core:core-ktx:1.8.0'
|
||||
implementation 'androidx.activity:activity-ktx:1.5.0-rc01'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.5.0-rc01'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0-rc01'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.0-rc01'
|
||||
implementation 'androidx.lifecycle:lifecycle-service:2.5.0-rc01'
|
||||
implementation 'androidx.lifecycle:lifecycle-process:2.5.0-rc01'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0-rc02'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.0-rc02'
|
||||
implementation 'androidx.lifecycle:lifecycle-service:2.5.0-rc02'
|
||||
implementation 'androidx.lifecycle:lifecycle-process:2.5.0-rc02'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
||||
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
|
||||
implementation 'androidx.preference:preference-ktx:1.2.0'
|
||||
implementation 'androidx.work:work-runtime-ktx:2.7.1'
|
||||
implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha04'
|
||||
implementation 'com.google.android.material:material:1.7.0-alpha02'
|
||||
//noinspection LifecycleAnnotationProcessorWithJava8
|
||||
kapt 'androidx.lifecycle:lifecycle-compiler:2.5.0-rc01'
|
||||
kapt 'androidx.lifecycle:lifecycle-compiler:2.5.0-rc02'
|
||||
|
||||
implementation 'androidx.room:room-runtime:2.4.2'
|
||||
implementation 'androidx.room:room-ktx:2.4.2'
|
||||
|
||||
@@ -6,14 +6,12 @@ import androidx.annotation.CallSuper
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.core.graphics.Insets
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner
|
||||
import org.koitharu.kotatsu.base.ui.util.WindowInsetsDelegate
|
||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||
import org.koitharu.kotatsu.settings.SettingsActivity
|
||||
import org.koitharu.kotatsu.settings.SettingsHeadersFragment
|
||||
|
||||
abstract class BasePreferenceFragment(@StringRes private val titleId: Int) :
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
package org.koitharu.kotatsu.base.ui.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.text.InputFilter
|
||||
import android.view.LayoutInflater
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import org.koitharu.kotatsu.databinding.DialogInputBinding
|
||||
|
||||
class TextInputDialog private constructor(
|
||||
private val delegate: AlertDialog,
|
||||
) : DialogInterface by delegate {
|
||||
|
||||
fun show() = delegate.show()
|
||||
|
||||
class Builder(context: Context) {
|
||||
|
||||
private val binding = DialogInputBinding.inflate(LayoutInflater.from(context))
|
||||
|
||||
private val delegate = MaterialAlertDialogBuilder(context)
|
||||
.setView(binding.root)
|
||||
|
||||
fun setTitle(@StringRes titleResId: Int): Builder {
|
||||
delegate.setTitle(titleResId)
|
||||
return this
|
||||
}
|
||||
|
||||
fun setTitle(title: CharSequence): Builder {
|
||||
delegate.setTitle(title)
|
||||
return this
|
||||
}
|
||||
|
||||
fun setHint(@StringRes hintResId: Int): Builder {
|
||||
binding.inputEdit.hint = binding.root.context.getString(hintResId)
|
||||
return this
|
||||
}
|
||||
|
||||
fun setMaxLength(maxLength: Int, strict: Boolean): Builder {
|
||||
with(binding.inputLayout) {
|
||||
counterMaxLength = maxLength
|
||||
isCounterEnabled = maxLength > 0
|
||||
}
|
||||
if (strict && maxLength > 0) {
|
||||
binding.inputEdit.filters += InputFilter.LengthFilter(maxLength)
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
fun setInputType(inputType: Int): Builder {
|
||||
binding.inputEdit.inputType = inputType
|
||||
return this
|
||||
}
|
||||
|
||||
fun setText(text: String): Builder {
|
||||
binding.inputEdit.setText(text)
|
||||
binding.inputEdit.setSelection(text.length)
|
||||
return this
|
||||
}
|
||||
|
||||
fun setPositiveButton(
|
||||
@StringRes textId: Int,
|
||||
listener: (DialogInterface, String) -> Unit
|
||||
): Builder {
|
||||
delegate.setPositiveButton(textId) { dialog, _ ->
|
||||
listener(dialog, binding.inputEdit.text?.toString().orEmpty())
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
fun setNegativeButton(
|
||||
@StringRes textId: Int,
|
||||
listener: DialogInterface.OnClickListener? = null
|
||||
): Builder {
|
||||
delegate.setNegativeButton(textId, listener)
|
||||
return this
|
||||
}
|
||||
|
||||
fun setOnCancelListener(listener: DialogInterface.OnCancelListener): Builder {
|
||||
delegate.setOnCancelListener(listener)
|
||||
return this
|
||||
}
|
||||
|
||||
fun create() =
|
||||
TextInputDialog(delegate.create())
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,11 +15,11 @@ class BackupZipOutput(val file: File) : Closeable {
|
||||
|
||||
private val output = ZipOutput(file, Deflater.BEST_COMPRESSION)
|
||||
|
||||
suspend fun put(entry: BackupEntry) {
|
||||
suspend fun put(entry: BackupEntry) = runInterruptible(Dispatchers.IO) {
|
||||
output.put(entry.name, entry.data.toString(2))
|
||||
}
|
||||
|
||||
suspend fun finish() {
|
||||
suspend fun finish() = runInterruptible(Dispatchers.IO) {
|
||||
output.finish()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package org.koitharu.kotatsu.core.exceptions
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import okio.IOException
|
||||
import org.koitharu.kotatsu.R
|
||||
|
||||
class CloudFlareProtectedException(
|
||||
val url: String
|
||||
|
||||
@@ -40,7 +40,7 @@ class AppSettings(context: Context) {
|
||||
get() = Collections.unmodifiableSet(remoteSources)
|
||||
|
||||
var listMode: ListMode
|
||||
get() = prefs.getEnumValue(KEY_LIST_MODE, ListMode.DETAILED_LIST)
|
||||
get() = prefs.getEnumValue(KEY_LIST_MODE, ListMode.GRID)
|
||||
set(value) = prefs.edit { putEnumValue(KEY_LIST_MODE, value) }
|
||||
|
||||
var defaultSection: AppSection
|
||||
@@ -125,6 +125,10 @@ class AppSettings(context: Context) {
|
||||
get() = prefs.getString(KEY_APP_PASSWORD, null)
|
||||
set(value) = prefs.edit { if (value != null) putString(KEY_APP_PASSWORD, value) else remove(KEY_APP_PASSWORD) }
|
||||
|
||||
var isBiometricProtectionEnabled: Boolean
|
||||
get() = prefs.getBoolean(KEY_PROTECT_APP_BIOMETRIC, true)
|
||||
set(value) = prefs.edit { putBoolean(KEY_PROTECT_APP_BIOMETRIC, value) }
|
||||
|
||||
var sourcesOrder: List<String>
|
||||
get() = prefs.getString(KEY_SOURCES_ORDER, null)
|
||||
?.split('|')
|
||||
@@ -293,6 +297,7 @@ class AppSettings(context: Context) {
|
||||
const val KEY_READER_MODE_DETECT = "reader_mode_detect"
|
||||
const val KEY_APP_PASSWORD = "app_password"
|
||||
const val KEY_PROTECT_APP = "protect_app"
|
||||
const val KEY_PROTECT_APP_BIOMETRIC = "protect_app_bio"
|
||||
const val KEY_APP_VERSION = "app_version"
|
||||
const val KEY_ZOOM_MODE = "zoom_mode"
|
||||
const val KEY_BACKUP = "backup"
|
||||
@@ -316,9 +321,6 @@ class AppSettings(context: Context) {
|
||||
const val KEY_APP_UPDATE = "app_update"
|
||||
const val KEY_APP_UPDATE_AUTO = "app_update_auto"
|
||||
const val KEY_APP_TRANSLATION = "about_app_translation"
|
||||
const val KEY_FEEDBACK_4PDA = "about_feedback_4pda"
|
||||
const val KEY_FEEDBACK_DISCORD = "about_feedback_discord"
|
||||
const val KEY_FEEDBACK_GITHUB = "about_feedback_github"
|
||||
|
||||
private const val NETWORK_NEVER = 0
|
||||
private const val NETWORK_ALWAYS = 1
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.Context
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.core.model.FavouriteCategory
|
||||
import com.google.android.material.R as materialR
|
||||
|
||||
class CategoriesEditDelegate(
|
||||
private val context: Context,
|
||||
@@ -11,9 +12,10 @@ class CategoriesEditDelegate(
|
||||
) {
|
||||
|
||||
fun deleteCategory(category: FavouriteCategory) {
|
||||
MaterialAlertDialogBuilder(context)
|
||||
MaterialAlertDialogBuilder(context, materialR.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered)
|
||||
.setMessage(context.getString(R.string.category_delete_confirm, category.title))
|
||||
.setTitle(R.string.remove_category)
|
||||
.setIcon(R.drawable.ic_delete)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(R.string.remove) { _, _ ->
|
||||
callback.onDeleteCategory(category)
|
||||
|
||||
@@ -3,8 +3,6 @@ package org.koitharu.kotatsu.favourites.ui.categories.edit
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AdapterView
|
||||
@@ -24,7 +22,8 @@ import org.koitharu.kotatsu.favourites.ui.categories.CategoriesActivity
|
||||
import org.koitharu.kotatsu.parsers.model.SortOrder
|
||||
import org.koitharu.kotatsu.utils.ext.getDisplayMessage
|
||||
|
||||
class FavouritesCategoryEditActivity : BaseActivity<ActivityCategoryEditBinding>(), AdapterView.OnItemClickListener {
|
||||
class FavouritesCategoryEditActivity : BaseActivity<ActivityCategoryEditBinding>(), AdapterView.OnItemClickListener,
|
||||
View.OnClickListener {
|
||||
|
||||
private val viewModel by viewModel<FavouritesCategoryEditViewModel> {
|
||||
parametersOf(intent.getLongExtra(EXTRA_ID, NO_ID))
|
||||
@@ -39,6 +38,7 @@ class FavouritesCategoryEditActivity : BaseActivity<ActivityCategoryEditBinding>
|
||||
setHomeAsUpIndicator(com.google.android.material.R.drawable.abc_ic_clear_material)
|
||||
}
|
||||
initSortSpinner()
|
||||
binding.buttonDone.setOnClickListener(this)
|
||||
|
||||
viewModel.onSaved.observe(this) { finishAfterTransition() }
|
||||
viewModel.category.observe(this, ::onCategoryChanged)
|
||||
@@ -62,22 +62,14 @@ class FavouritesCategoryEditActivity : BaseActivity<ActivityCategoryEditBinding>
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.opt_config, menu)
|
||||
menu.findItem(R.id.action_done)?.setTitle(R.string.save)
|
||||
return super.onCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
|
||||
R.id.action_done -> {
|
||||
viewModel.save(
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.button_done -> viewModel.save(
|
||||
title = binding.editName.text?.toString().orEmpty(),
|
||||
sortOrder = getSelectedSortOrder(),
|
||||
isTrackerEnabled = binding.switchTracker.isChecked,
|
||||
)
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onWindowInsetsChanged(insets: Insets) {
|
||||
|
||||
@@ -2,11 +2,9 @@ package org.koitharu.kotatsu.favourites.ui.categories.select
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import org.koin.core.parameter.parametersOf
|
||||
@@ -28,7 +26,7 @@ class FavouriteCategoriesBottomSheet :
|
||||
BaseBottomSheet<DialogFavoriteCategoriesBinding>(),
|
||||
OnListItemClickListener<MangaCategoryItem>,
|
||||
CategoriesEditDelegate.CategoriesEditCallback,
|
||||
Toolbar.OnMenuItemClickListener, View.OnClickListener {
|
||||
View.OnClickListener {
|
||||
|
||||
private val viewModel by viewModel<MangaCategoriesViewModel> {
|
||||
parametersOf(requireNotNull(arguments?.getParcelableArrayList<ParcelableManga>(KEY_MANGA_LIST)).map { it.manga })
|
||||
@@ -45,7 +43,7 @@ class FavouriteCategoriesBottomSheet :
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
adapter = MangaCategoriesAdapter(this)
|
||||
binding.recyclerViewCategories.adapter = adapter
|
||||
binding.toolbar.setOnMenuItemClickListener(this)
|
||||
binding.buttonDone.setOnClickListener(this)
|
||||
binding.itemCreate.setOnClickListener(this)
|
||||
|
||||
viewModel.content.observe(viewLifecycleOwner, this::onContentChanged)
|
||||
@@ -57,19 +55,10 @@ class FavouriteCategoriesBottomSheet :
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
override fun onMenuItemClick(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.action_done -> {
|
||||
dismiss()
|
||||
true
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.item_create -> startActivity(FavouritesCategoryEditActivity.newIntent(requireContext()))
|
||||
R.id.button_done -> dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.MenuItem
|
||||
import androidx.core.view.MenuProvider
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import org.koitharu.kotatsu.R
|
||||
import com.google.android.material.R as materialR
|
||||
|
||||
class HistoryListMenuProvider(
|
||||
private val context: Context,
|
||||
@@ -19,9 +20,10 @@ class HistoryListMenuProvider(
|
||||
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) {
|
||||
R.id.action_clear_history -> {
|
||||
MaterialAlertDialogBuilder(context)
|
||||
MaterialAlertDialogBuilder(context, materialR.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered)
|
||||
.setTitle(R.string.clear_history)
|
||||
.setMessage(R.string.text_clear_history_prompt)
|
||||
.setIcon(R.drawable.ic_delete)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(R.string.clear) { _, _ ->
|
||||
viewModel.clearHistory()
|
||||
|
||||
@@ -9,7 +9,6 @@ import androidx.collection.ArraySet
|
||||
import androidx.core.graphics.Insets
|
||||
import androidx.core.view.isNotEmpty
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
||||
@@ -299,8 +299,9 @@ class MainActivity :
|
||||
}
|
||||
|
||||
override fun onClearSearchHistory() {
|
||||
MaterialAlertDialogBuilder(this)
|
||||
MaterialAlertDialogBuilder(this, materialR.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered)
|
||||
.setTitle(R.string.clear_search_history)
|
||||
.setIcon(R.drawable.ic_clear_all)
|
||||
.setMessage(R.string.text_clear_search_history_prompt)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(R.string.clear) { _, _ ->
|
||||
|
||||
@@ -10,6 +10,11 @@ import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.TextView
|
||||
import androidx.biometric.BiometricManager
|
||||
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
|
||||
import androidx.biometric.BiometricManager.BIOMETRIC_SUCCESS
|
||||
import androidx.biometric.BiometricPrompt
|
||||
import androidx.biometric.BiometricPrompt.AuthenticationCallback
|
||||
import androidx.core.graphics.Insets
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import org.koitharu.kotatsu.R
|
||||
@@ -17,8 +22,11 @@ import org.koitharu.kotatsu.base.ui.BaseActivity
|
||||
import org.koitharu.kotatsu.databinding.ActivityProtectBinding
|
||||
import org.koitharu.kotatsu.utils.ext.getDisplayMessage
|
||||
|
||||
class ProtectActivity : BaseActivity<ActivityProtectBinding>(), TextView.OnEditorActionListener,
|
||||
TextWatcher, View.OnClickListener {
|
||||
class ProtectActivity :
|
||||
BaseActivity<ActivityProtectBinding>(),
|
||||
TextView.OnEditorActionListener,
|
||||
TextWatcher,
|
||||
View.OnClickListener {
|
||||
|
||||
private val viewModel by viewModel<ProtectViewModel>()
|
||||
|
||||
@@ -39,7 +47,9 @@ class ProtectActivity : BaseActivity<ActivityProtectBinding>(), TextView.OnEdito
|
||||
finishAfterTransition()
|
||||
}
|
||||
|
||||
binding.editPassword.requestFocus()
|
||||
if (!useFingerprint()) {
|
||||
binding.editPassword.requestFocus()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onWindowInsetsChanged(insets: Insets) {
|
||||
@@ -85,6 +95,31 @@ class ProtectActivity : BaseActivity<ActivityProtectBinding>(), TextView.OnEdito
|
||||
binding.layoutPassword.isEnabled = !isLoading
|
||||
}
|
||||
|
||||
private fun useFingerprint(): Boolean {
|
||||
if (!viewModel.isBiometricEnabled) {
|
||||
return false
|
||||
}
|
||||
if (BiometricManager.from(this).canAuthenticate(BIOMETRIC_WEAK) != BIOMETRIC_SUCCESS) {
|
||||
return false
|
||||
}
|
||||
val prompt = BiometricPrompt(this, BiometricCallback())
|
||||
val promptInfo = BiometricPrompt.PromptInfo.Builder()
|
||||
.setAllowedAuthenticators(BIOMETRIC_WEAK)
|
||||
.setTitle(getString(R.string.app_name))
|
||||
.setConfirmationRequired(false)
|
||||
.setNegativeButtonText(getString(android.R.string.cancel))
|
||||
.build()
|
||||
prompt.authenticate(promptInfo)
|
||||
return true
|
||||
}
|
||||
|
||||
private inner class BiometricCallback : AuthenticationCallback() {
|
||||
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
|
||||
super.onAuthenticationSucceeded(result)
|
||||
viewModel.unlock()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
private const val EXTRA_INTENT = "src_intent"
|
||||
|
||||
@@ -19,6 +19,9 @@ class ProtectViewModel(
|
||||
|
||||
val onUnlockSuccess = SingleLiveEvent<Unit>()
|
||||
|
||||
val isBiometricEnabled
|
||||
get() = settings.isBiometricProtectionEnabled
|
||||
|
||||
fun tryUnlock(password: String) {
|
||||
if (job?.isActive == true) {
|
||||
return
|
||||
@@ -27,12 +30,16 @@ class ProtectViewModel(
|
||||
val passwordHash = password.md5()
|
||||
val appPasswordHash = settings.appPassword
|
||||
if (passwordHash == appPasswordHash) {
|
||||
protectHelper.unlock()
|
||||
onUnlockSuccess.call(Unit)
|
||||
unlock()
|
||||
} else {
|
||||
delay(PASSWORD_COMPARE_DELAY)
|
||||
throw WrongPasswordException()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun unlock() {
|
||||
protectHelper.unlock()
|
||||
onUnlockSuccess.call(Unit)
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@ abstract class BasePageHolder<B : ViewBinding>(
|
||||
exceptionResolver: ExceptionResolver
|
||||
) : RecyclerView.ViewHolder(binding.root), PageHolderDelegate.Callback {
|
||||
|
||||
@Suppress("LeakingThis")
|
||||
protected val delegate = PageHolderDelegate(loader, settings, this, exceptionResolver)
|
||||
protected val bindingInfo = LayoutPageInfoBinding.bind(binding.root)
|
||||
|
||||
|
||||
@@ -11,10 +11,11 @@ import org.koitharu.kotatsu.utils.ext.resetTransformations
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
@Suppress("LeakingThis")
|
||||
abstract class BaseReaderAdapter<H : BasePageHolder<*>>(
|
||||
private val loader: PageLoader,
|
||||
private val settings: AppSettings,
|
||||
private val exceptionResolver: ExceptionResolver
|
||||
private val exceptionResolver: ExceptionResolver,
|
||||
) : RecyclerView.Adapter<H>() {
|
||||
|
||||
private val differ = AsyncListDiffer(this, DiffCallback())
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.search.ui
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.core.graphics.Insets
|
||||
|
||||
@@ -89,7 +89,7 @@ class SettingsActivity :
|
||||
val fm = supportFragmentManager
|
||||
val fragment = fm.fragmentFactory.instantiate(classLoader, pref.fragment ?: return false)
|
||||
fragment.arguments = pref.extras
|
||||
// fragment.setTargetFragment(caller, 0)
|
||||
fragment.setTargetFragment(caller, 0)
|
||||
openFragment(fragment)
|
||||
return true
|
||||
}
|
||||
@@ -118,6 +118,7 @@ class SettingsActivity :
|
||||
val fragment = when (intent?.action) {
|
||||
ACTION_READER -> ReaderSettingsFragment()
|
||||
ACTION_SUGGESTIONS -> SuggestionsSettingsFragment()
|
||||
ACTION_TRACKER -> TrackerSettingsFragment()
|
||||
ACTION_SOURCE -> SourceSettingsFragment.newInstance(
|
||||
intent.getSerializableExtra(EXTRA_SOURCE) as? MangaSource ?: MangaSource.LOCAL
|
||||
)
|
||||
@@ -133,6 +134,7 @@ class SettingsActivity :
|
||||
|
||||
private const val ACTION_READER = "${BuildConfig.APPLICATION_ID}.action.MANAGE_READER_SETTINGS"
|
||||
private const val ACTION_SUGGESTIONS = "${BuildConfig.APPLICATION_ID}.action.MANAGE_SUGGESTIONS"
|
||||
private const val ACTION_TRACKER = "${BuildConfig.APPLICATION_ID}.action.MANAGE_TRACKER"
|
||||
private const val ACTION_SOURCE = "${BuildConfig.APPLICATION_ID}.action.MANAGE_SOURCE_SETTINGS"
|
||||
private const val EXTRA_SOURCE = "source"
|
||||
|
||||
@@ -146,6 +148,10 @@ class SettingsActivity :
|
||||
Intent(context, SettingsActivity::class.java)
|
||||
.setAction(ACTION_SUGGESTIONS)
|
||||
|
||||
fun newTrackerSettingsIntent(context: Context) =
|
||||
Intent(context, SettingsActivity::class.java)
|
||||
.setAction(ACTION_TRACKER)
|
||||
|
||||
fun newSourceSettingsIntent(context: Context, source: MangaSource) =
|
||||
Intent(context, SettingsActivity::class.java)
|
||||
.setAction(ACTION_SOURCE)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.koitharu.kotatsu.settings.protect
|
||||
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
@@ -7,9 +9,11 @@ import android.view.KeyEvent
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.CompoundButton
|
||||
import android.widget.TextView
|
||||
import androidx.core.graphics.Insets
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.base.ui.BaseActivity
|
||||
@@ -18,7 +22,7 @@ import org.koitharu.kotatsu.databinding.ActivitySetupProtectBinding
|
||||
private const val MIN_PASSWORD_LENGTH = 4
|
||||
|
||||
class ProtectSetupActivity : BaseActivity<ActivitySetupProtectBinding>(), TextWatcher,
|
||||
View.OnClickListener, TextView.OnEditorActionListener {
|
||||
View.OnClickListener, TextView.OnEditorActionListener, CompoundButton.OnCheckedChangeListener {
|
||||
|
||||
private val viewModel by viewModel<ProtectSetupViewModel>()
|
||||
|
||||
@@ -31,6 +35,9 @@ class ProtectSetupActivity : BaseActivity<ActivitySetupProtectBinding>(), TextWa
|
||||
binding.buttonNext.setOnClickListener(this)
|
||||
binding.buttonCancel.setOnClickListener(this)
|
||||
|
||||
binding.switchBiometric.isChecked = viewModel.isBiometricEnabled
|
||||
binding.switchBiometric.setOnCheckedChangeListener(this)
|
||||
|
||||
viewModel.isSecondStep.observe(this, this::onStepChanged)
|
||||
viewModel.onPasswordSet.observe(this) {
|
||||
finishAfterTransition()
|
||||
@@ -62,6 +69,10 @@ class ProtectSetupActivity : BaseActivity<ActivitySetupProtectBinding>(), TextWa
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
|
||||
viewModel.setBiometricEnabled(isChecked)
|
||||
}
|
||||
|
||||
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
|
||||
return if (actionId == EditorInfo.IME_ACTION_DONE && binding.buttonNext.isEnabled) {
|
||||
binding.buttonNext.performClick()
|
||||
@@ -85,6 +96,7 @@ class ProtectSetupActivity : BaseActivity<ActivitySetupProtectBinding>(), TextWa
|
||||
|
||||
private fun onStepChanged(isSecondStep: Boolean) {
|
||||
binding.buttonCancel.isGone = isSecondStep
|
||||
binding.switchBiometric.isVisible = isSecondStep && isBiometricAvailable()
|
||||
if (isSecondStep) {
|
||||
binding.layoutPassword.helperText = getString(R.string.repeat_password)
|
||||
binding.buttonNext.setText(R.string.confirm)
|
||||
@@ -93,4 +105,9 @@ class ProtectSetupActivity : BaseActivity<ActivitySetupProtectBinding>(), TextWa
|
||||
binding.buttonNext.setText(R.string.next)
|
||||
}
|
||||
}
|
||||
|
||||
private fun isBiometricAvailable(): Boolean {
|
||||
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
|
||||
packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,9 @@ class ProtectSetupViewModel(
|
||||
val onPasswordMismatch = SingleLiveEvent<Unit>()
|
||||
val onClearText = SingleLiveEvent<Unit>()
|
||||
|
||||
val isBiometricEnabled
|
||||
get() = settings.isBiometricProtectionEnabled
|
||||
|
||||
fun onNextClick(password: String) {
|
||||
if (firstPassword.value == null) {
|
||||
firstPassword.value = password
|
||||
@@ -35,4 +38,8 @@ class ProtectSetupViewModel(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setBiometricEnabled(isEnabled: Boolean) {
|
||||
settings.isBiometricProtectionEnabled = isEnabled
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,13 @@ class SourcesSettingsFragment :
|
||||
searchView.queryHint = searchMenuItem.title
|
||||
}
|
||||
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) {
|
||||
R.id.action_disable_all -> {
|
||||
viewModel.disableAll()
|
||||
true
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
|
||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||
(activity as? AppBarOwner)?.appBar?.setExpanded(false, true)
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.koitharu.kotatsu.base.ui.BaseViewModel
|
||||
import org.koitharu.kotatsu.core.model.getLocaleTitle
|
||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||
import org.koitharu.kotatsu.settings.sources.model.SourceConfigItem
|
||||
import org.koitharu.kotatsu.utils.ext.map
|
||||
@@ -58,6 +59,13 @@ class SourcesSettingsViewModel(
|
||||
buildList()
|
||||
}
|
||||
|
||||
fun disableAll() {
|
||||
settings.hiddenSources = settings.getMangaSources(includeHidden = true).mapToSet {
|
||||
it.name
|
||||
}
|
||||
buildList()
|
||||
}
|
||||
|
||||
fun expandOrCollapse(headerId: String?) {
|
||||
if (headerId in expandedGroups) {
|
||||
expandedGroups.remove(headerId)
|
||||
|
||||
@@ -29,6 +29,6 @@ class RingtonePickContract(private val title: String?) : ActivityResultContract<
|
||||
}
|
||||
|
||||
override fun parseResult(resultCode: Int, intent: Intent?): Uri? {
|
||||
return intent?.getParcelableExtra<Uri>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
return intent?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
}
|
||||
}
|
||||
@@ -32,14 +32,14 @@ class SuggestionRepository(
|
||||
suspend fun replace(suggestions: Iterable<MangaSuggestion>) {
|
||||
db.withTransaction {
|
||||
db.suggestionDao.deleteAll()
|
||||
suggestions.forEach { x ->
|
||||
val tags = x.manga.tags.toEntities()
|
||||
suggestions.forEach { (manga, relevance) ->
|
||||
val tags = manga.tags.toEntities()
|
||||
db.tagsDao.upsert(tags)
|
||||
db.mangaDao.upsert(x.manga.toEntity(), tags)
|
||||
db.mangaDao.upsert(manga.toEntity(), tags)
|
||||
db.suggestionDao.upsert(
|
||||
SuggestionEntity(
|
||||
mangaId = x.manga.id,
|
||||
relevance = x.relevance,
|
||||
mangaId = manga.id,
|
||||
relevance = relevance,
|
||||
createdAt = System.currentTimeMillis(),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -9,6 +9,7 @@ import androidx.core.view.MenuProvider
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.settings.SettingsActivity
|
||||
import org.koitharu.kotatsu.tracker.work.TrackWorker
|
||||
|
||||
class FeedMenuProvider(
|
||||
@@ -43,6 +44,11 @@ class FeedMenuProvider(
|
||||
}.show()
|
||||
true
|
||||
}
|
||||
R.id.action_settings -> {
|
||||
val intent = SettingsActivity.newTrackerSettingsIntent(context)
|
||||
context.startActivity(intent)
|
||||
true
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class ScreenOrientationHelper(private val activity: Activity) {
|
||||
isLandscape = !isLandscape
|
||||
}
|
||||
|
||||
fun observeAutoOrientation() = callbackFlow<Boolean> {
|
||||
fun observeAutoOrientation() = callbackFlow {
|
||||
val observer = object : ContentObserver(Handler(activity.mainLooper)) {
|
||||
override fun onChange(selfChange: Boolean) {
|
||||
trySendBlocking(isAutoRotationEnabled)
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package org.koitharu.kotatsu.utils.ext
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.graphics.Insets
|
||||
|
||||
fun Insets.getStart(view: View): Int {
|
||||
return if (view.layoutDirection == View.LAYOUT_DIRECTION_RTL) {
|
||||
right
|
||||
} else {
|
||||
left
|
||||
}
|
||||
}
|
||||
|
||||
fun Insets.getEnd(view: View): Int {
|
||||
return if (view.layoutDirection == View.LAYOUT_DIRECTION_RTL) {
|
||||
left
|
||||
} else {
|
||||
right
|
||||
}
|
||||
}
|
||||
@@ -4,11 +4,10 @@ import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.liveData
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
import kotlin.coroutines.EmptyCoroutineContext
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import org.koitharu.kotatsu.utils.BufferedObserver
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
import kotlin.coroutines.EmptyCoroutineContext
|
||||
|
||||
fun <T> LiveData<T?>.observeNotNull(owner: LifecycleOwner, observer: Observer<T>) {
|
||||
this.observe(owner) {
|
||||
|
||||
@@ -5,8 +5,6 @@ import android.graphics.Rect
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.widget.TooltipCompat
|
||||
import androidx.core.view.children
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
@@ -7,6 +7,9 @@ import android.widget.RemoteViewsService
|
||||
import coil.ImageLoader
|
||||
import coil.executeBlocking
|
||||
import coil.request.ImageRequest
|
||||
import coil.size.Scale
|
||||
import coil.size.Size
|
||||
import coil.transform.RoundedCornersTransformation
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.base.domain.MangaIntent
|
||||
@@ -22,9 +25,15 @@ class RecentListFactory(
|
||||
) : RemoteViewsService.RemoteViewsFactory {
|
||||
|
||||
private val dataSet = ArrayList<Manga>()
|
||||
private val transformation = RoundedCornersTransformation(
|
||||
context.resources.getDimension(R.dimen.appwidget_corner_radius_inner)
|
||||
)
|
||||
private val coverSize = Size(
|
||||
context.resources.getDimensionPixelSize(R.dimen.widget_cover_width),
|
||||
context.resources.getDimensionPixelSize(R.dimen.widget_cover_height),
|
||||
)
|
||||
|
||||
override fun onCreate() {
|
||||
}
|
||||
override fun onCreate() = Unit
|
||||
|
||||
override fun getLoadingView() = null
|
||||
|
||||
@@ -45,6 +54,9 @@ class RecentListFactory(
|
||||
val cover = coil.executeBlocking(
|
||||
ImageRequest.Builder(context)
|
||||
.data(item.coverUrl)
|
||||
.size(coverSize)
|
||||
.scale(Scale.FILL)
|
||||
.transformations(transformation)
|
||||
.build()
|
||||
).requireBitmap()
|
||||
views.setImageViewBitmap(R.id.imageView_cover, cover)
|
||||
@@ -61,6 +73,5 @@ class RecentListFactory(
|
||||
|
||||
override fun getViewTypeCount() = 1
|
||||
|
||||
override fun onDestroy() {
|
||||
}
|
||||
override fun onDestroy() = Unit
|
||||
}
|
||||
@@ -4,15 +4,12 @@ import android.app.Activity
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.graphics.Insets
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.divider.MaterialDividerItemDecoration
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import org.koitharu.kotatsu.R
|
||||
@@ -26,7 +23,7 @@ import org.koitharu.kotatsu.widget.shelf.model.CategoryItem
|
||||
import com.google.android.material.R as materialR
|
||||
|
||||
class ShelfConfigActivity : BaseActivity<ActivityCategoriesBinding>(),
|
||||
OnListItemClickListener<CategoryItem> {
|
||||
OnListItemClickListener<CategoryItem>, View.OnClickListener {
|
||||
|
||||
private val viewModel by viewModel<ShelfConfigViewModel>()
|
||||
|
||||
@@ -41,10 +38,9 @@ class ShelfConfigActivity : BaseActivity<ActivityCategoriesBinding>(),
|
||||
setHomeAsUpIndicator(materialR.drawable.abc_ic_clear_material)
|
||||
}
|
||||
adapter = CategorySelectAdapter(this)
|
||||
binding.recyclerView.addItemDecoration(
|
||||
MaterialDividerItemDecoration(this, RecyclerView.VERTICAL)
|
||||
)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.buttonDone.isVisible = true
|
||||
binding.buttonDone.setOnClickListener(this)
|
||||
binding.fabAdd.hide()
|
||||
val appWidgetId = intent?.getIntExtra(
|
||||
AppWidgetManager.EXTRA_APPWIDGET_ID,
|
||||
@@ -61,23 +57,18 @@ class ShelfConfigActivity : BaseActivity<ActivityCategoriesBinding>(),
|
||||
viewModel.onError.observe(this, this::onError)
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.opt_config, menu)
|
||||
return super.onCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
|
||||
R.id.action_done -> {
|
||||
config.categoryId = viewModel.checkedId
|
||||
updateWidget()
|
||||
setResult(
|
||||
Activity.RESULT_OK,
|
||||
Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, config.widgetId)
|
||||
)
|
||||
finish()
|
||||
true
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.button_done -> {
|
||||
config.categoryId = viewModel.checkedId
|
||||
updateWidget()
|
||||
setResult(
|
||||
Activity.RESULT_OK,
|
||||
Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, config.widgetId)
|
||||
)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onItemClick(item: CategoryItem, view: View) {
|
||||
|
||||
@@ -7,6 +7,9 @@ import android.widget.RemoteViewsService
|
||||
import coil.ImageLoader
|
||||
import coil.executeBlocking
|
||||
import coil.request.ImageRequest
|
||||
import coil.size.Scale
|
||||
import coil.size.Size
|
||||
import coil.transform.RoundedCornersTransformation
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.base.domain.MangaIntent
|
||||
@@ -20,14 +23,20 @@ class ShelfListFactory(
|
||||
private val context: Context,
|
||||
private val favouritesRepository: FavouritesRepository,
|
||||
private val coil: ImageLoader,
|
||||
widgetId: Int
|
||||
widgetId: Int,
|
||||
) : RemoteViewsService.RemoteViewsFactory {
|
||||
|
||||
private val dataSet = ArrayList<Manga>()
|
||||
private val config = AppWidgetConfig(context, widgetId)
|
||||
private val transformation = RoundedCornersTransformation(
|
||||
context.resources.getDimension(R.dimen.appwidget_corner_radius_inner)
|
||||
)
|
||||
private val coverSize = Size(
|
||||
context.resources.getDimensionPixelSize(R.dimen.widget_cover_width),
|
||||
context.resources.getDimensionPixelSize(R.dimen.widget_cover_height),
|
||||
)
|
||||
|
||||
override fun onCreate() {
|
||||
}
|
||||
override fun onCreate() = Unit
|
||||
|
||||
override fun getLoadingView() = null
|
||||
|
||||
@@ -56,6 +65,9 @@ class ShelfListFactory(
|
||||
val cover = coil.executeBlocking(
|
||||
ImageRequest.Builder(context)
|
||||
.data(item.coverUrl)
|
||||
.size(coverSize)
|
||||
.scale(Scale.FILL)
|
||||
.transformations(transformation)
|
||||
.build()
|
||||
).requireBitmap()
|
||||
views.setImageViewBitmap(R.id.imageView_cover, cover)
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="?colorPrimaryContainer" android:state_checked="true" android:state_enabled="true" />
|
||||
<item android:alpha="@dimen/material_emphasis_disabled" android:color="?colorPrimaryContainer" android:state_checked="true" android:state_enabled="false" />
|
||||
<item android:color="?colorSurfaceVariant" android:state_checked="false" android:state_enabled="true" />
|
||||
<item android:alpha="@dimen/material_emphasis_disabled" android:color="?colorSurfaceVariant" android:state_checked="false" android:state_enabled="false" />
|
||||
</selector>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="?colorPrimary" android:state_checked="true" android:state_enabled="true" />
|
||||
<item android:alpha="@dimen/material_emphasis_disabled" android:color="?colorPrimary" android:state_checked="true" android:state_enabled="false" />
|
||||
<item android:color="?colorOnSurfaceVariant" android:state_checked="false" android:state_enabled="true" />
|
||||
<item android:alpha="@dimen/material_emphasis_disabled" android:color="?colorOnSurfaceVariant" android:state_checked="false" android:state_enabled="false" />
|
||||
</selector>
|
||||
@@ -2,6 +2,6 @@
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="32dp" />
|
||||
<solid android:color="?attr/colorTertiary" />
|
||||
<corners android:radius="@dimen/appwidget_corner_radius_inner" />
|
||||
<solid android:color="?android:panelColorBackground" />
|
||||
</shape>
|
||||
@@ -1,7 +1,11 @@
|
||||
<rotate
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:drawable="@drawable/abc_ic_arrow_drop_right_black_24dp"
|
||||
android:fromDegrees="-90"
|
||||
android:pivotX="50%"
|
||||
android:pivotY="50%"
|
||||
android:toDegrees="-90" />
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M7,14l5,-5 5,5z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<rotate
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:drawable="@drawable/abc_ic_arrow_drop_right_black_24dp"
|
||||
android:fromDegrees="90"
|
||||
android:pivotX="50%"
|
||||
android:pivotY="50%"
|
||||
android:toDegrees="90" />
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M7,10l5,5 5,-5z" />
|
||||
</vector>
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M2 16h8v-2H2m16 0v-4h-2v4h-4v2h4v4h2v-4h4v-2m-8-8H2v2h12m0 2H2v2h12v-2z" />
|
||||
</vector>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M14,19H18V5H14M6,19H10V5H6V19Z" />
|
||||
</vector>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M8,5.14V19.14L19,12.14L8,5.14Z" />
|
||||
</vector>
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:bottom="4dp"
|
||||
android:left="4dp"
|
||||
android:right="4dp"
|
||||
android:top="4dp">
|
||||
<shape android:shape="oval">
|
||||
<solid android:color="#000000" />
|
||||
<size
|
||||
android:width="20dp"
|
||||
android:height="20dp" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#000000" />
|
||||
<corners android:radius="56dp" />
|
||||
<size
|
||||
android:width="64dp"
|
||||
android:height="28dp" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
android:id="@+id/collapsingToolbarLayout"
|
||||
@@ -23,7 +23,19 @@
|
||||
android:id="@id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:layout_collapseMode="pin" />
|
||||
app:layout_collapseMode="pin">
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_done"
|
||||
style="@style/Widget.Material3.Button.UnelevatedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginHorizontal="@dimen/toolbar_button_margin"
|
||||
android:text="@string/done"
|
||||
android:visibility="gone" />
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
|
||||
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||
|
||||
|
||||
@@ -10,7 +10,18 @@
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize" />
|
||||
android:layout_height="?attr/actionBarSize">
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_done"
|
||||
style="@style/Widget.Material3.Button.UnelevatedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginHorizontal="@dimen/toolbar_button_margin"
|
||||
android:text="@string/save" />
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView"
|
||||
@@ -57,7 +68,7 @@
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switch_tracker"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -62,6 +62,19 @@
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switch_biometric"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:checked="true"
|
||||
android:text="@string/use_fingerprint"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/layout_password"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_cancel"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||
|
||||
@@ -12,8 +12,18 @@
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:menu="@menu/opt_config"
|
||||
app:title="@string/add_to_favourites" />
|
||||
app:title="@string/add_to_favourites">
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_done"
|
||||
style="@style/Widget.Material3.Button.UnelevatedButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginHorizontal="@dimen/toolbar_button_margin"
|
||||
android:text="@string/done" />
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView_categories"
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="14dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="14dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/inputLayout"
|
||||
app:boxBackgroundMode="filled"
|
||||
app:boxBackgroundColor="@android:color/transparent"
|
||||
app:hintEnabled="false"
|
||||
app:expandedHintEnabled="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/inputEdit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:imeOptions="actionDone"
|
||||
android:singleLine="true"
|
||||
tools:hint="@tools:sample/lorem[2]" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -1,70 +1,75 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:animateLayoutChanges="true"
|
||||
android:orientation="vertical">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup
|
||||
android:id="@+id/checkableGroup"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:animateLayoutChanges="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_list"
|
||||
style="@style/Widget.Kotatsu.ToggleButton"
|
||||
<org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup
|
||||
android:id="@+id/checkableGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/list"
|
||||
app:icon="@drawable/ic_list" />
|
||||
android:layout_margin="16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_list_detailed"
|
||||
style="@style/Widget.Kotatsu.ToggleButton"
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_list"
|
||||
style="@style/Widget.Kotatsu.ToggleButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/list"
|
||||
app:icon="@drawable/ic_list" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_list_detailed"
|
||||
style="@style/Widget.Kotatsu.ToggleButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/detailed_list"
|
||||
app:icon="@drawable/ic_list_detailed" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_grid"
|
||||
style="@style/Widget.Kotatsu.ToggleButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/grid"
|
||||
app:icon="@drawable/ic_grid" />
|
||||
|
||||
</org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView_grid_title"
|
||||
style="?materialAlertDialogTitleTextStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/detailed_list"
|
||||
app:icon="@drawable/ic_list_detailed" />
|
||||
android:paddingLeft="?attr/dialogPreferredPadding"
|
||||
android:paddingRight="?attr/dialogPreferredPadding"
|
||||
android:singleLine="true"
|
||||
android:text="@string/grid_size"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_grid"
|
||||
style="@style/Widget.Kotatsu.ToggleButton"
|
||||
<com.google.android.material.slider.Slider
|
||||
android:id="@+id/slider_grid"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/grid"
|
||||
app:icon="@drawable/ic_grid" />
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:stepSize="5"
|
||||
android:valueFrom="50"
|
||||
android:valueTo="150"
|
||||
android:visibility="gone"
|
||||
app:labelBehavior="floating"
|
||||
app:tickVisible="false"
|
||||
tools:value="100"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView_grid_title"
|
||||
style="?materialAlertDialogTitleTextStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="?attr/dialogPreferredPadding"
|
||||
android:paddingRight="?attr/dialogPreferredPadding"
|
||||
android:singleLine="true"
|
||||
android:text="@string/grid_size"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.google.android.material.slider.Slider
|
||||
android:id="@+id/slider_grid"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:stepSize="5"
|
||||
android:valueFrom="50"
|
||||
android:valueTo="150"
|
||||
android:visibility="gone"
|
||||
app:labelBehavior="floating"
|
||||
app:tickVisible="false"
|
||||
tools:value="100"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CheckedTextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/checkedTextView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:listPreferredItemHeightSmall"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
|
||||
android:gravity="start|center_vertical"
|
||||
android:paddingStart="?android:listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:listPreferredItemPaddingEnd"
|
||||
android:textAppearance="?attr/textAppearanceBodyLarge"
|
||||
tools:checked="true"
|
||||
tools:text="@tools:sample/lorem[4]" />
|
||||
@@ -4,10 +4,11 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/chapter_list_item_height"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?selectableItemBackground"
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="@dimen/chapter_list_item_height"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
@@ -44,9 +45,9 @@
|
||||
android:id="@+id/textView_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:layout_marginTop="2dp"
|
||||
android:textAppearance="?attr/textAppearanceBodySmall"
|
||||
tools:text="05.10.2021 • Scanlator" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:scaleType="centerCrop"
|
||||
tools:src="@tools:sample/backgrounds/scenic"
|
||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover"/>
|
||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Kotatsu.Cover"
|
||||
tools:src="@tools:sample/backgrounds/scenic" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -53,8 +53,9 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center">
|
||||
android:baselineAligned="false"
|
||||
android:clipChildren="false"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView_tags"
|
||||
@@ -72,9 +73,12 @@
|
||||
android:id="@+id/textView_rating"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:drawablePadding="4dp"
|
||||
android:elegantTextHeight="false"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="6dp"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?attr/textAppearanceBodySmall"
|
||||
app:drawableEndCompat="@drawable/ic_star"
|
||||
tools:ignore="RtlSymmetry"
|
||||
tools:text="9.6" />
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/imageView_cover"
|
||||
android:layout_width="92dp"
|
||||
android:layout_height="128dp"
|
||||
android:layout_width="@dimen/widget_cover_width"
|
||||
android:layout_height="@dimen/widget_cover_height"
|
||||
android:scaleType="centerCrop"
|
||||
tools:ignore="ContentDescription" />
|
||||
@@ -9,7 +9,7 @@
|
||||
android:paddingStart="?listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?listPreferredItemPaddingEnd">
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switch_local"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -3,21 +3,24 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:theme="@style/Theme.Kotatsu.AppWidgetContainer">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rootLayout"
|
||||
android:layout_width="92dp"
|
||||
android:layout_width="@dimen/widget_cover_width"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="@drawable/bg_appwidget_card"
|
||||
android:foreground="?android:selectableItemBackground"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="4dp"
|
||||
tools:ignore="UselessParent">
|
||||
tools:ignore="UnusedAttribute,UselessParent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView_cover"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="128dp"
|
||||
android:layout_height="@dimen/widget_cover_height"
|
||||
android:scaleType="centerCrop"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
@@ -25,12 +28,12 @@
|
||||
android:id="@+id/textView_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:elegantTextHeight="false"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:lines="2"
|
||||
android:shadowColor="@android:color/black"
|
||||
android:shadowRadius="1"
|
||||
android:textColor="@android:color/white" />
|
||||
android:paddingHorizontal="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:textColor="?android:attr/textColorPrimary" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switch_toggle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switch_toggle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/switchWidget"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:focusable="false" />
|
||||
@@ -2,14 +2,17 @@
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:padding="4dp"
|
||||
android:theme="@style/Theme.Kotatsu.AppWidgetContainer">
|
||||
|
||||
<StackView
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/stackView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:listitem="@layout/item_shelf" />
|
||||
tools:listitem="@layout/item_recent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView_holder"
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:padding="4dp"
|
||||
android:theme="@style/Theme.Kotatsu.AppWidgetContainer">
|
||||
|
||||
<GridView
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
@@ -21,9 +24,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:shadowColor="@android:color/black"
|
||||
android:shadowRadius="1"
|
||||
android:text="@string/you_have_not_favourites_yet"
|
||||
android:textColor="@android:color/white" />
|
||||
android:textColor="?android:attr/textColorPrimary" />
|
||||
|
||||
</FrameLayout>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_done"
|
||||
android:orderInCategory="0"
|
||||
android:title="@string/done"
|
||||
app:showAsAction="always|withText" />
|
||||
</menu>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_share"
|
||||
android:icon="@android:drawable/ic_menu_share"
|
||||
android:showAsAction="ifRoom"
|
||||
android:title="@string/share"
|
||||
tools:ignore="AppCompatResource" />
|
||||
</menu>
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:icon="@drawable/ic_pause"
|
||||
android:id="@+id/action_pause"
|
||||
android:title="Pause"
|
||||
app:showAsAction="ifRoom|withText" />
|
||||
|
||||
<item
|
||||
android:icon="@drawable/ic_resume"
|
||||
android:id="@+id/action_resume"
|
||||
android:title="Resume"
|
||||
app:showAsAction="ifRoom|withText" />
|
||||
|
||||
</menu>
|
||||
@@ -15,4 +15,10 @@
|
||||
android:title="@string/clear_feed"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_settings"
|
||||
android:orderInCategory="50"
|
||||
android:title="@string/settings"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
@@ -10,4 +10,9 @@
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="ifRoom|collapseActionView" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_disable_all"
|
||||
android:title="@string/disable_all"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
@@ -298,4 +298,8 @@
|
||||
<string name="disable_battery_optimization_summary">Hilft bei der Überprüfung von Hintergrundaktualisierungen</string>
|
||||
<string name="send">Senden</string>
|
||||
<string name="crash_text">Etwas ist schief gelaufen. Bitte senden Sie einen Fehlerbericht an die Entwickler, damit wir das Problem beheben können.</string>
|
||||
<string name="disable_all">Alle deaktivieren</string>
|
||||
<string name="use_fingerprint">Fingerabdruck verwenden, falls vorhanden</string>
|
||||
<string name="appwidget_shelf_description">Manga aus Ihren Favoriten</string>
|
||||
<string name="appwidget_recent_description">Ihr kürzlich gelesener Manga</string>
|
||||
</resources>
|
||||
@@ -270,7 +270,7 @@
|
||||
<string name="text_delete_local_manga_batch">¿Eliminar elementos seleccionados del dispositivo de forma permanente\?</string>
|
||||
<string name="hide">Ocultar</string>
|
||||
<string name="download_slowdown">Ralentización de la descarga</string>
|
||||
<string name="new_sources_text">Nuevas fuentes de manga disponibles</string>
|
||||
<string name="new_sources_text">Nuevas fuentes de manga son disponibles</string>
|
||||
<string name="parallel_downloads">Descargas en paralelo</string>
|
||||
<string name="download_slowdown_summary">Ayuda a evitar el bloqueo de tu dirección IP</string>
|
||||
<string name="local_manga_processing">Procesamiento de manga guardado</string>
|
||||
@@ -294,4 +294,11 @@
|
||||
<string name="name">Nombre</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="edit_category">Editar categoría</string>
|
||||
<string name="disable_all">Desactivar todo</string>
|
||||
<string name="disable_battery_optimization">Desactivar la optimización de la batería</string>
|
||||
<string name="send">Enviar</string>
|
||||
<string name="crash_text">Algo ha ido mal. Por favor, envía un informe de errores a los desarrolladores para ayudarnos a solucionarlo.</string>
|
||||
<string name="use_fingerprint">Utilizar la huella dactilar si está disponible</string>
|
||||
<string name="appwidget_shelf_description">Mangas de tus favoritos</string>
|
||||
<string name="appwidget_recent_description">Sus mangas recientemente leídos</string>
|
||||
</resources>
|
||||
27
app/src/main/res/values-fi/plurals.xml
Normal file
27
app/src/main/res/values-fi/plurals.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<plurals name="hours_ago">
|
||||
<item quantity="one">%1$d tunti sitten</item>
|
||||
<item quantity="other">%1$d tuntia sitten</item>
|
||||
</plurals>
|
||||
<plurals name="chapters">
|
||||
<item quantity="one">%1$d luku</item>
|
||||
<item quantity="other">%1$d lukua</item>
|
||||
</plurals>
|
||||
<plurals name="minutes_ago">
|
||||
<item quantity="one">%1$d minuutti sitten</item>
|
||||
<item quantity="other">%1$d minuuttia sitten</item>
|
||||
</plurals>
|
||||
<plurals name="items">
|
||||
<item quantity="one">%1$d kohde</item>
|
||||
<item quantity="other">%1$d kohdetta</item>
|
||||
</plurals>
|
||||
<plurals name="new_chapters">
|
||||
<item quantity="one">%1$d uusi luku</item>
|
||||
<item quantity="other">%1$d uutta lukua</item>
|
||||
</plurals>
|
||||
<plurals name="days_ago">
|
||||
<item quantity="one">%1$d päivä sitten</item>
|
||||
<item quantity="other">%1$d päivää sitten</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
@@ -297,4 +297,9 @@
|
||||
<string name="disable_battery_optimization">Poista akun optimoinnin käytöstä</string>
|
||||
<string name="disable_battery_optimization_summary">Auttaa taustapäivitystarkastuksissa</string>
|
||||
<string name="crash_text">Jokin meni pieleen. Lähetä vikailmoitus kehittäjille, jotta voimme korjata sen.</string>
|
||||
<string name="disable_all">Poista kaikki käytöstä</string>
|
||||
<string name="send">Lähetä</string>
|
||||
<string name="use_fingerprint">Käytä sormenjälkeä, jos käytettävissä</string>
|
||||
<string name="appwidget_shelf_description">Manga suosikeistasi</string>
|
||||
<string name="appwidget_recent_description">Äskettäin lukemasi manga</string>
|
||||
</resources>
|
||||
@@ -298,4 +298,8 @@
|
||||
<string name="disable_battery_optimization_summary">Aide à la vérification des mises à jour des antécédents</string>
|
||||
<string name="crash_text">Un problème est survenu. Veuillez soumettre un rapport de bogue aux développeurs pour nous aider à le corriger.</string>
|
||||
<string name="send">Envoyer</string>
|
||||
<string name="disable_all">Tout désactiver</string>
|
||||
<string name="use_fingerprint">Utiliser l\'empreinte digitale si elle est disponible</string>
|
||||
<string name="appwidget_recent_description">Vos mangas récemment lus</string>
|
||||
<string name="appwidget_shelf_description">Les mangas de vos favoris</string>
|
||||
</resources>
|
||||
@@ -298,4 +298,8 @@
|
||||
<string name="disable_battery_optimization_summary">Contribuisce ai controlli di aggiornamento in sfondo</string>
|
||||
<string name="crash_text">Qualcosa è andato storto. Si prega di inviare una segnalazione di bug agli sviluppatori per aiutarci a risolvere il problema.</string>
|
||||
<string name="send">Invia</string>
|
||||
<string name="disable_all">Disabilita tutto</string>
|
||||
<string name="use_fingerprint">Usa le impronte digitali se disponibili</string>
|
||||
<string name="appwidget_shelf_description">Manga dai preferiti</string>
|
||||
<string name="appwidget_recent_description">I manga letti di recente</string>
|
||||
</resources>
|
||||
@@ -274,7 +274,7 @@
|
||||
<string name="parallel_downloads">並列ダウンロード</string>
|
||||
<string name="chapters_will_removed_background">チャプターはバックグラウンドで削除されます。時間がかかる場合があります</string>
|
||||
<string name="hide">隠す</string>
|
||||
<string name="new_sources_text">新しいマンガソースが利用可能になりました</string>
|
||||
<string name="new_sources_text">新しいマンガソースが利用可能です</string>
|
||||
<string name="check_new_chapters_title">新着チャプターの確認とお知らせ</string>
|
||||
<string name="show_notification_new_chapters_on">読んでいるマンガの更新情報をお知らせします</string>
|
||||
<string name="notifications_enable">通知を有効にする</string>
|
||||
@@ -298,4 +298,8 @@
|
||||
<string name="disable_battery_optimization_summary">バックグラウンドの更新チェックを支援</string>
|
||||
<string name="crash_text">何か問題が発生しました。開発者にバグレポートを提出し、解決にご協力ください。</string>
|
||||
<string name="send">送信</string>
|
||||
<string name="disable_all">すべて無効にする</string>
|
||||
<string name="appwidget_recent_description">最近読んだ漫画</string>
|
||||
<string name="use_fingerprint">指紋がある場合は、指紋を使用する</string>
|
||||
<string name="appwidget_shelf_description">お気に入りの漫画</string>
|
||||
</resources>
|
||||
@@ -219,7 +219,7 @@
|
||||
<string name="about_app_translation">Oversettelse</string>
|
||||
<string name="about_feedback">Tilbakemelding</string>
|
||||
<string name="about_feedback_4pda">Emne på 4PDA</string>
|
||||
<string name="auth_complete">Identitetsbekreftet</string>
|
||||
<string name="auth_complete">Identitetsbekreftet</string>
|
||||
<string name="auth_not_supported_by">Innlogging på %s støttes ikke</string>
|
||||
<string name="text_clear_cookies_prompt">Du vil bli utlogget fra alle kilder</string>
|
||||
<string name="genres">Sjangere</string>
|
||||
@@ -260,4 +260,21 @@
|
||||
<string name="percent_string_pattern">%1$s%%</string>
|
||||
<string name="various_languages">Forskjellige språk</string>
|
||||
<string name="chapters_empty">Ingen kapitler i denne mangaen</string>
|
||||
<string name="content">Innhold</string>
|
||||
<string name="appearance">Utseende</string>
|
||||
<string name="name">Navn</string>
|
||||
<string name="edit">Rediger</string>
|
||||
<string name="edit_category">Rediger kategori</string>
|
||||
<string name="dns_over_https">DNS over HTTPS</string>
|
||||
<string name="default_mode">Forvalgt modus</string>
|
||||
<string name="removal_completed">Fjerning fullført</string>
|
||||
<string name="empty_favourite_categories">Ingen favorittkategorier</string>
|
||||
<string name="bookmark_add">Legg til bokmerke</string>
|
||||
<string name="bookmarks">Bokmerker</string>
|
||||
<string name="bookmark_removed">Bokmerke fjernet</string>
|
||||
<string name="bookmark_added">Bokmerke lagt til</string>
|
||||
<string name="undo">Angre</string>
|
||||
<string name="removed_from_history">Fjernet fra historikk</string>
|
||||
<string name="bookmark_remove">Fjern bokmerke</string>
|
||||
<string name="send">Send</string>
|
||||
</resources>
|
||||
@@ -2,5 +2,4 @@
|
||||
<resources>
|
||||
<bool name="light_status_bar">false</bool>
|
||||
<bool name="light_navigation_bar">false</bool>
|
||||
<bool name="elevation_overlay_enabled">true</bool>
|
||||
</resources>
|
||||
@@ -23,7 +23,7 @@
|
||||
<string name="nothing_found">Ничего не найдено</string>
|
||||
<string name="history_is_empty">Истории пока нет</string>
|
||||
<string name="read">Читать</string>
|
||||
<string name="you_have_not_favourites_yet">Избранного пока нет</string>
|
||||
<string name="you_have_not_favourites_yet">Избранного пока нет</string>
|
||||
<string name="add_to_favourites">В избранное</string>
|
||||
<string name="add_new_category">Новая категория</string>
|
||||
<string name="add">Добавить</string>
|
||||
@@ -43,8 +43,8 @@
|
||||
<string name="updated">Обновлённая</string>
|
||||
<string name="newest">Новая</string>
|
||||
<string name="by_rating">Рейтинг</string>
|
||||
<string name="sort_order">Порядок сортировки</string>
|
||||
<string name="filter">Фильтр</string>
|
||||
<string name="sort_order">Порядок сортировки</string>
|
||||
<string name="filter">Фильтр</string>
|
||||
<string name="theme">Тема</string>
|
||||
<string name="light">Светлая</string>
|
||||
<string name="dark">Тёмная</string>
|
||||
@@ -128,7 +128,7 @@
|
||||
<string name="not_available">Недоступно</string>
|
||||
<string name="cannot_find_available_storage">Нет доступного хранилища</string>
|
||||
<string name="other_storage">Другое хранилище</string>
|
||||
<string name="done">Готово</string>
|
||||
<string name="done">Готово</string>
|
||||
<string name="all_favourites">Всё избранное</string>
|
||||
<string name="favourites_category_empty">Категория пуста</string>
|
||||
<string name="read_later">Прочитать позже</string>
|
||||
@@ -201,9 +201,9 @@
|
||||
<string name="protect_application_subtitle">Введите пароль для запуска приложения</string>
|
||||
<string name="confirm">Подтвердить</string>
|
||||
<string name="password_length_hint">Пароль должен состоять из 4 символов или более</string>
|
||||
<string name="search_only_on_s">Поиск только по %s</string>
|
||||
<string name="search_only_on_s">Поиск только по %s</string>
|
||||
<string name="other">Другие</string>
|
||||
<string name="welcome">Добро пожаловать</string>
|
||||
<string name="welcome">Добро пожаловать</string>
|
||||
<string name="text_clear_search_history_prompt">Удалить все последние поисковые запросы навсегда\?</string>
|
||||
<string name="backup_saved">Резервная копия сохранена</string>
|
||||
<string name="tracker_warning">Некоторые устройства имеют различное поведение системы, что может привести к нарушению фоновых задач.</string>
|
||||
@@ -214,9 +214,9 @@
|
||||
<string name="chapter_is_missing_text">Скачайте или прочитайте эту недостающую главу онлайн.</string>
|
||||
<string name="about_app_translation_summary">Помочь с переводом приложения</string>
|
||||
<string name="about_app_translation">Перевод</string>
|
||||
<string name="about_feedback_4pda">Тема на 4PDA</string>
|
||||
<string name="about_feedback_4pda">Тема на 4PDA</string>
|
||||
<string name="about_feedback">Обратная связь</string>
|
||||
<string name="auth_complete">Авторизация выполнена</string>
|
||||
<string name="auth_complete">Авторизация выполнена</string>
|
||||
<string name="auth_not_supported_by">Вход в %s не поддерживается</string>
|
||||
<string name="text_clear_cookies_prompt">Вы выйдете из всех источников</string>
|
||||
<string name="genres">Жанры</string>
|
||||
@@ -247,39 +247,58 @@
|
||||
<string name="computing_">Вычисление…</string>
|
||||
<string name="report_github">Создать проблему на GitHub</string>
|
||||
<string name="importing_progress">Импорт манги: %1$d из %2$d</string>
|
||||
<string name="reset_filter">Сбросить фильтр</string>
|
||||
<string name="find_genre">Поиск по жанрам</string>
|
||||
<string name="onboard_text">Выберите языки, на которых Вы хоите читать мангу. Это можно будет изменить позже в настройках.</string>
|
||||
<string name="never">Никогда</string>
|
||||
<string name="only_using_wifi">Только по Wi-Fi</string>
|
||||
<string name="always">Всегда</string>
|
||||
<string name="preload_pages">Предварительная загрузка страниц</string>
|
||||
<string name="logged_in_as">Вы авторизованы как %s</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">Разные языки</string>
|
||||
<string name="search_chapters">Найти главу</string>
|
||||
<string name="chapters_empty">В этой манге нет глав</string>
|
||||
<string name="appearance">Оформление</string>
|
||||
<string name="content">Контент</string>
|
||||
<string name="suggestions_updating">Обновление рекомендаций</string>
|
||||
<string name="suggestions_excluded_genres">Исключить жанры</string>
|
||||
<string name="suggestions_excluded_genres_summary">Укажите жанры, которые Вы не хотите видеть в рекомендациях</string>
|
||||
<string name="text_delete_local_manga_batch">Удалить выбранную мангу с накопителя?</string>
|
||||
<string name="removal_completed">Удаление завершено</string>
|
||||
<string name="batch_manga_save_confirm">Загрузить выбранную мангу со всеми главами? Это может привести к большому расходу трафика и места на накопителе</string>
|
||||
<string name="parallel_downloads">Загружать параллельно</string>
|
||||
<string name="download_slowdown">Замедление загрузки</string>
|
||||
<string name="download_slowdown_summary">Помогает избежать блокировки IP-адреса</string>
|
||||
<string name="local_manga_processing">Обработка сохранённой манги</string>
|
||||
<string name="chapters_will_removed_background">Главы будут удалены в фоновом режиме. Это может занять какое-то время</string>
|
||||
<string name="hide">Скрыть</string>
|
||||
<string name="new_sources_text">Доступны новые источники манги</string>
|
||||
<string name="check_new_chapters_title">Проверять новые главы и уведомлять о них</string>
|
||||
<string name="show_notification_new_chapters_on">Вы будете получать уведомления об обновлении манги, которую Вы читаете</string>
|
||||
<string name="show_notification_new_chapters_off">Вы не будете получать уведомления, но новые главы будут отображаться в списке</string>
|
||||
<string name="notifications_enable">Включить уведомления</string>
|
||||
<string name="name">Название</string>
|
||||
<string name="edit">Изменить</string>
|
||||
<string name="edit_category">Изменить категорию</string>
|
||||
<string name="empty_favourite_categories">Нет категорий избранного</string>
|
||||
<string name="reset_filter">Сбросить фильтр</string>
|
||||
<string name="find_genre">Поиск по жанрам</string>
|
||||
<string name="onboard_text">Выберите языки, на которых Вы хоите читать мангу. Это можно будет изменить позже в настройках.</string>
|
||||
<string name="never">Никогда</string>
|
||||
<string name="only_using_wifi">Только по Wi-Fi</string>
|
||||
<string name="always">Всегда</string>
|
||||
<string name="preload_pages">Предварительная загрузка страниц</string>
|
||||
<string name="logged_in_as">Вы авторизованы как %s</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">Разные языки</string>
|
||||
<string name="search_chapters">Найти главу</string>
|
||||
<string name="chapters_empty">В этой манге нет глав</string>
|
||||
<string name="appearance">Оформление</string>
|
||||
<string name="content">Контент</string>
|
||||
<string name="suggestions_updating">Обновление рекомендаций</string>
|
||||
<string name="suggestions_excluded_genres">Исключить жанры</string>
|
||||
<string name="suggestions_excluded_genres_summary">Укажите жанры, которые Вы не хотите видеть в рекомендациях</string>
|
||||
<string name="text_delete_local_manga_batch">Удалить выбранную мангу с накопителя?</string>
|
||||
<string name="removal_completed">Удаление завершено</string>
|
||||
<string name="batch_manga_save_confirm">Загрузить выбранную мангу со всеми главами? Это может привести к большому расходу трафика и места на накопителе</string>
|
||||
<string name="parallel_downloads">Загружать параллельно</string>
|
||||
<string name="download_slowdown">Замедление загрузки</string>
|
||||
<string name="download_slowdown_summary">Помогает избежать блокировки IP-адреса</string>
|
||||
<string name="local_manga_processing">Обработка сохранённой манги</string>
|
||||
<string name="chapters_will_removed_background">Главы будут удалены в фоновом режиме. Это может занять какое-то время</string>
|
||||
<string name="hide">Скрыть</string>
|
||||
<string name="new_sources_text">Доступны новые источники манги</string>
|
||||
<string name="check_new_chapters_title">Проверять новые главы и уведомлять о них</string>
|
||||
<string name="show_notification_new_chapters_on">Вы будете получать уведомления об обновлении манги, которую Вы читаете</string>
|
||||
<string name="show_notification_new_chapters_off">Вы не будете получать уведомления, но новые главы будут отображаться в списке</string>
|
||||
<string name="notifications_enable">Включить уведомления</string>
|
||||
<string name="name">Название</string>
|
||||
<string name="edit">Изменить</string>
|
||||
<string name="edit_category">Изменить категорию</string>
|
||||
<string name="empty_favourite_categories">Нет категорий избранного</string>
|
||||
<string name="bookmark_add">Добавить закладку</string>
|
||||
<string name="bookmark_remove">Удалить закладку</string>
|
||||
<string name="bookmarks">Закладки</string>
|
||||
<string name="bookmark_removed">Закладка удалена</string>
|
||||
<string name="bookmark_added">Закладка добавлена</string>
|
||||
<string name="undo">Отменить</string>
|
||||
<string name="removed_from_history">Удалено из истории</string>
|
||||
<string name="dns_over_https">DNS через HTTPS</string>
|
||||
<string name="default_mode">Режим по умолчанию</string>
|
||||
<string name="detect_reader_mode">Автоопределение режима чтения</string>
|
||||
<string name="detect_reader_mode_summary">Автоматически определяет, является ли манга веб-комиксом</string>
|
||||
<string name="disable_battery_optimization">Отключить оптимизацию батареи</string>
|
||||
<string name="disable_battery_optimization_summary">Помогает с фоновой проверкой обновлений</string>
|
||||
<string name="crash_text">Что-то пошло не так. Пожалуйста, отправьте отчёт разработчикам, чтобы помочь всё исправить</string>
|
||||
<string name="send">Отправить</string>
|
||||
<string name="disable_all">Отключить все</string>
|
||||
<string name="use_fingerprint">Использовать отпечаток пальца, если доступно</string>
|
||||
<string name="appwidget_shelf_description">Манга из Вашего избранного</string>
|
||||
<string name="appwidget_recent_description">Манга, которую Вы недавно читали</string>
|
||||
</resources>
|
||||
@@ -1,302 +1,305 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="network_error">İnternete bağlı olduğunuzdan emin olunuz</string>
|
||||
<string name="close_menu">Menüyü kapat</string>
|
||||
<string name="open_menu">Menüyü aç</string>
|
||||
<string name="local_storage">Dahili Depolama</string>
|
||||
<string name="favourites">Favoriler</string>
|
||||
<string name="history">Geçmiş</string>
|
||||
<string name="chapters">Bölümler</string>
|
||||
<string name="list">Liste</string>
|
||||
<string name="detailed_list">Detaylı liste</string>
|
||||
<string name="grid">Izgara</string>
|
||||
<string name="list_mode">Liste modu</string>
|
||||
<string name="loading_">Yükleniyor…</string>
|
||||
<string name="close">Kapat</string>
|
||||
<string name="try_again">Tekrar dene</string>
|
||||
<string name="clear_history">Geçmişi temizle</string>
|
||||
<string name="nothing_found">Hiçbir şey bulunamadı</string>
|
||||
<string name="history_is_empty">Sen geçmişiniz yok</string>
|
||||
<string name="read">Oku</string>
|
||||
<string name="you_have_not_favourites_yet">Henüz favorileriniz yok</string>
|
||||
<string name="add_to_favourites">Favoriniz</string>
|
||||
<string name="add_new_category">Yeni kategori</string>
|
||||
<string name="add">Ekle</string>
|
||||
<string name="enter_category_name">Kategori ismi girin</string>
|
||||
<string name="save">Kaydet</string>
|
||||
<string name="share">Paylaş</string>
|
||||
<string name="share_s">%s Paylaş</string>
|
||||
<string name="search">Ara</string>
|
||||
<string name="search_manga">Manga ara</string>
|
||||
<string name="manga_downloading_">İndiriliyor…</string>
|
||||
<string name="processing_">İşleniyor…</string>
|
||||
<string name="download_complete">İndirildi</string>
|
||||
<string name="downloads">İndirilenler</string>
|
||||
<string name="by_name">Ad</string>
|
||||
<string name="updated">Güncellenme</string>
|
||||
<string name="newest">Yeniler</string>
|
||||
<string name="by_rating">Puanlama</string>
|
||||
<string name="filter">Litre</string>
|
||||
<string name="theme">Tema</string>
|
||||
<string name="light">Açık</string>
|
||||
<string name="dark">Koyu</string>
|
||||
<string name="automatic">Takip sistemi</string>
|
||||
<string name="pages">Sayfalar</string>
|
||||
<string name="clear">Temizle</string>
|
||||
<string name="text_clear_history_prompt">Tüm okuma geçmişi kalıcı olarak silinsin mi\?</string>
|
||||
<string name="remove">Kaldır</string>
|
||||
<string name="_s_removed_from_history">“%s” geçmişinden kaldırıldı</string>
|
||||
<string name="_s_deleted_from_local_storage">“%s” yerel depolama alanından sil</string>
|
||||
<string name="wait_for_loading_finish">Lütfen bitmesini bekleyin…</string>
|
||||
<string name="save_page">Sayfayı kaydet</string>
|
||||
<string name="share_image">Resmi paylaş</string>
|
||||
<string name="popular">Popüler</string>
|
||||
<string name="details">Detaylar</string>
|
||||
<string name="settings">Ayarlar</string>
|
||||
<string name="page_saved">Kaydet</string>
|
||||
<string name="restart">Tekrar başlat</string>
|
||||
<string name="error_occurred">Bir hata oluştu</string>
|
||||
<string name="remote_sources">Uzak kaynaklar</string>
|
||||
<string name="warning">Uyarı</string>
|
||||
<string name="history_and_cache">Geçmiş ve önbellek</string>
|
||||
<string name="search_history_cleared">Temizlendi</string>
|
||||
<string name="_continue">Devam</string>
|
||||
<string name="not_available">Müsait değil</string>
|
||||
<string name="favourites_category_empty">Boş kategori</string>
|
||||
<string name="cache">Önbellek</string>
|
||||
<string name="application_update">Uygulamanın yeni sürümlerini kontrol edin</string>
|
||||
<string name="remove_category">Kaldır</string>
|
||||
<string name="delete">Sil</string>
|
||||
<string name="chapter_d_of_d">Bölüm %1$d / %2$d</string>
|
||||
<string name="text_file_not_supported">Bir ZIP veya CBZ dosyası seçin.</string>
|
||||
<string name="read_mode">Okuma modu</string>
|
||||
<string name="grid_size">Izgara boyutu</string>
|
||||
<string name="webtoon">Webtoon</string>
|
||||
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
|
||||
<string name="reader_settings">Okuyucu ayarları</string>
|
||||
<string name="volume_buttons">Ses butonları</string>
|
||||
<string name="dont_ask_again">Bir daha sorma</string>
|
||||
<string name="cancelling_">İptal ediliyor…</string>
|
||||
<string name="error">Hata</string>
|
||||
<string name="clear_thumbs_cache">Küçük resim önbelleğini temizle</string>
|
||||
<string name="gestures_only">Yalnızca hareketler</string>
|
||||
<string name="domain">Alan adi</string>
|
||||
<string name="open_in_browser">Web tarayıcısında aç</string>
|
||||
<string name="new_chapters">Yeni bölümler</string>
|
||||
<string name="notifications_settings">Bildirim ayarları</string>
|
||||
<string name="notification_sound">Bildirim sesi</string>
|
||||
<string name="light_indicator">LED göstergesi</string>
|
||||
<string name="vibration">Titreşim</string>
|
||||
<string name="other_storage">Diğer depolama</string>
|
||||
<string name="updates">Güncellemeler</string>
|
||||
<string name="create_shortcut">Kısayol oluştur…</string>
|
||||
<string name="_import">İçe aktar</string>
|
||||
<string name="delete_manga">Mangayı sil</string>
|
||||
<string name="computing_">Bilgi işleniyor…</string>
|
||||
<string name="sort_order">Sıralama düzeni</string>
|
||||
<string name="no_description">Açıklama yok</string>
|
||||
<string name="operation_not_supported">Bu işlem desteklenmiyor</string>
|
||||
<string name="standard">Standart</string>
|
||||
<string name="clear_pages_cache">Sayfa önbelleğini temizle</string>
|
||||
<string name="search_on_s">%s üzerinde ara</string>
|
||||
<string name="internal_storage">Dahili depolama</string>
|
||||
<string name="notifications">Bildirimler</string>
|
||||
<string name="switch_pages">Sayfaları değiştir</string>
|
||||
<string name="network_consumption_warning">Bu çok fazla veri aktarabilir</string>
|
||||
<string name="save_manga">Kaydet</string>
|
||||
<string name="download">İndir</string>
|
||||
<string name="manga_save_location">İndirilenler klasörü</string>
|
||||
<string name="external_storage">Harici depolama</string>
|
||||
<string name="read_from_start">Baştan oku</string>
|
||||
<string name="categories_">Kategoriler…</string>
|
||||
<string name="app_update_available">Uygulamanın yeni bir sürümü mevcut</string>
|
||||
<string name="show_notification_app_update">Yeni bir sürüm mevcutsa bildirimini göster</string>
|
||||
<string name="favourites_categories">Favori kategoriler</string>
|
||||
<string name="done">Bitti</string>
|
||||
<string name="read_later">Sonra oku</string>
|
||||
<string name="pages_animation">Sayfa animasyonu</string>
|
||||
<string name="cannot_find_available_storage">Kullanılabilir depolama alanı yok</string>
|
||||
<string name="rename">Yeniden adlandır</string>
|
||||
<string name="text_delete_local_manga">“%s” cihazdan kalıcı olarak silinsin mi\?</string>
|
||||
<string name="clear_search_history">Arama geçmişini temizle</string>
|
||||
<string name="text_empty_holder_primary">Burası biraz boş…</string>
|
||||
<string name="rotate_screen">Ekranı döndür</string>
|
||||
<string name="scale_mode">Ölçek modu</string>
|
||||
<string name="zoom_mode_fit_height">Yüksekliğe sığdır</string>
|
||||
<string name="black_dark_theme">Siyah</string>
|
||||
<string name="zoom_mode_keep_start">Başlangıçta tut</string>
|
||||
<string name="clear_feed">Akışı temizle</string>
|
||||
<string name="chapter_is_missing_text">Bu eksik bölümü çevrim içi olarak indirin veya okuyun.</string>
|
||||
<string name="restore_backup">Yedekten geri yükle</string>
|
||||
<string name="update">Güncelle</string>
|
||||
<string name="sign_in">Oturum aç</string>
|
||||
<string name="state_finished">Bitti</string>
|
||||
<string name="about">Hakkında</string>
|
||||
<string name="auth_required">Bu içeriği görüntülemek için oturum açın</string>
|
||||
<string name="confirm">Onayla</string>
|
||||
<string name="auth_complete">Yetkilendirildi</string>
|
||||
<string name="just_now">Az önce</string>
|
||||
<string name="taps_on_edges">Kenar dokunuşları</string>
|
||||
<string name="large_manga_save_confirm">Bu mangada %s var. Hepsi kaydedilsin mi\?</string>
|
||||
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d / %2$d açık</string>
|
||||
<string name="category_delete_confirm">“%s” kategorisi favorilerinizden kaldırılsın mı\?
|
||||
<string name="network_error">İnternete bağlı olduğunuzdan emin olunuz</string>
|
||||
<string name="close_menu">Menüyü kapat</string>
|
||||
<string name="open_menu">Menüyü aç</string>
|
||||
<string name="local_storage">Dahili Depolama</string>
|
||||
<string name="favourites">Favoriler</string>
|
||||
<string name="history">Geçmiş</string>
|
||||
<string name="chapters">Bölümler</string>
|
||||
<string name="list">Liste</string>
|
||||
<string name="detailed_list">Detaylı liste</string>
|
||||
<string name="grid">Izgara</string>
|
||||
<string name="list_mode">Liste modu</string>
|
||||
<string name="loading_">Yükleniyor…</string>
|
||||
<string name="close">Kapat</string>
|
||||
<string name="try_again">Tekrar dene</string>
|
||||
<string name="clear_history">Geçmişi temizle</string>
|
||||
<string name="nothing_found">Hiçbir şey bulunamadı</string>
|
||||
<string name="history_is_empty">Sen geçmişiniz yok</string>
|
||||
<string name="read">Oku</string>
|
||||
<string name="you_have_not_favourites_yet">Henüz favorileriniz yok</string>
|
||||
<string name="add_to_favourites">Favoriniz</string>
|
||||
<string name="add_new_category">Yeni kategori</string>
|
||||
<string name="add">Ekle</string>
|
||||
<string name="enter_category_name">Kategori ismi girin</string>
|
||||
<string name="save">Kaydet</string>
|
||||
<string name="share">Paylaş</string>
|
||||
<string name="share_s">%s Paylaş</string>
|
||||
<string name="search">Ara</string>
|
||||
<string name="search_manga">Manga ara</string>
|
||||
<string name="manga_downloading_">İndiriliyor…</string>
|
||||
<string name="processing_">İşleniyor…</string>
|
||||
<string name="download_complete">İndirildi</string>
|
||||
<string name="downloads">İndirilenler</string>
|
||||
<string name="by_name">Ad</string>
|
||||
<string name="updated">Güncellenme</string>
|
||||
<string name="newest">Yeniler</string>
|
||||
<string name="by_rating">Puanlama</string>
|
||||
<string name="filter">Litre</string>
|
||||
<string name="theme">Tema</string>
|
||||
<string name="light">Açık</string>
|
||||
<string name="dark">Koyu</string>
|
||||
<string name="automatic">Takip sistemi</string>
|
||||
<string name="pages">Sayfalar</string>
|
||||
<string name="clear">Temizle</string>
|
||||
<string name="text_clear_history_prompt">Tüm okuma geçmişi kalıcı olarak silinsin mi\?</string>
|
||||
<string name="remove">Kaldır</string>
|
||||
<string name="_s_removed_from_history">“%s” geçmişinden kaldırıldı</string>
|
||||
<string name="_s_deleted_from_local_storage">“%s” yerel depolama alanından sil</string>
|
||||
<string name="wait_for_loading_finish">Lütfen bitmesini bekleyin…</string>
|
||||
<string name="save_page">Sayfayı kaydet</string>
|
||||
<string name="share_image">Resmi paylaş</string>
|
||||
<string name="popular">Popüler</string>
|
||||
<string name="details">Detaylar</string>
|
||||
<string name="settings">Ayarlar</string>
|
||||
<string name="page_saved">Kaydet</string>
|
||||
<string name="restart">Tekrar başlat</string>
|
||||
<string name="error_occurred">Bir hata oluştu</string>
|
||||
<string name="remote_sources">Uzak kaynaklar</string>
|
||||
<string name="warning">Uyarı</string>
|
||||
<string name="history_and_cache">Geçmiş ve önbellek</string>
|
||||
<string name="search_history_cleared">Temizlendi</string>
|
||||
<string name="_continue">Devam</string>
|
||||
<string name="not_available">Müsait değil</string>
|
||||
<string name="favourites_category_empty">Boş kategori</string>
|
||||
<string name="cache">Önbellek</string>
|
||||
<string name="application_update">Uygulamanın yeni sürümlerini kontrol edin</string>
|
||||
<string name="remove_category">Kaldır</string>
|
||||
<string name="delete">Sil</string>
|
||||
<string name="chapter_d_of_d">Bölüm %1$d / %2$d</string>
|
||||
<string name="text_file_not_supported">Bir ZIP veya CBZ dosyası seçin.</string>
|
||||
<string name="read_mode">Okuma modu</string>
|
||||
<string name="grid_size">Izgara boyutu</string>
|
||||
<string name="webtoon">Webtoon</string>
|
||||
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
|
||||
<string name="reader_settings">Okuyucu ayarları</string>
|
||||
<string name="volume_buttons">Ses butonları</string>
|
||||
<string name="dont_ask_again">Bir daha sorma</string>
|
||||
<string name="cancelling_">İptal ediliyor…</string>
|
||||
<string name="error">Hata</string>
|
||||
<string name="clear_thumbs_cache">Küçük resim önbelleğini temizle</string>
|
||||
<string name="gestures_only">Yalnızca hareketler</string>
|
||||
<string name="domain">Alan adi</string>
|
||||
<string name="open_in_browser">Web tarayıcısında aç</string>
|
||||
<string name="new_chapters">Yeni bölümler</string>
|
||||
<string name="notifications_settings">Bildirim ayarları</string>
|
||||
<string name="notification_sound">Bildirim sesi</string>
|
||||
<string name="light_indicator">LED göstergesi</string>
|
||||
<string name="vibration">Titreşim</string>
|
||||
<string name="other_storage">Diğer depolama</string>
|
||||
<string name="updates">Güncellemeler</string>
|
||||
<string name="create_shortcut">Kısayol oluştur…</string>
|
||||
<string name="_import">İçe aktar</string>
|
||||
<string name="delete_manga">Mangayı sil</string>
|
||||
<string name="computing_">Bilgi işleniyor…</string>
|
||||
<string name="sort_order">Sıralama düzeni</string>
|
||||
<string name="no_description">Açıklama yok</string>
|
||||
<string name="operation_not_supported">Bu işlem desteklenmiyor</string>
|
||||
<string name="standard">Standart</string>
|
||||
<string name="clear_pages_cache">Sayfa önbelleğini temizle</string>
|
||||
<string name="search_on_s">%s üzerinde ara</string>
|
||||
<string name="internal_storage">Dahili depolama</string>
|
||||
<string name="notifications">Bildirimler</string>
|
||||
<string name="switch_pages">Sayfaları değiştir</string>
|
||||
<string name="network_consumption_warning">Bu çok fazla veri aktarabilir</string>
|
||||
<string name="save_manga">Kaydet</string>
|
||||
<string name="download">İndir</string>
|
||||
<string name="manga_save_location">İndirilenler klasörü</string>
|
||||
<string name="external_storage">Harici depolama</string>
|
||||
<string name="read_from_start">Baştan oku</string>
|
||||
<string name="categories_">Kategoriler…</string>
|
||||
<string name="app_update_available">Uygulamanın yeni bir sürümü mevcut</string>
|
||||
<string name="show_notification_app_update">Yeni bir sürüm mevcutsa bildirimini göster</string>
|
||||
<string name="favourites_categories">Favori kategoriler</string>
|
||||
<string name="done">Bitti</string>
|
||||
<string name="read_later">Sonra oku</string>
|
||||
<string name="pages_animation">Sayfa animasyonu</string>
|
||||
<string name="cannot_find_available_storage">Kullanılabilir depolama alanı yok</string>
|
||||
<string name="rename">Yeniden adlandır</string>
|
||||
<string name="text_delete_local_manga">“%s” cihazdan kalıcı olarak silinsin mi\?</string>
|
||||
<string name="clear_search_history">Arama geçmişini temizle</string>
|
||||
<string name="text_empty_holder_primary">Burası biraz boş…</string>
|
||||
<string name="rotate_screen">Ekranı döndür</string>
|
||||
<string name="scale_mode">Ölçek modu</string>
|
||||
<string name="zoom_mode_fit_height">Yüksekliğe sığdır</string>
|
||||
<string name="black_dark_theme">Siyah</string>
|
||||
<string name="zoom_mode_keep_start">Başlangıçta tut</string>
|
||||
<string name="clear_feed">Akışı temizle</string>
|
||||
<string name="chapter_is_missing_text">Bu eksik bölümü çevrim içi olarak indirin veya okuyun.</string>
|
||||
<string name="restore_backup">Yedekten geri yükle</string>
|
||||
<string name="update">Güncelle</string>
|
||||
<string name="sign_in">Oturum aç</string>
|
||||
<string name="state_finished">Bitti</string>
|
||||
<string name="about">Hakkında</string>
|
||||
<string name="auth_required">Bu içeriği görüntülemek için oturum açın</string>
|
||||
<string name="confirm">Onayla</string>
|
||||
<string name="auth_complete">Yetkilendirildi</string>
|
||||
<string name="just_now">Az önce</string>
|
||||
<string name="taps_on_edges">Kenar dokunuşları</string>
|
||||
<string name="large_manga_save_confirm">Bu mangada %s var. Hepsi kaydedilsin mi\?</string>
|
||||
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">%1$d / %2$d açık</string>
|
||||
<string name="category_delete_confirm">“%s” kategorisi favorilerinizden kaldırılsın mı\?
|
||||
\nİçindeki tüm mangalar kaybolacak.</string>
|
||||
<string name="text_search_holder_secondary">Sorguyu yeniden biçimlendirmeyi deneyin.</string>
|
||||
<string name="text_history_holder_primary">Okuduklarınız burada görüntülenecek</string>
|
||||
<string name="text_history_holder_secondary">Yan menüde ne okuyacağınızı bulun.</string>
|
||||
<string name="text_local_holder_primary">Önce bir şey kaydedin</string>
|
||||
<string name="text_local_holder_secondary">Çevrim içi kaynaklardan kaydedin veya dosyaları içe aktarın.</string>
|
||||
<string name="manga_shelf">Raf</string>
|
||||
<string name="recent_manga">Son</string>
|
||||
<string name="size_s">Boyut: %s</string>
|
||||
<string name="related">İlgili</string>
|
||||
<string name="updates_feed_cleared">Temizlendi</string>
|
||||
<string name="enter_password">Parola gir</string>
|
||||
<string name="protect_application_summary">Kotatsu başlatılırken parola sor</string>
|
||||
<string name="track_sources">Güncellemeleri ara</string>
|
||||
<string name="clear_updates_feed">Güncelleme akışını temizle</string>
|
||||
<string name="feed_will_update_soon">Akış güncellemesi yakında başlayacak</string>
|
||||
<string name="app_version">Sürüm %s</string>
|
||||
<string name="check_for_updates">Güncellemeleri denetle</string>
|
||||
<string name="checking_for_updates">Güncellemeler denetleniyor…</string>
|
||||
<string name="update_check_failed">Güncellemeler aranamadı</string>
|
||||
<string name="zoom_mode_fit_center">Merkeze sığdır</string>
|
||||
<string name="zoom_mode_fit_width">Genişliğe sığdır</string>
|
||||
<string name="black_dark_theme_summary">AMOLED ekranlarda daha az güç kullanır</string>
|
||||
<string name="backup_restore">Yedekle ve geri yükle</string>
|
||||
<string name="create_backup">Veri yedeği oluştur</string>
|
||||
<string name="data_restored">Geri yüklendi</string>
|
||||
<string name="preparing_">Hazırlanıyor…</string>
|
||||
<string name="yesterday">Dün</string>
|
||||
<string name="group">Grup</string>
|
||||
<string name="silent">Sessiz</string>
|
||||
<string name="captcha_solve">Çöz</string>
|
||||
<string name="clear_cookies">Çerezleri temizle</string>
|
||||
<string name="default_s">Öntanımlı: %s</string>
|
||||
<string name="reverse">Ters</string>
|
||||
<string name="password_length_hint">Parola 4 veya daha fazla karakterden oluşmalıdır</string>
|
||||
<string name="welcome">Hoş geldiniz</string>
|
||||
<string name="queued">Sıraya alındı</string>
|
||||
<string name="text_downloads_holder">Etkin indirme yok</string>
|
||||
<string name="chapter_is_missing">Bölüm eksik</string>
|
||||
<string name="about_app_translation_summary">Bu uygulamayı çevirin</string>
|
||||
<string name="about_app_translation">Çeviri</string>
|
||||
<string name="search_only_on_s">Yalnızca %s içinde ara</string>
|
||||
<string name="about_feedback_4pda">4PDA\'daki konu</string>
|
||||
<string name="state_ongoing">Devam ediyor</string>
|
||||
<string name="text_clear_cookies_prompt">Tüm kaynaklardaki oturumunuz kapatılacak</string>
|
||||
<string name="enabled_sources">Kullanılan kaynaklar</string>
|
||||
<string name="available_sources">Kullanılabilir kaynaklar</string>
|
||||
<string name="exclude_nsfw_from_history">Uygunsuz mangayı geçmişten hariç tut</string>
|
||||
<string name="show_pages_numbers">Numaralı sayfalar</string>
|
||||
<string name="dynamic_theme_summary">Duvar kağıdınızın renk düzeninden oluşturulan bir temayı uygular</string>
|
||||
<string name="importing_progress">Manga içe aktarılıyor: %1$d / %2$d</string>
|
||||
<string name="search_results">Arama sonuçları</string>
|
||||
<string name="waiting_for_network">Ağ bekleniyor…</string>
|
||||
<string name="repeat_password">Parolayı tekrarla</string>
|
||||
<string name="prefer_rtl_reader">Sağdan sola (←) okuyucuyu tercih et</string>
|
||||
<string name="dont_check">Denetleme</string>
|
||||
<string name="wrong_password">Yanlış parola</string>
|
||||
<string name="report_github">GitHub\'da sorun oluştur</string>
|
||||
<string name="backup_information">Geçmişinizin ve favorilerinizin yedeğini oluşturabilir ve bunları geri yükleyebilirsiniz</string>
|
||||
<string name="long_ago">Uzun zaman önce</string>
|
||||
<string name="today">Bugün</string>
|
||||
<string name="no_update_available">Güncelleme yok</string>
|
||||
<string name="chapters_checking_progress">Yeni bölümler denetleniyor: %1$d / %2$d</string>
|
||||
<string name="dynamic_theme">Dinamik tema</string>
|
||||
<string name="text_categories_holder">Favorilerinizi düzenlemek için kategorileri kullanabilirsiniz. Kategori oluşturmak için «+» düğmesine basın</string>
|
||||
<string name="all_favourites">Tüm favoriler</string>
|
||||
<string name="text_feed_holder">Okuduklarınızın yeni bölümleri burada gösterilir</string>
|
||||
<string name="new_version_s">Yeni sürüm: %s</string>
|
||||
<string name="protect_application">Uygulamayı koru</string>
|
||||
<string name="passwords_mismatch">Parolalar eşleşmiyor</string>
|
||||
<string name="right_to_left">Sağdan sola (←)</string>
|
||||
<string name="create_category">Yeni kategori</string>
|
||||
<string name="file_not_found">Dosya bulunamadı</string>
|
||||
<string name="data_restored_success">Tüm veriler geri yüklendi</string>
|
||||
<string name="data_restored_with_errors">Veriler geri yüklendi, ancak hatalar var</string>
|
||||
<string name="tap_to_try_again">Tekrar denemek için dokunun</string>
|
||||
<string name="next">İleri</string>
|
||||
<string name="other">Diğer</string>
|
||||
<string name="captcha_required">CAPTCHA gerekli</string>
|
||||
<string name="cookies_cleared">Tüm çerezler kaldırıldı</string>
|
||||
<string name="reader_mode_hint">Seçilen yapılandırma bu manga için hatırlanacak</string>
|
||||
<string name="text_clear_updates_feed_prompt">Tüm güncelleme geçmişi kalıcı olarak silinsin mi\?</string>
|
||||
<string name="_and_x_more">…ve %1$d daha fazlası</string>
|
||||
<string name="protect_application_subtitle">Uygulamayı başlatmak için bir parola girin</string>
|
||||
<string name="text_clear_search_history_prompt">Tüm son arama sorguları kalıcı olarak kaldırılsın mı\?</string>
|
||||
<string name="about_feedback">Geri bildirim</string>
|
||||
<string name="backup_saved">Yedek kaydedildi</string>
|
||||
<string name="genres">Türler</string>
|
||||
<string name="date_format">Tarih biçimi</string>
|
||||
<string name="system_default">Öntanımlı</string>
|
||||
<string name="error_empty_name">Bir ad girmelisiniz</string>
|
||||
<string name="auth_not_supported_by">%s üzerinde oturum açma desteklenmiyor</string>
|
||||
<string name="read_more">Daha fazla oku</string>
|
||||
<string name="tracker_warning">Bazı aygıtların arka plan görevlerini bozabilecek farklı sistem davranışları vardır.</string>
|
||||
<string name="screenshots_policy">Ekran görüntüsü politikası</string>
|
||||
<string name="screenshots_block_nsfw">Uygunsuzlarda engelle</string>
|
||||
<string name="screenshots_block_all">Her zaman engelle</string>
|
||||
<string name="screenshots_allow">İzin ver</string>
|
||||
<string name="check_for_new_chapters">Yeni bölümleri denetle</string>
|
||||
<string name="suggestions">Öneriler</string>
|
||||
<string name="suggestions_enable">Önerileri etkinleştir</string>
|
||||
<string name="suggestions_summary">Tercihlerinize göre manga önerileri alın</string>
|
||||
<string name="suggestions_info">Tüm veriler aygıt üzerinde yerel olarak işlenir. Kişisel verilerinizin herhangi bir hizmete aktarılması söz konusu değildir</string>
|
||||
<string name="text_suggestion_holder">Manga okumaya başladıktan sonra kişiselleştirilmiş öneriler alacaksınız</string>
|
||||
<string name="exclude_nsfw_from_suggestions">Uygunsuz manga önerme</string>
|
||||
<string name="enabled">Etkin</string>
|
||||
<string name="disabled">Devre dışı</string>
|
||||
<string name="filter_load_error">Türler listesi yüklenemiyor</string>
|
||||
<string name="reset_filter">Filtreyi sıfırla</string>
|
||||
<string name="find_genre">Tür bul</string>
|
||||
<string name="onboard_text">Manga okumak istediğiniz dilleri seçin. Daha sonra ayarlardan değiştirebilirsiniz.</string>
|
||||
<string name="always">Her zaman</string>
|
||||
<string name="never">Hiçbir zaman</string>
|
||||
<string name="only_using_wifi">Yalnızca Wi-Fi\'de</string>
|
||||
<string name="preload_pages">Sayfaları önceden yükle</string>
|
||||
<string name="logged_in_as">%s olarak oturum açıldı</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">Çeşitli diller</string>
|
||||
<string name="search_chapters">Bölüm bul</string>
|
||||
<string name="chapters_empty">Bu mangada bölüm yok</string>
|
||||
<string name="percent_string_pattern">%%%1$s</string>
|
||||
<string name="content">İçerik</string>
|
||||
<string name="suggestions_updating">Öneriler güncelleniyor</string>
|
||||
<string name="appearance">Görünüm</string>
|
||||
<string name="suggestions_excluded_genres">Türleri hariç tut</string>
|
||||
<string name="suggestions_excluded_genres_summary">Önerilerde görmek istemediğiniz türleri belirtin</string>
|
||||
<string name="text_delete_local_manga_batch">Seçilen ögeler aygıttan kalıcı olarak silinsin mi\?</string>
|
||||
<string name="batch_manga_save_confirm">Seçilen tüm mangaları tüm bölümleriyle birlikte indirmek istediğinizden emin misiniz\? Bu işlem çok fazla trafik ve depolama alanı tüketebilir</string>
|
||||
<string name="removal_completed">Kaldırma tamamlandı</string>
|
||||
<string name="chapters_will_removed_background">Bölümler arka planda kaldırılacaktır. Bu biraz zaman alabilir</string>
|
||||
<string name="parallel_downloads">Paralel indirmeler</string>
|
||||
<string name="download_slowdown">İndirmeyi yavaşlat</string>
|
||||
<string name="download_slowdown_summary">IP adresinizin engellenmesinden kaçınmanıza yardımcı olur</string>
|
||||
<string name="local_manga_processing">Kaydedilen manga işleme</string>
|
||||
<string name="hide">Gizle</string>
|
||||
<string name="new_sources_text">Yeni manga kaynakları var</string>
|
||||
<string name="show_notification_new_chapters_off">Bildirim almayacaksınız ancak yeni bölümler listelerde vurgulanacak</string>
|
||||
<string name="notifications_enable">Bildirimleri etkinleştir</string>
|
||||
<string name="check_new_chapters_title">Yeni bölümleri denetle ve bildirim gönder</string>
|
||||
<string name="show_notification_new_chapters_on">Okuduğunuz manga güncellemeleri hakkında bildirim alacaksınız</string>
|
||||
<string name="empty_favourite_categories">Favori kategori yok</string>
|
||||
<string name="name">Ad</string>
|
||||
<string name="edit">Düzenle</string>
|
||||
<string name="edit_category">Kategoriyi düzenle</string>
|
||||
<string name="bookmark_add">Yer imi ekle</string>
|
||||
<string name="bookmark_remove">Yer imini kaldır</string>
|
||||
<string name="bookmarks">Yer imleri</string>
|
||||
<string name="bookmark_removed">Yer imi kaldırıldı</string>
|
||||
<string name="bookmark_added">Yer imi eklendi</string>
|
||||
<string name="undo">Geri al</string>
|
||||
<string name="removed_from_history">Geçmişten kaldırıldı</string>
|
||||
<string name="dns_over_https">HTTPS üzerinden DNS</string>
|
||||
<string name="detect_reader_mode">Okuyucu modunu otomatik algıla</string>
|
||||
<string name="detect_reader_mode_summary">Manganın webtoon olup olmadığını otomatik olarak algıla</string>
|
||||
<string name="default_mode">Öntanımlı mod</string>
|
||||
<string name="disable_battery_optimization">Pil iyileştirmesini devre dışı bırak</string>
|
||||
<string name="disable_battery_optimization_summary">Arka planda güncelleme denetimlerine yardımcı olur</string>
|
||||
<string name="crash_text">Bir şeyler yanlış gitti. Düzeltmemize yardımcı olması için lütfen geliştiricilere bir hata bildirimi gönderin.</string>
|
||||
<string name="send">Gönder</string>
|
||||
<string name="text_search_holder_secondary">Sorguyu yeniden biçimlendirmeyi deneyin.</string>
|
||||
<string name="text_history_holder_primary">Okuduklarınız burada görüntülenecek</string>
|
||||
<string name="text_history_holder_secondary">Yan menüde ne okuyacağınızı bulun.</string>
|
||||
<string name="text_local_holder_primary">Önce bir şey kaydedin</string>
|
||||
<string name="text_local_holder_secondary">Çevrim içi kaynaklardan kaydedin veya dosyaları içe aktarın.</string>
|
||||
<string name="manga_shelf">Raf</string>
|
||||
<string name="recent_manga">Son</string>
|
||||
<string name="size_s">Boyut: %s</string>
|
||||
<string name="related">İlgili</string>
|
||||
<string name="updates_feed_cleared">Temizlendi</string>
|
||||
<string name="enter_password">Parola gir</string>
|
||||
<string name="protect_application_summary">Kotatsu başlatılırken parola sor</string>
|
||||
<string name="track_sources">Güncellemeleri ara</string>
|
||||
<string name="clear_updates_feed">Güncelleme akışını temizle</string>
|
||||
<string name="feed_will_update_soon">Akış güncellemesi yakında başlayacak</string>
|
||||
<string name="app_version">Sürüm %s</string>
|
||||
<string name="check_for_updates">Güncellemeleri denetle</string>
|
||||
<string name="checking_for_updates">Güncellemeler denetleniyor…</string>
|
||||
<string name="update_check_failed">Güncellemeler aranamadı</string>
|
||||
<string name="zoom_mode_fit_center">Merkeze sığdır</string>
|
||||
<string name="zoom_mode_fit_width">Genişliğe sığdır</string>
|
||||
<string name="black_dark_theme_summary">AMOLED ekranlarda daha az güç kullanır</string>
|
||||
<string name="backup_restore">Yedekle ve geri yükle</string>
|
||||
<string name="create_backup">Veri yedeği oluştur</string>
|
||||
<string name="data_restored">Geri yüklendi</string>
|
||||
<string name="preparing_">Hazırlanıyor…</string>
|
||||
<string name="yesterday">Dün</string>
|
||||
<string name="group">Grup</string>
|
||||
<string name="silent">Sessiz</string>
|
||||
<string name="captcha_solve">Çöz</string>
|
||||
<string name="clear_cookies">Çerezleri temizle</string>
|
||||
<string name="default_s">Öntanımlı: %s</string>
|
||||
<string name="reverse">Ters</string>
|
||||
<string name="password_length_hint">Parola 4 veya daha fazla karakterden oluşmalıdır</string>
|
||||
<string name="welcome">Hoş geldiniz</string>
|
||||
<string name="queued">Sıraya alındı</string>
|
||||
<string name="text_downloads_holder">Etkin indirme yok</string>
|
||||
<string name="chapter_is_missing">Bölüm eksik</string>
|
||||
<string name="about_app_translation_summary">Bu uygulamayı çevirin</string>
|
||||
<string name="about_app_translation">Çeviri</string>
|
||||
<string name="search_only_on_s">Yalnızca %s içinde ara</string>
|
||||
<string name="about_feedback_4pda">4PDA\'daki konu</string>
|
||||
<string name="state_ongoing">Devam ediyor</string>
|
||||
<string name="text_clear_cookies_prompt">Tüm kaynaklardaki oturumunuz kapatılacak</string>
|
||||
<string name="enabled_sources">Kullanılan kaynaklar</string>
|
||||
<string name="available_sources">Kullanılabilir kaynaklar</string>
|
||||
<string name="exclude_nsfw_from_history">Uygunsuz mangayı geçmişten hariç tut</string>
|
||||
<string name="show_pages_numbers">Numaralı sayfalar</string>
|
||||
<string name="dynamic_theme_summary">Duvar kağıdınızın renk düzeninden oluşturulan bir temayı uygular</string>
|
||||
<string name="importing_progress">Manga içe aktarılıyor: %1$d / %2$d</string>
|
||||
<string name="search_results">Arama sonuçları</string>
|
||||
<string name="waiting_for_network">Ağ bekleniyor…</string>
|
||||
<string name="repeat_password">Parolayı tekrarla</string>
|
||||
<string name="dont_check">Denetleme</string>
|
||||
<string name="wrong_password">Yanlış parola</string>
|
||||
<string name="report_github">GitHub\'da sorun oluştur</string>
|
||||
<string name="backup_information">Geçmişinizin ve favorilerinizin yedeğini oluşturabilir ve bunları geri yükleyebilirsiniz</string>
|
||||
<string name="long_ago">Uzun zaman önce</string>
|
||||
<string name="today">Bugün</string>
|
||||
<string name="no_update_available">Güncelleme yok</string>
|
||||
<string name="chapters_checking_progress">Yeni bölümler denetleniyor: %1$d / %2$d</string>
|
||||
<string name="dynamic_theme">Dinamik tema</string>
|
||||
<string name="text_categories_holder">Favorilerinizi düzenlemek için kategorileri kullanabilirsiniz. Kategori oluşturmak için «+» düğmesine basın</string>
|
||||
<string name="all_favourites">Tüm favoriler</string>
|
||||
<string name="text_feed_holder">Okuduklarınızın yeni bölümleri burada gösterilir</string>
|
||||
<string name="new_version_s">Yeni sürüm: %s</string>
|
||||
<string name="protect_application">Uygulamayı koru</string>
|
||||
<string name="passwords_mismatch">Parolalar eşleşmiyor</string>
|
||||
<string name="right_to_left">Sağdan sola (←)</string>
|
||||
<string name="create_category">Yeni kategori</string>
|
||||
<string name="file_not_found">Dosya bulunamadı</string>
|
||||
<string name="data_restored_success">Tüm veriler geri yüklendi</string>
|
||||
<string name="data_restored_with_errors">Veriler geri yüklendi, ancak hatalar var</string>
|
||||
<string name="tap_to_try_again">Tekrar denemek için dokunun</string>
|
||||
<string name="next">İleri</string>
|
||||
<string name="other">Diğer</string>
|
||||
<string name="captcha_required">CAPTCHA gerekli</string>
|
||||
<string name="cookies_cleared">Tüm çerezler kaldırıldı</string>
|
||||
<string name="reader_mode_hint">Seçilen yapılandırma bu manga için hatırlanacak</string>
|
||||
<string name="text_clear_updates_feed_prompt">Tüm güncelleme geçmişi kalıcı olarak silinsin mi\?</string>
|
||||
<string name="_and_x_more">…ve %1$d daha fazlası</string>
|
||||
<string name="protect_application_subtitle">Uygulamayı başlatmak için bir parola girin</string>
|
||||
<string name="text_clear_search_history_prompt">Tüm son arama sorguları kalıcı olarak kaldırılsın mı\?</string>
|
||||
<string name="about_feedback">Geri bildirim</string>
|
||||
<string name="backup_saved">Yedek kaydedildi</string>
|
||||
<string name="genres">Türler</string>
|
||||
<string name="date_format">Tarih biçimi</string>
|
||||
<string name="system_default">Öntanımlı</string>
|
||||
<string name="error_empty_name">Bir ad girmelisiniz</string>
|
||||
<string name="auth_not_supported_by">%s üzerinde oturum açma desteklenmiyor</string>
|
||||
<string name="read_more">Daha fazla oku</string>
|
||||
<string name="tracker_warning">Bazı aygıtların arka plan görevlerini bozabilecek farklı sistem davranışları vardır.</string>
|
||||
<string name="screenshots_policy">Ekran görüntüsü politikası</string>
|
||||
<string name="screenshots_block_nsfw">Uygunsuzlarda engelle</string>
|
||||
<string name="screenshots_block_all">Her zaman engelle</string>
|
||||
<string name="screenshots_allow">İzin ver</string>
|
||||
<string name="check_for_new_chapters">Yeni bölümleri denetle</string>
|
||||
<string name="suggestions">Öneriler</string>
|
||||
<string name="suggestions_enable">Önerileri etkinleştir</string>
|
||||
<string name="suggestions_summary">Tercihlerinize göre manga önerileri alın</string>
|
||||
<string name="suggestions_info">Tüm veriler aygıt üzerinde yerel olarak işlenir. Kişisel verilerinizin herhangi bir hizmete aktarılması söz konusu değildir</string>
|
||||
<string name="text_suggestion_holder">Manga okumaya başladıktan sonra kişiselleştirilmiş öneriler alacaksınız</string>
|
||||
<string name="exclude_nsfw_from_suggestions">Uygunsuz manga önerme</string>
|
||||
<string name="enabled">Etkin</string>
|
||||
<string name="disabled">Devre dışı</string>
|
||||
<string name="filter_load_error">Türler listesi yüklenemiyor</string>
|
||||
<string name="reset_filter">Filtreyi sıfırla</string>
|
||||
<string name="find_genre">Tür bul</string>
|
||||
<string name="onboard_text">Manga okumak istediğiniz dilleri seçin. Daha sonra ayarlardan değiştirebilirsiniz.</string>
|
||||
<string name="always">Her zaman</string>
|
||||
<string name="never">Hiçbir zaman</string>
|
||||
<string name="only_using_wifi">Yalnızca Wi-Fi\'de</string>
|
||||
<string name="preload_pages">Sayfaları önceden yükle</string>
|
||||
<string name="logged_in_as">%s olarak oturum açıldı</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">Çeşitli diller</string>
|
||||
<string name="search_chapters">Bölüm bul</string>
|
||||
<string name="chapters_empty">Bu mangada bölüm yok</string>
|
||||
<string name="percent_string_pattern">%%%1$s</string>
|
||||
<string name="content">İçerik</string>
|
||||
<string name="suggestions_updating">Öneriler güncelleniyor</string>
|
||||
<string name="appearance">Görünüm</string>
|
||||
<string name="suggestions_excluded_genres">Türleri hariç tut</string>
|
||||
<string name="suggestions_excluded_genres_summary">Önerilerde görmek istemediğiniz türleri belirtin</string>
|
||||
<string name="text_delete_local_manga_batch">Seçilen ögeler aygıttan kalıcı olarak silinsin mi\?</string>
|
||||
<string name="batch_manga_save_confirm">Seçilen tüm mangaları tüm bölümleriyle birlikte indirmek istediğinizden emin misiniz\? Bu işlem çok fazla trafik ve depolama alanı tüketebilir</string>
|
||||
<string name="removal_completed">Kaldırma tamamlandı</string>
|
||||
<string name="chapters_will_removed_background">Bölümler arka planda kaldırılacaktır. Bu biraz zaman alabilir</string>
|
||||
<string name="parallel_downloads">Paralel indirmeler</string>
|
||||
<string name="download_slowdown">İndirmeyi yavaşlat</string>
|
||||
<string name="download_slowdown_summary">IP adresinizin engellenmesinden kaçınmanıza yardımcı olur</string>
|
||||
<string name="local_manga_processing">Kaydedilen manga işleme</string>
|
||||
<string name="hide">Gizle</string>
|
||||
<string name="new_sources_text">Yeni manga kaynakları var</string>
|
||||
<string name="show_notification_new_chapters_off">Bildirim almayacaksınız ancak yeni bölümler listelerde vurgulanacak</string>
|
||||
<string name="notifications_enable">Bildirimleri etkinleştir</string>
|
||||
<string name="check_new_chapters_title">Yeni bölümleri denetle ve bildirim gönder</string>
|
||||
<string name="show_notification_new_chapters_on">Okuduğunuz manga güncellemeleri hakkında bildirim alacaksınız</string>
|
||||
<string name="empty_favourite_categories">Favori kategori yok</string>
|
||||
<string name="name">Ad</string>
|
||||
<string name="edit">Düzenle</string>
|
||||
<string name="edit_category">Kategoriyi düzenle</string>
|
||||
<string name="bookmark_add">Yer imi ekle</string>
|
||||
<string name="bookmark_remove">Yer imini kaldır</string>
|
||||
<string name="bookmarks">Yer imleri</string>
|
||||
<string name="bookmark_removed">Yer imi kaldırıldı</string>
|
||||
<string name="bookmark_added">Yer imi eklendi</string>
|
||||
<string name="undo">Geri al</string>
|
||||
<string name="removed_from_history">Geçmişten kaldırıldı</string>
|
||||
<string name="dns_over_https">HTTPS üzerinden DNS</string>
|
||||
<string name="detect_reader_mode">Okuyucu modunu otomatik algıla</string>
|
||||
<string name="detect_reader_mode_summary">Manganın webtoon olup olmadığını otomatik olarak algıla</string>
|
||||
<string name="default_mode">Öntanımlı mod</string>
|
||||
<string name="disable_battery_optimization">Pil iyileştirmesini devre dışı bırak</string>
|
||||
<string name="disable_battery_optimization_summary">Arka planda güncelleme denetimlerine yardımcı olur</string>
|
||||
<string name="crash_text">Bir şeyler yanlış gitti. Düzeltmemize yardımcı olması için lütfen geliştiricilere bir hata bildirimi gönderin.</string>
|
||||
<string name="send">Gönder</string>
|
||||
<string name="disable_all">Tümünü devre dışı bırak</string>
|
||||
<string name="use_fingerprint">Varsa parmak izi kullan</string>
|
||||
<string name="appwidget_shelf_description">Favorilerinizden mangalar</string>
|
||||
<string name="appwidget_recent_description">Son okuduğunuz mangalar</string>
|
||||
</resources>
|
||||
@@ -1,299 +1,305 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="wait_for_loading_finish">Дочекайтеся завершення завантаження…</string>
|
||||
<string name="delete">Видалити</string>
|
||||
<string name="nothing_found">Нічого не знайдено</string>
|
||||
<string name="add_to_favourites">Додати до улюблених</string>
|
||||
<string name="clear_history">Очистити історію</string>
|
||||
<string name="history_is_empty">Історії ще немає</string>
|
||||
<string name="add">Додати</string>
|
||||
<string name="save">Зберегти</string>
|
||||
<string name="local_storage">Локальне сховище</string>
|
||||
<string name="network_error">Не вдалося підключитися до Інтернету</string>
|
||||
<string name="details">Деталі</string>
|
||||
<string name="try_again">Спробуйте ще раз</string>
|
||||
<string name="open_menu">Відкрити меню</string>
|
||||
<string name="you_have_not_favourites_yet">Улюблених ще немає</string>
|
||||
<string name="add_new_category">Нова категорія</string>
|
||||
<string name="enter_category_name">Введіть назву категорії</string>
|
||||
<string name="download_complete">Завантажено</string>
|
||||
<string name="favourites">Уподобання</string>
|
||||
<string name="history">Історія</string>
|
||||
<string name="error_occurred">Сталася помилка</string>
|
||||
<string name="chapters">Розділи</string>
|
||||
<string name="list">Список</string>
|
||||
<string name="detailed_list">Детальний список</string>
|
||||
<string name="list_mode">Режим списку</string>
|
||||
<string name="settings">Налаштування</string>
|
||||
<string name="remote_sources">Віддалені джерела</string>
|
||||
<string name="loading_">Завантаження…</string>
|
||||
<string name="computing_">Обчислення…</string>
|
||||
<string name="chapter_d_of_d">Розділ %1$d із %2$d</string>
|
||||
<string name="close">Закрити</string>
|
||||
<string name="read">Читати</string>
|
||||
<string name="grid">Таблиця</string>
|
||||
<string name="share">Поділитися</string>
|
||||
<string name="create_shortcut">Створити ярлик…</string>
|
||||
<string name="share_s">Поділитися %s</string>
|
||||
<string name="search">Пошук</string>
|
||||
<string name="search_manga">Пошук манґи</string>
|
||||
<string name="processing_">Обробка…</string>
|
||||
<string name="by_name">Ім\'я</string>
|
||||
<string name="popular">Популярна</string>
|
||||
<string name="updated">Оновлена</string>
|
||||
<string name="newest">Нова</string>
|
||||
<string name="by_rating">Рейтинг</string>
|
||||
<string name="sort_order">Порядок сортування</string>
|
||||
<string name="filter">Фільтр</string>
|
||||
<string name="theme">Тема</string>
|
||||
<string name="light">Світла</string>
|
||||
<string name="dark">Темна</string>
|
||||
<string name="pages">Сторінки</string>
|
||||
<string name="text_clear_history_prompt">Очистити всю історію читання перманентно\?</string>
|
||||
<string name="remove">Видалити</string>
|
||||
<string name="_s_removed_from_history">\"%s\" видалено з історії</string>
|
||||
<string name="_s_deleted_from_local_storage">\"%s\" видалено з локального сховища</string>
|
||||
<string name="save_page">Зберегти сторінку</string>
|
||||
<string name="page_saved">Збережено</string>
|
||||
<string name="share_image">Поділитись зображенням</string>
|
||||
<string name="operation_not_supported">Ця операція не підтримується</string>
|
||||
<string name="text_file_not_supported">Виберіть файл ZIP або CBZ.</string>
|
||||
<string name="no_description">Немає опису</string>
|
||||
<string name="history_and_cache">Історія та кеш</string>
|
||||
<string name="clear_pages_cache">Очистити кеш сторінок</string>
|
||||
<string name="cache">Кеш</string>
|
||||
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
|
||||
<string name="standard">Стандартний</string>
|
||||
<string name="webtoon">Вебтун</string>
|
||||
<string name="read_mode">Режим читання</string>
|
||||
<string name="grid_size">Розмір сітки</string>
|
||||
<string name="search_on_s">Пошук по %s</string>
|
||||
<string name="delete_manga">Видалити манґу</string>
|
||||
<string name="text_delete_local_manga">Видалити \"%s\" з пристрою перманентно\?</string>
|
||||
<string name="reader_settings">Налаштування читача</string>
|
||||
<string name="switch_pages">Перегортання сторінок</string>
|
||||
<string name="volume_buttons">Кнопки гучності</string>
|
||||
<string name="cancelling_">Скасування…</string>
|
||||
<string name="error">Помилка</string>
|
||||
<string name="clear_thumbs_cache">Очистити кеш мініатюр</string>
|
||||
<string name="clear_search_history">Очистити історію пошуку</string>
|
||||
<string name="search_history_cleared">Очищено</string>
|
||||
<string name="gestures_only">Тільки жести</string>
|
||||
<string name="internal_storage">Внутрішнє сховище</string>
|
||||
<string name="external_storage">Зовнішнє сховище</string>
|
||||
<string name="domain">Домен</string>
|
||||
<string name="application_update">Перевірити наявність нових версій додатка</string>
|
||||
<string name="app_update_available">Доступна нова версія додатка</string>
|
||||
<string name="large_manga_save_confirm">Ця манґа має %s. Зберегти все це\?</string>
|
||||
<string name="save_manga">Зберегти</string>
|
||||
<string name="notifications">Сповіщення</string>
|
||||
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Увімкнено %1$d з %2$d</string>
|
||||
<string name="new_chapters">Нові розділи</string>
|
||||
<string name="download">Завантажити</string>
|
||||
<string name="read_from_start">Читати з початку</string>
|
||||
<string name="restart">Перезавантажити</string>
|
||||
<string name="vibration">Вібрація</string>
|
||||
<string name="favourites_categories">Улюблені категорії</string>
|
||||
<string name="category_delete_confirm">Вилучити категорію \"%s\" зі своїх уподобань\?
|
||||
<string name="wait_for_loading_finish">Дочекайтеся завершення завантаження…</string>
|
||||
<string name="delete">Видалити</string>
|
||||
<string name="nothing_found">Нічого не знайдено</string>
|
||||
<string name="add_to_favourites">Додати до улюблених</string>
|
||||
<string name="clear_history">Очистити історію</string>
|
||||
<string name="history_is_empty">Історії ще немає</string>
|
||||
<string name="add">Додати</string>
|
||||
<string name="save">Зберегти</string>
|
||||
<string name="local_storage">Локальне сховище</string>
|
||||
<string name="network_error">Не вдалося підключитися до Інтернету</string>
|
||||
<string name="details">Деталі</string>
|
||||
<string name="try_again">Спробуйте ще раз</string>
|
||||
<string name="open_menu">Відкрити меню</string>
|
||||
<string name="you_have_not_favourites_yet">Улюблених ще немає</string>
|
||||
<string name="add_new_category">Нова категорія</string>
|
||||
<string name="enter_category_name">Введіть назву категорії</string>
|
||||
<string name="download_complete">Завантажено</string>
|
||||
<string name="favourites">Уподобання</string>
|
||||
<string name="history">Історія</string>
|
||||
<string name="error_occurred">Сталася помилка</string>
|
||||
<string name="chapters">Розділи</string>
|
||||
<string name="list">Список</string>
|
||||
<string name="detailed_list">Детальний список</string>
|
||||
<string name="list_mode">Режим списку</string>
|
||||
<string name="settings">Налаштування</string>
|
||||
<string name="remote_sources">Віддалені джерела</string>
|
||||
<string name="loading_">Завантаження…</string>
|
||||
<string name="computing_">Обчислення…</string>
|
||||
<string name="chapter_d_of_d">Розділ %1$d із %2$d</string>
|
||||
<string name="close">Закрити</string>
|
||||
<string name="read">Читати</string>
|
||||
<string name="grid">Таблиця</string>
|
||||
<string name="share">Поділитися</string>
|
||||
<string name="create_shortcut">Створити ярлик…</string>
|
||||
<string name="share_s">Поділитися %s</string>
|
||||
<string name="search">Пошук</string>
|
||||
<string name="search_manga">Пошук манґи</string>
|
||||
<string name="processing_">Обробка…</string>
|
||||
<string name="by_name">Ім\'я</string>
|
||||
<string name="popular">Популярна</string>
|
||||
<string name="updated">Оновлена</string>
|
||||
<string name="newest">Нова</string>
|
||||
<string name="by_rating">Рейтинг</string>
|
||||
<string name="sort_order">Порядок сортування</string>
|
||||
<string name="filter">Фільтр</string>
|
||||
<string name="theme">Тема</string>
|
||||
<string name="light">Світла</string>
|
||||
<string name="dark">Темна</string>
|
||||
<string name="pages">Сторінки</string>
|
||||
<string name="text_clear_history_prompt">Очистити всю історію читання перманентно\?</string>
|
||||
<string name="remove">Видалити</string>
|
||||
<string name="_s_removed_from_history">\"%s\" видалено з історії</string>
|
||||
<string name="_s_deleted_from_local_storage">\"%s\" видалено з локального сховища</string>
|
||||
<string name="save_page">Зберегти сторінку</string>
|
||||
<string name="page_saved">Збережено</string>
|
||||
<string name="share_image">Поділитись зображенням</string>
|
||||
<string name="operation_not_supported">Ця операція не підтримується</string>
|
||||
<string name="text_file_not_supported">Виберіть файл ZIP або CBZ.</string>
|
||||
<string name="no_description">Немає опису</string>
|
||||
<string name="history_and_cache">Історія та кеш</string>
|
||||
<string name="clear_pages_cache">Очистити кеш сторінок</string>
|
||||
<string name="cache">Кеш</string>
|
||||
<string name="text_file_sizes">Б|кБ|МБ|ГБ|ТБ</string>
|
||||
<string name="standard">Стандартний</string>
|
||||
<string name="webtoon">Вебтун</string>
|
||||
<string name="read_mode">Режим читання</string>
|
||||
<string name="grid_size">Розмір сітки</string>
|
||||
<string name="search_on_s">Пошук по %s</string>
|
||||
<string name="delete_manga">Видалити манґу</string>
|
||||
<string name="text_delete_local_manga">Видалити \"%s\" з пристрою перманентно\?</string>
|
||||
<string name="reader_settings">Налаштування читача</string>
|
||||
<string name="switch_pages">Перегортання сторінок</string>
|
||||
<string name="volume_buttons">Кнопки гучності</string>
|
||||
<string name="cancelling_">Скасування…</string>
|
||||
<string name="error">Помилка</string>
|
||||
<string name="clear_thumbs_cache">Очистити кеш мініатюр</string>
|
||||
<string name="clear_search_history">Очистити історію пошуку</string>
|
||||
<string name="search_history_cleared">Очищено</string>
|
||||
<string name="gestures_only">Тільки жести</string>
|
||||
<string name="internal_storage">Внутрішнє сховище</string>
|
||||
<string name="external_storage">Зовнішнє сховище</string>
|
||||
<string name="domain">Домен</string>
|
||||
<string name="application_update">Перевірити наявність нових версій додатка</string>
|
||||
<string name="app_update_available">Доступна нова версія додатка</string>
|
||||
<string name="large_manga_save_confirm">Ця манґа має %s. Зберегти все це\?</string>
|
||||
<string name="save_manga">Зберегти</string>
|
||||
<string name="notifications">Сповіщення</string>
|
||||
<string name="enabled_d_of_d" tools:ignore="PluralsCandidate">Увімкнено %1$d з %2$d</string>
|
||||
<string name="new_chapters">Нові розділи</string>
|
||||
<string name="download">Завантажити</string>
|
||||
<string name="read_from_start">Читати з початку</string>
|
||||
<string name="restart">Перезавантажити</string>
|
||||
<string name="vibration">Вібрація</string>
|
||||
<string name="favourites_categories">Улюблені категорії</string>
|
||||
<string name="category_delete_confirm">Вилучити категорію \"%s\" зі своїх уподобань\?
|
||||
\nВся манґа в ній буде втрачена.</string>
|
||||
<string name="remove_category">Видалити</string>
|
||||
<string name="text_empty_holder_primary">Тут якось пусто…</string>
|
||||
<string name="text_search_holder_secondary">Спробуйте переформулювати запит.</string>
|
||||
<string name="text_history_holder_primary">Те, що ви читаєте, буде показано тут</string>
|
||||
<string name="text_history_holder_secondary">Знайдіть, що читати, у бічному меню.</string>
|
||||
<string name="text_local_holder_primary">Спочатку збережіть щось</string>
|
||||
<string name="text_local_holder_secondary">Збережіть його з онлайн-джерела або імпортуйте файли.</string>
|
||||
<string name="manga_shelf">Полиця</string>
|
||||
<string name="recent_manga">Недавні</string>
|
||||
<string name="pages_animation">Анімація перегортання</string>
|
||||
<string name="manga_save_location">Папка для завантажень</string>
|
||||
<string name="other_storage">Інше сховище</string>
|
||||
<string name="done">Готово</string>
|
||||
<string name="all_favourites">Усі улюблені</string>
|
||||
<string name="favourites_category_empty">Порожня категорія</string>
|
||||
<string name="read_later">Прочитати пізніше</string>
|
||||
<string name="updates">Оновлення</string>
|
||||
<string name="related">Схожі</string>
|
||||
<string name="new_version_s">Нова версія: %s</string>
|
||||
<string name="size_s">Розмір: %s</string>
|
||||
<string name="waiting_for_network">Очікування мережі…</string>
|
||||
<string name="clear_updates_feed">Очистити стрічку оновлень</string>
|
||||
<string name="updates_feed_cleared">Очищено</string>
|
||||
<string name="rotate_screen">Повернути екран</string>
|
||||
<string name="update">Оновити</string>
|
||||
<string name="feed_will_update_soon">Оновлення скоро почнеться</string>
|
||||
<string name="track_sources">Стежити за оновленнями</string>
|
||||
<string name="dont_check">Не перевіряти</string>
|
||||
<string name="wrong_password">Неправильний пароль</string>
|
||||
<string name="protect_application">Захистити додаток</string>
|
||||
<string name="protect_application_summary">Запитувати пароль під час запуску Kotatsu</string>
|
||||
<string name="repeat_password">Повторіть пароль</string>
|
||||
<string name="passwords_mismatch">Паролі не співпадають</string>
|
||||
<string name="about">Про програму</string>
|
||||
<string name="app_version">Версія %s</string>
|
||||
<string name="check_for_updates">Перевірити наявність оновлень</string>
|
||||
<string name="checking_for_updates">Перевірка наявності оновлень…</string>
|
||||
<string name="update_check_failed">Не вдалося перевірити оновлення</string>
|
||||
<string name="no_update_available">Немає доступних оновлень</string>
|
||||
<string name="create_category">Нова категорія</string>
|
||||
<string name="scale_mode">Режим масштабування</string>
|
||||
<string name="zoom_mode_fit_center">Вмістити в екран</string>
|
||||
<string name="zoom_mode_fit_height">Підігнати по висоті</string>
|
||||
<string name="zoom_mode_fit_width">Підігнати по ширині</string>
|
||||
<string name="zoom_mode_keep_start">Вихідний розмір</string>
|
||||
<string name="black_dark_theme">Чорна</string>
|
||||
<string name="black_dark_theme_summary">Споживає менше енергії на екранах AMOLED</string>
|
||||
<string name="backup_restore">Резервне копіювання та відновлення</string>
|
||||
<string name="data_restored">Відновлено</string>
|
||||
<string name="preparing_">Підготовка…</string>
|
||||
<string name="report_github">Створити проблему на GitHub</string>
|
||||
<string name="file_not_found">Файл не знайдено</string>
|
||||
<string name="data_restored_with_errors">Дані відновлено, але є деякі помилки</string>
|
||||
<string name="backup_information">Ви можете створити резервну копію своєї історії та уподобань і відновити їх</string>
|
||||
<string name="just_now">Тільки що</string>
|
||||
<string name="tap_to_try_again">Торкніться, щоб спробувати ще раз</string>
|
||||
<string name="reader_mode_hint">Обраний режим буде запам\'ятован для цієї манги</string>
|
||||
<string name="captcha_required">Потрібна CAPTCHA</string>
|
||||
<string name="captcha_solve">Пройти</string>
|
||||
<string name="clear_cookies">Очистити кукі</string>
|
||||
<string name="cookies_cleared">Всі кукі були видалені</string>
|
||||
<string name="clear_feed">Очистити стрічку</string>
|
||||
<string name="check_for_new_chapters">Перевірити нові розділи</string>
|
||||
<string name="reverse">В зворотньому порядку</string>
|
||||
<string name="sign_in">Увійти</string>
|
||||
<string name="auth_required">Увійдіть, щоб переглянути цей вміст</string>
|
||||
<string name="default_s">За замовчуванням: %s</string>
|
||||
<string name="_and_x_more">…і ще %1$d</string>
|
||||
<string name="next">Далі</string>
|
||||
<string name="protect_application_subtitle">Введіть пароль для запуску програми</string>
|
||||
<string name="confirm">Підтвердити</string>
|
||||
<string name="password_length_hint">Пароль має містити 4 символи або більше</string>
|
||||
<string name="search_only_on_s">Пошук лише на %s</string>
|
||||
<string name="welcome">Ласкаво просимо</string>
|
||||
<string name="backup_saved">Резервна копія збережена</string>
|
||||
<string name="read_more">Докладніше</string>
|
||||
<string name="queued">У черзі</string>
|
||||
<string name="text_downloads_holder">Немає активних завантажень</string>
|
||||
<string name="about_app_translation_summary">Допомогти з перекладом програми</string>
|
||||
<string name="about_app_translation">Переклад</string>
|
||||
<string name="about_feedback_4pda">Тема на 4PDA</string>
|
||||
<string name="auth_complete">Авторизація виконана</string>
|
||||
<string name="auth_not_supported_by">Вхід на %s не підтримується</string>
|
||||
<string name="text_clear_cookies_prompt">Ви вийдете з усіх джерел</string>
|
||||
<string name="state_finished">Завершена</string>
|
||||
<string name="state_ongoing">Триває</string>
|
||||
<string name="date_format">Формат дати</string>
|
||||
<string name="exclude_nsfw_from_history">Виключити NSFW манґу з історії</string>
|
||||
<string name="error_empty_name">Ви повинні ввести ім’я</string>
|
||||
<string name="show_pages_numbers">Показувати номери сторінок</string>
|
||||
<string name="enabled_sources">Включені джерела</string>
|
||||
<string name="dynamic_theme_summary">Застосовує тему програми, засновану на палітрі кольорів шпалер на пристрої</string>
|
||||
<string name="importing_progress">Імпорт манґи: %1$d з %2$d</string>
|
||||
<string name="screenshots_policy">Політика щодо знімків екрана</string>
|
||||
<string name="screenshots_allow">Дозволити</string>
|
||||
<string name="suggestions_summary">Пропонувати манґу на основі ваших уподобань</string>
|
||||
<string name="suggestions_info">Усі дані аналізуються локально на цьому пристрої. Передача ваших персональних даних у будь-які сервіси не здійснюється</string>
|
||||
<string name="text_suggestion_holder">Почніть читати манґу, і ви отримаєте персоналізовані пропозиції</string>
|
||||
<string name="enabled">Увімкнено</string>
|
||||
<string name="disabled">Вимкнено</string>
|
||||
<string name="reset_filter">Скинути фільтр</string>
|
||||
<string name="find_genre">Знайти жанр</string>
|
||||
<string name="onboard_text">Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях.</string>
|
||||
<string name="only_using_wifi">Тільки по Wi-Fi</string>
|
||||
<string name="preload_pages">Попереднє завантаження сторінок</string>
|
||||
<string name="logged_in_as">Ви увійшли як %s</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">Різні мови</string>
|
||||
<string name="search_chapters">Знайти розділ</string>
|
||||
<string name="chapters_empty">Немає розділів у цій манзі</string>
|
||||
<string name="percent_string_pattern">%1$s%%</string>
|
||||
<string name="content">Зміст</string>
|
||||
<string name="suggestions_updating">Оновлення пропозицій</string>
|
||||
<string name="text_delete_local_manga_batch">Видалити вибрані елементи з пристрою назавжди\?</string>
|
||||
<string name="removal_completed">Видалення завершено</string>
|
||||
<string name="batch_manga_save_confirm">Ви впевнені, що хочете завантажити всю вибрану манґу з усіма її розділами\? Це може споживати багато трафіку та пам’яті</string>
|
||||
<string name="parallel_downloads">Завантажувати паралельно</string>
|
||||
<string name="download_slowdown">Сповільнення завантаження</string>
|
||||
<string name="local_manga_processing">Обробка збереженої манґи</string>
|
||||
<string name="hide">Приховати</string>
|
||||
<string name="new_sources_text">Доступні нові джерела манґи</string>
|
||||
<string name="close_menu">Закрити меню</string>
|
||||
<string name="manga_downloading_">Завантаження…</string>
|
||||
<string name="clear">Очистити</string>
|
||||
<string name="downloads">Завантаження</string>
|
||||
<string name="automatic">Як в системі</string>
|
||||
<string name="chapter_is_missing_text">Завантажте або прочитайте цей відсутній розділ онлайн.</string>
|
||||
<string name="chapter_is_missing">Розділ відсутній</string>
|
||||
<string name="about_feedback">Зворотній зв\'язок</string>
|
||||
<string name="genres">Жанри</string>
|
||||
<string name="system_default">За замовчуванням</string>
|
||||
<string name="always">Завжди</string>
|
||||
<string name="_continue">Продовжити</string>
|
||||
<string name="_import">Імпорт</string>
|
||||
<string name="taps_on_edges">Натискання по краях</string>
|
||||
<string name="warning">Попередження</string>
|
||||
<string name="network_consumption_warning">Це може призвести до витрати великої кількості трафіку</string>
|
||||
<string name="dont_ask_again">Більше не питати</string>
|
||||
<string name="notifications_settings">Налаштування сповіщень</string>
|
||||
<string name="rename">Перейменувати</string>
|
||||
<string name="show_notification_app_update">Показувати сповіщення, якщо доступна нова версія</string>
|
||||
<string name="open_in_browser">Відкрити у веб-браузері</string>
|
||||
<string name="not_available">Недоступно</string>
|
||||
<string name="cannot_find_available_storage">Немає доступного сховища</string>
|
||||
<string name="text_feed_holder">Нові розділи того, що ви читаєте, показано тут</string>
|
||||
<string name="search_results">Результати пошуку</string>
|
||||
<string name="enter_password">Введіть пароль</string>
|
||||
<string name="notification_sound">Звук сповіщень</string>
|
||||
<string name="light_indicator">Світлодіодний індикатор</string>
|
||||
<string name="categories_">Категорії…</string>
|
||||
<string name="text_categories_holder">Ви можете використовувати категорії для впорядкування своїх уподобань. Натисніть «+», щоб створити категорію</string>
|
||||
<string name="yesterday">Учора</string>
|
||||
<string name="right_to_left">Справа наліво (←)</string>
|
||||
<string name="create_backup">Створити резервну копію</string>
|
||||
<string name="restore_backup">Відновити з резервної копії</string>
|
||||
<string name="data_restored_success">Всі дані були відновлені</string>
|
||||
<string name="group">Групувати</string>
|
||||
<string name="today">Сьогодні</string>
|
||||
<string name="silent">Без звуку</string>
|
||||
<string name="long_ago">Давно</string>
|
||||
<string name="chapters_checking_progress">Перевірка наявності нових розділів: %1$d з %2$d</string>
|
||||
<string name="text_clear_updates_feed_prompt">Очистити всю історію оновлень назавжди\?</string>
|
||||
<string name="tracker_warning">Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання.</string>
|
||||
<string name="text_clear_search_history_prompt">Видалити всі останні пошукові запити назавжди\?</string>
|
||||
<string name="other">Інше</string>
|
||||
<string name="available_sources">Доступні джерела</string>
|
||||
<string name="dynamic_theme">Динамічна тема</string>
|
||||
<string name="screenshots_block_nsfw">Блок на NSFW</string>
|
||||
<string name="screenshots_block_all">Завжди блокувати</string>
|
||||
<string name="suggestions">Пропозиції</string>
|
||||
<string name="suggestions_enable">Увімкнути пропозиції</string>
|
||||
<string name="exclude_nsfw_from_suggestions">Не пропонувати NSFW манґу</string>
|
||||
<string name="filter_load_error">Не вдалося завантажити список жанрів</string>
|
||||
<string name="never">Ніколи</string>
|
||||
<string name="appearance">Зовнішній вигляд</string>
|
||||
<string name="suggestions_excluded_genres">Виключити жанри</string>
|
||||
<string name="suggestions_excluded_genres_summary">Укажіть жанри, які ви не хочете бачити в пропозиціях</string>
|
||||
<string name="download_slowdown_summary">Допомагає уникнути блокування вашої IP-адреси</string>
|
||||
<string name="chapters_will_removed_background">Розділи будуть видалені у фоновому режимі. Це може зайняти деякий час</string>
|
||||
<string name="check_new_chapters_title">Перевіряти наявність нових розділів і повідомляти про них</string>
|
||||
<string name="show_notification_new_chapters_on">Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте</string>
|
||||
<string name="notifications_enable">Увімкнути сповіщення</string>
|
||||
<string name="show_notification_new_chapters_off">Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку</string>
|
||||
<string name="empty_favourite_categories">Немає улюблених категорій</string>
|
||||
<string name="name">Назва</string>
|
||||
<string name="edit">Змінити</string>
|
||||
<string name="edit_category">Змінити категорію</string>
|
||||
<string name="bookmark_add">Додати закладку</string>
|
||||
<string name="bookmark_remove">Видалити закладку</string>
|
||||
<string name="bookmarks">Закладки</string>
|
||||
<string name="bookmark_removed">Закладка видалена</string>
|
||||
<string name="bookmark_added">Додано закладку</string>
|
||||
<string name="undo">Скасувати</string>
|
||||
<string name="removed_from_history">Видалено з історії</string>
|
||||
<string name="dns_over_https">DNS через HTTPS</string>
|
||||
<string name="default_mode">Типовий режим</string>
|
||||
<string name="detect_reader_mode_summary">Автоматично визначати, чи є манга вебтуном</string>
|
||||
<string name="detect_reader_mode">Автовизначення режиму читання</string>
|
||||
<string name="disable_battery_optimization">Вимкнути оптимізацію акумулятора</string>
|
||||
<string name="disable_battery_optimization_summary">Допомагає з перевірками фонових оновлень</string>
|
||||
<string name="remove_category">Видалити</string>
|
||||
<string name="text_empty_holder_primary">Тут якось пусто…</string>
|
||||
<string name="text_search_holder_secondary">Спробуйте переформулювати запит.</string>
|
||||
<string name="text_history_holder_primary">Те, що ви читаєте, буде показано тут</string>
|
||||
<string name="text_history_holder_secondary">Знайдіть, що читати, у бічному меню.</string>
|
||||
<string name="text_local_holder_primary">Спочатку збережіть щось</string>
|
||||
<string name="text_local_holder_secondary">Збережіть його з онлайн-джерела або імпортуйте файли.</string>
|
||||
<string name="manga_shelf">Полиця</string>
|
||||
<string name="recent_manga">Недавні</string>
|
||||
<string name="pages_animation">Анімація перегортання</string>
|
||||
<string name="manga_save_location">Тека для завантажень</string>
|
||||
<string name="other_storage">Інше сховище</string>
|
||||
<string name="done">Готово</string>
|
||||
<string name="all_favourites">Усі улюблені</string>
|
||||
<string name="favourites_category_empty">Порожня категорія</string>
|
||||
<string name="read_later">Прочитати пізніше</string>
|
||||
<string name="updates">Оновлення</string>
|
||||
<string name="related">Схожі</string>
|
||||
<string name="new_version_s">Нова версія: %s</string>
|
||||
<string name="size_s">Розмір: %s</string>
|
||||
<string name="waiting_for_network">Очікування мережі…</string>
|
||||
<string name="clear_updates_feed">Очистити стрічку оновлень</string>
|
||||
<string name="updates_feed_cleared">Очищено</string>
|
||||
<string name="rotate_screen">Повернути екран</string>
|
||||
<string name="update">Оновити</string>
|
||||
<string name="feed_will_update_soon">Оновлення скоро почнеться</string>
|
||||
<string name="track_sources">Стежити за оновленнями</string>
|
||||
<string name="dont_check">Не перевіряти</string>
|
||||
<string name="wrong_password">Неправильний пароль</string>
|
||||
<string name="protect_application">Захистити додаток</string>
|
||||
<string name="protect_application_summary">Запитувати пароль під час запуску Kotatsu</string>
|
||||
<string name="repeat_password">Повторіть пароль</string>
|
||||
<string name="passwords_mismatch">Паролі не співпадають</string>
|
||||
<string name="about">Про програму</string>
|
||||
<string name="app_version">Версія %s</string>
|
||||
<string name="check_for_updates">Перевірити наявність оновлень</string>
|
||||
<string name="checking_for_updates">Перевірка наявності оновлень…</string>
|
||||
<string name="update_check_failed">Не вдалося перевірити оновлення</string>
|
||||
<string name="no_update_available">Немає доступних оновлень</string>
|
||||
<string name="create_category">Нова категорія</string>
|
||||
<string name="scale_mode">Режим масштабування</string>
|
||||
<string name="zoom_mode_fit_center">Вмістити в екран</string>
|
||||
<string name="zoom_mode_fit_height">Підігнати по висоті</string>
|
||||
<string name="zoom_mode_fit_width">Підігнати по ширині</string>
|
||||
<string name="zoom_mode_keep_start">Вихідний розмір</string>
|
||||
<string name="black_dark_theme">Чорна</string>
|
||||
<string name="black_dark_theme_summary">Споживає менше енергії на екранах AMOLED</string>
|
||||
<string name="backup_restore">Резервне копіювання та відновлення</string>
|
||||
<string name="data_restored">Відновлено</string>
|
||||
<string name="preparing_">Підготовка…</string>
|
||||
<string name="report_github">Створити проблему на GitHub</string>
|
||||
<string name="file_not_found">Файл не знайдено</string>
|
||||
<string name="data_restored_with_errors">Дані відновлено, але є деякі помилки</string>
|
||||
<string name="backup_information">Ви можете створити резервну копію своєї історії та уподобань і відновити їх</string>
|
||||
<string name="just_now">Тільки що</string>
|
||||
<string name="tap_to_try_again">Торкніться, щоб спробувати ще раз</string>
|
||||
<string name="reader_mode_hint">Обраний режим буде запам\'ятован для цієї манги</string>
|
||||
<string name="captcha_required">Потрібна CAPTCHA</string>
|
||||
<string name="captcha_solve">Пройти</string>
|
||||
<string name="clear_cookies">Очистити кукі</string>
|
||||
<string name="cookies_cleared">Всі кукі були видалені</string>
|
||||
<string name="clear_feed">Очистити стрічку</string>
|
||||
<string name="check_for_new_chapters">Перевірити нові розділи</string>
|
||||
<string name="reverse">В зворотньому порядку</string>
|
||||
<string name="sign_in">Увійти</string>
|
||||
<string name="auth_required">Увійдіть, щоб переглянути цей вміст</string>
|
||||
<string name="default_s">За замовчуванням: %s</string>
|
||||
<string name="_and_x_more">…і ще %1$d</string>
|
||||
<string name="next">Далі</string>
|
||||
<string name="protect_application_subtitle">Введіть пароль для запуску програми</string>
|
||||
<string name="confirm">Підтвердити</string>
|
||||
<string name="password_length_hint">Пароль має містити 4 символи або більше</string>
|
||||
<string name="search_only_on_s">Пошук лише на %s</string>
|
||||
<string name="welcome">Ласкаво просимо</string>
|
||||
<string name="backup_saved">Резервна копія збережена</string>
|
||||
<string name="read_more">Докладніше</string>
|
||||
<string name="queued">У черзі</string>
|
||||
<string name="text_downloads_holder">Немає активних завантажень</string>
|
||||
<string name="about_app_translation_summary">Допомогти з перекладом програми</string>
|
||||
<string name="about_app_translation">Переклад</string>
|
||||
<string name="about_feedback_4pda">Тема на 4PDA</string>
|
||||
<string name="auth_complete">Авторизація виконана</string>
|
||||
<string name="auth_not_supported_by">Вхід на %s не підтримується</string>
|
||||
<string name="text_clear_cookies_prompt">Ви вийдете з усіх джерел</string>
|
||||
<string name="state_finished">Завершена</string>
|
||||
<string name="state_ongoing">Триває</string>
|
||||
<string name="date_format">Формат дати</string>
|
||||
<string name="exclude_nsfw_from_history">Виключити NSFW манґу з історії</string>
|
||||
<string name="error_empty_name">Ви повинні ввести ім’я</string>
|
||||
<string name="show_pages_numbers">Показувати номери сторінок</string>
|
||||
<string name="enabled_sources">Включені джерела</string>
|
||||
<string name="dynamic_theme_summary">Застосовує тему програми, засновану на палітрі кольорів шпалер на пристрої</string>
|
||||
<string name="importing_progress">Імпорт манґи: %1$d з %2$d</string>
|
||||
<string name="screenshots_policy">Політика щодо знімків екрана</string>
|
||||
<string name="screenshots_allow">Дозволити</string>
|
||||
<string name="suggestions_summary">Пропонувати манґу на основі ваших уподобань</string>
|
||||
<string name="suggestions_info">Усі дані аналізуються локально на цьому пристрої. Передача ваших персональних даних у будь-які сервіси не здійснюється</string>
|
||||
<string name="text_suggestion_holder">Почніть читати манґу, і ви отримаєте персоналізовані пропозиції</string>
|
||||
<string name="enabled">Увімкнено</string>
|
||||
<string name="disabled">Вимкнено</string>
|
||||
<string name="reset_filter">Скинути фільтр</string>
|
||||
<string name="find_genre">Знайти жанр</string>
|
||||
<string name="onboard_text">Виберіть мови, якими ви хочете читати манґу. Це можливо змінити пізніше в налаштуваннях.</string>
|
||||
<string name="only_using_wifi">Тільки по Wi-Fi</string>
|
||||
<string name="preload_pages">Попереднє завантаження сторінок</string>
|
||||
<string name="logged_in_as">Ви увійшли як %s</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">Різні мови</string>
|
||||
<string name="search_chapters">Знайти розділ</string>
|
||||
<string name="chapters_empty">Немає розділів у цій манзі</string>
|
||||
<string name="percent_string_pattern">%1$s%%</string>
|
||||
<string name="content">Зміст</string>
|
||||
<string name="suggestions_updating">Оновлення пропозицій</string>
|
||||
<string name="text_delete_local_manga_batch">Видалити вибрані елементи з пристрою назавжди\?</string>
|
||||
<string name="removal_completed">Видалення завершено</string>
|
||||
<string name="batch_manga_save_confirm">Ви впевнені, що хочете завантажити всю вибрану манґу з усіма її розділами\? Це може споживати багато трафіку та пам’яті</string>
|
||||
<string name="parallel_downloads">Завантажувати паралельно</string>
|
||||
<string name="download_slowdown">Сповільнення завантаження</string>
|
||||
<string name="local_manga_processing">Обробка збереженої манґи</string>
|
||||
<string name="hide">Приховати</string>
|
||||
<string name="new_sources_text">Доступні нові джерела манґи</string>
|
||||
<string name="close_menu">Закрити меню</string>
|
||||
<string name="manga_downloading_">Завантаження…</string>
|
||||
<string name="clear">Очистити</string>
|
||||
<string name="downloads">Завантаження</string>
|
||||
<string name="automatic">Як в системі</string>
|
||||
<string name="chapter_is_missing_text">Завантажте або прочитайте цей відсутній розділ онлайн.</string>
|
||||
<string name="chapter_is_missing">Розділ відсутній</string>
|
||||
<string name="about_feedback">Зворотній зв\'язок</string>
|
||||
<string name="genres">Жанри</string>
|
||||
<string name="system_default">За замовчуванням</string>
|
||||
<string name="always">Завжди</string>
|
||||
<string name="_continue">Продовжити</string>
|
||||
<string name="_import">Імпорт</string>
|
||||
<string name="taps_on_edges">Натискання по краях</string>
|
||||
<string name="warning">Попередження</string>
|
||||
<string name="network_consumption_warning">Це може призвести до витрати великої кількості трафіку</string>
|
||||
<string name="dont_ask_again">Більше не питати</string>
|
||||
<string name="notifications_settings">Налаштування сповіщень</string>
|
||||
<string name="rename">Перейменувати</string>
|
||||
<string name="show_notification_app_update">Показувати сповіщення, якщо доступна нова версія</string>
|
||||
<string name="open_in_browser">Відкрити у веб-браузері</string>
|
||||
<string name="not_available">Недоступно</string>
|
||||
<string name="cannot_find_available_storage">Немає доступного сховища</string>
|
||||
<string name="text_feed_holder">Нові розділи того, що ви читаєте, показано тут</string>
|
||||
<string name="search_results">Результати пошуку</string>
|
||||
<string name="enter_password">Введіть пароль</string>
|
||||
<string name="notification_sound">Звук сповіщень</string>
|
||||
<string name="light_indicator">Світлодіодний індикатор</string>
|
||||
<string name="categories_">Категорії…</string>
|
||||
<string name="text_categories_holder">Ви можете використовувати категорії для впорядкування своїх уподобань. Натисніть «+», щоб створити категорію</string>
|
||||
<string name="yesterday">Учора</string>
|
||||
<string name="right_to_left">Справа наліво (←)</string>
|
||||
<string name="create_backup">Створити резервну копію</string>
|
||||
<string name="restore_backup">Відновити з резервної копії</string>
|
||||
<string name="data_restored_success">Всі дані були відновлені</string>
|
||||
<string name="group">Групувати</string>
|
||||
<string name="today">Сьогодні</string>
|
||||
<string name="silent">Без звуку</string>
|
||||
<string name="long_ago">Давно</string>
|
||||
<string name="chapters_checking_progress">Перевірка наявності нових розділів: %1$d з %2$d</string>
|
||||
<string name="text_clear_updates_feed_prompt">Очистити всю історію оновлень назавжди\?</string>
|
||||
<string name="tracker_warning">Деякі пристрої мають різну поведінку системи, що може порушити фонові завдання.</string>
|
||||
<string name="text_clear_search_history_prompt">Видалити всі останні пошукові запити назавжди\?</string>
|
||||
<string name="other">Інше</string>
|
||||
<string name="available_sources">Доступні джерела</string>
|
||||
<string name="dynamic_theme">Динамічна тема</string>
|
||||
<string name="screenshots_block_nsfw">Блок на NSFW</string>
|
||||
<string name="screenshots_block_all">Завжди блокувати</string>
|
||||
<string name="suggestions">Пропозиції</string>
|
||||
<string name="suggestions_enable">Увімкнути пропозиції</string>
|
||||
<string name="exclude_nsfw_from_suggestions">Не пропонувати NSFW манґу</string>
|
||||
<string name="filter_load_error">Не вдалося завантажити список жанрів</string>
|
||||
<string name="never">Ніколи</string>
|
||||
<string name="appearance">Зовнішній вигляд</string>
|
||||
<string name="suggestions_excluded_genres">Виключити жанри</string>
|
||||
<string name="suggestions_excluded_genres_summary">Укажіть жанри, які ви не хочете бачити в пропозиціях</string>
|
||||
<string name="download_slowdown_summary">Допомагає уникнути блокування вашої IP-адреси</string>
|
||||
<string name="chapters_will_removed_background">Розділи будуть видалені у фоновому режимі. Це може зайняти деякий час</string>
|
||||
<string name="check_new_chapters_title">Перевіряти наявність нових розділів і повідомляти про них</string>
|
||||
<string name="show_notification_new_chapters_on">Ви будете отримувати повідомлення про оновлення манґи, яку ви читаєте</string>
|
||||
<string name="notifications_enable">Увімкнути сповіщення</string>
|
||||
<string name="show_notification_new_chapters_off">Ви не будете отримувати повідомлення, але нові розділи будуть відображатися у списку</string>
|
||||
<string name="empty_favourite_categories">Немає улюблених категорій</string>
|
||||
<string name="name">Назва</string>
|
||||
<string name="edit">Змінити</string>
|
||||
<string name="edit_category">Змінити категорію</string>
|
||||
<string name="bookmark_add">Додати закладку</string>
|
||||
<string name="bookmark_remove">Видалити закладку</string>
|
||||
<string name="bookmarks">Закладки</string>
|
||||
<string name="bookmark_removed">Закладка видалена</string>
|
||||
<string name="bookmark_added">Додано закладку</string>
|
||||
<string name="undo">Відмінити</string>
|
||||
<string name="removed_from_history">Видалено з історії</string>
|
||||
<string name="dns_over_https">DNS через HTTPS</string>
|
||||
<string name="default_mode">Режим за замовчуванням</string>
|
||||
<string name="detect_reader_mode_summary">Автоматично визначати, чи є манга вебтуном</string>
|
||||
<string name="detect_reader_mode">Автовизначення режиму читання</string>
|
||||
<string name="disable_battery_optimization">Вимкнути оптимізацію акумулятора</string>
|
||||
<string name="disable_battery_optimization_summary">Допомагає з перевірками фонових оновлень</string>
|
||||
<string name="crash_text">Щось пішло не так. Будь ласка, надішліть звіт про помилку розробникам, щоб допомогти нам її виправити.</string>
|
||||
<string name="send">Надіслати</string>
|
||||
<string name="disable_all">Вимкнути все</string>
|
||||
<string name="use_fingerprint">Використовувати відбиток пальця, якщо доступно</string>
|
||||
<string name="appwidget_shelf_description">Манга з Вашого улюбленого</string>
|
||||
<string name="appwidget_recent_description">Манга, яку Ви нещодавно читали</string>
|
||||
</resources>
|
||||
4
app/src/main/res/values-v31/dimens.xml
Normal file
4
app/src/main/res/values-v31/dimens.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<dimen name="appwidget_corner_radius_inner">@android:dimen/system_app_widget_inner_radius</dimen>
|
||||
</resources>
|
||||
@@ -41,4 +41,10 @@
|
||||
<item name="android:textColorHighlightInverse">@color/m3_dynamic_dark_highlighted_text</item>
|
||||
<item name="android:textColorAlertDialogListItem">@color/m3_dynamic_default_color_primary_text</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Kotatsu.AppWidgetContainer" parent="@android:style/Theme.DeviceDefault.DayNight">
|
||||
<item name="android:colorBackground">@android:color/system_accent1_50</item>
|
||||
<item name="android:panelColorBackground">@android:color/system_accent1_100</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
@@ -3,9 +3,296 @@
|
||||
<string name="settings">设置</string>
|
||||
<string name="local_storage">本地存储</string>
|
||||
<string name="favourites">喜欢</string>
|
||||
<string name="history">浏览历史</string>
|
||||
<string name="history">历史</string>
|
||||
<string name="error_occurred">发生了一个错误</string>
|
||||
<string name="network_error">未能连接到互联网</string>
|
||||
<string name="chapters">章节</string>
|
||||
<string name="list">列表</string>
|
||||
<string name="data_restored_with_errors">数据被恢复了,但有错误</string>
|
||||
<string name="processing_">正在处理…</string>
|
||||
<string name="newest">最新</string>
|
||||
<string name="by_rating">评分</string>
|
||||
<string name="cookies_cleared">已删除所有 cookie</string>
|
||||
<string name="data_restored_success">所有数据都被恢复了</string>
|
||||
<string name="silent">无声</string>
|
||||
<string name="report_github">在GitHub上创建问题</string>
|
||||
<string name="preparing_">准备…</string>
|
||||
<string name="file_not_found">未找到文件</string>
|
||||
<string name="yesterday">昨日</string>
|
||||
<string name="backup_information">你可以创建你的历史和收藏的备份并恢复它</string>
|
||||
<string name="just_now">现在</string>
|
||||
<string name="long_ago">很久以前</string>
|
||||
<string name="group">组</string>
|
||||
<string name="tap_to_try_again">轻点以重试</string>
|
||||
<string name="reader_mode_hint">所选择的配置将因这部漫画而被记住</string>
|
||||
<string name="captcha_required">需要验证码</string>
|
||||
<string name="captcha_solve">解决</string>
|
||||
<string name="today">今天</string>
|
||||
<string name="clear_cookies">清除cookies</string>
|
||||
<string name="chapters_checking_progress">检查新的章节: %1$d/%2$d</string>
|
||||
<string name="error_empty_name">你必须输入一个名称</string>
|
||||
<string name="new_sources_text">有了新的漫画来源</string>
|
||||
<string name="suggestions_summary">根据你的喜好推荐漫画</string>
|
||||
<string name="suggestions_info">所有的数据都在这个设备上进行本地分析. 您的个人数据不会被转移到任何服务机构</string>
|
||||
<string name="never">从不</string>
|
||||
<string name="show_notification_new_chapters_on">你会收到你正在阅读的漫画的更新通知</string>
|
||||
<string name="nsfw">18+</string>
|
||||
<string name="various_languages">各种语言</string>
|
||||
<string name="search_chapters">查找章节</string>
|
||||
<string name="suggestions_excluded_genres">排除流派</string>
|
||||
<string name="suggestions_updating">建议更新</string>
|
||||
<string name="check_new_chapters_title">检查新的章节并通知有关情况</string>
|
||||
<string name="close_menu">关闭菜单</string>
|
||||
<string name="open_menu">打开菜单</string>
|
||||
<string name="details">详细内容</string>
|
||||
<string name="detailed_list">详细列表</string>
|
||||
<string name="grid">网格</string>
|
||||
<string name="list_mode">列表模式</string>
|
||||
<string name="remote_sources">远程资源</string>
|
||||
<string name="loading_">加载中…</string>
|
||||
<string name="computing_">计算中…</string>
|
||||
<string name="chapter_d_of_d">%1$d/%2$d章节</string>
|
||||
<string name="close">关闭</string>
|
||||
<string name="try_again">再试一次</string>
|
||||
<string name="clear_history">清除历史</string>
|
||||
<string name="nothing_found">没有发现</string>
|
||||
<string name="history_is_empty">尚无历史</string>
|
||||
<string name="read">阅读</string>
|
||||
<string name="you_have_not_favourites_yet">尚无收藏夹</string>
|
||||
<string name="add_to_favourites">收藏这个</string>
|
||||
<string name="add_new_category">新类别</string>
|
||||
<string name="add">添加</string>
|
||||
<string name="enter_category_name">输入类别名称</string>
|
||||
<string name="save">保存</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="create_shortcut">创建快捷方式…</string>
|
||||
<string name="share_s">分享%s</string>
|
||||
<string name="search">搜索</string>
|
||||
<string name="search_manga">搜索漫画</string>
|
||||
<string name="manga_downloading_">正在下载…</string>
|
||||
<string name="download_complete">已下载</string>
|
||||
<string name="downloads">下载</string>
|
||||
<string name="by_name">名称</string>
|
||||
<string name="popular">热门</string>
|
||||
<string name="updated">更新</string>
|
||||
<string name="sort_order">排序顺序</string>
|
||||
<string name="filter">过滤器</string>
|
||||
<string name="theme">主题</string>
|
||||
<string name="dark">黑暗</string>
|
||||
<string name="light">浅色</string>
|
||||
<string name="automatic">跟随系统</string>
|
||||
<string name="pages">页数</string>
|
||||
<string name="clear">清除</string>
|
||||
<string name="text_clear_history_prompt">永久清除所有阅读历史\?</string>
|
||||
<string name="remove">删除</string>
|
||||
<string name="_s_removed_from_history">\"%s\"从历史中删除</string>
|
||||
<string name="_s_deleted_from_local_storage">\"%s\"从本地存储中删除</string>
|
||||
<string name="wait_for_loading_finish">等待加载完成…</string>
|
||||
<string name="save_page">保存页面</string>
|
||||
<string name="page_saved">保存</string>
|
||||
<string name="share_image">分享图片</string>
|
||||
<string name="_import">输入</string>
|
||||
<string name="delete">删除</string>
|
||||
<string name="operation_not_supported">不支持此操作</string>
|
||||
<string name="text_file_not_supported">选择 ZIP 或 CBZ 文件.</string>
|
||||
<string name="no_description">无描述</string>
|
||||
<string name="history_and_cache">历史和缓存</string>
|
||||
<string name="clear_pages_cache">清除页面缓存</string>
|
||||
<string name="cache">缓存</string>
|
||||
<string name="text_file_sizes">B|kB|MB|GB|TB</string>
|
||||
<string name="standard">标准</string>
|
||||
<string name="webtoon">Webtoon</string>
|
||||
<string name="read_mode">阅读模式</string>
|
||||
<string name="grid_size">网格大小</string>
|
||||
<string name="search_on_s">在%s上搜索</string>
|
||||
<string name="delete_manga">删除漫画</string>
|
||||
<string name="text_delete_local_manga">从设备中永久删除\"%s\"\?</string>
|
||||
<string name="reader_settings">阅读器设置</string>
|
||||
<string name="switch_pages">切换页面</string>
|
||||
<string name="volume_buttons">音量按钮</string>
|
||||
<string name="_continue">继续</string>
|
||||
<string name="warning">警告</string>
|
||||
<string name="network_consumption_warning">这可能会传输大量的数据</string>
|
||||
<string name="dont_ask_again">不要再问了</string>
|
||||
<string name="cancelling_">取消中…</string>
|
||||
<string name="taps_on_edges">边缘点击</string>
|
||||
<string name="error">错误</string>
|
||||
<string name="clear_thumbs_cache">清除缩略图缓存</string>
|
||||
<string name="clear_search_history">清除搜索历史</string>
|
||||
<string name="search_history_cleared">清除</string>
|
||||
<string name="gestures_only">仅限手势</string>
|
||||
<string name="internal_storage">内部存储</string>
|
||||
<string name="external_storage">外部存储</string>
|
||||
<string name="domain">范围</string>
|
||||
<string name="application_update">检查应用程序新版本</string>
|
||||
<string name="app_update_available">新版本应用程序已经推出</string>
|
||||
<string name="show_notification_app_update">有新版本可用时显示通知</string>
|
||||
<string name="open_in_browser">在网络浏览器中打开</string>
|
||||
<string name="large_manga_save_confirm">这部漫画有%s.全部保存\?</string>
|
||||
<string name="save_manga">保存</string>
|
||||
<string name="notifications">通知</string>
|
||||
<string name="new_chapters">新章节</string>
|
||||
<string name="download">下载</string>
|
||||
<string name="read_from_start">从头开始阅读</string>
|
||||
<string name="restart">重新启动</string>
|
||||
<string name="notifications_settings">通知设置</string>
|
||||
<string name="notification_sound">通知声音</string>
|
||||
<string name="light_indicator">LED指示器</string>
|
||||
<string name="vibration">振动</string>
|
||||
<string name="favourites_categories">收藏夹类别</string>
|
||||
<string name="categories_">类别…</string>
|
||||
<string name="rename">重命名</string>
|
||||
<string name="category_delete_confirm">将\"%s\"类别从你的收藏夹中删除?
|
||||
\n里面的所有漫画都会丢失。</string>
|
||||
<string name="remove_category">删除</string>
|
||||
<string name="text_empty_holder_primary">这里有点空…</string>
|
||||
<string name="text_categories_holder">您可以使用类别来组织您的收藏夹。按«+»创建一个类别</string>
|
||||
<string name="text_search_holder_secondary">尝试重新表述查询。</string>
|
||||
<string name="text_history_holder_primary">你所读的内容将在这里显示</string>
|
||||
<string name="text_history_holder_secondary">在侧面菜单中找到要读的内容.</string>
|
||||
<string name="text_local_holder_primary">先保存内容</string>
|
||||
<string name="text_local_holder_secondary">从在线来源保存或导入文件.</string>
|
||||
<string name="manga_shelf">架子</string>
|
||||
<string name="recent_manga">最近</string>
|
||||
<string name="pages_animation">页面动画</string>
|
||||
<string name="manga_save_location">下载文件夹</string>
|
||||
<string name="not_available">不详</string>
|
||||
<string name="cannot_find_available_storage">没有可用的存储空间</string>
|
||||
<string name="other_storage">其他存储</string>
|
||||
<string name="done">完成</string>
|
||||
<string name="all_favourites">所有收藏夹</string>
|
||||
<string name="favourites_category_empty">空类别</string>
|
||||
<string name="read_later">稍后阅读</string>
|
||||
<string name="updates">更新</string>
|
||||
<string name="text_feed_holder">你正在阅读的新章节显示在这里</string>
|
||||
<string name="search_results">搜索结果</string>
|
||||
<string name="related">相关</string>
|
||||
<string name="new_version_s">新版本: %s</string>
|
||||
<string name="waiting_for_network">等待网络…</string>
|
||||
<string name="clear_updates_feed">清除更新源</string>
|
||||
<string name="updates_feed_cleared">已清除</string>
|
||||
<string name="rotate_screen">旋转屏幕</string>
|
||||
<string name="update">更新</string>
|
||||
<string name="feed_will_update_soon">源更新即将开始</string>
|
||||
<string name="track_sources">查找更新</string>
|
||||
<string name="dont_check">不要检查</string>
|
||||
<string name="enter_password">输入密码</string>
|
||||
<string name="wrong_password">密码错误</string>
|
||||
<string name="protect_application">保护应用程序</string>
|
||||
<string name="protect_application_summary">在启动Kotatsu时要求输入密码</string>
|
||||
<string name="repeat_password">重复密码</string>
|
||||
<string name="passwords_mismatch">密码不匹配</string>
|
||||
<string name="about">关于</string>
|
||||
<string name="app_version">版本%s</string>
|
||||
<string name="check_for_updates">检查更新</string>
|
||||
<string name="checking_for_updates">检查更新…</string>
|
||||
<string name="update_check_failed">无法查找更新</string>
|
||||
<string name="no_update_available">没有更新</string>
|
||||
<string name="right_to_left">从右到左 (←)</string>
|
||||
<string name="create_category">新类别</string>
|
||||
<string name="scale_mode">缩放模式</string>
|
||||
<string name="zoom_mode_fit_center">适应中心</string>
|
||||
<string name="zoom_mode_fit_height">适应高度</string>
|
||||
<string name="zoom_mode_fit_width">适应宽度</string>
|
||||
<string name="zoom_mode_keep_start">从头开始</string>
|
||||
<string name="black_dark_theme">黑色</string>
|
||||
<string name="black_dark_theme_summary">在AMOLED屏幕上使用更少电池</string>
|
||||
<string name="backup_restore">备份和还原</string>
|
||||
<string name="create_backup">创建数据备份</string>
|
||||
<string name="restore_backup">从备份中恢复</string>
|
||||
<string name="data_restored">恢复</string>
|
||||
<string name="clear_feed">清除文件</string>
|
||||
<string name="text_clear_updates_feed_prompt">永久地清除所有的更新历史?</string>
|
||||
<string name="check_for_new_chapters">检查新的章节</string>
|
||||
<string name="reverse">撤销</string>
|
||||
<string name="sign_in">登录</string>
|
||||
<string name="auth_required">登录后可查看此内容</string>
|
||||
<string name="default_s">默认值: %s</string>
|
||||
<string name="_and_x_more">...和%1$d更多</string>
|
||||
<string name="next">下一页</string>
|
||||
<string name="protect_application_subtitle">输入密码以启动应用程序</string>
|
||||
<string name="confirm">确认</string>
|
||||
<string name="password_length_hint">密码必须是4个字符或以上</string>
|
||||
<string name="search_only_on_s">仅在%s上搜索</string>
|
||||
<string name="text_clear_search_history_prompt">永久地删除所有最近的搜索查询?</string>
|
||||
<string name="other">其他</string>
|
||||
<string name="welcome">欢迎</string>
|
||||
<string name="backup_saved">保存备份</string>
|
||||
<string name="tracker_warning">一些设备有不同的系统行为, 这可能会破坏后台任务.</string>
|
||||
<string name="read_more">阅读更多</string>
|
||||
<string name="queued">排队</string>
|
||||
<string name="text_downloads_holder">没有有效的下载</string>
|
||||
<string name="chapter_is_missing_text">下载或在线阅读这缺失的章节.</string>
|
||||
<string name="chapter_is_missing">该章缺失</string>
|
||||
<string name="about_app_translation_summary">翻译此应用程序</string>
|
||||
<string name="about_app_translation">翻译</string>
|
||||
<string name="about_feedback">反馈信息</string>
|
||||
<string name="about_feedback_4pda">关于4PDA主题</string>
|
||||
<string name="auth_complete">授权</string>
|
||||
<string name="auth_not_supported_by">不支持在%s上登录</string>
|
||||
<string name="text_clear_cookies_prompt">你将被从所有来源中注销</string>
|
||||
<string name="genres">类型</string>
|
||||
<string name="state_ongoing">连载中</string>
|
||||
<string name="state_finished">已完结</string>
|
||||
<string name="date_format">日期格式</string>
|
||||
<string name="system_default">默认</string>
|
||||
<string name="exclude_nsfw_from_history">将NSFW漫画排除在历史之外</string>
|
||||
<string name="show_pages_numbers">页数</string>
|
||||
<string name="enabled_sources">使用图源</string>
|
||||
<string name="available_sources">现有图源</string>
|
||||
<string name="dynamic_theme">动态主题</string>
|
||||
<string name="dynamic_theme_summary">应用根据你的墙纸的颜色方案创建的主题</string>
|
||||
<string name="importing_progress">导入漫画: %1$d of %2$d</string>
|
||||
<string name="screenshots_policy">屏幕截图</string>
|
||||
<string name="screenshots_allow">允许</string>
|
||||
<string name="screenshots_block_nsfw">禁止18+</string>
|
||||
<string name="screenshots_block_all">始终阻止</string>
|
||||
<string name="suggestions">建议</string>
|
||||
<string name="suggestions_enable">启用建议</string>
|
||||
<string name="text_suggestion_holder">开始阅读漫画,你会得到个性化的建议</string>
|
||||
<string name="exclude_nsfw_from_suggestions">请勿推荐18+漫画</string>
|
||||
<string name="enabled">启用</string>
|
||||
<string name="disabled">禁用</string>
|
||||
<string name="filter_load_error">无法加载流派列表</string>
|
||||
<string name="reset_filter">重置过滤器</string>
|
||||
<string name="find_genre">查找流派</string>
|
||||
<string name="onboard_text">选择你想看的漫画的语言. 你可以在以后的设置中改变它.</string>
|
||||
<string name="only_using_wifi">只在Wi-Fi上使用</string>
|
||||
<string name="always">总是</string>
|
||||
<string name="preload_pages">预加载页面</string>
|
||||
<string name="logged_in_as">以%s身份登录</string>
|
||||
<string name="chapters_empty">这部漫画中没有章节</string>
|
||||
<string name="appearance">外观</string>
|
||||
<string name="content">内容</string>
|
||||
<string name="suggestions_excluded_genres_summary">指定您不希望在建议中看到的类型</string>
|
||||
<string name="text_delete_local_manga_batch">从设备中永久删除所选项目\?</string>
|
||||
<string name="removal_completed">删除已完成</string>
|
||||
<string name="parallel_downloads">并行下载</string>
|
||||
<string name="download_slowdown">下载速度减慢</string>
|
||||
<string name="batch_manga_save_confirm">你确定你要下载所有选定的漫画及其所有章节吗\? 这个动作会消耗大量的流量和存储空间</string>
|
||||
<string name="download_slowdown_summary">有助于避免阻断你的IP地址</string>
|
||||
<string name="local_manga_processing">保存的漫画处理</string>
|
||||
<string name="chapters_will_removed_background">章节将在后台被删除. 这可能需要一些时间</string>
|
||||
<string name="hide">隐藏</string>
|
||||
<string name="show_notification_new_chapters_off">你将不会收到通知但新的章节将在列表中突出显示</string>
|
||||
<string name="notifications_enable">启用通知</string>
|
||||
<string name="name">命名</string>
|
||||
<string name="edit">编辑</string>
|
||||
<string name="edit_category">编辑类别</string>
|
||||
<string name="empty_favourite_categories">没有收藏夹类别</string>
|
||||
<string name="bookmark_add">添加书签</string>
|
||||
<string name="bookmark_remove">删除书签</string>
|
||||
<string name="bookmarks">书签</string>
|
||||
<string name="bookmark_removed">删除书签</string>
|
||||
<string name="bookmark_added">加入书签</string>
|
||||
<string name="undo">撤销</string>
|
||||
<string name="removed_from_history">从历史中删除</string>
|
||||
<string name="dns_over_https">DNS over HTTPS</string>
|
||||
<string name="default_mode">默认模式</string>
|
||||
<string name="detect_reader_mode">自动检测阅读器模式</string>
|
||||
<string name="detect_reader_mode_summary">自动检测漫画是否为网络漫画</string>
|
||||
<string name="disable_battery_optimization">禁用电池优化</string>
|
||||
<string name="disable_battery_optimization_summary">帮助进行背景更新检查</string>
|
||||
<string name="crash_text">出了点问题. 请向开发人员提交一份错误报告以帮助我们修复它.</string>
|
||||
<string name="send">发送</string>
|
||||
</resources>
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<resources>
|
||||
<bool name="is_tablet">false</bool>
|
||||
<bool name="light_status_bar">true</bool>
|
||||
<bool name="light_navigation_bar">false</bool>
|
||||
<bool name="elevation_overlay_enabled">false</bool>
|
||||
</resources>
|
||||
@@ -15,7 +15,7 @@
|
||||
<dimen name="manga_list_details_item_height">120dp</dimen>
|
||||
<dimen name="bookmark_item_height">120dp</dimen>
|
||||
<dimen name="bookmark_list_spacing">4dp</dimen>
|
||||
<dimen name="chapter_list_item_height">62dp</dimen>
|
||||
<dimen name="chapter_list_item_height">48dp</dimen>
|
||||
<dimen name="preferred_grid_width">120dp</dimen>
|
||||
<dimen name="header_height">48dp</dimen>
|
||||
<dimen name="list_footer_height_inner">36dp</dimen>
|
||||
@@ -23,10 +23,15 @@
|
||||
<dimen name="screen_padding">16dp</dimen>
|
||||
<dimen name="selection_stroke_width">2dp</dimen>
|
||||
<dimen name="list_selector_corner">12dp</dimen>
|
||||
<dimen name="toolbar_button_margin">10dp</dimen>
|
||||
<dimen name="widget_cover_height">116dp</dimen>
|
||||
<dimen name="widget_cover_width">84dp</dimen>
|
||||
|
||||
<dimen name="search_suggestions_manga_height">124dp</dimen>
|
||||
<dimen name="search_suggestions_manga_spacing">4dp</dimen>
|
||||
|
||||
<dimen name="bottom_sheet_width">0dp</dimen>
|
||||
<dimen name="dialog_radius">8dp</dimen>
|
||||
|
||||
<dimen name="appwidget_corner_radius_inner">8dp</dimen>
|
||||
</resources>
|
||||
@@ -300,4 +300,8 @@
|
||||
<string name="disable_battery_optimization_summary">Helps with background updates checks</string>
|
||||
<string name="crash_text">Something went wrong. Please submit a bug report to the developers to help us fix it.</string>
|
||||
<string name="send">Send</string>
|
||||
<string name="disable_all">Disable all</string>
|
||||
<string name="use_fingerprint">Use fingerprint if available</string>
|
||||
<string name="appwidget_shelf_description">Manga from your favourites</string>
|
||||
<string name="appwidget_recent_description">Your recently read manga</string>
|
||||
</resources>
|
||||
@@ -86,14 +86,6 @@
|
||||
<item name="iconPadding">16dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Kotatsu.Switch" parent="Widget.Material3.CompoundButton.Switch">
|
||||
<item name="android:thumb">@drawable/switch_thumb</item>
|
||||
<item name="thumbTint">@color/selector_switch_thumb</item>
|
||||
<item name="track">@drawable/switch_track</item>
|
||||
<item name="trackTint">@color/selector_switch_track</item>
|
||||
<item name="materialThemeOverlay">@style/ThemeOverlay.Kotatsu.Switch</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Kotatsu.RecyclerView" parent="">
|
||||
<item name="fastScrollHorizontalThumbDrawable">@drawable/list_thumb</item>
|
||||
<item name="fastScrollVerticalThumbDrawable">@drawable/list_thumb</item>
|
||||
@@ -114,10 +106,6 @@
|
||||
<item name="android:insetBottom">2dp</item>
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.Kotatsu.Switch" parent="">
|
||||
<item name="elevationOverlayEnabled">@bool/elevation_overlay_enabled</item>
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.Kotatsu.MainToolbar" parent="">
|
||||
<item name="colorControlHighlight">@color/selector_overlay</item>
|
||||
</style>
|
||||
@@ -133,7 +121,7 @@
|
||||
<item name="android:textColor">?attr/colorOnBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Kotatsu.Button" parent="TextAppearance.Material3.TitleSmall"/>
|
||||
<style name="TextAppearance.Kotatsu.Button" parent="TextAppearance.Material3.TitleSmall" />
|
||||
|
||||
<style name="TextAppearance.Kotatsu.Preference.Secondary" parent="TextAppearance.Material3.BodySmall" />
|
||||
|
||||
@@ -181,4 +169,8 @@
|
||||
<item name="android:dialogLayout">@layout/preference_dialog_autocompletetextview</item>
|
||||
</style>
|
||||
|
||||
<style name="Preference.SwitchPreferenceCompat.M3" parent="Preference.SwitchPreferenceCompat.Material">
|
||||
<item name="android:widgetLayout">@layout/preference_widget_material_switch</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -68,10 +68,11 @@
|
||||
<item name="toolbarStyle">@style/Widget.Material3.Toolbar</item>
|
||||
<item name="appBarLayoutStyle">@style/Widget.Material3.AppBarLayout</item>
|
||||
<item name="tabStyle">@style/Widget.Kotatsu.Tabs</item>
|
||||
<item name="switchStyle">@style/Widget.Kotatsu.Switch</item>
|
||||
<item name="materialCardViewStyle">@style/Widget.Material3.CardView.Filled</item>
|
||||
<item name="recyclerViewStyle">@style/Widget.Kotatsu.RecyclerView</item>
|
||||
<item name="listItemTextViewStyle">@style/Widget.Kotatsu.ListItemTextView</item>
|
||||
<item name="materialSwitchStyle">@style/Widget.Material3.CompoundButton.MaterialSwitch</item>
|
||||
<item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat.M3</item>
|
||||
|
||||
<!-- Text appearance -->
|
||||
<item name="actionMenuTextAppearance">@style/TextAppearance.Kotatsu.Menu</item>
|
||||
@@ -102,4 +103,8 @@
|
||||
<item name="toolbarNavigationButtonStyle">@style/Theme.Kotatsu.ActionMode.CloseButton</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Kotatsu.AppWidgetContainer" parent="@style/Theme.MaterialComponents.Light">
|
||||
<item name="android:colorBackground">@android:color/transparent</item>
|
||||
<item name="android:panelColorBackground">@color/kotatsu_primaryContainer</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config xmlns:tools="http://schemas.android.com/tools">
|
||||
<network-security-config
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<!-- Need to allow cleartext traffic for some sources -->
|
||||
<base-config
|
||||
cleartextTrafficPermitted="true"
|
||||
@@ -8,7 +9,7 @@
|
||||
<!-- Trust preinstalled CAs -->
|
||||
<certificates src="system" />
|
||||
|
||||
<!-- Additionally trust user added CAs -->
|
||||
<!-- Additionally, trust user added CAs -->
|
||||
<certificates
|
||||
src="user"
|
||||
tools:ignore="AcceptsUserCertificates" />
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:description="@string/appwidget_recent_description"
|
||||
android:initialLayout="@layout/widget_recent"
|
||||
android:minWidth="110dp"
|
||||
android:minHeight="110dp"
|
||||
android:minResizeWidth="40dp"
|
||||
android:minWidth="120dp"
|
||||
android:minHeight="40dp"
|
||||
android:minResizeWidth="120dp"
|
||||
android:minResizeHeight="40dp"
|
||||
android:previewImage="@drawable/ic_appwidget_recent"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="2"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="0"
|
||||
android:widgetCategory="home_screen" />
|
||||
android:widgetCategory="home_screen"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:configure="org.koitharu.kotatsu.widget.shelf.ShelfConfigActivity"
|
||||
android:description="@string/appwidget_shelf_description"
|
||||
android:initialLayout="@layout/widget_shelf"
|
||||
android:minWidth="110dp"
|
||||
android:minHeight="110dp"
|
||||
android:minResizeWidth="40dp"
|
||||
android:minWidth="160dp"
|
||||
android:minHeight="120dp"
|
||||
android:minResizeWidth="120dp"
|
||||
android:minResizeHeight="40dp"
|
||||
android:previewImage="@drawable/ic_appwidget_shelf"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="3"
|
||||
android:targetCellHeight="2"
|
||||
android:updatePeriodMillis="0"
|
||||
android:widgetCategory="home_screen" />
|
||||
android:widgetCategory="home_screen"
|
||||
android:widgetFeatures="reconfigurable"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
|
||||
BIN
metadata/en-US/icon.png
Normal file
BIN
metadata/en-US/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -5,7 +5,7 @@ Kotatsu - приложения для чтения манги с открыты
|
||||
- Поиск манги по имени и жанрам
|
||||
- История чтения
|
||||
- Избранное с пользовательскими категориями
|
||||
- Возможность сохранять мангу и читать её оффлайн. Поддержка сторонних комиксов в формате CBZ
|
||||
- Возможность сохранять мангу и читать её офлайн. Поддержка сторонних комиксов в формате CBZ
|
||||
- Интерфейс также оптимизирован для планшетов
|
||||
- Поддержка манхвы (Webtoon)
|
||||
- Уведомления о новых главах и лента обновлений
|
||||
|
||||
Reference in New Issue
Block a user