mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Merge branch 'master' of https://github.com/recloudstream/cloudstream into account-changes
# Conflicts: # app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountAdapter.kt # app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountDialog.kt # app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountSelectActivity.kt
This commit is contained in:
commit
6863cde785
24 changed files with 405 additions and 75 deletions
|
@ -164,8 +164,8 @@ dependencies {
|
||||||
implementation("com.google.android.material:material:1.10.0")
|
implementation("com.google.android.material:material:1.10.0")
|
||||||
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
|
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
|
||||||
|
|
||||||
implementation("androidx.navigation:navigation-fragment-ktx:2.7.4")
|
implementation("androidx.navigation:navigation-fragment-ktx:2.7.5")
|
||||||
implementation("androidx.navigation:navigation-ui-ktx:2.7.4")
|
implementation("androidx.navigation:navigation-ui-ktx:2.7.5")
|
||||||
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
|
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
|
||||||
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
|
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,6 @@ class AccountAdapter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
is AccountListItemEditingBinding -> binding.apply {
|
is AccountListItemEditingBinding -> binding.apply {
|
||||||
if (account == null) return@apply
|
if (account == null) return@apply
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
package com.lagradost.cloudstream3.ui.account
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.text.Editable
|
||||||
|
import android.text.TextWatcher
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.inputmethod.EditorInfo
|
||||||
|
import android.view.inputmethod.InputMethodManager
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import com.lagradost.cloudstream3.R
|
||||||
|
import com.lagradost.cloudstream3.databinding.LockPinDialogBinding
|
||||||
|
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
|
||||||
|
|
||||||
|
object AccountDialog {
|
||||||
|
// TODO add account creation dialog to allow creating accounts directly from AccountSelectActivity
|
||||||
|
|
||||||
|
fun showPinInputDialog(
|
||||||
|
context: Context,
|
||||||
|
currentPin: String?,
|
||||||
|
editAccount: Boolean,
|
||||||
|
callback: (String?) -> Unit
|
||||||
|
) {
|
||||||
|
fun TextView.visibleWithText(@StringRes textRes: Int) {
|
||||||
|
visibility = View.VISIBLE
|
||||||
|
setText(textRes)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun View.isVisible() = visibility == View.VISIBLE
|
||||||
|
|
||||||
|
val binding = LockPinDialogBinding.inflate(LayoutInflater.from(context))
|
||||||
|
|
||||||
|
val isPinSet = currentPin != null
|
||||||
|
val isNewPin = editAccount && !isPinSet
|
||||||
|
val isEditPin = editAccount && isPinSet
|
||||||
|
|
||||||
|
val titleRes = if (isEditPin) R.string.enter_current_pin else R.string.enter_pin
|
||||||
|
|
||||||
|
val dialog = AlertDialog.Builder(context, R.style.AlertDialogCustom)
|
||||||
|
.setView(binding.root)
|
||||||
|
.setTitle(titleRes)
|
||||||
|
.setNegativeButton(R.string.cancel) { _, _ ->
|
||||||
|
callback.invoke(null)
|
||||||
|
}
|
||||||
|
.setOnCancelListener {
|
||||||
|
callback.invoke(null)
|
||||||
|
}
|
||||||
|
.setOnDismissListener {
|
||||||
|
if (binding.pinEditTextError.isVisible()) {
|
||||||
|
callback.invoke(null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.create()
|
||||||
|
|
||||||
|
var isPinValid = false
|
||||||
|
|
||||||
|
binding.pinEditText.addTextChangedListener(object : TextWatcher {
|
||||||
|
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
|
||||||
|
|
||||||
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||||
|
val enteredPin = s.toString()
|
||||||
|
val isEnteredPinValid = enteredPin.length == 4
|
||||||
|
|
||||||
|
if (isEnteredPinValid) {
|
||||||
|
if (isPinSet) {
|
||||||
|
if (enteredPin != currentPin) {
|
||||||
|
binding.pinEditTextError.visibleWithText(R.string.pin_error_incorrect)
|
||||||
|
binding.pinEditText.text = null
|
||||||
|
isPinValid = false
|
||||||
|
} else {
|
||||||
|
binding.pinEditTextError.visibility = View.GONE
|
||||||
|
isPinValid = true
|
||||||
|
|
||||||
|
callback.invoke(enteredPin)
|
||||||
|
dialog.dismissSafe()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
binding.pinEditTextError.visibility = View.GONE
|
||||||
|
isPinValid = true
|
||||||
|
}
|
||||||
|
} else if (isNewPin) {
|
||||||
|
binding.pinEditTextError.visibleWithText(R.string.pin_error_length)
|
||||||
|
isPinValid = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun afterTextChanged(s: Editable?) {}
|
||||||
|
})
|
||||||
|
|
||||||
|
// Detect IME_ACTION_DONE
|
||||||
|
binding.pinEditText.setOnEditorActionListener { _, actionId, _ ->
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_DONE && isPinValid) {
|
||||||
|
val enteredPin = binding.pinEditText.text.toString()
|
||||||
|
callback.invoke(enteredPin)
|
||||||
|
dialog.dismissSafe()
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
// We don't want to accidentally have the dialog dismiss when clicking outside of it.
|
||||||
|
// That is what the cancel button is for.
|
||||||
|
dialog.setCanceledOnTouchOutside(false)
|
||||||
|
|
||||||
|
dialog.show()
|
||||||
|
|
||||||
|
// Auto focus on PIN input and show keyboard
|
||||||
|
binding.pinEditText.requestFocus()
|
||||||
|
binding.pinEditText.postDelayed({
|
||||||
|
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
|
imm.showSoftInput(binding.pinEditText, InputMethodManager.SHOW_IMPLICIT)
|
||||||
|
}, 200)
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,6 +27,7 @@ import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.viewpager2.widget.ViewPager2
|
import androidx.viewpager2.widget.ViewPager2
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import com.lagradost.cloudstream3.APIHolder
|
import com.lagradost.cloudstream3.APIHolder
|
||||||
|
@ -137,6 +138,10 @@ class LibraryFragment : Fragment() {
|
||||||
|
|
||||||
binding?.libraryRoot?.findViewById<TextView>(R.id.search_src_text)?.apply {
|
binding?.libraryRoot?.findViewById<TextView>(R.id.search_src_text)?.apply {
|
||||||
tag = "tv_no_focus_tag"
|
tag = "tv_no_focus_tag"
|
||||||
|
//Expand the Appbar when search bar is focused, fixing scroll up issue
|
||||||
|
setOnFocusChangeListener { _, _ ->
|
||||||
|
binding?.searchBar?.setExpanded(true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the color for the search exit icon to the correct theme text color
|
// Set the color for the search exit icon to the correct theme text color
|
||||||
|
@ -342,6 +347,7 @@ class LibraryFragment : Fragment() {
|
||||||
binding?.apply {
|
binding?.apply {
|
||||||
viewpager.offscreenPageLimit = 2
|
viewpager.offscreenPageLimit = 2
|
||||||
viewpager.reduceDragSensitivity()
|
viewpager.reduceDragSensitivity()
|
||||||
|
searchBar.setExpanded(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
val startLoading = Runnable {
|
val startLoading = Runnable {
|
||||||
|
@ -441,6 +447,10 @@ class LibraryFragment : Fragment() {
|
||||||
val distance = abs(position - currentItem)
|
val distance = abs(position - currentItem)
|
||||||
hideViewpager(distance)
|
hideViewpager(distance)
|
||||||
}
|
}
|
||||||
|
//Expand the appBar on tab focus
|
||||||
|
tab.view.setOnFocusChangeListener { view, b ->
|
||||||
|
binding?.searchBar?.setExpanded(true)
|
||||||
|
}
|
||||||
}.attach()
|
}.attach()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
package com.lagradost.cloudstream3.ui.library
|
package com.lagradost.cloudstream3.ui.library
|
||||||
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.doOnAttach
|
import androidx.core.view.doOnAttach
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.recyclerview.widget.RecyclerView.OnFlingListener
|
import androidx.recyclerview.widget.RecyclerView.OnFlingListener
|
||||||
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
|
import com.lagradost.cloudstream3.R
|
||||||
import com.lagradost.cloudstream3.databinding.LibraryViewpagerPageBinding
|
import com.lagradost.cloudstream3.databinding.LibraryViewpagerPageBinding
|
||||||
import com.lagradost.cloudstream3.syncproviders.SyncAPI
|
import com.lagradost.cloudstream3.syncproviders.SyncAPI
|
||||||
import com.lagradost.cloudstream3.ui.search.SearchClickCallback
|
import com.lagradost.cloudstream3.ui.search.SearchClickCallback
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.getSpanCount
|
import com.lagradost.cloudstream3.utils.UIHelper.getSpanCount
|
||||||
|
|
||||||
class ViewpagerAdapter(
|
class ViewpagerAdapter(
|
||||||
|
@ -67,6 +71,17 @@ class ViewpagerAdapter(
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
setOnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
|
setOnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
|
||||||
val diff = scrollY - oldScrollY
|
val diff = scrollY - oldScrollY
|
||||||
|
|
||||||
|
//Expand the top Appbar based on scroll direction up/down, simulate phone behavior
|
||||||
|
if (SettingsFragment.isTvSettings()) {
|
||||||
|
binding.root.rootView.findViewById<AppBarLayout>(R.id.search_bar)
|
||||||
|
.apply {
|
||||||
|
if (diff <= 0)
|
||||||
|
setExpanded(true)
|
||||||
|
else
|
||||||
|
setExpanded(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
if (diff == 0) return@setOnScrollChangeListener
|
if (diff == 0) return@setOnScrollChangeListener
|
||||||
|
|
||||||
scrollCallback.invoke(diff > 0)
|
scrollCallback.invoke(diff > 0)
|
||||||
|
@ -80,8 +95,6 @@ class ViewpagerAdapter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.lagradost.cloudstream3.syncproviders.OAuth2API
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
||||||
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
|
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
|
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
|
||||||
|
@ -248,6 +249,7 @@ class SettingsAccount : PreferenceFragmentCompat() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpToolbar(R.string.category_account)
|
setUpToolbar(R.string.category_account)
|
||||||
setPaddingBottom()
|
setPaddingBottom()
|
||||||
|
setToolBarScrollFlags()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
|
|
@ -12,10 +12,12 @@ import android.widget.ImageView
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.core.view.children
|
import androidx.core.view.children
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.core.view.updateLayoutParams
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import com.google.android.material.appbar.MaterialToolbar
|
import com.google.android.material.appbar.MaterialToolbar
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.R
|
||||||
import com.lagradost.cloudstream3.databinding.MainSettingsBinding
|
import com.lagradost.cloudstream3.databinding.MainSettingsBinding
|
||||||
|
@ -54,7 +56,15 @@ class SettingsFragment : Fragment() {
|
||||||
listView?.setPadding(0, 0, 0, 100.toPx)
|
listView?.setPadding(0, 0, 0, 100.toPx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fun PreferenceFragmentCompat.setToolBarScrollFlags() {
|
||||||
|
if (isTvSettings()) {
|
||||||
|
val settingsAppbar = view?.findViewById<MaterialToolbar>(R.id.settings_toolbar)
|
||||||
|
|
||||||
|
settingsAppbar?.updateLayoutParams<AppBarLayout.LayoutParams> {
|
||||||
|
scrollFlags = AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
fun Fragment?.setUpToolbar(title: String) {
|
fun Fragment?.setUpToolbar(title: String) {
|
||||||
if (this == null) return
|
if (this == null) return
|
||||||
val settingsToolbar = view?.findViewById<MaterialToolbar>(R.id.settings_toolbar) ?: return
|
val settingsToolbar = view?.findViewById<MaterialToolbar>(R.id.settings_toolbar) ?: return
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.lagradost.cloudstream3.network.initClient
|
||||||
import com.lagradost.cloudstream3.ui.EasterEggMonke
|
import com.lagradost.cloudstream3.ui.EasterEggMonke
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
||||||
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
||||||
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
|
||||||
|
@ -115,6 +116,7 @@ class SettingsGeneral : PreferenceFragmentCompat() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpToolbar(R.string.category_general)
|
setUpToolbar(R.string.category_general)
|
||||||
setPaddingBottom()
|
setPaddingBottom()
|
||||||
|
setToolBarScrollFlags()
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CustomSite(
|
data class CustomSite(
|
||||||
|
@ -192,7 +194,6 @@ class SettingsGeneral : PreferenceFragmentCompat() {
|
||||||
return@setOnPreferenceClickListener true
|
return@setOnPreferenceClickListener true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun showAdd() {
|
fun showAdd() {
|
||||||
val providers = synchronized(allProviders) { allProviders.distinctBy { it.javaClass }.sortedBy { it.name } }
|
val providers = synchronized(allProviders) { allProviders.distinctBy { it.javaClass }.sortedBy { it.name } }
|
||||||
activity?.showDialog(
|
activity?.showDialog(
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.lagradost.cloudstream3.mvvm.logError
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getFolderSize
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getFolderSize
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
||||||
import com.lagradost.cloudstream3.ui.subtitles.ChromecastSubtitlesFragment
|
import com.lagradost.cloudstream3.ui.subtitles.ChromecastSubtitlesFragment
|
||||||
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
||||||
|
@ -23,6 +24,7 @@ class SettingsPlayer : PreferenceFragmentCompat() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpToolbar(R.string.category_player)
|
setUpToolbar(R.string.category_player)
|
||||||
setPaddingBottom()
|
setPaddingBottom()
|
||||||
|
setToolBarScrollFlags()
|
||||||
}
|
}
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
hideKeyboard()
|
hideKeyboard()
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.lagradost.cloudstream3.AcraApplication.Companion.removeKey
|
||||||
import com.lagradost.cloudstream3.ui.APIRepository
|
import com.lagradost.cloudstream3.ui.APIRepository
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
||||||
import com.lagradost.cloudstream3.utils.DataStoreHelper
|
import com.lagradost.cloudstream3.utils.DataStoreHelper
|
||||||
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
|
||||||
|
@ -25,6 +26,7 @@ class SettingsProviders : PreferenceFragmentCompat() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpToolbar(R.string.category_providers)
|
setUpToolbar(R.string.category_providers)
|
||||||
setPaddingBottom()
|
setPaddingBottom()
|
||||||
|
setToolBarScrollFlags()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
|
|
@ -11,6 +11,7 @@ import com.lagradost.cloudstream3.mvvm.logError
|
||||||
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.updateTv
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.updateTv
|
||||||
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
||||||
|
@ -23,6 +24,7 @@ class SettingsUI : PreferenceFragmentCompat() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpToolbar(R.string.category_ui)
|
setUpToolbar(R.string.category_ui)
|
||||||
setPaddingBottom()
|
setPaddingBottom()
|
||||||
|
setToolBarScrollFlags()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
|
|
@ -22,6 +22,7 @@ import com.lagradost.cloudstream3.network.initClient
|
||||||
import com.lagradost.cloudstream3.services.BackupWorkManager
|
import com.lagradost.cloudstream3.services.BackupWorkManager
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setToolBarScrollFlags
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
||||||
import com.lagradost.cloudstream3.utils.BackupUtils
|
import com.lagradost.cloudstream3.utils.BackupUtils
|
||||||
import com.lagradost.cloudstream3.utils.BackupUtils.restorePrompt
|
import com.lagradost.cloudstream3.utils.BackupUtils.restorePrompt
|
||||||
|
@ -42,6 +43,7 @@ class SettingsUpdates : PreferenceFragmentCompat() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setUpToolbar(R.string.category_updates)
|
setUpToolbar(R.string.category_updates)
|
||||||
setPaddingBottom()
|
setPaddingBottom()
|
||||||
|
setToolBarScrollFlags()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
|
|
@ -27,7 +27,8 @@
|
||||||
android:id="@+id/search_status_bar_padding"
|
android:id="@+id/search_status_bar_padding"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal"
|
||||||
|
app:layout_scrollFlags="scroll|enterAlways">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/provider_selector"
|
android:id="@+id/provider_selector"
|
||||||
|
@ -108,6 +109,7 @@
|
||||||
</androidx.appcompat.widget.SearchView>
|
</androidx.appcompat.widget.SearchView>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabLayout
|
<com.google.android.material.tabs.TabLayout
|
||||||
android:id="@+id/library_tab_layout"
|
android:id="@+id/library_tab_layout"
|
||||||
style="@style/Theme.Widget.Tabs"
|
style="@style/Theme.Widget.Tabs"
|
||||||
|
@ -117,7 +119,7 @@
|
||||||
android:nextFocusDown="@id/search_result_root"
|
android:nextFocusDown="@id/search_result_root"
|
||||||
android:background="?attr/primaryGrayBackground"
|
android:background="?attr/primaryGrayBackground"
|
||||||
android:paddingHorizontal="5dp"
|
android:paddingHorizontal="5dp"
|
||||||
app:layout_scrollFlags="noScroll"
|
android:focusable="true"
|
||||||
app:tabGravity="center"
|
app:tabGravity="center"
|
||||||
app:tabIndicator="@drawable/indicator_background"
|
app:tabIndicator="@drawable/indicator_background"
|
||||||
app:tabIndicatorColor="?attr/white"
|
app:tabIndicatorColor="?attr/white"
|
||||||
|
@ -134,15 +136,15 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
<androidx.viewpager2.widget.ViewPager2
|
<androidx.viewpager2.widget.ViewPager2
|
||||||
android:id="@+id/viewpager"
|
android:id="@+id/viewpager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:paddingBottom="40dp"
|
android:paddingBottom="40dp"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:tag="@string/tv_no_focus_tag"
|
android:tag="@string/tv_no_focus_tag"
|
||||||
tools:listitem="@layout/library_viewpager_page" />
|
tools:listitem="@layout/library_viewpager_page" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/library_loading_overlay"
|
android:id="@+id/library_loading_overlay"
|
||||||
|
@ -182,7 +184,6 @@
|
||||||
tools:listitem="@layout/loading_poster_dynamic" />
|
tools:listitem="@layout/loading_poster_dynamic" />
|
||||||
</com.facebook.shimmer.ShimmerFrameLayout>
|
</com.facebook.shimmer.ShimmerFrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
<!-- TRANSLATE, BUT DON'T FORGET FORMAT -->
|
<!-- TRANSLATE, BUT DON'T FORGET FORMAT -->
|
||||||
<string name="player_speed_text_format" formatted="true">سرعة (%.2fx)</string>
|
<string name="player_speed_text_format" formatted="true">سرعة (%.2fx)</string>
|
||||||
<string name="rated_format" formatted="true">تقييم: %.1f</string>
|
<string name="rated_format" formatted="true">تقييم: %.1f</string>
|
||||||
<string name="new_update_format" formatted="true">!تم العثور على تحديث جديد
|
<string name="new_update_format" formatted="true">يوجد تحديث جديد!
|
||||||
\n%s -> %s</string>
|
\n%1$s -> %2$s</string>
|
||||||
<string name="duration_format" formatted="true">%d دقيقة</string>
|
<string name="duration_format" formatted="true">%d دقيقة</string>
|
||||||
<string name="app_name">CloudStream</string>
|
<string name="app_name">CloudStream</string>
|
||||||
<string name="play_with_app_name">تشغيل بواسطة CloudStream</string>
|
<string name="play_with_app_name">تشغيل بواسطة CloudStream</string>
|
||||||
|
@ -319,7 +319,7 @@
|
||||||
<string name="kitsu_account_settings" translatable="false">Kitsu</string>
|
<string name="kitsu_account_settings" translatable="false">Kitsu</string>
|
||||||
<string name="trakt_account_settings" translatable="false">Trakt</string>
|
<string name="trakt_account_settings" translatable="false">Trakt</string>
|
||||||
-->
|
-->
|
||||||
<string name="login_format" formatted="true">%s %s</string>
|
<string name="login_format" formatted="true">%1$s %2$s</string>
|
||||||
<string name="account">حساب</string>
|
<string name="account">حساب</string>
|
||||||
<string name="logout">تسجيل الخروج</string>
|
<string name="logout">تسجيل الخروج</string>
|
||||||
<string name="login">تسجيل الدخول</string>
|
<string name="login">تسجيل الدخول</string>
|
||||||
|
@ -418,8 +418,8 @@
|
||||||
<string name="plugin_deleted">تم إزالة الإضافة</string>
|
<string name="plugin_deleted">تم إزالة الإضافة</string>
|
||||||
<string name="plugin_load_fail" formatted="true">تعذر التحميل %s</string>
|
<string name="plugin_load_fail" formatted="true">تعذر التحميل %s</string>
|
||||||
<string name="is_adult">18+</string>
|
<string name="is_adult">18+</string>
|
||||||
<string name="batch_download_start_format" formatted="true">بدأ تنزيل %d %s …</string>
|
<string name="batch_download_start_format" formatted="true">بدأ تنزيل %1$d %2$s…</string>
|
||||||
<string name="batch_download_finish_format" formatted="true">تم التنزيل %d %s</string>
|
<string name="batch_download_finish_format" formatted="true">تم تنزيل %1$d %2$s</string>
|
||||||
<string name="batch_download_nothing_to_download_format" formatted="true">جميع %s محملة بالفعل</string>
|
<string name="batch_download_nothing_to_download_format" formatted="true">جميع %s محملة بالفعل</string>
|
||||||
<string name="batch_download">تحميل مكثف</string>
|
<string name="batch_download">تحميل مكثف</string>
|
||||||
<string name="plugin_singular">إضافة</string>
|
<string name="plugin_singular">إضافة</string>
|
||||||
|
@ -461,11 +461,11 @@
|
||||||
<string name="history">السجل</string>
|
<string name="history">السجل</string>
|
||||||
<string name="enable_skip_op_from_database_des">عرض زر تخطي المقدمة/الخاتمة</string>
|
<string name="enable_skip_op_from_database_des">عرض زر تخطي المقدمة/الخاتمة</string>
|
||||||
<string name="cast_format" formatted="true">طاقم العمل: %s</string>
|
<string name="cast_format" formatted="true">طاقم العمل: %s</string>
|
||||||
<string name="next_episode_time_day_format" formatted="true">%d يوم %d ساعة %d دقيقة</string>
|
<string name="next_episode_time_day_format" formatted="true">%1$d يوم %2$d ساعة %3$d دقيقة</string>
|
||||||
<string name="next_episode_time_hour_format" formatted="true">%d ساعة %d دقيقة</string>
|
<string name="next_episode_time_hour_format" formatted="true">%1$d ساعة %2$d دقيقة</string>
|
||||||
<string name="filler" formatted="true">الفيلير</string>
|
<string name="filler" formatted="true">الفيلير</string>
|
||||||
<string name="action_open_play">فتح(تشغيل)</string>
|
<string name="action_open_play">فتح(تشغيل)</string>
|
||||||
<string name="season_format">%s %d%s</string>
|
<string name="season_format">%1$s %2$d%3$s</string>
|
||||||
<string name="plugins_updated" formatted="true">المكونات الإضافية المحدثة %d</string>
|
<string name="plugins_updated" formatted="true">المكونات الإضافية المحدثة %d</string>
|
||||||
<string name="player_settings_play_in_vlc">VLC</string>
|
<string name="player_settings_play_in_vlc">VLC</string>
|
||||||
<string name="player_settings_play_in_mpv">MPV</string>
|
<string name="player_settings_play_in_mpv">MPV</string>
|
||||||
|
@ -482,7 +482,7 @@
|
||||||
<string name="action_mark_as_watched">علّمه كفيديو تمت مشاهدته</string>
|
<string name="action_mark_as_watched">علّمه كفيديو تمت مشاهدته</string>
|
||||||
<string name="yes">نعم</string>
|
<string name="yes">نعم</string>
|
||||||
<string name="no">ﻻ</string>
|
<string name="no">ﻻ</string>
|
||||||
<string name="app_dub_sub_episode_text_format" formatted="true">%s الحلقة %d</string>
|
<string name="app_dub_sub_episode_text_format" formatted="true">%1$s الحلقة %2$d</string>
|
||||||
<string name="next_episode_format" formatted="true">سيتم إصدار الحلقة %d في</string>
|
<string name="next_episode_format" formatted="true">سيتم إصدار الحلقة %d في</string>
|
||||||
<string name="update_notification_failed">تعذر تثبيت الإصدار الجديد من التطبيق</string>
|
<string name="update_notification_failed">تعذر تثبيت الإصدار الجديد من التطبيق</string>
|
||||||
<string name="extension_install_first">تثبيت الإضافة أولا</string>
|
<string name="extension_install_first">تثبيت الإضافة أولا</string>
|
||||||
|
@ -493,8 +493,8 @@
|
||||||
<string name="update_notification_downloading">تنزيل تحديث التطبيق…</string>
|
<string name="update_notification_downloading">تنزيل تحديث التطبيق…</string>
|
||||||
<string name="update_notification_installing">تثبيت تحديث التطبيق…</string>
|
<string name="update_notification_installing">تثبيت تحديث التطبيق…</string>
|
||||||
<string name="next_episode_time_min_format" formatted="true">%d دقيقة</string>
|
<string name="next_episode_time_min_format" formatted="true">%d دقيقة</string>
|
||||||
<string name="episodes_range">%d-%d</string>
|
<string name="episodes_range">%1$d-%2$d</string>
|
||||||
<string name="episode_format" formatted="true">%d %s</string>
|
<string name="episode_format" formatted="true">%1$d %2$s</string>
|
||||||
<string name="confirm_exit_dialog">هل أنت متأكد أنك تريد الخروج؟</string>
|
<string name="confirm_exit_dialog">هل أنت متأكد أنك تريد الخروج؟</string>
|
||||||
<string name="automatic_plugin_download_summary">قم بتثبيت جميع المكونات الإضافية التي لم يتم تثبيتها بعد تلقائيا من المستودعات المضافة.</string>
|
<string name="automatic_plugin_download_summary">قم بتثبيت جميع المكونات الإضافية التي لم يتم تثبيتها بعد تلقائيا من المستودعات المضافة.</string>
|
||||||
<string name="apk_installer_settings">مثبت الحزم</string>
|
<string name="apk_installer_settings">مثبت الحزم</string>
|
||||||
|
@ -584,4 +584,30 @@
|
||||||
<string name="no_repository_found_error">المستودع لم يتم العثور عليه، تحقق من العنوان اوجرب شبكة افتراضية خاصة(vpn)</string>
|
<string name="no_repository_found_error">المستودع لم يتم العثور عليه، تحقق من العنوان اوجرب شبكة افتراضية خاصة(vpn)</string>
|
||||||
<string name="already_voted">لقد صوتت بالفعل</string>
|
<string name="already_voted">لقد صوتت بالفعل</string>
|
||||||
<string name="backup_frequency">معدل النسخ الإحتياطي</string>
|
<string name="backup_frequency">معدل النسخ الإحتياطي</string>
|
||||||
|
<string name="favorite_removed">تمت إزالة %s من المفضلة</string>
|
||||||
|
<string name="favorites_list_name">المفضلة</string>
|
||||||
|
<string name="favorite_added">تمت إضافة %s إلى المفضلة</string>
|
||||||
|
<string name="duplicate_message_multiple" formatted="true">احتمال وجود تكرارات في مكتبتك.
|
||||||
|
\n
|
||||||
|
\n%s
|
||||||
|
\n
|
||||||
|
\nهل تريد الاضافة على اي حال مستبدلاً النسخة الموجودة بالفعل, أم تفضل إلغاء العملية؟</string>
|
||||||
|
<string name="duplicate_title">احتمال أن يكون موجود بالفعل</string>
|
||||||
|
<string name="lock_profile">قفل الحساب</string>
|
||||||
|
<string name="action_add_to_favorites">اضافة الى المفضلة</string>
|
||||||
|
<string name="duplicate_replace_all">تبديل الكل</string>
|
||||||
|
<string name="pin_error_incorrect">رقم PIN غير صحيح. برجاء المحاولة مرة اخرى.</string>
|
||||||
|
<string name="action_unsubscribe">إلغاء الاشتراك</string>
|
||||||
|
<string name="pin_error_length">رقم ال PIN يجب ان يكون 4 ارقام</string>
|
||||||
|
<string name="duplicate_replace">استبدال</string>
|
||||||
|
<string name="duplicate_add">اضافة</string>
|
||||||
|
<string name="action_subscribe">إشترك</string>
|
||||||
|
<string name="action_remove_from_favorites">إزالة من المفضلة</string>
|
||||||
|
<string name="select_an_account">اختار حساب</string>
|
||||||
|
<string name="duplicate_message_single">من الظاهر أن \"%1$s\" موجود بالفعل في مكتبتك.
|
||||||
|
\n
|
||||||
|
\nهل تريد الاضافة على أي حال مستبدلاً القديم أو إلغاء العملية؟</string>
|
||||||
|
<string name="enter_pin">ادخال ال PIN</string>
|
||||||
|
<string name="pin">PIN</string>
|
||||||
|
<string name="enter_current_pin">أدخل ال PIN الحالي</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<resources>
|
<resources>
|
||||||
<!-- KEYS DON'T TRANSLATE -->
|
<!-- KEYS DON'T TRANSLATE -->
|
||||||
<!-- FORMAT MIGHT TRANSLATE, WILL CAUSE CRASH IF APPLIED WRONG -->
|
<!-- FORMAT MIGHT TRANSLATE, WILL CAUSE CRASH IF APPLIED WRONG -->
|
||||||
<string name="app_dub_sub_episode_text_format" formatted="true">%s Ep %d</string>
|
<string name="app_dub_sub_episode_text_format" formatted="true">%1$s Ep %2$d</string>
|
||||||
<string name="cast_format" formatted="true">Hrají: %s</string>
|
<string name="cast_format" formatted="true">Hrají: %s</string>
|
||||||
<!-- IS NOT NEEDED TO TRANSLATE AS THEY ARE ONLY USED FOR SCREEN READERS AND WONT SHOW UP TO NORMAL USERS -->
|
<!-- IS NOT NEEDED TO TRANSLATE AS THEY ARE ONLY USED FOR SCREEN READERS AND WONT SHOW UP TO NORMAL USERS -->
|
||||||
<string name="result_poster_img_des">Plakát</string>
|
<string name="result_poster_img_des">Plakát</string>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
<string name="player_speed_text_format" formatted="true">Rychlost (%.2fx)</string>
|
<string name="player_speed_text_format" formatted="true">Rychlost (%.2fx)</string>
|
||||||
<string name="rated_format" formatted="true">Hodnocení: %.1f</string>
|
<string name="rated_format" formatted="true">Hodnocení: %.1f</string>
|
||||||
<string name="new_update_format" formatted="true">Nalezena nová aktualizace!
|
<string name="new_update_format" formatted="true">Nalezena nová aktualizace!
|
||||||
\n%s -> %s</string>
|
\n%1$s -> %2$s</string>
|
||||||
<string name="filler" formatted="true">Výplň</string>
|
<string name="filler" formatted="true">Výplň</string>
|
||||||
<string name="duration_format" formatted="true">%d min</string>
|
<string name="duration_format" formatted="true">%d min</string>
|
||||||
<string name="app_name">CloudStream</string>
|
<string name="app_name">CloudStream</string>
|
||||||
|
@ -292,7 +292,7 @@
|
||||||
<string name="kitsu_account_settings" translatable="false">Kitsu</string>
|
<string name="kitsu_account_settings" translatable="false">Kitsu</string>
|
||||||
<string name="trakt_account_settings" translatable="false">Trakt</string>
|
<string name="trakt_account_settings" translatable="false">Trakt</string>
|
||||||
-->
|
-->
|
||||||
<string name="login_format" formatted="true">%s %s</string>
|
<string name="login_format" formatted="true">%1$s %2$s</string>
|
||||||
<string name="account">účet</string>
|
<string name="account">účet</string>
|
||||||
<string name="logout">Odhlásit se</string>
|
<string name="logout">Odhlásit se</string>
|
||||||
<string name="login">Přihlásit se</string>
|
<string name="login">Přihlásit se</string>
|
||||||
|
@ -410,17 +410,17 @@
|
||||||
<string name="clipboard_too_large">Příliš mnoho textu. Nepodařilo se uložit do schránky.</string>
|
<string name="clipboard_too_large">Příliš mnoho textu. Nepodařilo se uložit do schránky.</string>
|
||||||
<string name="yes">Ano</string>
|
<string name="yes">Ano</string>
|
||||||
<string name="browser">Prohlížeč</string>
|
<string name="browser">Prohlížeč</string>
|
||||||
<string name="episodes_range">%d-%d</string>
|
<string name="episodes_range">%1$d-%2$d</string>
|
||||||
<string name="library">Knihovna</string>
|
<string name="library">Knihovna</string>
|
||||||
<string name="kitsu_settings">Zobrazit plakáty z Kitsu</string>
|
<string name="kitsu_settings">Zobrazit plakáty z Kitsu</string>
|
||||||
<string name="automatic_plugin_download">Automaticky stahovat doplňky</string>
|
<string name="automatic_plugin_download">Automaticky stahovat doplňky</string>
|
||||||
<string name="redo_setup_process">Znovu provést proces nastavení</string>
|
<string name="redo_setup_process">Znovu provést proces nastavení</string>
|
||||||
<string name="apk_installer_settings">Instalátor APK</string>
|
<string name="apk_installer_settings">Instalátor APK</string>
|
||||||
<string name="episode_format" formatted="true">%d %s</string>
|
<string name="episode_format" formatted="true">%1$d %2$s</string>
|
||||||
<string name="apk_installer_settings_des">Některé telefony nepodporují nový instalátor balíčků. Pokud se aktualizace nenainstalují, zkuste použít starší možnost.</string>
|
<string name="apk_installer_settings_des">Některé telefony nepodporují nový instalátor balíčků. Pokud se aktualizace nenainstalují, zkuste použít starší možnost.</string>
|
||||||
<string name="pref_category_cache">Mezipaměť</string>
|
<string name="pref_category_cache">Mezipaměť</string>
|
||||||
<string name="next_episode_format" formatted="true">Epizoda %d bude vydána za</string>
|
<string name="next_episode_format" formatted="true">Epizoda %d bude vydána za</string>
|
||||||
<string name="next_episode_time_hour_format" formatted="true">%dh %dm</string>
|
<string name="next_episode_time_hour_format" formatted="true">%1$dh %2$dm</string>
|
||||||
<string name="play_livestream_button">Přehrát přímý přenos</string>
|
<string name="play_livestream_button">Přehrát přímý přenos</string>
|
||||||
<string name="pref_category_extensions">Rozšíření</string>
|
<string name="pref_category_extensions">Rozšíření</string>
|
||||||
<string name="pref_category_actions">Akce</string>
|
<string name="pref_category_actions">Akce</string>
|
||||||
|
@ -436,7 +436,7 @@
|
||||||
<string name="preferred_media_subtext">Co chcete vidět</string>
|
<string name="preferred_media_subtext">Co chcete vidět</string>
|
||||||
<string name="plugin_downloaded">Doplněk stažen</string>
|
<string name="plugin_downloaded">Doplněk stažen</string>
|
||||||
<string name="is_adult">18+</string>
|
<string name="is_adult">18+</string>
|
||||||
<string name="batch_download_start_format" formatted="true">Spuštěno stahování %d %s…</string>
|
<string name="batch_download_start_format" formatted="true">Spuštěno stahování %1$d %2$s…</string>
|
||||||
<string name="blank_repo_message">CloudStream nemá ve výchozím nastavení nainstalované žádné weby. Stránky je třeba nainstalovat z úložišť.
|
<string name="blank_repo_message">CloudStream nemá ve výchozím nastavení nainstalované žádné weby. Stránky je třeba nainstalovat z úložišť.
|
||||||
\n
|
\n
|
||||||
\nKvůli nesmyslnému podání stížnosti DMCA společností Sky UK Limited 🤮 nemůžeme v aplikaci propojit stránky repozitářů.
|
\nKvůli nesmyslnému podání stížnosti DMCA společností Sky UK Limited 🤮 nemůžeme v aplikaci propojit stránky repozitářů.
|
||||||
|
@ -505,12 +505,12 @@
|
||||||
<string name="pref_category_app_updates">Aktualizace aplikace</string>
|
<string name="pref_category_app_updates">Aktualizace aplikace</string>
|
||||||
<string name="setup_done">Hotovo</string>
|
<string name="setup_done">Hotovo</string>
|
||||||
<string name="extension_types">Podporováno</string>
|
<string name="extension_types">Podporováno</string>
|
||||||
<string name="season_format">%s %d%s</string>
|
<string name="season_format">%1$s %2$d%3$s</string>
|
||||||
<string name="live_singular">Živý přenos</string>
|
<string name="live_singular">Živý přenos</string>
|
||||||
<string name="nsfw_singular">NSFW</string>
|
<string name="nsfw_singular">NSFW</string>
|
||||||
<string name="extensions">Rozšíření</string>
|
<string name="extensions">Rozšíření</string>
|
||||||
<string name="play_trailer_button">Přehrát trailer</string>
|
<string name="play_trailer_button">Přehrát trailer</string>
|
||||||
<string name="next_episode_time_day_format" formatted="true">%dd %dh %dm</string>
|
<string name="next_episode_time_day_format" formatted="true">%1$dd %2$dh %3$dm</string>
|
||||||
<string name="view_public_repositories_button">Zobrazit komunitní repozitáře</string>
|
<string name="view_public_repositories_button">Zobrazit komunitní repozitáře</string>
|
||||||
<string name="update_started">Aktualizace zahájena</string>
|
<string name="update_started">Aktualizace zahájena</string>
|
||||||
<string name="stream">Stream</string>
|
<string name="stream">Stream</string>
|
||||||
|
@ -520,7 +520,7 @@
|
||||||
<string name="referer">Referent</string>
|
<string name="referer">Referent</string>
|
||||||
<string name="next">Další</string>
|
<string name="next">Další</string>
|
||||||
<string name="provider_languages_tip">Sledovat videa v těchto jazycích</string>
|
<string name="provider_languages_tip">Sledovat videa v těchto jazycích</string>
|
||||||
<string name="batch_download_finish_format" formatted="true">Staženo %d %s</string>
|
<string name="batch_download_finish_format" formatted="true">Staženo %1$d %2$s</string>
|
||||||
<string name="batch_download_nothing_to_download_format" formatted="true">Všechny %s jsou již staženy</string>
|
<string name="batch_download_nothing_to_download_format" formatted="true">Všechny %s jsou již staženy</string>
|
||||||
<string name="batch_download">Hromadné stahování</string>
|
<string name="batch_download">Hromadné stahování</string>
|
||||||
<string name="plugin_singular">doplněk</string>
|
<string name="plugin_singular">doplněk</string>
|
||||||
|
@ -575,4 +575,31 @@
|
||||||
<string name="no_plugins_found_error">V repozitáři nebyly nalezeny žádné doplňky</string>
|
<string name="no_plugins_found_error">V repozitáři nebyly nalezeny žádné doplňky</string>
|
||||||
<string name="no_repository_found_error">Repozitář nenalezen, zkontrolujte adresu URL a zkuste použít VPN</string>
|
<string name="no_repository_found_error">Repozitář nenalezen, zkontrolujte adresu URL a zkuste použít VPN</string>
|
||||||
<string name="already_voted">Již jste hlasovali</string>
|
<string name="already_voted">Již jste hlasovali</string>
|
||||||
|
<string name="favorite_removed">%s odebráno z oblíbených</string>
|
||||||
|
<string name="favorites_list_name">Oblíbené</string>
|
||||||
|
<string name="favorite_added">%s přidáno do oblíbených</string>
|
||||||
|
<string name="duplicate_message_multiple" formatted="true">Ve vaší knihovně byl nalezen potenciální duplikát:
|
||||||
|
\n
|
||||||
|
\n%s
|
||||||
|
\n
|
||||||
|
\nChcete přesto přidat tuto položku, nahradit existující nebo zrušit akci\?</string>
|
||||||
|
<string name="backup_frequency">Frekvence záloh</string>
|
||||||
|
<string name="duplicate_title">Nalezena potenciální duplicita</string>
|
||||||
|
<string name="lock_profile">Zamknout profil</string>
|
||||||
|
<string name="action_add_to_favorites">Přidat do oblíbených</string>
|
||||||
|
<string name="duplicate_replace_all">Nahradit vše</string>
|
||||||
|
<string name="pin_error_incorrect">Nesprávný PIN. Zkuste to prosím znovu.</string>
|
||||||
|
<string name="action_unsubscribe">Zrušit odběr</string>
|
||||||
|
<string name="pin_error_length">PIN musí obsahovat 4 znaky</string>
|
||||||
|
<string name="duplicate_replace">Nahradit</string>
|
||||||
|
<string name="duplicate_add">Přidat</string>
|
||||||
|
<string name="action_subscribe">Odebírat</string>
|
||||||
|
<string name="action_remove_from_favorites">Odebrat z oblíbených</string>
|
||||||
|
<string name="select_an_account">Vyberte účet</string>
|
||||||
|
<string name="duplicate_message_single">Vypadá to, že ve vaší knihovně již existuje potenciální duplikát: „%1$s“.
|
||||||
|
\n
|
||||||
|
\nChcete přesto přidat tuto položku, nahradit existující nebo zrušit akci\?</string>
|
||||||
|
<string name="enter_pin">Zadejte PIN</string>
|
||||||
|
<string name="pin">PIN</string>
|
||||||
|
<string name="enter_current_pin">Zadejte současný PIN</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
<string name="setup_extensions_subtext">Descargue la lista de sitios que quiera utilizar</string>
|
<string name="setup_extensions_subtext">Descargue la lista de sitios que quiera utilizar</string>
|
||||||
<string name="plugins_downloaded" formatted="true">Descargado:%d</string>
|
<string name="plugins_downloaded" formatted="true">Descargado:%d</string>
|
||||||
<string name="downloaded">Descargado</string>
|
<string name="downloaded">Descargado</string>
|
||||||
<string name="batch_download_finish_format" formatted="true">Descargado %d %s</string>
|
<string name="batch_download_finish_format" formatted="true">Descargado %1$d %2$s</string>
|
||||||
<string name="delete_repository">Borrar repositorio</string>
|
<string name="delete_repository">Borrar repositorio</string>
|
||||||
<string name="next_episode_format" formatted="true">El episodio %d se lanzará en</string>
|
<string name="next_episode_format" formatted="true">El episodio %d se lanzará en</string>
|
||||||
<string name="next_episode_time_hour_format" formatted="true">%dh %dm</string>
|
<string name="next_episode_time_hour_format" formatted="true">%1$dh %2$dm</string>
|
||||||
<string name="next_episode_time_min_format" formatted="true">%dm</string>
|
<string name="next_episode_time_min_format" formatted="true">%dm</string>
|
||||||
<string name="result_poster_img_des">Poster</string>
|
<string name="result_poster_img_des">Poster</string>
|
||||||
<string name="extensions">Extensiones</string>
|
<string name="extensions">Extensiones</string>
|
||||||
|
@ -97,12 +97,12 @@
|
||||||
<string name="search_poster_img_des">Poster</string>
|
<string name="search_poster_img_des">Poster</string>
|
||||||
<string name="home_next_random_img_des">Siguiente al azar</string>
|
<string name="home_next_random_img_des">Siguiente al azar</string>
|
||||||
<string name="all_languages_preference">Todos los Idiomas</string>
|
<string name="all_languages_preference">Todos los Idiomas</string>
|
||||||
<string name="go_back_img_des">Volver</string>
|
<string name="go_back_img_des">Regresar</string>
|
||||||
<string name="home_change_provider_img_des">Cambiar proveedor</string>
|
<string name="home_change_provider_img_des">Cambiar proveedor</string>
|
||||||
<string name="preview_background_img_des">Vista previa del fondo</string>
|
<string name="preview_background_img_des">Vista previa del fondo</string>
|
||||||
<string name="rated_format" formatted="true">Nota:%.1f</string>
|
<string name="rated_format" formatted="true">Nota:%.1f</string>
|
||||||
<string name="new_update_format" formatted="true">Nueva actualización encontrada!
|
<string name="new_update_format" formatted="true">¡Nueva actualización encontrada!
|
||||||
\n%s -> %s</string>
|
\n%1$s -> %2$s</string>
|
||||||
<string name="download">Descargar</string>
|
<string name="download">Descargar</string>
|
||||||
<string name="popup_pause_download">Pausar Descarga</string>
|
<string name="popup_pause_download">Pausar Descarga</string>
|
||||||
<string name="subs_font">Formato de fuente</string>
|
<string name="subs_font">Formato de fuente</string>
|
||||||
|
@ -110,8 +110,8 @@
|
||||||
<string name="subs_font_size">Tamaño de Fuente</string>
|
<string name="subs_font_size">Tamaño de Fuente</string>
|
||||||
<string name="player_speed_text_format" formatted="true">Velocidad (%.2fx)</string>
|
<string name="player_speed_text_format" formatted="true">Velocidad (%.2fx)</string>
|
||||||
<string name="skip_loading">Omitir carga</string>
|
<string name="skip_loading">Omitir carga</string>
|
||||||
<string name="app_dub_sub_episode_text_format" formatted="true">%s Ep %d</string>
|
<string name="app_dub_sub_episode_text_format" formatted="true">%1$s Ep. %2$d</string>
|
||||||
<string name="next_episode_time_day_format" formatted="true">%dd %dh %dm</string>
|
<string name="next_episode_time_day_format" formatted="true">%1$dd %2$dh %3$dm</string>
|
||||||
<string name="cast_format" formatted="true">Elenco %s</string>
|
<string name="cast_format" formatted="true">Elenco %s</string>
|
||||||
<string name="filler" formatted="true">Relleno</string>
|
<string name="filler" formatted="true">Relleno</string>
|
||||||
<string name="duration_format" formatted="true">%d min</string>
|
<string name="duration_format" formatted="true">%d min</string>
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
<string name="play_torrent_button">Transmitir Torrent</string>
|
<string name="play_torrent_button">Transmitir Torrent</string>
|
||||||
<string name="pick_source">Fuentes</string>
|
<string name="pick_source">Fuentes</string>
|
||||||
<string name="reload_error">Reintentar conexión…</string>
|
<string name="reload_error">Reintentar conexión…</string>
|
||||||
<string name="go_back">Volver</string>
|
<string name="go_back">Regresar</string>
|
||||||
<string name="downloading">Descargando</string>
|
<string name="downloading">Descargando</string>
|
||||||
<string name="download_paused">Descarga pausada</string>
|
<string name="download_paused">Descarga pausada</string>
|
||||||
<string name="download_started">Descarga iniciada</string>
|
<string name="download_started">Descarga iniciada</string>
|
||||||
|
@ -218,8 +218,8 @@
|
||||||
<string name="play_episode_toast">Reproducir Episodio</string>
|
<string name="play_episode_toast">Reproducir Episodio</string>
|
||||||
<string name="episode">Episodio</string>
|
<string name="episode">Episodio</string>
|
||||||
<string name="episodes">Episodios</string>
|
<string name="episodes">Episodios</string>
|
||||||
<string name="episodes_range">%d-%d</string>
|
<string name="episodes_range">%1$d-%2$d</string>
|
||||||
<string name="episode_format" formatted="true">%d %s</string>
|
<string name="episode_format" formatted="true">%1$d %2$s</string>
|
||||||
<string name="episode_short">E</string>
|
<string name="episode_short">E</string>
|
||||||
<string name="restore_failed_format" formatted="true">Falló la restauración de los datos desde el archivo %s</string>
|
<string name="restore_failed_format" formatted="true">Falló la restauración de los datos desde el archivo %s</string>
|
||||||
<string name="backup_success">Datos guardados</string>
|
<string name="backup_success">Datos guardados</string>
|
||||||
|
@ -233,7 +233,7 @@
|
||||||
<string name="advanced_search_des">Mostrar los resultados de la búsqueda por proveedor</string>
|
<string name="advanced_search_des">Mostrar los resultados de la búsqueda por proveedor</string>
|
||||||
<string name="bug_report_settings_off">Solo envíar los datos si la App se cierra / falla inesperadamente</string>
|
<string name="bug_report_settings_off">Solo envíar los datos si la App se cierra / falla inesperadamente</string>
|
||||||
<string name="bug_report_settings_on">No enviar datos</string>
|
<string name="bug_report_settings_on">No enviar datos</string>
|
||||||
<string name="show_trailers_settings">Mostrar Trailers (avances)</string>
|
<string name="show_trailers_settings">Mostrar los trailers</string>
|
||||||
<string name="kitsu_settings">Mostrar pósters de Kitsu</string>
|
<string name="kitsu_settings">Mostrar pósters de Kitsu</string>
|
||||||
<string name="uprereleases_settings">Actualizar a las versiones preliminares</string>
|
<string name="uprereleases_settings">Actualizar a las versiones preliminares</string>
|
||||||
<string name="uprereleases_settings_des">Buscar actualizaciones preliminares (beta) en lugar de solo versiones completas (stable releases)</string>
|
<string name="uprereleases_settings_des">Buscar actualizaciones preliminares (beta) en lugar de solo versiones completas (stable releases)</string>
|
||||||
|
@ -249,7 +249,7 @@
|
||||||
<string name="subs_default_reset_toast">Reiniciar a valores predefinidos</string>
|
<string name="subs_default_reset_toast">Reiniciar a valores predefinidos</string>
|
||||||
<string name="acra_report_toast">Lo sentimos, la aplicación se bloqueó. Se enviará un informe de error anónimo a los desarrolladores</string>
|
<string name="acra_report_toast">Lo sentimos, la aplicación se bloqueó. Se enviará un informe de error anónimo a los desarrolladores</string>
|
||||||
<string name="season">Temporada</string>
|
<string name="season">Temporada</string>
|
||||||
<string name="season_format">%s %d%s</string>
|
<string name="season_format">%1$s %2$d%3$s</string>
|
||||||
<string name="no_season">Ninguna Temporada</string>
|
<string name="no_season">Ninguna Temporada</string>
|
||||||
<string name="season_short">T</string>
|
<string name="season_short">T</string>
|
||||||
<string name="delete_file">Borrar Archivo</string>
|
<string name="delete_file">Borrar Archivo</string>
|
||||||
|
@ -311,7 +311,7 @@
|
||||||
<string name="switch_account">Cambiar cuenta</string>
|
<string name="switch_account">Cambiar cuenta</string>
|
||||||
<string name="add_account">Añadir cuenta</string>
|
<string name="add_account">Añadir cuenta</string>
|
||||||
<string name="upload_sync">Sincronizar</string>
|
<string name="upload_sync">Sincronizar</string>
|
||||||
<string name="sync_score">Calificación</string>
|
<string name="sync_score">Clasificado</string>
|
||||||
<string name="authenticated_user" formatted="true">%s autenticado</string>
|
<string name="authenticated_user" formatted="true">%s autenticado</string>
|
||||||
<string name="authenticated_user_fail" formatted="true">No se pudo autenticar a %s</string>
|
<string name="authenticated_user_fail" formatted="true">No se pudo autenticar a %s</string>
|
||||||
<string name="recommended">Recomendado</string>
|
<string name="recommended">Recomendado</string>
|
||||||
|
@ -345,7 +345,7 @@
|
||||||
<string name="primary_color_settings">Color primario</string>
|
<string name="primary_color_settings">Color primario</string>
|
||||||
<string name="app_theme_settings">Tema de la aplicación</string>
|
<string name="app_theme_settings">Tema de la aplicación</string>
|
||||||
<string name="example_email">hola@mundo.com</string>
|
<string name="example_email">hola@mundo.com</string>
|
||||||
<string name="login_format" formatted="true">%s %s</string>
|
<string name="login_format" formatted="true">%1$s %2$s</string>
|
||||||
<string name="all">Todo</string>
|
<string name="all">Todo</string>
|
||||||
<string name="subtitle_offset_hint">1000ms</string>
|
<string name="subtitle_offset_hint">1000ms</string>
|
||||||
<string name="subtitle_offset_extra_hint_none_format">Sin retraso de subtítulos</string>
|
<string name="subtitle_offset_extra_hint_none_format">Sin retraso de subtítulos</string>
|
||||||
|
@ -448,7 +448,7 @@
|
||||||
<string name="setup_done">Hecho</string>
|
<string name="setup_done">Hecho</string>
|
||||||
<string name="plugin_loaded">Plugin Cargado</string>
|
<string name="plugin_loaded">Plugin Cargado</string>
|
||||||
<string name="is_adult">18+</string>
|
<string name="is_adult">18+</string>
|
||||||
<string name="batch_download_start_format" formatted="true">Iniciada la descarga %d %s…</string>
|
<string name="batch_download_start_format" formatted="true">Comenzó la descarga de %1$d %2$s…</string>
|
||||||
<string name="batch_download">Descarga por lotes</string>
|
<string name="batch_download">Descarga por lotes</string>
|
||||||
<string name="plugin_singular">plugin</string>
|
<string name="plugin_singular">plugin</string>
|
||||||
<string name="plugin">plugins</string>
|
<string name="plugin">plugins</string>
|
||||||
|
@ -552,4 +552,30 @@
|
||||||
<string name="no_repository_found_error">Repositorio no encontrado, comprueba la URL y prueba la VPN</string>
|
<string name="no_repository_found_error">Repositorio no encontrado, comprueba la URL y prueba la VPN</string>
|
||||||
<string name="already_voted">Ya has votado</string>
|
<string name="already_voted">Ya has votado</string>
|
||||||
<string name="backup_frequency">Frecuencia de la copia de seguridad</string>
|
<string name="backup_frequency">Frecuencia de la copia de seguridad</string>
|
||||||
|
<string name="favorite_removed">%s eliminado de favoritos</string>
|
||||||
|
<string name="favorites_list_name">Favoritos</string>
|
||||||
|
<string name="favorite_added">%s añadido a favoritos</string>
|
||||||
|
<string name="duplicate_message_multiple" formatted="true">Se han encontrado posibles elementos duplicados en su biblioteca:
|
||||||
|
\n
|
||||||
|
\n%s
|
||||||
|
\n
|
||||||
|
\n¿Desea añadir este elemento de todos modos, sustituir los existentes o cancelar la acción\?</string>
|
||||||
|
<string name="duplicate_title">Posible duplicado encontrado</string>
|
||||||
|
<string name="lock_profile">Perfil de bloqueo</string>
|
||||||
|
<string name="action_add_to_favorites">Añadido a favoritos</string>
|
||||||
|
<string name="duplicate_replace_all">Sustituir todo</string>
|
||||||
|
<string name="pin_error_incorrect">PIN incorrecto. Por favor, inténtelo de nuevo.</string>
|
||||||
|
<string name="action_unsubscribe">Cancelar la suscripción</string>
|
||||||
|
<string name="pin_error_length">El PIN debe tener 4 caracteres</string>
|
||||||
|
<string name="duplicate_replace">Sustituir</string>
|
||||||
|
<string name="duplicate_add">Añadir</string>
|
||||||
|
<string name="action_subscribe">Suscríbase</string>
|
||||||
|
<string name="action_remove_from_favorites">Eliminar de favoritos</string>
|
||||||
|
<string name="select_an_account">Seleccione una cuenta</string>
|
||||||
|
<string name="duplicate_message_single">Parece que ya existe un elemento potencialmente duplicado en su biblioteca: \'%s.\'
|
||||||
|
\n
|
||||||
|
\n¿Desea añadir este elemento de todos modos, sustituir el existente o cancelar la acción\?</string>
|
||||||
|
<string name="enter_pin">Introducir el PIN</string>
|
||||||
|
<string name="pin">PIN</string>
|
||||||
|
<string name="enter_current_pin">Introduzca el PIN actual</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<string name="player_speed_text_format" formatted="true">Velocità (%.2fx)</string>
|
<string name="player_speed_text_format" formatted="true">Velocità (%.2fx)</string>
|
||||||
<string name="rated_format" formatted="true">Valutato: %.1f</string>
|
<string name="rated_format" formatted="true">Valutato: %.1f</string>
|
||||||
<string name="new_update_format" formatted="true">Nuovo aggiornamento trovato!
|
<string name="new_update_format" formatted="true">Nuovo aggiornamento trovato!
|
||||||
\n%s -> %s</string>
|
\n%1$s -> %2$s</string>
|
||||||
<string name="filler" formatted="true">Filler</string>
|
<string name="filler" formatted="true">Filler</string>
|
||||||
<string name="duration_format" formatted="true">%d min</string>
|
<string name="duration_format" formatted="true">%d min</string>
|
||||||
<!-- <string name="app_name">CloudStream</string> -->
|
<!-- <string name="app_name">CloudStream</string> -->
|
||||||
|
@ -409,8 +409,8 @@
|
||||||
<string name="plugin_deleted">Plugin eliminato</string>
|
<string name="plugin_deleted">Plugin eliminato</string>
|
||||||
<string name="plugin_load_fail" formatted="true">Impossibile caricare %s</string>
|
<string name="plugin_load_fail" formatted="true">Impossibile caricare %s</string>
|
||||||
<string name="is_adult">18+</string>
|
<string name="is_adult">18+</string>
|
||||||
<string name="batch_download_start_format" formatted="true">Download iniziato %d %s…</string>
|
<string name="batch_download_start_format" formatted="true">Download iniziato %1$d %2$s…</string>
|
||||||
<string name="batch_download_finish_format" formatted="true">Scaricato %d %s</string>
|
<string name="batch_download_finish_format" formatted="true">Scaricato %1$d %2$s</string>
|
||||||
<string name="batch_download_nothing_to_download_format" formatted="true">Tutti %s già scaricati</string>
|
<string name="batch_download_nothing_to_download_format" formatted="true">Tutti %s già scaricati</string>
|
||||||
<string name="batch_download">Download in blocco</string>
|
<string name="batch_download">Download in blocco</string>
|
||||||
<string name="plugin_singular">plugin</string>
|
<string name="plugin_singular">plugin</string>
|
||||||
|
@ -573,4 +573,30 @@
|
||||||
<string name="automatic_plugin_download_mode_title">Seleziona la modalità per filtrare il download dei plugin</string>
|
<string name="automatic_plugin_download_mode_title">Seleziona la modalità per filtrare il download dei plugin</string>
|
||||||
<string name="disable">Disabilita</string>
|
<string name="disable">Disabilita</string>
|
||||||
<string name="already_voted">Hai già votato</string>
|
<string name="already_voted">Hai già votato</string>
|
||||||
|
<string name="favorite_removed">%s rimosso dai preferiti</string>
|
||||||
|
<string name="favorites_list_name">Preferiti</string>
|
||||||
|
<string name="favorite_added">%s aggiunto ai preferiti</string>
|
||||||
|
<string name="duplicate_message_multiple" formatted="true">Dei possibili duplicati sono stati trovati nella tua libreria:
|
||||||
|
\n
|
||||||
|
\n%s
|
||||||
|
\n
|
||||||
|
\nVorresti aggiungere l\'oggetto alla libreria comunque, rimpiazzare l\'esistente, o cancellare l\'azione\?</string>
|
||||||
|
<string name="backup_frequency">Frequenza di backup</string>
|
||||||
|
<string name="duplicate_title">Trovato Possibile Duplicato</string>
|
||||||
|
<string name="action_add_to_favorites">Aggiungi ai preferiti</string>
|
||||||
|
<string name="duplicate_replace_all">Rimpiazza tutti</string>
|
||||||
|
<string name="pin_error_incorrect">PIN non corretto. Riprova.</string>
|
||||||
|
<string name="action_unsubscribe">Disiscriviti</string>
|
||||||
|
<string name="pin_error_length">Il PIN deve essere almeno di 4 caratteri</string>
|
||||||
|
<string name="duplicate_replace">Rimpiazza</string>
|
||||||
|
<string name="duplicate_add">Aggiungi</string>
|
||||||
|
<string name="action_subscribe">Iscriviti</string>
|
||||||
|
<string name="action_remove_from_favorites">Rimuovi dai preferiti</string>
|
||||||
|
<string name="select_an_account">Seleziona un Account</string>
|
||||||
|
<string name="duplicate_message_single">Sembra che un oggetto potenziale duplicato sia già presente nella tua libreria: \'%1$s.\'
|
||||||
|
\n
|
||||||
|
\nVorresti aggiungere l\'oggetto lo stesso, rimpiazzare l\'esistente, o cancellare l\'azione\?</string>
|
||||||
|
<string name="enter_pin">Inserisci PIN</string>
|
||||||
|
<string name="pin">PIN</string>
|
||||||
|
<string name="enter_current_pin">Inserisci PIN Corrente</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -9,16 +9,16 @@
|
||||||
<string name="cast_format" formatted="true">Актори: %s</string>
|
<string name="cast_format" formatted="true">Актори: %s</string>
|
||||||
<string name="next_episode_format" formatted="true">Епізод %d вийде через</string>
|
<string name="next_episode_format" formatted="true">Епізод %d вийде через</string>
|
||||||
<string name="result_poster_img_des">Poster</string>
|
<string name="result_poster_img_des">Poster</string>
|
||||||
<string name="app_dub_sub_episode_text_format" formatted="true">%s Еп. %d</string>
|
<string name="app_dub_sub_episode_text_format" formatted="true">%1$s Еп. %2$d</string>
|
||||||
<string name="next_episode_time_day_format" formatted="true">%dд %dгод %dхв</string>
|
<string name="next_episode_time_day_format" formatted="true">%1$dд %2$dгод %3$dхв</string>
|
||||||
<string name="next_episode_time_hour_format" formatted="true">%dгод %dхв</string>
|
<string name="next_episode_time_hour_format" formatted="true">%1$dгод %2$dхв</string>
|
||||||
<string name="next_episode_time_min_format" formatted="true">%dхв</string>
|
<string name="next_episode_time_min_format" formatted="true">%dхв</string>
|
||||||
<string name="home_main_poster_img_des">Головний постер</string>
|
<string name="home_main_poster_img_des">Головний постер</string>
|
||||||
<string name="home_next_random_img_des">Наступний випадковий</string>
|
<string name="home_next_random_img_des">Наступний випадковий</string>
|
||||||
<string name="preview_background_img_des">Попередній перегляд фону</string>
|
<string name="preview_background_img_des">Попередній перегляд фону</string>
|
||||||
<string name="player_speed_text_format" formatted="true">Швидкість (%.2fx)</string>
|
<string name="player_speed_text_format" formatted="true">Швидкість (%.2fx)</string>
|
||||||
<string name="new_update_format" formatted="true">Знайдено нове оновлення!
|
<string name="new_update_format" formatted="true">Знайдено нове оновлення!
|
||||||
\n%s –> %s</string>
|
\n%1$s –> %2$s</string>
|
||||||
<string name="title_search">Пошук</string>
|
<string name="title_search">Пошук</string>
|
||||||
<string name="title_downloads">Завантаження</string>
|
<string name="title_downloads">Завантаження</string>
|
||||||
<string name="duration_format" formatted="true">%d хв</string>
|
<string name="duration_format" formatted="true">%d хв</string>
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
<string name="popup_play_file">Переглянути файл</string>
|
<string name="popup_play_file">Переглянути файл</string>
|
||||||
<string name="home_more_info">Детальніше</string>
|
<string name="home_more_info">Детальніше</string>
|
||||||
<string name="filter_bookmarks">Фільтр закладок</string>
|
<string name="filter_bookmarks">Фільтр закладок</string>
|
||||||
<string name="sort_clear">Очистити</string>
|
<string name="sort_clear">Очистити</string>
|
||||||
<string name="subtitles_settings">Налаштування субтитрів</string>
|
<string name="subtitles_settings">Налаштування субтитрів</string>
|
||||||
<string name="subs_background_color">Колір фону</string>
|
<string name="subs_background_color">Колір фону</string>
|
||||||
<string name="subs_subtitle_elevation">Висота субтитрів</string>
|
<string name="subs_subtitle_elevation">Висота субтитрів</string>
|
||||||
|
@ -167,7 +167,7 @@
|
||||||
<string name="subs_default_reset_toast">Скинути до значення за замовчуванням</string>
|
<string name="subs_default_reset_toast">Скинути до значення за замовчуванням</string>
|
||||||
<string name="no_season">Немає сезону</string>
|
<string name="no_season">Немає сезону</string>
|
||||||
<string name="episodes">епізодів</string>
|
<string name="episodes">епізодів</string>
|
||||||
<string name="episode_format" formatted="true">%d %s</string>
|
<string name="episode_format" formatted="true">%1$d %2$s</string>
|
||||||
<string name="season_short">С</string>
|
<string name="season_short">С</string>
|
||||||
<string name="episode_short">Е</string>
|
<string name="episode_short">Е</string>
|
||||||
<string name="delete_file">Видалити файл</string>
|
<string name="delete_file">Видалити файл</string>
|
||||||
|
@ -238,9 +238,9 @@
|
||||||
<string name="year">Рік</string>
|
<string name="year">Рік</string>
|
||||||
<string name="go_forward_30">+30</string>
|
<string name="go_forward_30">+30</string>
|
||||||
<string name="acra_report_toast">Вибачте, у застосунку стався збій. Анонімне повідомлення про помилку буде відправлено розробникам</string>
|
<string name="acra_report_toast">Вибачте, у застосунку стався збій. Анонімне повідомлення про помилку буде відправлено розробникам</string>
|
||||||
<string name="season_format">%s %d%s</string>
|
<string name="season_format">%1$s %2$d%3$s</string>
|
||||||
<string name="episode">Епізод</string>
|
<string name="episode">Епізод</string>
|
||||||
<string name="episodes_range">%d-%d</string>
|
<string name="episodes_range">%1$d-%2$d</string>
|
||||||
<string name="no_episodes_found">Епізодів не знайдено</string>
|
<string name="no_episodes_found">Епізодів не знайдено</string>
|
||||||
<string name="pause">Пауза</string>
|
<string name="pause">Пауза</string>
|
||||||
<string name="season">Сезон</string>
|
<string name="season">Сезон</string>
|
||||||
|
@ -364,7 +364,7 @@
|
||||||
<string name="category_ui">Макет</string>
|
<string name="category_ui">Макет</string>
|
||||||
<string name="category_providers">Постачальники</string>
|
<string name="category_providers">Постачальники</string>
|
||||||
<string name="example_site_url">example.com</string>
|
<string name="example_site_url">example.com</string>
|
||||||
<string name="login_format" formatted="true">%s %s</string>
|
<string name="login_format" formatted="true">%2$s %1$s</string>
|
||||||
<string name="subtitles_depressed">Депресивний</string>
|
<string name="subtitles_depressed">Депресивний</string>
|
||||||
<string name="account">обліковий запис</string>
|
<string name="account">обліковий запис</string>
|
||||||
<string name="create_account">Створити</string>
|
<string name="create_account">Створити</string>
|
||||||
|
@ -414,8 +414,8 @@
|
||||||
<string name="plugin_loaded">Плагін завантажено</string>
|
<string name="plugin_loaded">Плагін завантажено</string>
|
||||||
<string name="plugin_downloaded">Плагін завантажено</string>
|
<string name="plugin_downloaded">Плагін завантажено</string>
|
||||||
<string name="plugin_load_fail" formatted="true">Не вдалося завантажити %s</string>
|
<string name="plugin_load_fail" formatted="true">Не вдалося завантажити %s</string>
|
||||||
<string name="batch_download_start_format" formatted="true">Почалося завантаження %d %s…</string>
|
<string name="batch_download_start_format" formatted="true">Почалося завантаження %1$d %2$s…</string>
|
||||||
<string name="batch_download_finish_format" formatted="true">Завантажено %d %s</string>
|
<string name="batch_download_finish_format" formatted="true">Завантажено %1$d %2$s</string>
|
||||||
<string name="batch_download_nothing_to_download_format" formatted="true">Всі %s вже завантажено</string>
|
<string name="batch_download_nothing_to_download_format" formatted="true">Всі %s вже завантажено</string>
|
||||||
<string name="batch_download">Завантажити пакети</string>
|
<string name="batch_download">Завантажити пакети</string>
|
||||||
<string name="plugin_singular">плагін</string>
|
<string name="plugin_singular">плагін</string>
|
||||||
|
@ -499,7 +499,7 @@
|
||||||
<string name="empty_library_no_accounts_message">Ваша бібліотека порожня :(
|
<string name="empty_library_no_accounts_message">Ваша бібліотека порожня :(
|
||||||
\nУвійдіть в обліковий запис бібліотеки або додайте фільми до вашої локальної бібліотеки.</string>
|
\nУвійдіть в обліковий запис бібліотеки або додайте фільми до вашої локальної бібліотеки.</string>
|
||||||
<string name="sort_alphabetical_z">Алфавітом (від Я до А)</string>
|
<string name="sort_alphabetical_z">Алфавітом (від Я до А)</string>
|
||||||
<string name="select_library">Виберіть бібліотеку</string>
|
<string name="select_library">Оберіть бібліотеку</string>
|
||||||
<string name="open_with">Відкрити</string>
|
<string name="open_with">Відкрити</string>
|
||||||
<string name="browser">Браузер</string>
|
<string name="browser">Браузер</string>
|
||||||
<string name="empty_library_logged_in_message">Цей список порожній. Спробуйте перейти до іншого.</string>
|
<string name="empty_library_logged_in_message">Цей список порожній. Спробуйте перейти до іншого.</string>
|
||||||
|
@ -546,10 +546,36 @@
|
||||||
<string name="qualities">Якості</string>
|
<string name="qualities">Якості</string>
|
||||||
<string name="profile_background_des">Фон профілю</string>
|
<string name="profile_background_des">Фон профілю</string>
|
||||||
<string name="unable_to_inflate">Не вдалося створити UI коректно, це ВАЖЛИВА ПОМИЛКА, про яку слід негайно повідомити %s</string>
|
<string name="unable_to_inflate">Не вдалося створити UI коректно, це ВАЖЛИВА ПОМИЛКА, про яку слід негайно повідомити %s</string>
|
||||||
<string name="automatic_plugin_download_mode_title">Виберіть режим для фільтрації завантаження плагінів</string>
|
<string name="automatic_plugin_download_mode_title">Оберіть режим для фільтрації завантаження плагінів</string>
|
||||||
<string name="disable">Вимкнути</string>
|
<string name="disable">Вимкнути</string>
|
||||||
<string name="no_repository_found_error">Репозиторій не знайдено, перевірте URL-адресу та спробуйте VPN</string>
|
<string name="no_repository_found_error">Репозиторій не знайдено, перевірте URL-адресу та спробуйте VPN</string>
|
||||||
<string name="no_plugins_found_error">Не знайдено жодних плагінів у репозиторії</string>
|
<string name="no_plugins_found_error">Не знайдено жодних плагінів у репозиторії</string>
|
||||||
<string name="already_voted">Ви вже проголосували</string>
|
<string name="already_voted">Ви вже проголосували</string>
|
||||||
<string name="backup_frequency">Частота резервного копіювання</string>
|
<string name="backup_frequency">Частота резервного копіювання</string>
|
||||||
|
<string name="favorite_removed">%s вилучено з обраного</string>
|
||||||
|
<string name="favorites_list_name">Обране</string>
|
||||||
|
<string name="favorite_added">%s додано до обраного</string>
|
||||||
|
<string name="duplicate_message_multiple" formatted="true">У вашій бібліотеці знайдено потенційні дублікати:
|
||||||
|
\n
|
||||||
|
\n%s
|
||||||
|
\n
|
||||||
|
\nВсе одно хочете додати цей елемент, замінити наявні чи скасувати дію\?</string>
|
||||||
|
<string name="duplicate_title">Знайдено потенційний дублікат</string>
|
||||||
|
<string name="lock_profile">Розблокувати профіль</string>
|
||||||
|
<string name="action_add_to_favorites">Додати до обраного</string>
|
||||||
|
<string name="duplicate_replace_all">Замінити усе</string>
|
||||||
|
<string name="pin_error_incorrect">Неправильний PIN-код. Спробуйте ще раз.</string>
|
||||||
|
<string name="action_unsubscribe">Відписатись</string>
|
||||||
|
<string name="pin_error_length">PIN-код повинен складатися з 4 символів</string>
|
||||||
|
<string name="duplicate_replace">Замінити</string>
|
||||||
|
<string name="duplicate_add">Додати</string>
|
||||||
|
<string name="action_subscribe">Підписатись</string>
|
||||||
|
<string name="action_remove_from_favorites">Вилучити з обраного</string>
|
||||||
|
<string name="select_an_account">Оберіть обліковий запис</string>
|
||||||
|
<string name="duplicate_message_single">Виявилося, що у вашій бібліотеці вже є потенційно повторюваний елемент: \'%1$s.\'
|
||||||
|
\n
|
||||||
|
\nВсе одно хочете додати цей елемент, замінити наявний чи скасувати дію\?</string>
|
||||||
|
<string name="enter_pin">Введіть PIN-код</string>
|
||||||
|
<string name="pin">PIN-код</string>
|
||||||
|
<string name="enter_current_pin">Введіть поточний PIN-код</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -409,8 +409,8 @@
|
||||||
<string name="plugin_deleted">Plugin đã xoá</string>
|
<string name="plugin_deleted">Plugin đã xoá</string>
|
||||||
<string name="plugin_load_fail" formatted="true">Không tải được %s</string>
|
<string name="plugin_load_fail" formatted="true">Không tải được %s</string>
|
||||||
<string name="is_adult">18+</string>
|
<string name="is_adult">18+</string>
|
||||||
<string name="batch_download_start_format" formatted="true">Bắt đầu tải %d %s…</string>
|
<string name="batch_download_start_format" formatted="true">Đã bắt đầu tải xuống %1$d %2$s…</string>
|
||||||
<string name="batch_download_finish_format" formatted="true">Tải xuống %d %s thành công</string>
|
<string name="batch_download_finish_format" formatted="true">Đã tải xuống %1$d %2$s</string>
|
||||||
<string name="batch_download_nothing_to_download_format" formatted="true">Toàn bộ %s đã được tải xuống</string>
|
<string name="batch_download_nothing_to_download_format" formatted="true">Toàn bộ %s đã được tải xuống</string>
|
||||||
<string name="batch_download">Tải hàng loạt</string>
|
<string name="batch_download">Tải hàng loạt</string>
|
||||||
<string name="plugin_singular">plugin</string>
|
<string name="plugin_singular">plugin</string>
|
||||||
|
@ -566,4 +566,31 @@
|
||||||
<string name="no_plugins_found_error">Không tìm thấy plugin</string>
|
<string name="no_plugins_found_error">Không tìm thấy plugin</string>
|
||||||
<string name="unable_to_inflate">Không thể khởi tạo UI, đây là một LỖI LỚN và cần được báo cáo ngay lập tức tới %s</string>
|
<string name="unable_to_inflate">Không thể khởi tạo UI, đây là một LỖI LỚN và cần được báo cáo ngay lập tức tới %s</string>
|
||||||
<string name="automatic_plugin_download_mode_title">Chọn chế độ để lọc plugin tải xuống</string>
|
<string name="automatic_plugin_download_mode_title">Chọn chế độ để lọc plugin tải xuống</string>
|
||||||
|
<string name="favorite_removed">%s đã loại bỏ khỏi mục yêu thích</string>
|
||||||
|
<string name="favorites_list_name">Yêu thích</string>
|
||||||
|
<string name="favorite_added">%s đã thêm vào mục yêu thích</string>
|
||||||
|
<string name="duplicate_message_multiple" formatted="true">Các mục có thể trùng lặp đã được tìm thấy trong thư viện của bạn:
|
||||||
|
\n
|
||||||
|
\n%s
|
||||||
|
\n
|
||||||
|
\nBạn vẫn muốn thêm mục này, thay thế những mục hiện có hay hủy hành động\?</string>
|
||||||
|
<string name="backup_frequency">Tần suất sao lưu</string>
|
||||||
|
<string name="duplicate_title">Đã tìm thấy bản sao tiềm năng</string>
|
||||||
|
<string name="lock_profile">Khóa hồ sơ</string>
|
||||||
|
<string name="action_add_to_favorites">Thêm vào mục yêu thích</string>
|
||||||
|
<string name="duplicate_replace_all">Thay thế tất cả</string>
|
||||||
|
<string name="pin_error_incorrect">Mã PIN không chính xác. Vui lòng thử lại.</string>
|
||||||
|
<string name="action_unsubscribe">Hủy đăng ký</string>
|
||||||
|
<string name="pin_error_length">Mã PIN phải có 4 ký tự</string>
|
||||||
|
<string name="duplicate_replace">Thay thế</string>
|
||||||
|
<string name="duplicate_add">Thêm vào</string>
|
||||||
|
<string name="action_subscribe">Đăng ký</string>
|
||||||
|
<string name="action_remove_from_favorites">Loại bỏ khỏi mục yêu thích</string>
|
||||||
|
<string name="select_an_account">Chọn một tài khoản</string>
|
||||||
|
<string name="duplicate_message_single">Có vẻ như một mục có khả năng trùng lặp đã tồn tại trong thư viện của bạn: \'%1$s.\'
|
||||||
|
\n
|
||||||
|
\nBạn vẫn muốn thêm mục này, thay thế mục hiện có hay hủy hành động\?</string>
|
||||||
|
<string name="enter_pin">Nhập PIN</string>
|
||||||
|
<string name="pin">PIN</string>
|
||||||
|
<string name="enter_current_pin">Nhập mã PIN hiện tại</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -701,9 +701,9 @@
|
||||||
<string name="duplicate_add">Add</string>
|
<string name="duplicate_add">Add</string>
|
||||||
<string name="duplicate_replace">Replace</string>
|
<string name="duplicate_replace">Replace</string>
|
||||||
<string name="duplicate_replace_all">Replace All</string>
|
<string name="duplicate_replace_all">Replace All</string>
|
||||||
<string name="duplicate_cancel" translatable="false">@string/sort_cancel</string>
|
<string name="duplicate_cancel" translatable="false">@string/cancel</string>
|
||||||
<string name="duplicate_message_single">
|
<string name="duplicate_message_single" formatted="true">
|
||||||
It appears that a potentially duplicate item already exists in your library: \'%1$s.\'
|
It appears that a potentially duplicate item already exists in your library: \'%s.\'
|
||||||
|
|
||||||
\n\nWould you like to add this item anyway, replace the existing one, or cancel the action?
|
\n\nWould you like to add this item anyway, replace the existing one, or cancel the action?
|
||||||
</string>
|
</string>
|
||||||
|
|
1
fastlane/metadata/android/es-ES/changelogs/2.txt
Normal file
1
fastlane/metadata/android/es-ES/changelogs/2.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
- ¡Cambios añadidos!
|
10
fastlane/metadata/android/es-ES/full_description.txt
Normal file
10
fastlane/metadata/android/es-ES/full_description.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
CloudStream-3 te permite ver y descargar películas, series de TV y anime.
|
||||||
|
|
||||||
|
La aplicación viene sin ningún tipo de anuncios y análisis y
|
||||||
|
soporta múltiples tráilers y páginas de películas, y más, por ejemplo
|
||||||
|
|
||||||
|
Marcadores
|
||||||
|
|
||||||
|
Descargas de subtítulos
|
||||||
|
|
||||||
|
Compatible con Chromecast
|
1
fastlane/metadata/android/es-ES/short_description.txt
Normal file
1
fastlane/metadata/android/es-ES/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Vea y descargue películas, series de televisión y anime.
|
1
fastlane/metadata/android/es-ES/title.txt
Normal file
1
fastlane/metadata/android/es-ES/title.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
CloudStream
|
Loading…
Add table
Add a link
Reference in a new issue