Merge remote-tracking branch 'csupdate/master'

This commit is contained in:
Stormunblessed 2023-02-27 00:34:38 -06:00
commit de4f63337f
No known key found for this signature in database
GPG key ID: CE92471F93C0CAB4
38 changed files with 862 additions and 138 deletions

View file

@ -32,7 +32,9 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.google.android.gms.cast.framework.* import com.google.android.gms.cast.framework.*
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.navigationrail.NavigationRailView import com.google.android.material.navigationrail.NavigationRailView
import com.google.android.material.snackbar.Snackbar
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.APIHolder.allProviders import com.lagradost.cloudstream3.APIHolder.allProviders
import com.lagradost.cloudstream3.APIHolder.apis import com.lagradost.cloudstream3.APIHolder.apis
import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings
@ -79,6 +81,7 @@ import com.lagradost.cloudstream3.ui.setup.SetupFragmentExtensions
import com.lagradost.cloudstream3.utils.* import com.lagradost.cloudstream3.utils.*
import com.lagradost.cloudstream3.utils.AppUtils.html import com.lagradost.cloudstream3.utils.AppUtils.html
import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable
import com.lagradost.cloudstream3.utils.AppUtils.isNetworkAvailable
import com.lagradost.cloudstream3.utils.AppUtils.loadCache import com.lagradost.cloudstream3.utils.AppUtils.loadCache
import com.lagradost.cloudstream3.utils.AppUtils.loadRepository import com.lagradost.cloudstream3.utils.AppUtils.loadRepository
import com.lagradost.cloudstream3.utils.AppUtils.loadResult import com.lagradost.cloudstream3.utils.AppUtils.loadResult
@ -86,6 +89,7 @@ import com.lagradost.cloudstream3.utils.AppUtils.loadSearchResult
import com.lagradost.cloudstream3.utils.AppUtils.setDefaultFocus import com.lagradost.cloudstream3.utils.AppUtils.setDefaultFocus
import com.lagradost.cloudstream3.utils.BackupUtils.setUpBackup import com.lagradost.cloudstream3.utils.BackupUtils.setUpBackup
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
import com.lagradost.cloudstream3.utils.Coroutines.main
import com.lagradost.cloudstream3.utils.DataStore.getKey import com.lagradost.cloudstream3.utils.DataStore.getKey
import com.lagradost.cloudstream3.utils.DataStore.setKey import com.lagradost.cloudstream3.utils.DataStore.setKey
import com.lagradost.cloudstream3.utils.DataStoreHelper.migrateResumeWatching import com.lagradost.cloudstream3.utils.DataStoreHelper.migrateResumeWatching
@ -717,6 +721,28 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
changeStatusBarState(isEmulatorSettings()) changeStatusBarState(isEmulatorSettings())
// Automatically enable jsdelivr if cant connect to raw.githubusercontent.com
if (this.getKey<Boolean>(getString(R.string.jsdelivr_proxy_key)) == null && isNetworkAvailable()) {
main {
if (checkGithubConnectivity()) {
this.setKey(getString(R.string.jsdelivr_proxy_key), false)
} else {
this.setKey(getString(R.string.jsdelivr_proxy_key), true)
val parentView: View = findViewById(android.R.id.content)
Snackbar.make(parentView, R.string.jsdelivr_enabled, Snackbar.LENGTH_LONG).let { snackbar ->
snackbar.setAction(R.string.revert) {
setKey(getString(R.string.jsdelivr_proxy_key), false)
}
snackbar.setBackgroundTint(colorFromAttribute(R.attr.primaryGrayBackground))
snackbar.setTextColor(colorFromAttribute(R.attr.textColor))
snackbar.setActionTextColor(colorFromAttribute(R.attr.colorPrimary))
snackbar.show()
}
}
}
}
if (PluginManager.checkSafeModeFile()) { if (PluginManager.checkSafeModeFile()) {
normalSafeApiCall { normalSafeApiCall {
@ -1090,4 +1116,12 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
// } // }
} }
suspend fun checkGithubConnectivity(): Boolean {
return try {
app.get("https://raw.githubusercontent.com/recloudstream/.github/master/connectivitycheck", timeout = 5).text.trim() == "ok"
} catch (t: Throwable) {
false
}
}
} }

View file

@ -38,6 +38,9 @@ class DoodWsExtractor : DoodLaExtractor() {
override var mainUrl = "https://dood.ws" override var mainUrl = "https://dood.ws"
} }
class DoodYtExtractor : DoodLaExtractor() {
override var mainUrl = "https://dood.yt"
}
open class DoodLaExtractor : ExtractorApi() { open class DoodLaExtractor : ExtractorApi() {
override var name = "DoodStream" override var name = "DoodStream"

View file

@ -16,26 +16,7 @@ open class Evoload : ExtractorApi() {
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink> { override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink> {
val lang = url.substring(0, 2) val id = url.replace("https://evoload.io/e/", "") // wanted media id
val flag =
if (lang == "vo") {
" \uD83C\uDDEC\uD83C\uDDE7"
}
else if (lang == "vf"){
" \uD83C\uDDE8\uD83C\uDDF5"
} else {
""
}
val cleaned_url = if (lang == "ht") { // if url doesn't contain a flag and the url starts with http://
url
} else {
url.substring(2, url.length)
}
//println(lang)
//println(cleaned_url)
val id = cleaned_url.replace("https://evoload.io/e/", "") // wanted media id
val csrv_token = app.get("https://csrv.evosrv.com/captcha?m412548=").text // whatever that is val csrv_token = app.get("https://csrv.evosrv.com/captcha?m412548=").text // whatever that is
val captchaPass = app.get("https://cd2.evosrv.com/html/jsx/e.jsx").text.take(300).split("captcha_pass = '")[1].split("\'")[0] //extract the captcha pass from the js response (located in the 300 first chars) val captchaPass = app.get("https://cd2.evosrv.com/html/jsx/e.jsx").text.take(300).split("captcha_pass = '")[1].split("\'")[0] //extract the captcha pass from the js response (located in the 300 first chars)
val payload = mapOf("code" to id, "csrv_token" to csrv_token, "pass" to captchaPass) val payload = mapOf("code" to id, "csrv_token" to csrv_token, "pass" to captchaPass)
@ -44,9 +25,9 @@ open class Evoload : ExtractorApi() {
return listOf( return listOf(
ExtractorLink( ExtractorLink(
name, name,
name + flag, name,
link, link,
cleaned_url, url,
Qualities.Unknown.value, Qualities.Unknown.value,
) )
) )

View file

@ -13,6 +13,11 @@ class FileMoon : Filesim() {
override val name = "FileMoon" override val name = "FileMoon"
} }
class FileMoonSx : Filesim() {
override val mainUrl = "https://filemoon.sx"
override val name = "FileMoonSx"
}
open class Filesim : ExtractorApi() { open class Filesim : ExtractorApi() {
override val name = "Filesim" override val name = "Filesim"
override val mainUrl = "https://files.im" override val mainUrl = "https://files.im"

View file

@ -18,31 +18,36 @@ open class Linkbox : ExtractorApi() {
subtitleCallback: (SubtitleFile) -> Unit, subtitleCallback: (SubtitleFile) -> Unit,
callback: (ExtractorLink) -> Unit callback: (ExtractorLink) -> Unit
) { ) {
val id = Regex("""(/file/|id=)(\S+)[&/?]""").find(url)?.groupValues?.get(2) val id = Regex("""(?:/f/|/file/|\?id=)(\w+)""").find(url)?.groupValues?.get(1)
app.get("$mainUrl/api/open/get_url?itemId=$id", referer=url).parsedSafe<Responses>()?.data?.rList?.map { link -> app.get("$mainUrl/api/file/detail?itemId=$id", referer = url)
callback.invoke( .parsedSafe<Responses>()?.data?.itemInfo?.resolutionList?.map { link ->
ExtractorLink( callback.invoke(
name, ExtractorLink(
name, name,
link.url, name,
url, link.url ?: return@map null,
getQualityFromName(link.resolution) url,
getQualityFromName(link.resolution)
)
) )
) }
}
} }
data class RList( data class Resolutions(
@JsonProperty("url") val url: String, @JsonProperty("url") val url: String? = null,
@JsonProperty("resolution") val resolution: String?, @JsonProperty("resolution") val resolution: String? = null,
)
data class ItemInfo(
@JsonProperty("resolutionList") val resolutionList: ArrayList<Resolutions>? = arrayListOf(),
) )
data class Data( data class Data(
@JsonProperty("rList") val rList: List<RList>?, @JsonProperty("itemInfo") val itemInfo: ItemInfo? = null,
) )
data class Responses( data class Responses(
@JsonProperty("data") val data: Data?, @JsonProperty("data") val data: Data? = null,
) )
} }

View file

@ -77,6 +77,10 @@ class StreamSB10 : StreamSB() {
override var mainUrl = "https://sbplay2.xyz" override var mainUrl = "https://sbplay2.xyz"
} }
class StreamSB11 : StreamSB() {
override var mainUrl = "https://sbbrisk.com"
}
// This is a modified version of https://github.com/jmir1/aniyomi-extensions/blob/master/src/en/genoanime/src/eu/kanade/tachiyomi/animeextension/en/genoanime/extractors/StreamSBExtractor.kt // This is a modified version of https://github.com/jmir1/aniyomi-extensions/blob/master/src/en/genoanime/src/eu/kanade/tachiyomi/animeextension/en/genoanime/extractors/StreamSBExtractor.kt
// The following code is under the Apache License 2.0 https://github.com/jmir1/aniyomi-extensions/blob/master/LICENSE // The following code is under the Apache License 2.0 https://github.com/jmir1/aniyomi-extensions/blob/master/LICENSE
open class StreamSB : ExtractorApi() { open class StreamSB : ExtractorApi() {

View file

@ -7,6 +7,10 @@ class Uqload1 : Uqload() {
override var mainUrl = "https://uqload.com" override var mainUrl = "https://uqload.com"
} }
class Uqload2 : Uqload() {
override var mainUrl = "https://uqload.co"
}
open class Uqload : ExtractorApi() { open class Uqload : ExtractorApi() {
override val name: String = "Uqload" override val name: String = "Uqload"
override val mainUrl: String = "https://www.uqload.com" override val mainUrl: String = "https://www.uqload.com"
@ -15,30 +19,14 @@ open class Uqload : ExtractorApi() {
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? { override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
val lang = url.substring(0, 2) with(app.get(url)) { // raised error ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED (3003) is due to the response: "error_nofile"
val flag =
if (lang == "vo") {
" \uD83C\uDDEC\uD83C\uDDE7"
}
else if (lang == "vf"){
" \uD83C\uDDE8\uD83C\uDDF5"
} else {
""
}
val cleaned_url = if (lang == "ht") { // if url doesn't contain a flag and the url starts with http://
url
} else {
url.substring(2, url.length)
}
with(app.get(cleaned_url)) { // raised error ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED (3003) is due to the response: "error_nofile"
srcRegex.find(this.text)?.groupValues?.get(1)?.replace("\"", "")?.let { link -> srcRegex.find(this.text)?.groupValues?.get(1)?.replace("\"", "")?.let { link ->
return listOf( return listOf(
ExtractorLink( ExtractorLink(
name, name,
name + flag, name,
link, link,
cleaned_url, url,
Qualities.Unknown.value, Qualities.Unknown.value,
) )
) )

View file

@ -0,0 +1,34 @@
package com.lagradost.cloudstream3.extractors
import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.Qualities
import com.lagradost.cloudstream3.utils.getAndUnpack
class Vido : ExtractorApi() {
override var name = "Vido"
override var mainUrl = "https://vido.lol"
private val srcRegex = Regex("""sources:\s*\["(.*?)"\]""")
override val requiresReferer = true
override suspend fun getUrl(url: String, referer: String?): List<ExtractorLink>? {
val methode = app.get(url.replace("/e/", "/embed-")) // fix wiflix and mesfilms
with(methode) {
if (!methode.isSuccessful) return null
//val quality = unpackedText.lowercase().substringAfter(" height=").substringBefore(" ").toIntOrNull()
srcRegex.find(this.text)?.groupValues?.get(1)?.let { link ->
return listOf(
ExtractorLink(
name,
name,
link,
url,
Qualities.Unknown.value,
true,
)
)
}
}
return null
}
}

View file

@ -2,8 +2,10 @@ package com.lagradost.cloudstream3.plugins
import android.content.Context import android.content.Context
import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.annotation.JsonProperty
import com.lagradost.cloudstream3.AcraApplication.Companion.context
import com.lagradost.cloudstream3.AcraApplication.Companion.getKey import com.lagradost.cloudstream3.AcraApplication.Companion.getKey
import com.lagradost.cloudstream3.AcraApplication.Companion.setKey import com.lagradost.cloudstream3.AcraApplication.Companion.setKey
import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.amap import com.lagradost.cloudstream3.amap
import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.mvvm.logError import com.lagradost.cloudstream3.mvvm.logError
@ -71,6 +73,15 @@ object RepositoryManager {
val PREBUILT_REPOSITORIES: Array<RepositoryData> by lazy { val PREBUILT_REPOSITORIES: Array<RepositoryData> by lazy {
getKey("PREBUILT_REPOSITORIES") ?: emptyArray() getKey("PREBUILT_REPOSITORIES") ?: emptyArray()
} }
val GH_REGEX = Regex("^https://raw.githubusercontent.com/([A-Za-z0-9-]+)/([A-Za-z0-9_.-]+)/(.*)$")
/* Convert raw.githubusercontent.com urls to cdn.jsdelivr.net if enabled in settings */
fun convertRawGitUrl(url: String): String {
if (getKey<Boolean>(context!!.getString(R.string.jsdelivr_proxy_key)) != true) return url
val match = GH_REGEX.find(url) ?: return url
val (user, repo, rest) = match.destructured
return "https://cdn.jsdelivr.net/gh/$user/$repo@$rest"
}
suspend fun parseRepoUrl(url: String): String? { suspend fun parseRepoUrl(url: String): String? {
val fixedUrl = url.trim() val fixedUrl = url.trim()
@ -84,10 +95,15 @@ object RepositoryManager {
} }
} else if (fixedUrl.matches("^[a-zA-Z0-9!_-]+$".toRegex())) { } else if (fixedUrl.matches("^[a-zA-Z0-9!_-]+$".toRegex())) {
suspendSafeApiCall { suspendSafeApiCall {
app.get("https://l.cloudstream.cf/${fixedUrl}").let { app.get("https://l.cloudstream.cf/${fixedUrl}", allowRedirects = false).let {
return@let if (it.isSuccessful && !it.url.startsWith("https://cutt.ly/branded-domains")) it.url it.headers["Location"]?.let { url ->
else app.get("https://cutt.ly/${fixedUrl}").let let2@{ it2 -> return@suspendSafeApiCall if (!url.startsWith("https://cutt.ly/branded-domains")) url
return@let2 if (it2.isSuccessful) it2.url else null else null
}
app.get("https://cutt.ly/${fixedUrl}", allowRedirects = false).let { it2 ->
it2.headers["Location"]?.let { url ->
return@suspendSafeApiCall if (url.startsWith("https://cutt.ly/404")) url else null
}
} }
} }
} }
@ -97,14 +113,14 @@ object RepositoryManager {
suspend fun parseRepository(url: String): Repository? { suspend fun parseRepository(url: String): Repository? {
return suspendSafeApiCall { return suspendSafeApiCall {
// Take manifestVersion and such into account later // Take manifestVersion and such into account later
app.get(url).parsedSafe() app.get(convertRawGitUrl(url)).parsedSafe()
} }
} }
private suspend fun parsePlugins(pluginUrls: String): List<SitePlugin> { private suspend fun parsePlugins(pluginUrls: String): List<SitePlugin> {
// Take manifestVersion and such into account later // Take manifestVersion and such into account later
return try { return try {
val response = app.get(pluginUrls) val response = app.get(convertRawGitUrl(pluginUrls))
// Normal parsed function not working? // Normal parsed function not working?
// return response.parsedSafe() // return response.parsedSafe()
tryParseJson<Array<SitePlugin>>(response.text)?.toList() ?: emptyList() tryParseJson<Array<SitePlugin>>(response.text)?.toList() ?: emptyList()
@ -139,7 +155,7 @@ object RepositoryManager {
} }
file.createNewFile() file.createNewFile()
val body = app.get(pluginUrl).okhttpResponse.body val body = app.get(convertRawGitUrl(pluginUrl)).okhttpResponse.body
write(body.byteStream(), file.outputStream()) write(body.byteStream(), file.outputStream())
file file
} }

View file

@ -35,11 +35,13 @@ import com.lagradost.cloudstream3.mvvm.logError
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle
import com.lagradost.cloudstream3.utils.EpisodeSkip import com.lagradost.cloudstream3.utils.EpisodeSkip
import com.lagradost.cloudstream3.utils.AppUtils.isUsingMobileData
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.ExtractorLinkPlayList import com.lagradost.cloudstream3.utils.ExtractorLinkPlayList
import com.lagradost.cloudstream3.utils.ExtractorUri import com.lagradost.cloudstream3.utils.ExtractorUri
import com.lagradost.cloudstream3.utils.SubtitleHelper.fromTwoLettersToLanguage import com.lagradost.cloudstream3.utils.SubtitleHelper.fromTwoLettersToLanguage
import java.io.File import java.io.File
import java.time.Duration
import javax.net.ssl.HttpsURLConnection import javax.net.ssl.HttpsURLConnection
import javax.net.ssl.SSLContext import javax.net.ssl.SSLContext
import javax.net.ssl.SSLSession import javax.net.ssl.SSLSession
@ -535,15 +537,16 @@ class CS3IPlayer : IPlayer {
OkHttpDataSource.Factory(client).setUserAgent(USER_AGENT) OkHttpDataSource.Factory(client).setUserAgent(USER_AGENT)
} }
// Do no include empty referer, if the provider wants those they can use the header map.
val refererMap = if (link.referer.isBlank()) emptyMap() else mapOf("referer" to link.referer)
val headers = mapOf( val headers = mapOf(
"referer" to link.referer,
"accept" to "*/*", "accept" to "*/*",
"sec-ch-ua" to "\"Chromium\";v=\"91\", \" Not;A Brand\";v=\"99\"", "sec-ch-ua" to "\"Chromium\";v=\"91\", \" Not;A Brand\";v=\"99\"",
"sec-ch-ua-mobile" to "?0", "sec-ch-ua-mobile" to "?0",
"sec-fetch-user" to "?1", "sec-fetch-user" to "?1",
"sec-fetch-mode" to "navigate", "sec-fetch-mode" to "navigate",
"sec-fetch-dest" to "video" "sec-fetch-dest" to "video"
) + link.headers // Adds the headers from the provider, e.g Authorization ) + refererMap + link.headers // Adds the headers from the provider, e.g Authorization
return source.apply { return source.apply {
setDefaultRequestProperties(headers) setDefaultRequestProperties(headers)
@ -847,7 +850,7 @@ class CS3IPlayer : IPlayer {
Log.i(TAG, "loadExo") Log.i(TAG, "loadExo")
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context) val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
val maxVideoHeight = settingsManager.getInt( val maxVideoHeight = settingsManager.getInt(
context.getString(com.lagradost.cloudstream3.R.string.quality_pref_key), context.getString(if (context.isUsingMobileData()) com.lagradost.cloudstream3.R.string.quality_pref_mobile_data_key else com.lagradost.cloudstream3.R.string.quality_pref_key),
Int.MAX_VALUE Int.MAX_VALUE
) )

View file

@ -40,6 +40,7 @@ import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.mvvm.logError import com.lagradost.cloudstream3.mvvm.logError
import com.lagradost.cloudstream3.ui.player.GeneratorPlayer.Companion.subsProvidersIsActive import com.lagradost.cloudstream3.ui.player.GeneratorPlayer.Companion.subsProvidersIsActive
import com.lagradost.cloudstream3.utils.Qualities import com.lagradost.cloudstream3.utils.Qualities
import com.lagradost.cloudstream3.utils.AppUtils.isUsingMobileData
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
@ -1246,9 +1247,8 @@ open class FullScreenPlayer : AbstractPlayerFragment() {
ctx.getString(R.string.double_tap_pause_enabled_key), ctx.getString(R.string.double_tap_pause_enabled_key),
false false
) )
currentPrefQuality = settingsManager.getInt( currentPrefQuality = settingsManager.getInt(
ctx.getString(R.string.quality_pref_key), ctx.getString(if (ctx.isUsingMobileData()) R.string.quality_pref_mobile_data_key else R.string.quality_pref_key),
currentPrefQuality currentPrefQuality
) )
// useSystemBrightness = // useSystemBrightness =

View file

@ -74,6 +74,7 @@ val appLanguages = arrayListOf(
Triple("\uD83C\uDDEE\uD83C\uDDE9", "Bahasa Indonesia", "in"), Triple("\uD83C\uDDEE\uD83C\uDDE9", "Bahasa Indonesia", "in"),
Triple("", "italiano", "it"), Triple("", "italiano", "it"),
Triple("\uD83C\uDDEE\uD83C\uDDF1", "עברית", "iw"), Triple("\uD83C\uDDEE\uD83C\uDDF1", "עברית", "iw"),
Triple("", "日本語 (にほんご)", "ja"),
Triple("", "ಕನ್ನಡ", "kn"), Triple("", "ಕನ್ನಡ", "kn"),
Triple("", "македонски", "mk"), Triple("", "македонски", "mk"),
Triple("", "മലയാളം", "ml"), Triple("", "മലയാളം", "ml"),
@ -82,7 +83,7 @@ val appLanguages = arrayListOf(
Triple("", "norsk bokmål", "no"), Triple("", "norsk bokmål", "no"),
Triple("", "polski", "pl"), Triple("", "polski", "pl"),
Triple("\uD83C\uDDF5\uD83C\uDDF9", "português", "pt"), Triple("\uD83C\uDDF5\uD83C\uDDF9", "português", "pt"),
Triple("🦍", "mmmm... monke", "qt"), Triple("\uD83E\uDD8D", "mmmm... monke", "qt"),
Triple("", "română", "ro"), Triple("", "română", "ro"),
Triple("", "русский", "ru"), Triple("", "русский", "ru"),
Triple("", "slovenčina", "sk"), Triple("", "slovenčina", "sk"),
@ -97,7 +98,7 @@ val appLanguages = arrayListOf(
Triple("", "中文", "zh"), Triple("", "中文", "zh"),
Triple("\uD83C\uDDF9\uD83C\uDDFC", "文言", "zh-rTW"), Triple("\uD83C\uDDF9\uD83C\uDDFC", "文言", "zh-rTW"),
/* end language list */ /* end language list */
).sortedBy { it.second?.toLowerCase() } //ye, we go alphabetical, so ppl don't put their lang on top ).sortedBy { it.second.lowercase() } //ye, we go alphabetical, so ppl don't put their lang on top
class SettingsGeneral : PreferenceFragmentCompat() { class SettingsGeneral : PreferenceFragmentCompat() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -157,9 +158,6 @@ class SettingsGeneral : PreferenceFragmentCompat() {
getPref(R.string.locale_key)?.setOnPreferenceClickListener { pref -> getPref(R.string.locale_key)?.setOnPreferenceClickListener { pref ->
val tempLangs = appLanguages.toMutableList() val tempLangs = appLanguages.toMutableList()
//if (beneneCount > 100) {
// tempLangs.add(Triple("\uD83E\uDD8D", "mmmm... monke", "mo"))
//}
val current = getCurrentLocale(pref.context) val current = getCurrentLocale(pref.context)
val languageCodes = tempLangs.map { (_, _, iso) -> iso } val languageCodes = tempLangs.map { (_, _, iso) -> iso }
val languageNames = tempLangs.map { (emoji, name, iso) -> val languageNames = tempLangs.map { (emoji, name, iso) ->
@ -316,6 +314,12 @@ class SettingsGeneral : PreferenceFragmentCompat() {
} ?: emptyList() } ?: emptyList()
} }
settingsManager.edit().putBoolean(getString(R.string.jsdelivr_proxy_key), getKey(getString(R.string.jsdelivr_proxy_key), false) ?: false).apply()
getPref(R.string.jsdelivr_proxy_key)?.setOnPreferenceChangeListener { _, newValue ->
setKey(getString(R.string.jsdelivr_proxy_key), newValue)
return@setOnPreferenceChangeListener true
}
getPref(R.string.download_path_key)?.setOnPreferenceClickListener { getPref(R.string.download_path_key)?.setOnPreferenceClickListener {
val dirs = getDownloadDirs() val dirs = getDownloadDirs()

View file

@ -113,6 +113,30 @@ class SettingsPlayer : PreferenceFragmentCompat() {
return@setOnPreferenceClickListener true return@setOnPreferenceClickListener true
} }
getPref(R.string.quality_pref_mobile_data_key)?.setOnPreferenceClickListener {
val prefValues = Qualities.values().map { it.value }.reversed().toMutableList()
prefValues.remove(Qualities.Unknown.value)
val prefNames = prefValues.map { Qualities.getStringByInt(it) }
val currentQuality =
settingsManager.getInt(
getString(R.string.quality_pref_mobile_data_key),
Qualities.values().last().value
)
activity?.showBottomDialog(
prefNames.toList(),
prefValues.indexOf(currentQuality),
getString(R.string.watch_quality_pref_data),
true,
{}) {
settingsManager.edit().putInt(getString(R.string.quality_pref_mobile_data_key), prefValues[it])
.apply()
}
return@setOnPreferenceClickListener true
}
getPref(R.string.player_pref_key)?.setOnPreferenceClickListener { getPref(R.string.player_pref_key)?.setOnPreferenceClickListener {
val prefNames = resources.getStringArray(R.array.player_pref_names) val prefNames = resources.getStringArray(R.array.player_pref_names)
val prefValues = resources.getIntArray(R.array.player_pref_values) val prefValues = resources.getIntArray(R.array.player_pref_values)

View file

@ -491,6 +491,12 @@ object AppUtils {
} }
} }
fun Context.isNetworkAvailable(): Boolean {
val manager = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetworkInfo = manager.activeNetworkInfo
return activeNetworkInfo != null && activeNetworkInfo.isConnected || manager.allNetworkInfo?.any { it.isConnected } ?: false
}
fun splitQuery(url: URL): Map<String, String> { fun splitQuery(url: URL): Map<String, String> {
val queryPairs: MutableMap<String, String> = LinkedHashMap() val queryPairs: MutableMap<String, String> = LinkedHashMap()
val query: String = url.query val query: String = url.query
@ -770,8 +776,13 @@ object AppUtils {
return networkInfo.any { return networkInfo.any {
conManager.getNetworkCapabilities(it) conManager.getNetworkCapabilities(it)
?.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) == true ?.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) == true
} &&
!networkInfo.any {
conManager.getNetworkCapabilities(it)
?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true
}
} }
}
private fun Activity?.cacheClass(clazz: String?) { private fun Activity?.cacheClass(clazz: String?) {
clazz?.let { c -> clazz?.let { c ->
@ -815,4 +826,4 @@ object AppUtils {
} }
return currentAudioFocusRequest return currentAudioFocusRequest
} }
} }

View file

@ -229,6 +229,7 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
StreamSB8(), StreamSB8(),
StreamSB9(), StreamSB9(),
StreamSB10(), StreamSB10(),
StreamSB11(),
SBfull(), SBfull(),
// Streamhub(), cause Streamhub2() works // Streamhub(), cause Streamhub2() works
Streamhub2(), Streamhub2(),
@ -254,6 +255,7 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
// WatchSB(), 'cause StreamSB.kt works // WatchSB(), 'cause StreamSB.kt works
Uqload(), Uqload(),
Uqload1(), Uqload1(),
Uqload2(),
Evoload(), Evoload(),
Evoload1(), Evoload1(),
VoeExtractor(), VoeExtractor(),
@ -277,6 +279,7 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
DoodShExtractor(), DoodShExtractor(),
DoodWatchExtractor(), DoodWatchExtractor(),
DoodWfExtractor(), DoodWfExtractor(),
DoodYtExtractor(),
AsianLoad(), AsianLoad(),
@ -324,6 +327,8 @@ val extractorApis: MutableList<ExtractorApi> = arrayListOf(
Filesim(), Filesim(),
FileMoon(), FileMoon(),
FileMoonSx(),
Vido(),
Linkbox(), Linkbox(),
Acefile(), Acefile(),
SpeedoStream(), SpeedoStream(),

View file

@ -103,7 +103,7 @@
<string name="action_open_watching">مزيد من المعلومات</string> <string name="action_open_watching">مزيد من المعلومات</string>
<string name="vpn_might_be_needed">قد تكون هناك حاجة إلى VPN لكي يعمل هذا المزود بشكل صحيح</string> <string name="vpn_might_be_needed">قد تكون هناك حاجة إلى VPN لكي يعمل هذا المزود بشكل صحيح</string>
<string name="vpn_torrent">هذا المزود هو تورنت ، يوصى باستخدام شبكة ظاهرية خاصة</string> <string name="vpn_torrent">هذا المزود هو تورنت ، يوصى باستخدام شبكة ظاهرية خاصة</string>
<string name="provider_info_meta">لا يتم توفير البيانات الوصفية بواسطة الموقع ، وسيفشل تحميل الفيديو إذا لم يكن موجودًا في الموقع.</string> <string name="provider_info_meta">لا يتم توفير البيانات الوصفية بواسطة الموقع، وسيفشل تحميل الفيديو إذا لم يكن موجودًا في الموقع.</string>
<string name="torrent_plot">الوصف</string> <string name="torrent_plot">الوصف</string>
<string name="normal_no_plot">لم يتم العثور على وصف</string> <string name="normal_no_plot">لم يتم العثور على وصف</string>
<string name="torrent_no_plot">لم يتم العثور على وصف</string> <string name="torrent_no_plot">لم يتم العثور على وصف</string>
@ -170,7 +170,7 @@
<string name="copy_link_toast">تم نسخ الرابط إلى الحافظة</string> <string name="copy_link_toast">تم نسخ الرابط إلى الحافظة</string>
<string name="play_episode_toast">تشغيل الحلقة</string> <string name="play_episode_toast">تشغيل الحلقة</string>
<string name="subs_default_reset_toast">إعادة التعيين إلى القيمة الافتراضية</string> <string name="subs_default_reset_toast">إعادة التعيين إلى القيمة الافتراضية</string>
<string name="acra_report_toast">عذرا ، تعطل التطبيق. سيتم إرسال تقرير خطأ مجهول إلى المطورين</string> <string name="acra_report_toast">عذرا، تعطل التطبيق. سيتم إرسال تقرير خطأ مجهول إلى المطورين</string>
<string name="season">موسم</string> <string name="season">موسم</string>
<string name="no_season">لا موسم</string> <string name="no_season">لا موسم</string>
<string name="episode">حلقة</string> <string name="episode">حلقة</string>
@ -259,15 +259,15 @@
<string name="dont_show_again">لا تظهر مرة أخرى</string> <string name="dont_show_again">لا تظهر مرة أخرى</string>
<string name="skip_update">تخطي هذا التحديث</string> <string name="skip_update">تخطي هذا التحديث</string>
<string name="update">تحديث</string> <string name="update">تحديث</string>
<string name="watch_quality_pref">جودة المشاهدة المفضلة</string> <string name="watch_quality_pref">جودة المشاهدة المفضلة (WiFi)</string>
<string name="limit_title">أقصى عدد لحروف عنوان مُشغل الفيديو</string> <string name="limit_title">أقصى عدد لحروف عنوان مُشغل الفيديو</string>
<string name="limit_title_rez">أبعاد مُشغل الفيديو</string> <string name="limit_title_rez">أبعاد مُشغل الفيديو</string>
<string name="video_buffer_size_settings">حجم ذاكرة التخزين المؤقت للفيديو</string> <string name="video_buffer_size_settings">حجم ذاكرة التخزين المؤقت للفيديو</string>
<string name="video_buffer_length_settings">طول التخزين المؤقت</string> <string name="video_buffer_length_settings">طول التخزين المؤقت</string>
<string name="video_buffer_disk_settings">التخزين المؤقت للفيديو على القرص</string> <string name="video_buffer_disk_settings">التخزين المؤقت للفيديو على القرص</string>
<string name="video_buffer_clear_settings">مسح التخزين المؤقت للصورة والفيديو</string> <string name="video_buffer_clear_settings">مسح التخزين المؤقت للصورة والفيديو</string>
<string name="video_ram_description">يتسبب في حدوث أعطال إذا تم ضبطه على مستوى مرتفع جدا على الأجهزة ذات الذاكرة المنخفضة ، مثل Android TV.</string> <string name="video_ram_description">يتسبب في حدوث أعطال إذا تم ضبطه على مستوى مرتفع جدا على الأجهزة ذات الذاكرة المنخفضة، مثل تلفزيون أندرويد.</string>
<string name="video_disk_description">يسبب مشاكل إذا تم ضبطه على مستوى مرتفع جدا على الأجهزة ذات مساحة التخزين المنخفضة ، مثل Android TV.</string> <string name="video_disk_description">يسبب مشاكل إذا تم ضبطه على مستوى مرتفع جدا على الأجهزة ذات مساحة التخزين المنخفضة، مثل تلفزيون أندرويد.</string>
<string name="dns_pref">إستخدام DNS بدلا من HTTPS</string> <string name="dns_pref">إستخدام DNS بدلا من HTTPS</string>
<string name="dns_pref_summary">مفيد لتجاوز حجب مزود خدمة الإنترنت</string> <string name="dns_pref_summary">مفيد لتجاوز حجب مزود خدمة الإنترنت</string>
<string name="add_site_pref">موقع بديل (نسخة)</string> <string name="add_site_pref">موقع بديل (نسخة)</string>
@ -360,7 +360,7 @@
https://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog https://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog
--> -->
<string name="subtitles_example_text">نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق</string> <string name="subtitles_example_text">نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق</string>
<string name="recommended">مُوصي به</string> <string name="recommended">مُوصى به</string>
<string name="player_loaded_subtitles" formatted="true">تم تحميل %s</string> <string name="player_loaded_subtitles" formatted="true">تم تحميل %s</string>
<string name="player_load_subtitles">إختيار ملف</string> <string name="player_load_subtitles">إختيار ملف</string>
<string name="player_load_subtitles_online">تحميل من الانترنت</string> <string name="player_load_subtitles_online">تحميل من الانترنت</string>
@ -543,4 +543,22 @@
<string name="pref_category_android_tv">تلفزيون أندرويد</string> <string name="pref_category_android_tv">تلفزيون أندرويد</string>
<string name="android_tv_interface_on_seek_settings_summary">مدة التقديم عنما يكون المشغل مرئيا</string> <string name="android_tv_interface_on_seek_settings_summary">مدة التقديم عنما يكون المشغل مرئيا</string>
<string name="android_tv_interface_on_seek_settings">مدة التقديم- المشغل المرئي</string> <string name="android_tv_interface_on_seek_settings">مدة التقديم- المشغل المرئي</string>
<string name="test_failed">فشل</string>
<string name="test_passed">نجح</string>
<string name="category_provider_test">إختبار المزود</string>
<string name="restart">إعادة التشغيل</string>
<string name="test_log">سجل</string>
<string name="start">بَدأ</string>
<string name="stop">إيقاف</string>
<string name="subscription_in_progress_notification">تحديث العروض التي تم الاشتراك فيها</string>
<string name="subscription_deleted">إلغاء الاشتراك من %s</string>
<string name="subscription_episode_released">تم إصدار الحلقة %d!</string>
<string name="subscription_list_name">مشترك</string>
<string name="subscription_new">مشترك في %s</string>
<string name="pref_category_bypass">تجاوز مزود خدمة الإنترنت</string>
<string name="revert">استرجاع</string>
<string name="jsdelivr_enabled">فشل الوصول إلى GitHub ، وتمكين وكيل jsdelivr.</string>
<string name="jsdelivr_proxy_summary">تجاوز حظر GitHub باستخدام jsdelivr ، قد يتسبب في تأخير التحديثات لبضعة أيام.</string>
<string name="jsdelivr_proxy">وكيل raw.githubusercontent.com</string>
<string name="watch_quality_pref_data">جودة المشاهدة المفضلة (بيانات الجوال)</string>
</resources> </resources>

View file

@ -245,7 +245,7 @@
<string name="dont_show_again">Již nezobrazovat</string> <string name="dont_show_again">Již nezobrazovat</string>
<string name="skip_update">Přeskočit tuto aktualizace</string> <string name="skip_update">Přeskočit tuto aktualizace</string>
<string name="update">Aktualizovat</string> <string name="update">Aktualizovat</string>
<string name="watch_quality_pref">Upřednostněná kvalita sledování</string> <string name="watch_quality_pref">Upřednostněná kvalita sledování (WiFi)</string>
<string name="limit_title">Maximální počet znaků v názvu přehrávače</string> <string name="limit_title">Maximální počet znaků v názvu přehrávače</string>
<string name="limit_title_rez">Rozlišení přehrávače</string> <string name="limit_title_rez">Rozlišení přehrávače</string>
<string name="video_buffer_size_settings">Velikost vyrovnávací paměti videa</string> <string name="video_buffer_size_settings">Velikost vyrovnávací paměti videa</string>
@ -535,4 +535,22 @@
<string name="android_tv_interface_on_seek_settings">Zobrazený přehrávač - doba hledání</string> <string name="android_tv_interface_on_seek_settings">Zobrazený přehrávač - doba hledání</string>
<string name="pref_category_android_tv">Android TV</string> <string name="pref_category_android_tv">Android TV</string>
<string name="android_tv_interface_on_seek_settings_summary">Množství vyhledávané doby při zobrazeném přehrávači</string> <string name="android_tv_interface_on_seek_settings_summary">Množství vyhledávané doby při zobrazeném přehrávači</string>
<string name="test_log">Protokol</string>
<string name="category_provider_test">Test poskytovatele</string>
<string name="test_failed">Neúspěšné</string>
<string name="test_passed">Úspěšné</string>
<string name="restart">Restart</string>
<string name="start">Spustit</string>
<string name="stop">Zastavit</string>
<string name="subscription_in_progress_notification">Aktualizace odebíraných pořadů</string>
<string name="subscription_new">Přihlášeno k odběru %s</string>
<string name="subscription_deleted">Odhlášen odběr od %s</string>
<string name="subscription_episode_released">Byla vydána epizoda %d!</string>
<string name="subscription_list_name">Odebíráno</string>
<string name="jsdelivr_proxy">Proxy raw.githubusercontent.com</string>
<string name="jsdelivr_enabled">Nepodařilo se připojit ke GitHubu, povolování proxy jsdelivr.</string>
<string name="watch_quality_pref_data">Upřednostněná kvalita sledování (mobilní data)</string>
<string name="revert">Vrátit zpět</string>
<string name="jsdelivr_proxy_summary">Obchází blokování GitHubu pomocí jsdelivr, může způsobit zpoždění aktualizací o několik dní.</string>
<string name="pref_category_bypass">Obcházení ISP</string>
</resources> </resources>

View file

@ -53,7 +53,7 @@
<string name="type_dropped">Abgebrochen</string> <string name="type_dropped">Abgebrochen</string>
<string name="type_plan_to_watch">Geplant</string> <string name="type_plan_to_watch">Geplant</string>
<string name="type_none">Nichts</string> <string name="type_none">Nichts</string>
<string name="type_re_watching">Erneut anschauen</string> <string name="type_re_watching">Erneut schauen</string>
<string name="play_movie_button">Film abspielen</string> <string name="play_movie_button">Film abspielen</string>
<string name="play_livestream_button">Livestream abspielen</string> <string name="play_livestream_button">Livestream abspielen</string>
<string name="play_torrent_button">Torrent streamen</string> <string name="play_torrent_button">Torrent streamen</string>
@ -212,7 +212,7 @@
<string name="no_subtitles">Keine Untertitel</string> <string name="no_subtitles">Keine Untertitel</string>
<string name="default_subtitles">Standard</string> <string name="default_subtitles">Standard</string>
<string name="free_storage">Frei</string> <string name="free_storage">Frei</string>
<string name="used_storage">Benutzt</string> <string name="used_storage">Belegt</string>
<string name="app_storage">App</string> <string name="app_storage">App</string>
<string name="movies">Filme</string> <string name="movies">Filme</string>
<string name="tv_series">TV-Serien</string> <string name="tv_series">TV-Serien</string>
@ -263,7 +263,7 @@
<string name="dont_show_again">Nicht mehr anzeigen</string> <string name="dont_show_again">Nicht mehr anzeigen</string>
<string name="skip_update">Update ignorieren</string> <string name="skip_update">Update ignorieren</string>
<string name="update">Update</string> <string name="update">Update</string>
<string name="watch_quality_pref">Bevorzugte Auflösung</string> <string name="watch_quality_pref">Bevorzugte Videoqualität (WLAN)</string>
<string name="limit_title">Videoplayertitel max. Zeichen</string> <string name="limit_title">Videoplayertitel max. Zeichen</string>
<string name="limit_title_rez">Videoplayer Auflösung</string> <string name="limit_title_rez">Videoplayer Auflösung</string>
<string name="video_buffer_size_settings">Videopuffergröße</string> <string name="video_buffer_size_settings">Videopuffergröße</string>
@ -284,7 +284,7 @@
<string name="resize_fill">Strecken</string> <string name="resize_fill">Strecken</string>
<string name="resize_zoom">Vergrößern</string> <string name="resize_zoom">Vergrößern</string>
<string name="legal_notice">Haftungsausschluss</string> <string name="legal_notice">Haftungsausschluss</string>
<string name="category_general">General</string> <string name="category_general">Allgemein</string>
<string name="random_button_settings">Zufalls-Button</string> <string name="random_button_settings">Zufalls-Button</string>
<string name="random_button_settings_desc">Zufallsbutton auf der Startseite anzeigen</string> <string name="random_button_settings_desc">Zufallsbutton auf der Startseite anzeigen</string>
<string name="provider_lang_settings">Anbieter-Sprachen</string> <string name="provider_lang_settings">Anbieter-Sprachen</string>
@ -460,11 +460,11 @@
<string name="automatic_plugin_download_summary">Automatische Installation aller noch nicht installierten Plugins aus hinzugefügten Repositories.</string> <string name="automatic_plugin_download_summary">Automatische Installation aller noch nicht installierten Plugins aus hinzugefügten Repositories.</string>
<string name="redo_setup_process">Einrichtungsvorgang wiederholen</string> <string name="redo_setup_process">Einrichtungsvorgang wiederholen</string>
<string name="apk_installer_settings">APK-Installer</string> <string name="apk_installer_settings">APK-Installer</string>
<string name="apk_installer_settings_des">Einige Telefone unterstützen das neue Installationsprogramm für Pakete nicht. Benutze die Legacy-Option, wenn sich die Updates nicht installieren lassen.</string> <string name="apk_installer_settings_des">Einige Telefone unterstützen den neuen Package-Installer nicht. Benutze die Legacy-Option, wenn sich die Updates nicht installieren lassen.</string>
<string name="season_format">%s %d%s</string> <string name="season_format">%s %d%s</string>
<string name="pref_category_links">Links</string> <string name="pref_category_links">Links</string>
<string name="pref_category_app_updates">App-Updates</string> <string name="pref_category_app_updates">App-Updates</string>
<string name="pref_category_backup">Back-Up</string> <string name="pref_category_backup">Sicherung</string>
<string name="pref_category_extensions">Erweiterungen</string> <string name="pref_category_extensions">Erweiterungen</string>
<string name="pref_category_actions">Wartung</string> <string name="pref_category_actions">Wartung</string>
<string name="pref_category_cache">Cache</string> <string name="pref_category_cache">Cache</string>
@ -506,4 +506,27 @@
<string name="empty_library_logged_in_message">Diese Liste scheint leer zu sein. Versuche, zu einer anderen Liste zu wechseln.</string> <string name="empty_library_logged_in_message">Diese Liste scheint leer zu sein. Versuche, zu einer anderen Liste zu wechseln.</string>
<string name="safe_mode_file">Datei für abgesicherten Modus gefunden! <string name="safe_mode_file">Datei für abgesicherten Modus gefunden!
\nBeim Start werden keine Erweiterungen geladen, bis die Datei entfernt wird.</string> \nBeim Start werden keine Erweiterungen geladen, bis die Datei entfernt wird.</string>
<string name="android_tv_interface_off_seek_settings">Player ausgeblendet - Betrag zum vor- und zurückspulen</string>
<string name="android_tv_interface_on_seek_settings_summary">Der Betrag, welcher verwendet wird, wenn der Player eingeblendet ist</string>
<string name="android_tv_interface_off_seek_settings_summary">Der Betrag, welcher verwendet wird, wenn der Player ausgeblendet ist</string>
<string name="pref_category_android_tv">Android-TV</string>
<string name="android_tv_interface_on_seek_settings">Player eingeblendet - Betrag zum vor- und zurückspulen</string>
<string name="test_failed">Fehlgeschlagen</string>
<string name="test_passed">Erfolgreich</string>
<string name="category_provider_test">Anbieter-Test</string>
<string name="stop">Stopp</string>
<string name="test_log">Log</string>
<string name="start">Start</string>
<string name="restart">Neustarten</string>
<string name="watch_quality_pref_data">Bevorzugte Videoqualität (mobile Daten)</string>
<string name="jsdelivr_proxy_summary">Umgehung der GitHub Sperre mit jsdelivr, kann zu einigen Tagen Verzögerung bei Updates führen.</string>
<string name="subscription_new">%s abonniert</string>
<string name="subscription_deleted">%s deabonniert</string>
<string name="subscription_episode_released">Episode %d erschienen!</string>
<string name="jsdelivr_proxy">raw.githubusercontent.com Proxy</string>
<string name="jsdelivr_enabled">GitHub kann nicht erreicht werden, der jsdelivr-Proxy wird aktiviert.</string>
<string name="subscription_in_progress_notification">Aktualisierung abonnierter Sendungen</string>
<string name="revert">Rückgängig</string>
<string name="subscription_list_name">Abonniert</string>
<string name="pref_category_bypass">ISP-Umgehungen</string>
</resources> </resources>

View file

@ -150,7 +150,7 @@
<string name="episodes">Επεισόδια</string> <string name="episodes">Επεισόδια</string>
<string name="episodes_range">%d-%d</string> <string name="episodes_range">%d-%d</string>
<string name="episode_format" formatted="true">%d %s</string> <string name="episode_format" formatted="true">%d %s</string>
<string name="season_short">Κ</string> <string name="season_short">Σ</string>
<string name="episode_short">E</string> <string name="episode_short">E</string>
<string name="no_episodes_found">Δεν βρέθηκαν επεισόδια</string> <string name="no_episodes_found">Δεν βρέθηκαν επεισόδια</string>
<string name="delete_file">Διαγραφή αρχείου</string> <string name="delete_file">Διαγραφή αρχείου</string>

View file

@ -24,7 +24,7 @@
<string name="pref_filter_search_quality">Ocultar la calidad de video en los resultados de búsqueda</string> <string name="pref_filter_search_quality">Ocultar la calidad de video en los resultados de búsqueda</string>
<string name="pref_category_player_layout">Diseño</string> <string name="pref_category_player_layout">Diseño</string>
<string name="category_ui">Diseño</string> <string name="category_ui">Diseño</string>
<string name="watch_quality_pref">Calidad de visualización preferida</string> <string name="watch_quality_pref">Calidad de visualización preferida (WiFi)</string>
<string name="player_pref">Reproductor de video preferido</string> <string name="player_pref">Reproductor de video preferido</string>
<string name="emulator_layout">Diseño para emulador</string> <string name="emulator_layout">Diseño para emulador</string>
<string name="app_layout">Diseño de la aplicación</string> <string name="app_layout">Diseño de la aplicación</string>
@ -511,4 +511,22 @@
<string name="pref_category_android_tv">Android TV</string> <string name="pref_category_android_tv">Android TV</string>
<string name="android_tv_interface_on_seek_settings_summary">La cantidad de búsqueda utilizada cuando la jugadora es visible</string> <string name="android_tv_interface_on_seek_settings_summary">La cantidad de búsqueda utilizada cuando la jugadora es visible</string>
<string name="android_tv_interface_off_seek_settings_summary">La cantidad de búsqueda utilizada cuando el jugador está oculto</string> <string name="android_tv_interface_off_seek_settings_summary">La cantidad de búsqueda utilizada cuando el jugador está oculto</string>
<string name="stop">Parar</string>
<string name="test_failed">Falló</string>
<string name="test_log">Registro</string>
<string name="start">Empezar</string>
<string name="test_passed">Aprobado</string>
<string name="category_provider_test">Prueba del proveedor</string>
<string name="restart">Reiniciar</string>
<string name="subscription_list_name">Suscrito</string>
<string name="subscription_new">Suscrito a %s</string>
<string name="subscription_deleted">Darse de baja de %s</string>
<string name="subscription_in_progress_notification">Actualizando los programas suscritos</string>
<string name="subscription_episode_released">¡Episodio %d publicado!</string>
<string name="jsdelivr_proxy">Proxy raw.githubusercontent.com</string>
<string name="jsdelivr_enabled">No se ha podido acceder a GitHub, activando el proxy jsdelivr.</string>
<string name="jsdelivr_proxy_summary">Evita el bloqueo de GitHub usando jsdelivr, puede causar que las actualizaciones se retrasen unos días.</string>
<string name="revert">Revertir</string>
<string name="pref_category_bypass">ISP Bypasses</string>
<string name="watch_quality_pref_data">Calidad de visualización preferida (Datos móviles)</string>
</resources> </resources>

View file

@ -6,12 +6,12 @@
<string name="title_downloads">Téléchargements</string> <string name="title_downloads">Téléchargements</string>
<string name="title_settings">Paramètres</string> <string name="title_settings">Paramètres</string>
<string name="search_hint">Rechercher…</string> <string name="search_hint">Rechercher…</string>
<string name="search_poster_img_des">Miniature</string> <string name="search_poster_img_des">Affiche</string>
<string name="no_data">Aucune Donnée</string> <string name="no_data">Aucune Donnée</string>
<string name="episode_more_options_des">Plus d\'options</string> <string name="episode_more_options_des">Plus d\'options</string>
<string name="go_back_img_des">Retour</string> <string name="go_back_img_des">Retour</string>
<string name="next_episode">Épisode suivant</string> <string name="next_episode">Épisode suivant</string>
<string name="result_poster_img_des">Miniature</string> <string name="result_poster_img_des">Affiche</string>
<string name="result_tags">Genres</string> <string name="result_tags">Genres</string>
<string name="result_share">Partager</string> <string name="result_share">Partager</string>
<string name="result_open_in_browser">Ouvrir dans le navigateur</string> <string name="result_open_in_browser">Ouvrir dans le navigateur</string>
@ -29,7 +29,7 @@
<string name="pick_subtitle">Sous-titres</string> <string name="pick_subtitle">Sous-titres</string>
<string name="reload_error">Réessayer la connection…</string> <string name="reload_error">Réessayer la connection…</string>
<string name="go_back">Retour</string> <string name="go_back">Retour</string>
<string name="episode_poster_img_des">Miniature de l\'Épisode</string> <string name="episode_poster_img_des">Affiche de l\'épisode</string>
<string name="play_episode">Lire l\'Épisode</string> <string name="play_episode">Lire l\'Épisode</string>
<!--<string name="need_storage">Permet de télécharger les épisodes</string>--> <!--<string name="need_storage">Permet de télécharger les épisodes</string>-->
<string name="download">Télécharger</string> <string name="download">Télécharger</string>
@ -51,10 +51,10 @@
<string name="pref_disable_acra">Désactiver le rapport de bug automatique</string> <string name="pref_disable_acra">Désactiver le rapport de bug automatique</string>
<string name="home_more_info">Plus d\'informations</string> <string name="home_more_info">Plus d\'informations</string>
<string name="home_expanded_hide">Cacher</string> <string name="home_expanded_hide">Cacher</string>
<string name="home_main_poster_img_des">Poster principal</string> <string name="home_main_poster_img_des">Affiche principale</string>
<string name="home_play">Lecture</string> <string name="home_play">Lecture</string>
<string name="home_info">Info</string> <string name="home_info">Infos</string>
<string name="home_next_random_img_des">Suivant Aléatoire</string> <string name="home_next_random_img_des">Aléatoire suivant</string>
<string name="home_change_provider_img_des">Changer le fournisseur</string> <string name="home_change_provider_img_des">Changer le fournisseur</string>
<string name="filter_bookmarks">Filtrer les marques-pages</string> <string name="filter_bookmarks">Filtrer les marques-pages</string>
<string name="error_bookmarks_text">Marque-pages</string> <string name="error_bookmarks_text">Marque-pages</string>
@ -211,7 +211,7 @@
<string name="actor_background">Arrière plan</string> <string name="actor_background">Arrière plan</string>
<string name="home_source">Source</string> <string name="home_source">Source</string>
<string name="home_random">Aléatoire</string> <string name="home_random">Aléatoire</string>
<string name="coming_soon">À venir </string> <string name="coming_soon">Bientôt disponible</string>
<string name="poster_image">Image de l\'affiche</string> <string name="poster_image">Image de l\'affiche</string>
<string name="authenticated_user">%s Connecté</string> <string name="authenticated_user">%s Connecté</string>
<string name="action_add_to_bookmarks">Définir le statut de visionage</string> <string name="action_add_to_bookmarks">Définir le statut de visionage</string>
@ -490,4 +490,22 @@
<string name="delayed_update_notice">L\'application sera mise à jour dès la fin de la session</string> <string name="delayed_update_notice">L\'application sera mise à jour dès la fin de la session</string>
<string name="plugin_downloaded">Plugin Téléchargé</string> <string name="plugin_downloaded">Plugin Téléchargé</string>
<string name="action_remove_from_watched">Retirer de la vue</string> <string name="action_remove_from_watched">Retirer de la vue</string>
<string name="library">Bibliothèque</string>
<string name="browser">Navigateur</string>
<string name="sort">Trier</string>
<string name="sort_rating_asc">Note (basse à haute)</string>
<string name="sort_rating_desc">Note (haut à bas)</string>
<string name="sort_alphabetical_a">Alphabétique (A à Z)</string>
<string name="empty_library_no_accounts_message">On dirait que votre bibliothèque est vide :(
\nConnectez-vous à un compte ou ajoutez des séries à votre bibliothèque locale</string>
<string name="empty_library_logged_in_message">Il semble que cette liste soit vide, essayez d\'en choisir une autre</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="sort_by">Trié par</string>
<string name="sort_alphabetical_z">Alphabétique (Z à A)</string>
<string name="select_library">Sélectionnez la bibliothèque</string>
<string name="open_with">Ouvrir avec</string>
<string name="sort_updated_new">Mis à jour (Nouveau vers ancien)</string>
<string name="sort_updated_old">Mis à jour (ancien vers nouveau)</string>
<string name="safe_mode_file">Fichier du mode sans échec trouvé !
\nAucune extension ne sera chargée au démarrage avant que le fichier ne soit enlevé.</string>
</resources> </resources>

View file

@ -531,4 +531,26 @@
<string name="empty_library_logged_in_message">Čini se da je ova lista prazna, pokušajte se prebaciti na drugu</string> <string name="empty_library_logged_in_message">Čini se da je ova lista prazna, pokušajte se prebaciti na drugu</string>
<string name="safe_mode_file">Pronađena datoteka sigurnog načina rada! <string name="safe_mode_file">Pronađena datoteka sigurnog načina rada!
\nNe učitavaju se ekstenzije pri pokretanju dok se datoteka ne ukloni.</string> \nNe učitavaju se ekstenzije pri pokretanju dok se datoteka ne ukloni.</string>
<string name="android_tv_interface_on_seek_settings">Prikazan player- iznos preskakanja</string>
<string name="android_tv_interface_on_seek_settings_summary">Količina preskakanja koja se koristi kada je player vidljiv</string>
<string name="android_tv_interface_off_seek_settings">Player skriven - Količina preskakanja</string>
<string name="android_tv_interface_off_seek_settings_summary">Količina preskakanja koja se koristi kada je player skriven</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="test_passed">Prošlo</string>
<string name="restart">Restart</string>
<string name="test_log">Log</string>
<string name="start">Početak</string>
<string name="test_failed">Neuspješno</string>
<string name="stop">Stop</string>
<string name="category_provider_test">Test pružatelja usluga</string>
<string name="subscription_in_progress_notification">Ažuriram pretplaćene serije</string>
<string name="subscription_episode_released">Epizoda %d izbačena!</string>
<string name="subscription_list_name">Pretplaćeno</string>
<string name="subscription_new">Pretplaćen na %s</string>
<string name="subscription_deleted">Otkazana pretplata sa %s</string>
<string name="revert">Vraćanje</string>
<string name="pref_category_bypass">ISP zaobilaznice</string>
<string name="jsdelivr_proxy">raw.githubusercontent.com Proxy</string>
<string name="jsdelivr_enabled">Neuspješno dohvaćanje GitHuba, omogućavanje jsdelivr proxyja.</string>
<string name="jsdelivr_proxy_summary">Zaobilazi blokiranje GitHuba pomoću jsdelivr, može uzrokovati odgode ažuriranja za nekoliko dana.</string>
</resources> </resources>

View file

@ -35,7 +35,7 @@
<string name="skip_loading">Skip Loading</string> <string name="skip_loading">Skip Loading</string>
<string name="loading">Loading…</string> <string name="loading">Loading…</string>
<string name="type_watching">Sedang Menonton</string> <string name="type_watching">Sedang Menonton</string>
<string name="type_on_hold">Tertahan</string> <string name="type_on_hold">Tertunda</string>
<string name="type_completed">Selesai</string> <string name="type_completed">Selesai</string>
<string name="type_dropped">Dihentikan</string> <string name="type_dropped">Dihentikan</string>
<string name="type_plan_to_watch">Rencana untuk Menonton</string> <string name="type_plan_to_watch">Rencana untuk Menonton</string>
@ -387,7 +387,7 @@
<string name="episode_format" formatted="true">%d %s</string> <string name="episode_format" formatted="true">%d %s</string>
<string name="nsfw">17+</string> <string name="nsfw">17+</string>
<string name="others">Lainnya</string> <string name="others">Lainnya</string>
<string name="other_singular">Vidio</string> <string name="other_singular">Video</string>
<string name="add_site_pref">Duplikasi Website</string> <string name="add_site_pref">Duplikasi Website</string>
<string name="add_site_summary">Duplikasi website yang telah ada, dengan alamat berbeda</string> <string name="add_site_summary">Duplikasi website yang telah ada, dengan alamat berbeda</string>
<string name="pref_category_links">Tautan</string> <string name="pref_category_links">Tautan</string>
@ -395,7 +395,7 @@
<string name="pref_category_backup">Cadangkan</string> <string name="pref_category_backup">Cadangkan</string>
<string name="pref_category_extensions">Fitur Tambahan</string> <string name="pref_category_extensions">Fitur Tambahan</string>
<string name="play_with_app_name">Putar di CloudStream</string> <string name="play_with_app_name">Putar di CloudStream</string>
<string name="pref_filter_search_quality">Sembunyikan kualitas vidio terpilih di pencarian</string> <string name="pref_filter_search_quality">Sembunyikan kualitas video terpilih di pencarian</string>
<string name="season_format">%s %d%s</string> <string name="season_format">%s %d%s</string>
<string name="livestreams">Siaran langsung</string> <string name="livestreams">Siaran langsung</string>
<string name="remove_site_pref">Hapus Website</string> <string name="remove_site_pref">Hapus Website</string>
@ -444,7 +444,7 @@
<string name="extension_rating" formatted="true">Peringkat: %s</string> <string name="extension_rating" formatted="true">Peringkat: %s</string>
<string name="extension_authors">Pembuat</string> <string name="extension_authors">Pembuat</string>
<string name="extension_language">Bahasa</string> <string name="extension_language">Bahasa</string>
<string name="player_pref">Pemutar vidio utama</string> <string name="player_pref">Pemutar video utama</string>
<string name="player_settings_play_in_app">Pemutar Bawaan</string> <string name="player_settings_play_in_app">Pemutar Bawaan</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>
@ -475,7 +475,7 @@
<string name="subtitles_remove_captions">Hapus teks tertutup dari subtitel</string> <string name="subtitles_remove_captions">Hapus teks tertutup dari subtitel</string>
<string name="subtitles_remove_bloat">Hapus karakter sampah dari subtitel</string> <string name="subtitles_remove_bloat">Hapus karakter sampah dari subtitel</string>
<string name="audio_tracks">Audio Trek</string> <string name="audio_tracks">Audio Trek</string>
<string name="video_tracks">Vidio Trek</string> <string name="video_tracks">Video Trek</string>
<string name="extension_types">Dukungan</string> <string name="extension_types">Dukungan</string>
<string name="hls_playlist">Daftar putar HLS</string> <string name="hls_playlist">Daftar putar HLS</string>
<string name="apk_installer_settings">Penginstal APK</string> <string name="apk_installer_settings">Penginstal APK</string>
@ -529,4 +529,26 @@
<string name="empty_library_logged_in_message">Yahh daftar ini kosong, coba ganti ke yang lain</string> <string name="empty_library_logged_in_message">Yahh daftar ini kosong, coba ganti ke yang lain</string>
<string name="safe_mode_file">Mode aman file ditemukan! <string name="safe_mode_file">Mode aman file ditemukan!
\nTidak memuat ekstensi pada startup sampai berkas dihapus.</string> \nTidak memuat ekstensi pada startup sampai berkas dihapus.</string>
<string name="android_tv_interface_off_seek_settings">Sembunyikan Pemutaran - Geser</string>
<string name="android_tv_interface_on_seek_settings">Pemutar terlihat - Geser</string>
<string name="android_tv_interface_on_seek_settings_summary">Geser untuk menghilangkan</string>
<string name="android_tv_interface_off_seek_settings_summary">Geser untuk menghilangkan</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="test_log">Log</string>
<string name="test_passed">Berhasil</string>
<string name="category_provider_test">Tes provider</string>
<string name="stop">Berhenti</string>
<string name="start">Mulai</string>
<string name="restart">Mulai lagi</string>
<string name="test_failed">Gagal</string>
<string name="subscription_in_progress_notification">Memperbarui acara langganan</string>
<string name="subscription_list_name">Berlangganan</string>
<string name="subscription_new">Berlangganan ke %s</string>
<string name="subscription_deleted">Berhenti berlangganan di %s</string>
<string name="subscription_episode_released">Episode %d telah rilis!</string>
<string name="jsdelivr_proxy">raw.githubusercontent.com Proksi</string>
<string name="jsdelivr_enabled">Gagal mencapai GitHub, mengaktifkan proksi jsdelivr.</string>
<string name="jsdelivr_proxy_summary">Bypass pemblokiran Github menggunakan JSDeliVR, dapat menyebabkan pembaruan tertunda beberapa hari.</string>
<string name="pref_category_bypass">Bypass ISP</string>
<string name="revert">Pulihkan</string>
</resources> </resources>

View file

@ -528,4 +528,26 @@
<string name="empty_library_logged_in_message">Sembra che questa lista sia vuota, prova a passare a un\'altra</string> <string name="empty_library_logged_in_message">Sembra che questa lista sia vuota, prova a passare a un\'altra</string>
<string name="safe_mode_file">File \"safe mode\" trovato! <string name="safe_mode_file">File \"safe mode\" trovato!
\nAll\'avvio non sarà caricata alcuna estensione finchè il file non verrà rimosso.</string> \nAll\'avvio non sarà caricata alcuna estensione finchè il file non verrà rimosso.</string>
<string name="android_tv_interface_off_seek_settings_summary">Quantità di ricerca usata quando il player è nascosto</string>
<string name="pref_category_android_tv">TV Android</string>
<string name="android_tv_interface_on_seek_settings_summary">Quantità di ricerca usata quando il player è visibile</string>
<string name="android_tv_interface_on_seek_settings">Player visibile - Quantità di ricerca</string>
<string name="android_tv_interface_off_seek_settings">Player nascosto - Quantità di ricerca</string>
<string name="test_log">Registro</string>
<string name="start">Avvia</string>
<string name="category_provider_test">Test del provider</string>
<string name="restart">Riavvia</string>
<string name="stop">Ferma</string>
<string name="test_passed">Superato</string>
<string name="test_failed">Fallito</string>
<string name="jsdelivr_proxy">Proxy raw.githubusercontent.com</string>
<string name="subscription_deleted">Disiscritto da %s</string>
<string name="subscription_list_name">Iscritto</string>
<string name="subscription_new">Iscritto a %s</string>
<string name="jsdelivr_enabled">Impossibile contattare GitHub, abilitazione proxy jsdelivr avviata.</string>
<string name="jsdelivr_proxy_summary">Bypassa il blocco di GitHub utilizzando jsdelivr, potrebbe causare un ritardo di alcuni giorni.</string>
<string name="pref_category_bypass">Baypass ISP</string>
<string name="revert">Ripristina</string>
<string name="subscription_in_progress_notification">Aggiornando shows a cui sei iscritto</string>
<string name="subscription_episode_released">L\'episodio %d è stato rilasciato!</string>
</resources> </resources>

View file

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="next_episode_time_min_format" formatted="true">%d分</string>
<string name="title_downloads">ダウンロード</string>
<string name="title_search">検索</string>
<string name="title_settings">設定</string>
<string name="result_share">シェア</string>
<string name="movies">映画</string>
<string name="title_home">ホーム</string>
<string name="library">ライブラリ</string>
<string name="home_play">再生</string>
<string name="next_episode_time_day_format" formatted="true">%d日 %d時間%d分</string>
<string name="next_episode_time_hour_format" formatted="true">%d時間%d分</string>
<string name="search_hint">検索…</string>
<string name="download">ダウンロード</string>
<string name="home_info">情報</string>
<string name="season">シーズン</string>
<string name="trailer">予告編</string>
<string name="tv_series_singular">シリーズ</string>
<string name="episodes">エピソード</string>
<string name="player_speed_text_format" formatted="true">再生速度 (%.2fx)</string>
<string name="next_episode">次のエピソード</string>
<string name="sort_apply">適用</string>
<string name="category_account">アカウント</string>
<string name="cartoons">カートゥーン</string>
<string name="tv_series">TVシリーズ</string>
<string name="torrent">トレント</string>
<string name="documentaries">ドキュメンタリー</string>
<string name="ova">OVA</string>
<string name="asian_drama">アジアドラマ</string>
<string name="livestreams">ライブ配信</string>
<string name="movies_singular">映画</string>
<string name="others">その他</string>
<string name="cartoons_singular">カートゥーン</string>
<string name="torrent_singular">トレント</string>
<string name="documentaries_singular">ドキュメンタリー</string>
<string name="asian_drama_singular">アジアドラマ</string>
<string name="live_singular">ライブ配信</string>
<string name="nsfw_singular">NSFW</string>
<string name="sort_cancel">キャンセル</string>
<string name="anime">アニメ</string>
<string name="video_lock">ロック</string>
<string name="video_source">ソース</string>
<string name="nsfw">NSFW</string>
<string name="clear_history">履歴を削除</string>
<string name="continue_watching">視聴中コンテンツ</string>
<string name="category_general">全般</string>
<string name="other_singular">動画</string>
<string name="category_player">プレーヤー</string>
<string name="type_plan_to_watch">懐う</string>
<string name="play_trailer_button">予告編を再生</string>
<string name="episode_short">エピソード</string>
<string name="type_watching">視聴</string>
<string name="result_tags">ジャンル</string>
<string name="play_movie_button">映画を再生</string>
<string name="pick_subtitle">字幕</string>
<string name="app_name">CloudStream</string>
<string name="play_with_app_name">CloudStreamで再生</string>
<string name="browser">ブラウザ</string>
<string name="type_completed">完成</string>
<string name="type_dropped">放置</string>
<string name="type_on_hold">保留</string>
<string name="loading">ローディング…</string>
<string name="result_open_in_browser">ブラウザで開く</string>
<string name="season_short">シーズン</string>
<string name="resume_time_left" formatted="true">残り
\n%d分</string>
<string name="play_episode">再生エピソード</string>
<string name="downloaded">ダウンロード済</string>
<string name="pref_category_backup">バックアップ</string>
<string name="home_source">ソース</string>
<string name="history">履歴</string>
<string name="result_poster_img_des">ポスター</string>
<string name="type_none">なし</string>
<string name="sort_copy">コピー</string>
<string name="sort_close">閉じる</string>
<string name="sort_save">保存</string>
<string name="sort_clear">消去</string>
<string name="app_dub_sub_episode_text_format" formatted="true">%sエピ%d</string>
<string name="cast_format" formatted="true">出演者:%s</string>
<string name="search_poster_img_des">ポスター</string>
<string name="episode_poster_img_des">エピソードポスター</string>
<string name="home_main_poster_img_des">主要ポスター</string>
<string name="home_next_random_img_des">次のランダム</string>
<string name="go_back_img_des">戻り</string>
<string name="rated_format" formatted="true">視聴率 %.1f</string>
<string name="new_update_format" formatted="true">新しいアップデートを発見!
\n%s -&gt; %s</string>
<string name="duration_format" formatted="true">%d分</string>
<string name="search_hint_site" formatted="true">%sを検索…</string>
<string name="pick_source">ソース</string>
<string name="filler" formatted="true">ろくごうきじ</string>
<string name="reload_error">接続を再試行…</string>
<string name="go_back">戻り</string>
<string name="action_remove_from_bookmarks">削除</string>
<string name="home_more_info">詳細情報</string>
<string name="home_expanded_hide">閉じる</string>
<string name="category_updates">アップデート・バックアップ</string>
<string name="app_language">アプリ言語</string>
<string name="github">GitHubギットハブ</string>
<string name="go_back_30">-30</string>
<string name="go_forward_30">+30</string>
<string name="legal_notice">免責</string>
<string name="pref_category_extensions">拡張機能</string>
<string name="pref_category_app_updates">アプリ更新</string>
<string name="category_providers">提供者</string>
<string name="pref_category_subtitles">字幕</string>
<string name="pref_category_ui_features">特徴</string>
<string name="pref_category_defaults">デフォルト</string>
<string name="automatic">自動</string>
<string name="home_random">任意</string>
<string name="extensions">拡張機能</string>
<string name="pref_category_links">リンク</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="login">ログイン</string>
<string name="logout">ログアウト</string>
<string name="max">最大</string>
<string name="min">最小</string>
<string name="none">なし</string>
<string name="next"></string>
<string name="is_adult">18+</string>
<string name="no"></string>
<string name="open_with">で開く</string>
<string name="episode">エピソード</string>
<string name="duration">時間</string>
<string name="synopsis">概要</string>
<string name="site">サイト</string>
<string name="used_storage">使用</string>
<string name="app_storage">アプリ</string>
<string name="action_open_watching">詳細情報</string>
<string name="action_remove_watching">削除</string>
<string name="picture_in_picture">ピクチャーインピクチャー</string>
<string name="player_subtitles_settings">字幕</string>
<string name="settings_info">情報</string>
<string name="pause">一時停止</string>
<string name="play_episode_toast">再生エピソード</string>
<string name="delete">削除</string>
<string name="start">開始</string>
<string name="status">状態</string>
<string name="year"></string>
<string name="resume">再開</string>
<string name="test_failed">失敗</string>
<string name="test_passed">合格</string>
<string name="free_storage">空き</string>
<string name="status_completed">完成</string>
<string name="status_ongoing">進行中</string>
<string name="normal">デフォルト</string>
<string name="player_settings_play_in_browser">ウェブブラウザ</string>
<string name="player_settings_play_in_vlc">VLC</string>
<string name="player_settings_play_in_mpv">MPV</string>
<string name="extension_language">言語</string>
<string name="extension_authors">作成者</string>
<string name="extension_size">サイズ</string>
<string name="extension_status">状態</string>
<string name="extension_version">バージョン</string>
<string name="extension_rating" formatted="true">視聴率 %s</string>
<string name="rating">視聴率</string>
<string name="default_subtitles">デフォルト</string>
<string name="download_failed">ダウンロード失敗</string>
<string name="download_started">ダウンロード開始</string>
<string name="download_done">ダウンロード完了</string>
<string name="download_canceled">ダウンロード終了</string>
<string name="stream">ストリーム</string>
<string name="update_started">アップデート開始</string>
<string name="no_season">シーズンなし</string>
<string name="no_subtitles">字幕なし</string>
<string name="video_aspect_ratio_resize">アスペクト比</string>
<string name="skip_loading">ロードをスキップする</string>
<string name="episode_more_options_des">その他のオプション</string>
<string name="no_data">データなし</string>
<string name="downloading">ダウンロード中</string>
<string name="error_bookmarks_text">ブックマーク</string>
<string name="download_storage_text">内部記憶装置</string>
<string name="download_paused">ダウンロードが一時停止</string>
<string name="provider_info_meta">メタデータはこのサイトでは提供されません。メタデータがサイト上に存在しない場合、ビデオの読み込みに失敗します。</string>
<string name="torrent_plot">記述</string>
<string name="show_log_cat">Logcat 🐈を表示</string>
<string name="test_log">ログ</string>
<string name="search">検索</string>
<string name="discord">Discordに参加</string>
<string name="update">アップデート</string>
<string name="check_for_update">アップデートを確認</string>
<string name="show_title">作品名</string>
<string name="update_notification_installing">アプリのアップデートをインストール中…</string>
</resources>

View file

@ -1,3 +1,128 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
</resources> <string name="app_dub_sub_episode_text_format" formatted="true">%sಎಪಿ%d</string>
<string name="cast_format" formatted="true">ಕ್ಯಾಸ್ಟ್:%s</string>
<string name="go_back_img_des">ಹಿಂದೆ ಹೋಗು</string>
<string name="filler" formatted="true">ಫಿಲ್ಲರ್</string>
<string name="title_search">ಹುಡುಕು</string>
<string name="title_downloads">ಡೌನ್ಲೋಡ್</string>
<string name="subs_font">ಫಾಂಟ್</string>
<string name="search_provider_text_providers">ಪೂರೈಕೆದಾರರನ್ನು ಬಳಸಿಕೊಂಡು ಹುಡುಕಿ</string>
<string name="search_provider_text_types">ಪ್ರಕಾರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹುಡುಕಿ</string>
<string name="benene_count_text_none">ಯಾವುದೇ ಬೆನೆನ್ಸ್ ನೀಡಿಲ್ಲ</string>
<string name="subs_auto_select_language">ಸ್ವಯಂ-ಆಯ್ಕೆ ಭಾಷೆ</string>
<string name="action_open_watching">ಹೆಚ್ಚಿನ ಮಾಹಿತಿ</string>
<string name="action_open_play">\@ಸ್ಟ್ರಿಂಗ್/ಹೋಮ್_ಪ್ಲೇ</string>
<string name="vpn_might_be_needed">ಈ ಪೂರೈಕೆದಾರರು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಲು VPN ಬೇಕಾಗಬಹುದು</string>
<string name="player_size_settings_des">ಕಪ್ಪು ಗಡಿಗಳನ್ನು ತೆಗೆದುಹಾಕಿ</string>
<string name="next_episode_format" formatted="true">ಸಂಚಿಕೆ%d ಬಿಡುಗಡೆಯಾಗಲಿದೆ</string>
<string name="next_episode_time_hour_format" formatted="true">%dh %dm</string>
<string name="result_poster_img_des">ಪೋಸ್ಟರ್</string>
<string name="search_poster_img_des">ಪೋಸ್ಟರ್</string>
<string name="episode_poster_img_des">ಸಂಚಿಕೆ ಪೋಸ್ಟರ್</string>
<string name="home_main_poster_img_des">ಮೇನ್ ಪೋಸ್ಟರ್</string>
<string name="update_started">ಅಪ್ಡೇಟ್ ಪ್ರಾರಂಭವಾಗಿದೆ</string>
<string name="error_loading_links_toast">ಲೋಡಿಂಗ್ ಲಿಂಕ್ ಎರರ್ ಬಂದಿದೆ</string>
<string name="download_storage_text">ಇಂಟರ್ನಲ್ ಸ್ಟೋರೇಜ್</string>
<string name="app_dubbed_text">ಡಬ್</string>
<string name="app_subbed_text">ಸಬ್</string>
<string name="pref_disable_acra">ಸ್ವಯಂಚಾಲಿತ ದೋಷ ವರದಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</string>
<string name="home_expanded_hide">ಹೈಡ್</string>
<string name="home_play">ಪ್ಲೇ</string>
<string name="home_info">ಮಾಹಿತಿ</string>
<string name="action_add_to_bookmarks">ಸೆಟ್ ವಾಚ್ ಸ್ಟೇಟಸ್</string>
<string name="sort_apply">ಅನ್ವಯಿಸು</string>
<string name="sort_cancel">ರದ್ದುಮಾಡು</string>
<string name="subs_subtitle_elevation">ಸಬ್ ಟೈಟಲ್ಸ್ ಎಲೆವಷನ್</string>
<string name="subs_font_size">ಫಾಂಟ್ ಸೈಜ್</string>
<string name="subs_subtitle_languages">ಸಬ್ ಟೈಟಲ್ಸ್ ಭಾಷೆ</string>
<string name="action_remove_watching">ತೆಗೆದುಹಾಕಿ</string>
<string name="vpn_torrent">ಈ ಪೂರೈಕೆದಾರರು ಟೊರೆಂಟ್ ಆಗಿದೆ, VPN ಅನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ</string>
<string name="normal_no_plot">ಯಾವುದೇ ಪ್ಲಾಟ್ ಕಂಡುಬಂದಿಲ್ಲ</string>
<string name="show_log_cat">ಲಾಗ್‌ಕ್ಯಾಟ್ 🐈 ತೋರಿಸಿ</string>
<string name="test_log">ಲಾಗ್</string>
<string name="picture_in_picture">ಚಿತ್ರದಲ್ಲಿ-ಚಿತ್ರದಲ್ಲಿ</string>
<string name="player_size_settings">ಪ್ಲೇಯರ್ ಮರುಗಾತ್ರಗೊಳಿಸಿ ಬಟನ್</string>
<string name="player_subtitles_settings">ಸಬ್ ಟೈಟಲ್ಸ್</string>
<string name="player_subtitles_settings_des">ಪ್ಲೇಯರ್ ಸಬ್ ಟೈಟಲ್ಸ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</string>
<string name="chromecast_subtitles_settings_des">ಕ್ರೋಮ್ ಕ್ಯಾಸ್ಟ್ ಸಬ್ ಟೈಟಲ್ಸ್ ಸೆಟ್ಟಿಂಗ್ಸ್</string>
<string name="go_back">ಹಿಂದೆ ಹೋಗು</string>
<string name="popup_pause_download">ಡೌನ್‌ಲೋಡ್ ವಿರಾಮಗೊಳಿಸಿ</string>
<string name="error_bookmarks_text">ಬುಕ್‌ಮಾರ್ಕ್‌</string>
<string name="subs_background_color">ಬ್ಯಾಕ್ ಗ್ರೌಂಡ್ ಕಲರ್</string>
<string name="benene_count_text">%d ಡೇವ್‌ಗಳಿಗೆ ಬೆನೆನೆಸ್ ನೀಡಲಾಗಿದೆ</string>
<string name="subs_hold_to_reset_to_default">ಡೀಫಾಲ್ಟ್‌ಗೆ ಮರುಹೊಂದಿಸಲು ಹಿಡಿದುಕೊಳ್ಳಿ</string>
<string name="provider_info_meta">ಸೈಟ್‌ನಿಂದ ಮೆಟಾಡೇಟಾವನ್ನು ಒದಗಿಸಲಾಗಿಲ್ಲ, ಅದು ಸೈಟ್‌ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದರೆ ವೀಡಿಯೊ ಲೋಡಿಂಗ್ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.</string>
<string name="picture_in_picture_des">ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೇಲೆ ಚಿಕಣಿ ಪ್ಲೇಯರ್‌ನಲ್ಲಿ ಪ್ಲೇಬ್ಯಾಕ್ ಅನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ</string>
<string name="chromecast_subtitles_settings">ಕ್ರೋಮ್ ಕ್ಯಾಸ್ಟ್ ಸಬ್ ಟೈಟಲ್ಸ್</string>
<string name="rated_format" formatted="true">ರೇಟೆಡ್:%.1f</string>
<string name="action_remove_from_bookmarks">ತೆಗೆದುಹಾಕಿ</string>
<string name="popup_resume_download">ಡೌನ್‌ಲೋಡ್ ಅನ್ನು ಪುನರಾರಂಭಿಸಿ</string>
<string name="sort_close">ಕ್ಲೋಸ್</string>
<string name="sort_clear">ಕ್ಲಿಯರ್</string>
<string name="sort_save">ಸೇವ್</string>
<string name="subtitles_settings">ಸಬ್ ಟೈಟಲ್ಸ್ ಸೆಟ್ಟಿಂಗ್ಸ್</string>
<string name="popup_play_file">ಫೈಲ್ ಪ್ಲೇ</string>
<string name="subs_text_color">ಟೆಕ್ಸ್ಟ್ ಕಲರ್</string>
<string name="subs_outline_color">ಔಟ್ ಲೈನ್ ಕಲರ್</string>
<string name="subs_window_color">ವಿಂಡೋ ಕಲರ್</string>
<string name="subs_edge_type">ಎಡ್ಜ್ ಟೈಪ್</string>
<string name="home_change_provider_img_des">ಪ್ರೊವೈಡರ್ ಬದಲಾಯಿಸಿ</string>
<string name="duration_format" formatted="true">%dಮಿನ</string>
<string name="torrent_plot">ವಿವರಣೆ</string>
<string name="player_speed_text_format" formatted="true">ಸ್ಪೀಡ್(%.2fx)</string>
<string name="title_home">ಹೋಂ</string>
<string name="pick_subtitle">ಸಬ್ ಟೈಟಲ್ಸ್</string>
<string name="title_settings">ಸೆಟ್ಟಿಂಗ್ಸ್</string>
<string name="filter_bookmarks">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ</string>
<string name="search_hint">ಹುಡುಕು…</string>
<string name="play_movie_button">ಚಲನಚಿತ್ರವನ್ನು ಪ್ಲೇ ಮಾಡಿ</string>
<string name="preview_background_img_des">ಪ್ರಿವ್ಯೂ ಹಿನ್ನೆಲೆ</string>
<string name="next_episode">ಮುಂದಿನ ಸಂಚಿಕೆ</string>
<string name="app_name">ಕ್ಲೌಡ್ ಸ್ಟ್ರೀಮ್</string>
<string name="downloading">ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ</string>
<string name="stream">ಸ್ಟ್ರೀಮ್</string>
<string name="result_share">ಶೇರ್</string>
<string name="popup_delete_file">ಫೈಲ್ ಅಳಿಸಿ</string>
<string name="home_more_info">ಹೆಚ್ಚಿನ ಮಾಹಿತಿ</string>
<string name="new_update_format" formatted="true">ಹೊಸ ಅಪ್ಡೇಟ್ ಬಂದಿದೆ
\n%s-%s</string>
<string name="loading">ಲೋಡಿಂಗ್…</string>
<string name="subs_download_languages">ಡೌನ್‌ಲೋಡ್ ಭಾಷೆಗಳನ್ನು ಮಾಡಿ</string>
<string name="play_livestream_button">ಲೈವ್‌ಸ್ಟ್ರೀಮ್ ಪ್ಲೇ ಮಾಡಿ</string>
<string name="play_with_app_name">ಕ್ಲೌಡ್ ಸ್ಟ್ರೀಮ್ ಇದರೊಂದಿಗೆ ಪ್ಲೇ ಮಾಡಿ</string>
<string name="type_plan_to_watch">ವೀಕ್ಷಿಸಲು ಯೋಜನೆ</string>
<string name="play_episode">ಸಂಚಿಕೆಯನ್ನು ಪ್ಲೇ ಮಾಡಿ</string>
<string name="continue_watching">ಕಂಟಿನ್ಯೂ ವಾಟಚಿಂಗ್</string>
<string name="torrent_no_plot">ಯಾವುದೇ ವಿವರಣೆ ಕಂಡುಬಂದಿಲ್ಲ</string>
<string name="play_torrent_button">ಸ್ಟ್ರೀಮ್ ಟೊರೆಂಟ್</string>
<string name="download">ಡೌನ್‌ಲೋಡ್</string>
<string name="sort_copy">ಕಾಪಿ</string>
<string name="no_data">ನೋ ಡೇಟಾ</string>
<string name="player_speed">ಪ್ಲೇಯರ್ ಸ್ಪೀಡ್</string>
<string name="next_episode_time_day_format" formatted="true">%d %dh %dm</string>
<string name="search_hint_site" formatted="true">ಹುಡುಕು %s…</string>
<string name="episode_more_options_des">ಹೆಚ್ಚಿನ ಆಯ್ಕೆ</string>
<string name="subs_import_text" formatted="true">ಫಾಂಟ್‌ಗಳನ್ನು ಇರಿಸುವ ಮೂಲಕ ಆಮದು ಮಾಡಿ %s</string>
<string name="next_episode_time_min_format" formatted="true">%dm</string>
<string name="result_tags">ಪ್ರಕಾರಗಳು</string>
<string name="result_open_in_browser">ಬ್ರೌಸರ್ ತೆರೆಯಿರಿ</string>
<string name="type_on_hold">ಆನ್-ಹೋಲ್ಡ್</string>
<string name="type_none">ನನ್</string>
<string name="reload_error">ಸಂಪರ್ಕವನ್ನು ಮರುಪ್ರಯತ್ನಿಸಿ…</string>
<string name="download_paused">ಡೌನ್‌ಲೋಡ್ ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</string>
<string name="download_failed">ಡೌನ್‌ಲೋಡ್ ವಿಫಲವಾಗಿದೆ</string>
<string name="download_done">ಡೌನ್‌ಲೋಡ್ ಮುಗಿದಿದೆ</string>
<string name="browser">ಬ್ರೌಸರ್</string>
<string name="skip_loading">ಸ್ಕಿಪ್ ಲೋಡಿಂಗ್</string>
<string name="type_watching">ವಾಚಿಂಗ್</string>
<string name="type_completed">ಪೂರ್ಣಗೊಂಡಿದೆ</string>
<string name="type_dropped">ಕೈಬಿಡಲಾಯಿತು</string>
<string name="type_re_watching">ಪುನಃ ವೀಕ್ಷಿಸುತ್ತಿದೆ</string>
<string name="play_trailer_button">ಟ್ರೈಲರ್ ಪ್ಲೇ ಮಾಡಿ</string>
<string name="pick_source">ಮೂಲಗಳು</string>
<string name="downloaded">ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</string>
<string name="download_started">ಡೌನ್‌ಲೋಡ್ ಪ್ರಾರಂಭವಾಗಿದೆ</string>
<string name="download_canceled">ಡೌನ್‌ಲೋಡ್ ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ</string>
<string name="home_next_random_img_des">ಮುಂದಿನ ರಾಂಡಮ್</string>
</resources>

View file

@ -373,7 +373,7 @@
<string name="skip_setup">Pomiń setup</string> <string name="skip_setup">Pomiń setup</string>
<string name="app_layout_subtext">Dostosuj wygląd aplikacji do urządzenia</string> <string name="app_layout_subtext">Dostosuj wygląd aplikacji do urządzenia</string>
<string name="crash_reporting_title">Zgłaszanie błędów</string> <string name="crash_reporting_title">Zgłaszanie błędów</string>
<string name="preferred_media_subtext">Co chciałbyś obejrzeć\?</string> <string name="preferred_media_subtext">Co chciałbyś obejrzeć</string>
<string name="setup_done">Gotowe</string> <string name="setup_done">Gotowe</string>
<string name="extensions">Rozszerzenia</string> <string name="extensions">Rozszerzenia</string>
<string name="add_repository">Dodaj repozytorium</string> <string name="add_repository">Dodaj repozytorium</string>
@ -509,4 +509,26 @@
<string name="empty_library_logged_in_message">Wygląda na to, że ta lista jest pusta, spróbuj przełączyć się na inną</string> <string name="empty_library_logged_in_message">Wygląda na to, że ta lista jest pusta, spróbuj przełączyć się na inną</string>
<string name="safe_mode_file">Znaleziono plik trybu bezpiecznego. <string name="safe_mode_file">Znaleziono plik trybu bezpiecznego.
\nRozszerzenia nie zostaną wczytane, dopóki plik nie zostanie usunięty.</string> \nRozszerzenia nie zostaną wczytane, dopóki plik nie zostanie usunięty.</string>
<string name="android_tv_interface_on_seek_settings_summary">Używana ilość przewijania, gdy widoczny jest odtwarzacz</string>
<string name="android_tv_interface_off_seek_settings">Ukryty odtwarzacz - ilość przewijania</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="android_tv_interface_on_seek_settings">Pokazany odtwarzacz — ilość przewijania</string>
<string name="android_tv_interface_off_seek_settings_summary">Używana ilość przewijania, gdy ukryty jest odtwarzacz</string>
<string name="test_log">Dziennik</string>
<string name="restart">Uruchom ponownie</string>
<string name="start">Rozpocznij</string>
<string name="test_failed">Nie powiodło się</string>
<string name="test_passed">Ukończone powodzeniem</string>
<string name="jsdelivr_proxy">Serwer pośredniczący raw.githubusercontent.com</string>
<string name="pref_category_bypass">Obejścia ISP</string>
<string name="category_provider_test">Test dostawcy</string>
<string name="stop">Zatrzymaj</string>
<string name="revert">Przywróć</string>
<string name="subscription_in_progress_notification">Aktualizowanie subskrybowanych programów</string>
<string name="subscription_list_name">Zasubskrybowano</string>
<string name="subscription_new">Zasubskrybowano %s</string>
<string name="subscription_deleted">Anulowano subskrypcję %s</string>
<string name="subscription_episode_released">Został wydany odcinek %d!</string>
<string name="jsdelivr_proxy_summary">Obchodzi blokadę GitHuba za pomocą jsdelivr, może spowodować opóźnienie aktualizacji o kilka dni.</string>
<string name="jsdelivr_enabled">Nie udało się połączyć z GitHub, włączono serwer pośredniczący jsdelivr.</string>
</resources> </resources>

View file

@ -6,12 +6,12 @@
<string name="next_episode_format" formatted="true">Episódio %d será lançado em</string> <string name="next_episode_format" formatted="true">Episódio %d será lançado em</string>
<string name="result_poster_img_des">Poster</string> <string name="result_poster_img_des">Poster</string>
<string name="episode_poster_img_des">Capa do Episódio</string> <string name="episode_poster_img_des">Capa do Episódio</string>
<string name="search_poster_img_des">\@string/result_poster_img_des</string> <string name="search_poster_img_des">Poster</string>
<string name="home_main_poster_img_des">Capa Principal</string> <string name="home_main_poster_img_des">Capa Principal</string>
<string name="home_next_random_img_des">Próximo Aleatório</string> <string name="home_next_random_img_des">Próximo Aleatório</string>
<string name="go_back_img_des">Voltar</string> <string name="go_back_img_des">Voltar</string>
<string name="home_change_provider_img_des">Trocar Provedor</string> <string name="home_change_provider_img_des">Trocar Provedor</string>
<string name="next_episode_time_day_format" formatted="true">%dd %dh %dm</string> <string name="next_episode_time_day_format" formatted="true">%d dia(s), %d hora(s) e %d mese(s)</string>
<string name="home_source">Fonte</string> <string name="home_source">Fonte</string>
<string name="resolution">Resolução</string> <string name="resolution">Resolução</string>
<string name="extras">Extras</string> <string name="extras">Extras</string>
@ -381,4 +381,31 @@
<string name="uppercase_all_subtitles">Todas as legendas em maiúsculas</string> <string name="uppercase_all_subtitles">Todas as legendas em maiúsculas</string>
<string name="download_all_plugins_from_repo">Transferir todos os plugins deste repositório\?</string> <string name="download_all_plugins_from_repo">Transferir todos os plugins deste repositório\?</string>
<string name="single_plugin_disabled" formatted="true">%s (Desativado)</string> <string name="single_plugin_disabled" formatted="true">%s (Desativado)</string>
<string name="apk_installer_settings">Instalador APK</string>
<string name="duration_format" formatted="true">%d minuto(s)</string>
<string name="play_trailer_button">Reproduzir trailer</string>
<string name="action_add_to_bookmarks">Marcar como visto/não visto</string>
<string name="action_open_play">Reproduzir</string>
<string name="automatic_plugin_download_summary">Instalar automaticamente todas as extensões dos repositórios cadastrados.</string>
<string name="automatic_plugin_download">Baixar extensões automaticamente</string>
<string name="redo_setup_process">Refazer o processo de configuração</string>
<string name="go_back_30">-30</string>
<string name="other_singular">Vídeo</string>
<string name="go_forward_30">+30</string>
<string name="season_format">%s %d%s</string>
<string name="cast_format" formatted="true">Elenco: %s</string>
<string name="update_started">Atualização em andamento</string>
<string name="test_log">Log</string>
<string name="apk_installer_settings_des">Alguns aparelhos não possuem suporte para o novo instalador de pacotes. Use a opção legado caso não esteja conseguindo atualizar.</string>
<string name="episodes_range">%d-%d</string>
<string name="episode_format" formatted="true">%d %s</string>
<string name="start">Iniciar</string>
<string name="test_failed">Falha</string>
<string name="test_passed">Sucesso</string>
<string name="library">Biblioteca</string>
<string name="browser">Navegar</string>
<string name="anim">Aplicativo de Anime pelos mesmos desenvolvedores</string>
<string name="ova_singular">Ova</string>
<string name="anime_singular">Anime</string>
<string name="android_tv_interface_on_seek_settings">Player visível - Procurar valor</string>
</resources> </resources>

View file

@ -172,30 +172,31 @@
<string name="resume">oouuh haa</string> <string name="resume">oouuh haa</string>
<string name="double_tap_to_seek_settings_des">oohahaha hahha ooooohaha</string> <string name="double_tap_to_seek_settings_des">oohahaha hahha ooooohaha</string>
<string name="storage_error">oohahaha hahha ooooohaha haaoou</string> <string name="storage_error">oohahaha hahha ooooohaha haaoou</string>
<string name="use_system_brightness_settings">u ahhu uuuh hau uaohuau</string> <string name="use_system_brightness_settings">u ahhu uuuh hau uaohuau</string>
<string name="use_system_brightness_settings_des">aahuuouhh ouh hhhah hhaohuhha</string> <string name="use_system_brightness_settings_des">aahuuouhh ouh hhhah hhaohuhha</string>
<string name="subs_font_size">a auoo ohauh</string> <string name="subs_font_size">a auoo ohauh</string>
<string name="source_error">uhaauauau ahuuouaha</string> <string name="source_error">uhaauauau ahuuouaha</string>
<string name="remote_error">auuuha h a ahuhaaaa</string> <string name="remote_error">auuuha h a ahuhaaaa</string>
<string name="render_error">uaoh uhu uahaaaaoo</string> <string name="render_error">uaoh uhu uahaaaaoo</string>
<string name="unexpected_error">uauhah u aao u oah</string> <string name="unexpected_error">uauhah u aao u oah</string>
<string name="watch_quality_pref">h u ahahh aoou ha</string> <string name="watch_quality_pref">h u ahahh aoou ha</string>
<string name="dns_pref">haoooo aaoou uou ah</string> <string name="dns_pref">haoooo aaoou uou ah</string>
<string name="dns_pref_summary">oahuouooaouoa ouuhh</string> <string name="dns_pref_summary">oahuouooaouoa ouuhh</string>
<string name="display_subbed_dubbed_settings">o ouou uhauuuoaah h</string> <string name="display_subbed_dubbed_settings">o ouou uhauuuoaah h</string>
<string name="resize_fit">ou aouhouo aaooao hh</string> <string name="resize_fit">ou aouhouo aaooao hh</string>
<string name="resize_fill">hhauhohhuu au aaohu</string> <string name="resize_fill">hhauhohhuu au aaohu</string>
<string name="resize_zoom">uhuoh o a ohahuhohoa hah</string> <string name="resize_zoom">uhuoh o a ohahuhohoa hah</string>
<string name="provider_lang_settings">ua hu ouo o aoau hah ah</string> <string name="provider_lang_settings">ua hu ouo o aoau hah ah</string>
<string name="legal_notice">ah huu oouhhau aoaoaaohoo ha</string> <string name="legal_notice">ah huu oouhhau aoaoaaohoo ha</string>
<string name="category_general">a ahu uoo uoahuo uo</string> <string name="category_general">a ahu uoo uoahuo uo</string>
<string name="app_layout">uo u ohouao</string> <string name="app_layout">uo u ohouao</string>
<string name="automatic">uuoouhh hhuhuuh ouhoaao hau aouo</string> <string name="automatic">uuoouhh hhuhuuh ouhoaao hau aouo</string>
<string name="tv_layout">uha uh huo uooaah u</string> <string name="tv_layout">uha uh huo uooaah u</string>
<string name="phone_layout">u ooah uo ahauao huhuu hauu h</string> <string name="phone_layout">u ooah uo ahauao huhuu hauu h</string>
<string name="primary_color_settings">a ou oh ouhuouhoaaha</string> <string name="primary_color_settings">a ou oh ouhuouhoaaha</string>
<string name="show_fillers_settings">aaooohhouhhha hauauuu</string> <string name="show_fillers_settings">aaooohhouhhha hauauuu</string>
<string name="new_update_format">aaaaaaa uuuuuu\n%s -&gt; %s</string> <string name="new_update_format">aaaaaaa uuuuuu
\n%s -&gt; %s</string>
<string name="app_dub_sub_episode_text_format" formatted="true">%s aaou %d</string> <string name="app_dub_sub_episode_text_format" formatted="true">%s aaou %d</string>
<string name="cast_format" formatted="true">oouaaahh %s</string> <string name="cast_format" formatted="true">oouaaahh %s</string>
<string name="next_episode_format" formatted="true">aaaaaaugh ouh %d uuoogahaaah ooua-h-ha</string> <string name="next_episode_format" formatted="true">aaaaaaugh ouh %d uuoogahaaah ooua-h-ha</string>

View file

@ -9,7 +9,7 @@
<string name="next_episode_time_min_format" formatted="true">%dm</string> <string name="next_episode_time_min_format" formatted="true">%dm</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">Poster</string> <string name="result_poster_img_des">Poster</string>
<string name="search_poster_img_des">\@string/result_poster_img_des</string> <string name="search_poster_img_des">Poster</string>
<string name="episode_poster_img_des">Poster Episod</string> <string name="episode_poster_img_des">Poster Episod</string>
<string name="home_main_poster_img_des">Poster Principal</string> <string name="home_main_poster_img_des">Poster Principal</string>
<string name="home_next_random_img_des">Următorul la Întâmplare</string> <string name="home_next_random_img_des">Următorul la Întâmplare</string>
@ -142,7 +142,7 @@
<string name="restore_success">Fișier de rezervă încărcat</string> <string name="restore_success">Fișier de rezervă încărcat</string>
<string name="restore_failed_format" formatted="true">Imposibilitatea de a restaura datele din %s</string> <string name="restore_failed_format" formatted="true">Imposibilitatea de a restaura datele din %s</string>
<string name="backup_success">Date stocate</string> <string name="backup_success">Date stocate</string>
<string name="backup_failed">Permisiuni de arhivare lipsă, vă rugăm să încercați din nou</string> <string name="backup_failed">Permisiunea de arhivare lipșe, vă rugăm să încercați din nou.</string>
<string name="backup_failed_error_format">Eroare de backup %s</string> <string name="backup_failed_error_format">Eroare de backup %s</string>
<string name="search">Căutare</string> <string name="search">Căutare</string>
<string name="category_account">Conturi și credite</string> <string name="category_account">Conturi și credite</string>
@ -154,7 +154,7 @@
<string name="bug_report_settings_on">Nu trimiteți niciun fel de date</string> <string name="bug_report_settings_on">Nu trimiteți niciun fel de date</string>
<string name="show_fillers_settings">Afișează etichetele [filler] pentru anime</string> <string name="show_fillers_settings">Afișează etichetele [filler] pentru anime</string>
<string name="show_trailers_settings">Arată trailerul</string> <string name="show_trailers_settings">Arată trailerul</string>
<string name="kitsu_settings">Arată posterele de la Kitsu</string> <string name="kitsu_settings">Arată afișele de la Kitsu</string>
<string name="updates_settings">Afișați actualizările aplicației</string> <string name="updates_settings">Afișați actualizările aplicației</string>
<string name="updates_settings_des">Căutați automat noi actualizări la pornire</string> <string name="updates_settings_des">Căutați automat noi actualizări la pornire</string>
<string name="uprereleases_settings">Actualizați la prerelease</string> <string name="uprereleases_settings">Actualizați la prerelease</string>
@ -384,4 +384,8 @@
<string name="autoplay_next_settings_des">Începe următorul episod când se termină episodul curent</string> <string name="autoplay_next_settings_des">Începe următorul episod când se termină episodul curent</string>
<string name="pref_filter_search_quality">Ascundeți calitatea video selectată în rezultatele căutării</string> <string name="pref_filter_search_quality">Ascundeți calitatea video selectată în rezultatele căutării</string>
<string name="play_livestream_button">Redare Livestream</string> <string name="play_livestream_button">Redare Livestream</string>
<string name="library">Librărie</string>
<string name="test_log">Log</string>
<string name="browser">Browser</string>
<string name="play_with_app_name">Joacă cu CloudStream</string>
</resources> </resources>

View file

@ -506,4 +506,16 @@
<string name="android_tv_interface_on_seek_settings">Плеер показан - Перемотки объем</string> <string name="android_tv_interface_on_seek_settings">Плеер показан - Перемотки объем</string>
<string name="android_tv_interface_off_seek_settings">Плеер спрятан - Перемотки объем</string> <string name="android_tv_interface_off_seek_settings">Плеер спрятан - Перемотки объем</string>
<string name="subtitles_remove_bloat">Удалять лишнее из субтитров</string> <string name="subtitles_remove_bloat">Удалять лишнее из субтитров</string>
<string name="android_tv_interface_off_seek_settings_summary">Местоположение ползунка, когда игрок скрыт</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="actor_supporting">Второго планa</string>
<string name="skip_type_mixed_op">Смешанный опенинг</string>
<string name="skip_type_mixed_ed">Смешанный конец</string>
<string name="category_provider_test">Тест провайдер</string>
<string name="test_log">Журнал</string>
<string name="start">Запустить</string>
<string name="test_passed">Выполнено</string>
<string name="test_failed">Неудачный</string>
<string name="stop">Прекратить</string>
<string name="restart">Перезапустить</string>
</resources> </resources>

View file

@ -17,7 +17,7 @@
<string name="next_episode_time_day_format" formatted="true">%dd %dh %dm</string> <string name="next_episode_time_day_format" formatted="true">%dd %dh %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="duration_format" formatted="true">%d min</string> <string name="duration_format" formatted="true">%d min</string>
<string name="search_poster_img_des">\@string/result_poster_img_des</string> <string name="search_poster_img_des">Plagát</string>
<string name="episode_poster_img_des">Plagát epizódy</string> <string name="episode_poster_img_des">Plagát epizódy</string>
<string name="home_main_poster_img_des">Hlavný plagát</string> <string name="home_main_poster_img_des">Hlavný plagát</string>
<string name="play_with_app_name">Prehrať s CloudStream</string> <string name="play_with_app_name">Prehrať s CloudStream</string>

View file

@ -217,7 +217,7 @@
<string name="video_skip_op">Пропустити OP</string> <string name="video_skip_op">Пропустити OP</string>
<string name="dont_show_again">Не показувати знову</string> <string name="dont_show_again">Не показувати знову</string>
<string name="update">Оновити</string> <string name="update">Оновити</string>
<string name="watch_quality_pref">Бажана якість перегляду</string> <string name="watch_quality_pref">Бажана якість перегляду (WiFi)</string>
<string name="show_title">Заголовок</string> <string name="show_title">Заголовок</string>
<string name="poster_ui_settings">Перемикання елементів інтерфейсу на плакаті</string> <string name="poster_ui_settings">Перемикання елементів інтерфейсу на плакаті</string>
<string name="no_update_found">Оновлення не знайдено</string> <string name="no_update_found">Оновлення не знайдено</string>
@ -507,4 +507,27 @@
<string name="safe_mode_file">Файл безпечного режиму знайдено! <string name="safe_mode_file">Файл безпечного режиму знайдено!
\nРозширеня не завантажуються під час запуску, доки файл не буде видалено.</string> \nРозширеня не завантажуються під час запуску, доки файл не буде видалено.</string>
<string name="pref_category_android_tv">Android TV</string> <string name="pref_category_android_tv">Android TV</string>
<string name="android_tv_interface_off_seek_settings">Плеєр сховано - обсяг пошуку</string>
<string name="android_tv_interface_on_seek_settings">Плеєр показано - обсяг пошуку</string>
<string name="android_tv_interface_on_seek_settings_summary">Обсяг пошуку, який використовується, коли плеєр видимий</string>
<string name="android_tv_interface_off_seek_settings_summary">Обсяг пошуку, який використовується, коли гравець прихований</string>
<string name="test_failed">Не вдалося</string>
<string name="test_passed">Пройдено</string>
<string name="restart">Перезапуск</string>
<string name="test_log">Журнал</string>
<string name="start">Старт</string>
<string name="stop">Стоп</string>
<string name="category_provider_test">Тест постачальника</string>
<string name="subscription_in_progress_notification">Оновлення підписаних шоу</string>
<string name="subscription_list_name">Підписано</string>
<string name="subscription_new">Підписано на %s</string>
<string name="subscription_deleted">Відписатися від %s</string>
<string name="subscription_episode_released">Епізод %d випущено!</string>
<string name="revert">Повернути</string>
<string name="jsdelivr_proxy">raw.githubusercontent.com
\nProxy</string>
<string name="jsdelivr_enabled">Не вдалося зв\'язатися з GitHub, увімкнувши проксі-сервер jsdelivr.</string>
<string name="pref_category_bypass">Обходи ISP</string>
<string name="jsdelivr_proxy_summary">Обходити блокування GitHub з використанням jsdlitr, може викликати затримку оновлень на кілька днів.</string>
<string name="watch_quality_pref_data">Бажана якість перегляду (Мобільні дані)</string>
</resources> </resources>

View file

@ -19,7 +19,7 @@
<string name="next_episode_time_min_format" formatted="true">%dm</string> <string name="next_episode_time_min_format" formatted="true">%dm</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">封面</string> <string name="result_poster_img_des">封面</string>
<string name="search_poster_img_des">\@string/result_poster_img_des</string> <string name="search_poster_img_des">封面</string>
<string name="episode_poster_img_des">劇集封面</string> <string name="episode_poster_img_des">劇集封面</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>
@ -533,4 +533,5 @@
<string name="pref_category_defaults">預設</string> <string name="pref_category_defaults">預設</string>
<string name="pref_category_looks">外觀</string> <string name="pref_category_looks">外觀</string>
<string name="pref_category_ui_features">功能</string> <string name="pref_category_ui_features">功能</string>
<string name="browser">瀏覽器</string>
</resources> </resources>

View file

@ -554,4 +554,26 @@
<string name="empty_library_no_accounts_message">看来您的库是空的 :( <string name="empty_library_no_accounts_message">看来您的库是空的 :(
\n登录库账户或添加节目到您的本地库</string> \n登录库账户或添加节目到您的本地库</string>
<string name="empty_library_logged_in_message">看来此列表是空的,请尝试切换到另一个</string> <string name="empty_library_logged_in_message">看来此列表是空的,请尝试切换到另一个</string>
<string name="android_tv_interface_on_seek_settings">播放器显示 - 快进快退秒数</string>
<string name="android_tv_interface_on_seek_settings_summary">播放器可见时使用的快进快退秒数</string>
<string name="android_tv_interface_off_seek_settings">播放器隐藏 - 快进快退秒数</string>
<string name="android_tv_interface_off_seek_settings_summary">播放器隐藏时使用的快进快退秒数</string>
<string name="pref_category_android_tv">Android TV</string>
<string name="test_failed">失败</string>
<string name="category_provider_test">片源测试</string>
<string name="restart">重启</string>
<string name="stop">停止</string>
<string name="subscription_in_progress_notification">正在更新订阅节目</string>
<string name="subscription_list_name">已订阅</string>
<string name="subscription_new">已订阅 %s</string>
<string name="subscription_deleted">已取消订阅 %s</string>
<string name="start">开始</string>
<string name="subscription_episode_released">第 %d 集已发布!</string>
<string name="test_passed">成功</string>
<string name="test_log">日志</string>
<string name="jsdelivr_proxy">raw.githubusercontent.com 代理</string>
<string name="jsdelivr_enabled">连接 Github 失败,正在启用 jsdelivr 代理。</string>
<string name="jsdelivr_proxy_summary">使用 jsdelivr 绕过对 Github 的封锁,可能导致更新延迟几天。</string>
<string name="pref_category_bypass">ISP 绕过</string>
<string name="revert">还原</string>
</resources> </resources>

View file

@ -16,6 +16,7 @@
<string name="test_providers_key" translatable="false">test_providers_key</string> <string name="test_providers_key" translatable="false">test_providers_key</string>
<string name="subtitle_settings_chromecast_key" translatable="false">subtitle_settings_chromecast_key</string> <string name="subtitle_settings_chromecast_key" translatable="false">subtitle_settings_chromecast_key</string>
<string name="quality_pref_key" translatable="false">quality_pref_key</string> <string name="quality_pref_key" translatable="false">quality_pref_key</string>
<string name="quality_pref_mobile_data_key" translatable="false">quality_pref_mobile_data_key</string>
<string name="player_pref_key" translatable="false">player_pref_key</string> <string name="player_pref_key" translatable="false">player_pref_key</string>
<string name="prefer_limit_title_key" translatable="false">prefer_limit_title_key</string> <string name="prefer_limit_title_key" translatable="false">prefer_limit_title_key</string>
<string name="prefer_limit_title_rez_key" translatable="false">prefer_limit_title_rez_key</string> <string name="prefer_limit_title_rez_key" translatable="false">prefer_limit_title_rez_key</string>
@ -43,6 +44,7 @@
<string name="random_button_key" translatable="false">random_button_key</string> <string name="random_button_key" translatable="false">random_button_key</string>
<string name="provider_lang_key" translatable="false">provider_lang_key</string> <string name="provider_lang_key" translatable="false">provider_lang_key</string>
<string name="dns_key" translatable="false">dns_key</string> <string name="dns_key" translatable="false">dns_key</string>
<string name="jsdelivr_proxy_key" translatable="false">jsdelivr_proxy_key</string>
<string name="download_path_key" translatable="false">download_path_key</string> <string name="download_path_key" translatable="false">download_path_key</string>
<string name="app_name_download_path" translatable="false">Cloudstream</string> <string name="app_name_download_path" translatable="false">Cloudstream</string>
<string name="app_layout_key" translatable="false">app_layout_key</string> <string name="app_layout_key" translatable="false">app_layout_key</string>
@ -363,7 +365,8 @@
<string name="dont_show_again">Don\'t show again</string> <string name="dont_show_again">Don\'t show again</string>
<string name="skip_update">Skip this Update</string> <string name="skip_update">Skip this Update</string>
<string name="update">Update</string> <string name="update">Update</string>
<string name="watch_quality_pref">Preferred watch quality</string> <string name="watch_quality_pref">Preferred watch quality (WiFi)</string>
<string name="watch_quality_pref_data">Preferred watch quality (Mobile Data)</string>
<string name="limit_title">Video player title max chars</string> <string name="limit_title">Video player title max chars</string>
<string name="limit_title_rez">Video player resolution</string> <string name="limit_title_rez">Video player resolution</string>
<string name="video_buffer_size_settings">Video buffer size</string> <string name="video_buffer_size_settings">Video buffer size</string>
@ -378,6 +381,9 @@
<string name="video_disk_description">Causes problems if set too high on devices with low storage space, such as Android TV.</string> <string name="video_disk_description">Causes problems if set too high on devices with low storage space, such as Android TV.</string>
<string name="dns_pref">DNS over HTTPS</string> <string name="dns_pref">DNS over HTTPS</string>
<string name="dns_pref_summary">Useful for bypassing ISP blocks</string> <string name="dns_pref_summary">Useful for bypassing ISP blocks</string>
<string name="jsdelivr_proxy">raw.githubusercontent.com Proxy</string>
<string name="jsdelivr_enabled">Failed to reach GitHub, enabling jsdelivr proxy.</string>
<string name="jsdelivr_proxy_summary">Bypasses blocking of GitHub using jsdelivr, may cause updates to be delayed by few days.</string>
<string name="add_site_pref">Clone site</string> <string name="add_site_pref">Clone site</string>
<string name="remove_site_pref">Remove site</string> <string name="remove_site_pref">Remove site</string>
<string name="add_site_summary">Add a clone of an existing site, with a different URL</string> <string name="add_site_summary">Add a clone of an existing site, with a different URL</string>
@ -405,6 +411,7 @@
responsibility of user to avoid any actions that might violate the laws governing his/her locality. Use responsibility of user to avoid any actions that might violate the laws governing his/her locality. Use
CloudStream 3 at your own risk. CloudStream 3 at your own risk.
</string> </string>
<string name="pref_category_bypass">ISP Bypasses</string>
<string name="pref_category_links">Links</string> <string name="pref_category_links">Links</string>
<string name="pref_category_app_updates">App updates</string> <string name="pref_category_app_updates">App updates</string>
<string name="pref_category_backup">Backup</string> <string name="pref_category_backup">Backup</string>
@ -644,9 +651,10 @@
<string name="empty_library_no_accounts_message">Looks like your library is empty :(\nLogin to a library account or add shows to your local library</string> <string name="empty_library_no_accounts_message">Looks like your library is empty :(\nLogin to a library account or add shows to your local library</string>
<string name="empty_library_logged_in_message">Looks like this list is empty, try switching to another one</string> <string name="empty_library_logged_in_message">Looks like this list is empty, try switching to another one</string>
<string name="safe_mode_file">Safe mode file found!\nNot loading any extensions on startup until file is removed.</string> <string name="safe_mode_file">Safe mode file found!\nNot loading any extensions on startup until file is removed.</string>
<string name="revert">Revert</string>
<string name="subscription_in_progress_notification">Updating subscribed shows</string> <string name="subscription_in_progress_notification">Updating subscribed shows</string>
<string name="subscription_list_name">Subscribed</string> <string name="subscription_list_name">Subscribed</string>
<string name="subscription_new">Subscribed to %s</string> <string name="subscription_new">Subscribed to %s</string>
<string name="subscription_deleted">Unsubscribed from %s</string> <string name="subscription_deleted">Unsubscribed from %s</string>
<string name="subscription_episode_released">Episode %d released!</string> <string name="subscription_episode_released">Episode %d released!</string>
</resources> </resources>

View file

@ -15,6 +15,10 @@
android:icon="@drawable/ic_baseline_hd_24" android:icon="@drawable/ic_baseline_hd_24"
android:key="@string/quality_pref_key" android:key="@string/quality_pref_key"
android:title="@string/watch_quality_pref" /> android:title="@string/watch_quality_pref" />
<Preference
android:icon="@drawable/ic_baseline_hd_24"
android:key="@string/quality_pref_mobile_data_key"
android:title="@string/watch_quality_pref_data" />
<Preference <Preference
android:icon="@drawable/netflix_play" android:icon="@drawable/netflix_play"

View file

@ -6,18 +6,6 @@
android:title="@string/app_language" android:title="@string/app_language"
android:icon="@drawable/ic_baseline_language_24" /> android:icon="@drawable/ic_baseline_language_24" />
<Preference
android:key="@string/override_site_key"
android:title="@string/add_site_pref"
android:summary="@string/add_site_summary"
android:icon="@drawable/ic_baseline_add_24" />
<Preference
android:key="@string/dns_key"
android:title="@string/dns_pref"
android:summary="@string/dns_pref_summary"
android:icon="@drawable/ic_baseline_dns_24" />
<Preference <Preference
android:key="@string/download_path_key" android:key="@string/download_path_key"
android:title="@string/download_path_pref" android:title="@string/download_path_pref"
@ -34,6 +22,30 @@
android:icon="@drawable/benene" android:icon="@drawable/benene"
app:summary="@string/benene_des" /> app:summary="@string/benene_des" />
<PreferenceCategory
android:title="@string/pref_category_bypass">
<Preference
android:key="@string/override_site_key"
android:title="@string/add_site_pref"
android:summary="@string/add_site_summary"
android:icon="@drawable/ic_baseline_add_24" />
<Preference
android:key="@string/dns_key"
android:title="@string/dns_pref"
android:summary="@string/dns_pref_summary"
android:icon="@drawable/ic_baseline_dns_24" />
<SwitchPreference
android:defaultValue="false"
android:icon="@drawable/ic_github_logo"
android:key="@string/jsdelivr_proxy_key"
android:title="@string/jsdelivr_proxy"
android:summary="@string/jsdelivr_proxy_summary" />
</PreferenceCategory>
<PreferenceCategory <PreferenceCategory
android:title="@string/pref_category_links"> android:title="@string/pref_category_links">