Merge pull request #262 from YTVanced/dev

v2.0.1 release
This commit is contained in:
KevinX8 2020-11-16 13:43:33 +00:00 committed by GitHub
commit 604a68af34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
117 changed files with 3413 additions and 2449 deletions

View File

@ -19,8 +19,8 @@ android {
applicationId "com.vanced.manager"
minSdkVersion 21
targetSdkVersion 30
versionCode 200
versionName "2.0.0 (.nomagiskui)"
versionCode 201
versionName "2.0.1 (Android5and6suck)"
vectorDrawables.useSupportLibrary true
@ -35,10 +35,6 @@ android {
disable 'MissingTranslation', 'ExtraTranslation'
}
aaptOptions {
noCompress 'apk', '.apk'
}
applicationVariants.all { variant ->
resValue "string", "versionName", versionName
}
@ -52,6 +48,7 @@ android {
buildFeatures {
dataBinding true
viewBinding true
}
// To inline the bytecode built with JVM target 1.8 into
@ -70,19 +67,24 @@ android {
def getLanguages() {
List<String> langs = new ArrayList<String>()
langs.add("en")
//Add languages with dialects
langs.add("bn_BD")
langs.add("bn_IN")
langs.add("pt_BR")
langs.add("pt_PT")
langs.add("zh_CN")
langs.add("zh_TW")
List<String> exceptions = [ "bn", "pt", "zh"]
Pattern pattern = Pattern.compile("-(\\w+)-")
new File("${projectDir}/src/main/res").eachDir { dir ->
if (dir.name.startsWith("values-") && !dir.name.contains("v23")) {
Matcher matcher = pattern.matcher(dir.name)
if (matcher.find()) {
if (langs.contains(matcher.group(1)))
langs.add(matcher.group(1) + "_${dir.name.substring(dir.name.length() - 2)}")
else
langs.add(matcher.group(1))
if (matcher.find() && !exceptions.any { matcher.group(1) == it } ) {
langs.add(matcher.group(1))
}
}
}
return langs.toArray()
return langs.toArray().toSorted()
}
static def surroundWithQuotes(Object[] arr) {
@ -114,7 +116,6 @@ dependencies {
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'com.google.android.material:material:1.3.0-alpha03'
// Other
// JSON parser
implementation 'com.beust:klaxon:5.4'

View File

@ -46,10 +46,10 @@ class AppListAdapter(
holder.appCard.setOnClickListener {
tooltip.close()
AppInfoDialog(
apps[position],
dataModels[position]?.appIcon,
dataModels[position]?.changelog?.get()
AppInfoDialog.newInstance(
appName = apps[position],
appIcon = dataModels[position]?.appIcon,
changelog = dataModels[position]?.changelog?.get()
).show(context.supportFragmentManager, "info")
}
}

View File

@ -3,7 +3,7 @@ package com.vanced.manager.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewSocialLinkBinding
@ -13,49 +13,49 @@ import com.vanced.manager.ui.viewmodels.HomeViewModel
class LinkAdapter(context: Context, private val viewModel: HomeViewModel) : RecyclerView.Adapter<LinkAdapter.LinkViewHolder>() {
private val instagram = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_instagram),
AppCompatResources.getDrawable(context, R.drawable.ic_instagram),
"https://instagram.com/vanced.youtube"
)
private val youtube = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_youtube),
AppCompatResources.getDrawable(context, R.drawable.ic_youtube),
"https://youtube.com/c/YouTubeVanced"
)
private val github = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_github),
AppCompatResources.getDrawable(context, R.drawable.ic_github),
"https://github.com/YTVanced/VancedManager"
)
private val website = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_website),
AppCompatResources.getDrawable(context, R.drawable.ic_website),
"https://vancedapp.com"
)
private val telegram = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_telegram),
AppCompatResources.getDrawable(context, R.drawable.ic_telegram),
"https://t.me/joinchat/AAAAAEHf-pi4jH1SDlAL4w"
)
private val twitter = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_twitter),
AppCompatResources.getDrawable(context, R.drawable.ic_twitter),
"https://twitter.com/YTVanced"
)
private val discord = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_discord),
AppCompatResources.getDrawable(context, R.drawable.ic_discord),
"https://discord.gg/WCGNdRruzb"
)
private val reddit = LinkModel(
ContextCompat.getDrawable(context, R.drawable.ic_reddit),
AppCompatResources.getDrawable(context, R.drawable.ic_reddit),
"https://www.reddit.com/r/Vanced/"
)
val links = arrayOf(instagram, youtube, github, website, telegram, twitter, discord, reddit)
inner class LinkViewHolder(private val binding: ViewSocialLinkBinding) : RecyclerView.ViewHolder(binding.root) {
val logo = binding.linkImage
fun bind(position: Int) {
binding.viewModel = viewModel
binding.linkModel = links[position]
@ -70,6 +70,7 @@ class LinkAdapter(context: Context, private val viewModel: HomeViewModel) : Recy
override fun onBindViewHolder(holder: LinkViewHolder, position: Int) {
holder.bind(position)
holder.logo.setImageDrawable(links[position].linkIcon)
}
override fun getItemCount(): Int = links.size

View File

@ -24,7 +24,7 @@ class SelectAppsAdapter(context: Context) : RecyclerView.Adapter<SelectAppsAdapt
context.getString(R.string.music),
context.getString(R.string.select_apps_music),
"music",
prefs.getBoolean("enable_music", false)
prefs.getBoolean("enable_music", true)
)
val apps = arrayOf(vanced, music)

View File

@ -3,7 +3,7 @@ package com.vanced.manager.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewSponsorBinding
@ -17,13 +17,13 @@ class SponsorAdapter(
) : RecyclerView.Adapter<SponsorAdapter.LinkViewHolder>() {
private val brave = SponsorModel(
ContextCompat.getDrawable(context, R.drawable.ic_brave),
AppCompatResources.getDrawable(context, R.drawable.ic_brave),
"Brave",
"https://vancedapp.com/brave"
)
private val adguard = SponsorModel(
ContextCompat.getDrawable(context, R.drawable.ic_adguard),
AppCompatResources.getDrawable(context, R.drawable.ic_adguard),
"AdGuard",
"https://adguard.com/?aid=31141&source=manager"
)
@ -33,6 +33,7 @@ class SponsorAdapter(
inner class LinkViewHolder(private val binding: ViewSponsorBinding) : RecyclerView.ViewHolder(
binding.root
) {
val logo = binding.sponsorLogo
fun bind(position: Int) {
binding.viewModel = viewModel
binding.sponsor = sponsors[position]
@ -47,6 +48,7 @@ class SponsorAdapter(
override fun onBindViewHolder(holder: LinkViewHolder, position: Int) {
holder.bind(position)
holder.logo.setImageDrawable(sponsors[position].logo)
}
override fun getItemCount(): Int = 2

View File

@ -11,13 +11,18 @@ import com.crowdin.platform.data.remote.NetworkType
import com.downloader.PRDownloader
import com.vanced.manager.BuildConfig.*
import com.vanced.manager.utils.InternetTools.loadJson
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
open class App: Application() {
private val prefs by lazy { getDefaultSharedPreferences(this) }
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
override fun onCreate() {
loadJson(this)
scope.launch { loadJson(this@App) }
super.onCreate()
PRDownloader.initialize(this)
@ -46,6 +51,4 @@ open class App: Application() {
super.onConfigurationChanged(newConfig)
Crowdin.onConfigurationChanged()
}
}

View File

@ -1,5 +0,0 @@
package com.vanced.manager.core.base
import androidx.fragment.app.Fragment
open class BaseFragment : Fragment()

View File

@ -13,39 +13,36 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
object MicrogDownloader {
object MicrogDownloader : CoroutineScope by CoroutineScope(Dispatchers.IO) {
fun downloadMicrog(
context: Context,
) {
CoroutineScope(Dispatchers.IO).launch {
val url = microg.get()?.string("url")
) = launch {
val url = microg.get()?.string("url")
downloadProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("microg")?.path, "microg.apk")
.build()
.setOnStartOrResumeListener {
downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) }))
downloadProgress.value?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("microg")?.path, "microg.apk")
.build()
.setOnStartOrResumeListener {
downloadProgress.value?.downloadingFile?.value = context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) })
}
.setOnProgressListener { progress ->
downloadProgress.value?.downloadProgress?.value = (progress.currentBytes * 100 / progress.totalBytes).toInt()
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
startMicrogInstall(context)
}
.setOnProgressListener { progress ->
downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt())
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
startMicrogInstall(context)
}
override fun onError(error: Error?) {
downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "microG"))
}
})
override fun onError(error: Error?) {
downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, "microG")
}
})
}
}
fun startMicrogInstall(context: Context) {
downloadProgress.get()?.installing?.set(true)
downloadProgress.get()?.reset()
downloadProgress.value?.installing?.value = true
downloadProgress.value?.reset()
install("${context.getExternalFilesDir("microg")}/microg.apk", context)
}
}

View File

@ -22,8 +22,9 @@ import com.vanced.manager.utils.PackageHelper.installMusicRoot
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlin.coroutines.suspendCoroutine
object MusicDownloader {
object MusicDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) {
private var variant: String? = null
private var version: String? = null
@ -45,69 +46,64 @@ object MusicDownloader {
}
private fun downloadApk(context: Context, apk: String = "music") {
CoroutineScope(Dispatchers.IO).launch {
val url =
if (apk == "stock")
"$baseurl/stock/${getArch()}.apk"
else
"$baseurl/$variant.apk"
downloadProgress.get()?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url))
.build()
.setOnStartOrResumeListener {
downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, getFileNameFromUrl(url)))
}
.setOnProgressListener { progress ->
downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt())
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
if (variant == "root" && apk != "stock") {
downloadApk(context, "stock")
return
}
when (apk) {
"music" -> {
if (variant == "root") {
if (validateTheme(downloadPath!!, "root", hashUrl!!, context)) {
if (downloadStockCheck(musicRootPkg, versionCode!!, context))
downloadApk(context, "stock")
else
startMusicInstall(context)
} else {
downloadApk(context, apk)
}
} else
startMusicInstall(context)
launch {
val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk"
suspendCoroutine {
downloadProgress.value?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url))
.build()
.setOnStartOrResumeListener {
downloadProgress.value?.downloadingFile?.value =context.getString(R.string.downloading_file, getFileNameFromUrl(url))
}
.setOnProgressListener { progress ->
downloadProgress.value?.downloadProgress?.value = (progress.currentBytes * 100 / progress.totalBytes).toInt()
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
if (variant == "root" && apk != "stock") {
downloadApk(context, "stock") // recursive in coroutine its so bad...
return
}
when (apk) {
"music" -> {
if (variant == "root") {
if (validateTheme(downloadPath!!, "root", hashUrl!!, context)) {
if (downloadStockCheck(musicRootPkg, versionCode!!, context))
downloadApk(context, "stock")
else
startMusicInstall(context)
} else {
downloadApk(context, apk)
}
} else
startMusicInstall(context)
}
}
startMusicInstall(context)
}
startMusicInstall(context)
}
override fun onError(error: Error?) {
if (baseurl != backupUrl) {
baseurl = "$backupUrl/music/v$version"
downloadApk(context, apk)
return
}
override fun onError(error: Error?) {
if (baseurl != backupUrl) {
baseurl = "$backupUrl/music/v$version"
downloadApk(context, apk)
return
downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, "Music")
}
downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "Music"))
}
})
})
}
}
}
fun startMusicInstall(context: Context) {
downloadProgress.get()?.installing?.set(true)
downloadProgress.get()?.reset()
downloadProgress.value?.installing?.value = true
downloadProgress.value?.reset()
if (variant == "root")
installMusicRoot(context)
else
install("${context.getExternalFilesDir("music/nonroot")}/nonroot.apk", context)
}
}

View File

@ -28,7 +28,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
object VancedDownloader {
object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) {
private lateinit var prefs: SharedPreferences
private lateinit var defPrefs: SharedPreferences
@ -36,7 +36,7 @@ object VancedDownloader {
private var installUrl: String? = null
private var variant: String? = null
private var theme: String? = null
private var lang: MutableList<String>? = null
private var lang = mutableListOf<String>()
private lateinit var themePath: String
@ -56,7 +56,9 @@ object VancedDownloader {
downloadPath = context.getExternalFilesDir("vanced/$variant")?.path
File(downloadPath.toString()).deleteRecursively()
installUrl = defPrefs.getInstallUrl()
lang = prefs.getString("lang", getDefaultVancedLanguages())?.split(", ")?.toMutableList()
prefs.getString("lang", getDefaultVancedLanguages())?.let {
lang = it.split(", ").toMutableList()
}
theme = prefs.getString("theme", "dark")
vancedVersion = defPrefs.getString("vanced_version", "latest")?.getLatestAppVersion(vancedVersions.get()?.value ?: listOf(""))
themePath = "$installUrl/apks/v$vancedVersion/$variant/Theme"
@ -73,24 +75,24 @@ object VancedDownloader {
context: Context,
type: String = "theme"
) {
CoroutineScope(Dispatchers.IO).launch {
launch {
val url =
when (type) {
"theme" -> "$themePath/$theme.apk"
"arch" -> "$installUrl/apks/v$vancedVersion/$variant/Arch/split_config.$arch.apk"
"stock" -> "$themePath/stock.apk"
"dpi" -> "$themePath/dpi.apk"
"lang" -> "$installUrl/apks/v$vancedVersion/$variant/Language/split_config.${lang?.get(count)}.apk"
"lang" -> "$installUrl/apks/v$vancedVersion/$variant/Language/split_config.${lang[count]}.apk"
else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?")
}
downloadProgress.get()?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url))
downloadProgress.value?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url))
.build()
.setOnStartOrResumeListener {
downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, getFileNameFromUrl(url)))
downloadProgress.value?.downloadingFile?.value = context.getString(R.string.downloading_file, getFileNameFromUrl(url))
}
.setOnProgressListener { progress ->
downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt())
downloadProgress.value?.downloadProgress?.value = (progress.currentBytes * 100 / progress.totalBytes).toInt()
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
@ -112,7 +114,7 @@ object VancedDownloader {
"lang" -> {
count++
succesfulLangCount++
if (count < lang?.size!!)
if (count < lang.size)
downloadSplits(context, "lang")
else
startVancedInstall(context)
@ -132,16 +134,16 @@ object VancedDownloader {
if (type == "lang") {
count++
when {
count < lang?.size!! -> downloadSplits(context, "lang")
count < lang.size -> downloadSplits(context, "lang")
succesfulLangCount == 0 -> {
lang?.add("en")
lang.add("en")
downloadSplits(context, "lang")
}
else -> startVancedInstall(context)
}
} else {
downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, getFileNameFromUrl(url)))
downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, getFileNameFromUrl(url))
}
}
})
@ -149,8 +151,8 @@ object VancedDownloader {
}
fun startVancedInstall(context: Context, variant: String? = this.variant) {
downloadProgress.get()?.installing?.set(true)
downloadProgress.get()?.reset()
downloadProgress.value?.installing?.value = true
downloadProgress.value?.reset()
FirebaseAnalytics.getInstance(context).logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
variant?.let { param("vanced_variant", it) }
theme?.let { param("vanced_theme", it) }
@ -160,8 +162,4 @@ object VancedDownloader {
else
installVanced(context)
}
}
}

View File

@ -0,0 +1,15 @@
package com.vanced.manager.core.ext
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import kotlin.reflect.full.createInstance
fun Fragment.requireSupportFM() = requireActivity().supportFragmentManager
inline fun <reified D : DialogFragment> Fragment.showDialogRefl() {
D::class.createInstance().show(requireSupportFM(), D::class.simpleName)
}
fun <D : DialogFragment> Fragment.showDialog(dialog: D) {
dialog.show(requireSupportFM(), dialog::class.simpleName)
}

View File

@ -1,24 +1,22 @@
package com.vanced.manager.model
import androidx.databinding.ObservableBoolean
import androidx.databinding.ObservableField
import androidx.databinding.ObservableInt
import androidx.lifecycle.MutableLiveData
open class ProgressModel {
val downloadProgress = ObservableInt()
val downloadingFile = ObservableField<String>()
val installing = ObservableBoolean()
val downloadProgress = MutableLiveData<Int>()
val downloadingFile = MutableLiveData<String>()
val installing = MutableLiveData<Boolean>()
var currentDownload: Int = 0
fun reset() {
downloadProgress.set(0)
downloadingFile.set("")
downloadProgress.value = 0
downloadingFile.value = ""
}
init {
installing.set(false)
installing.value = false
reset()
}

View File

@ -13,11 +13,11 @@ import androidx.navigation.NavDestination
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.preference.PreferenceManager.*
import com.crowdin.platform.Crowdin
import com.crowdin.platform.LoadingStateListener
import com.google.firebase.messaging.FirebaseMessaging
import com.vanced.manager.BuildConfig.ENABLE_CROWDIN_AUTH
import com.vanced.manager.BuildConfig.*
import com.vanced.manager.R
import com.vanced.manager.databinding.ActivityMainBinding
import com.vanced.manager.ui.dialogs.DialogContainer
@ -104,8 +104,9 @@ class MainActivity : AppCompatActivity() {
navHost.navigate(HomeFragmentDirections.toSettingsFragment())
return true
}
R.id.toolbar_update_manager -> {
ManagerUpdateDialog(false).show(supportFragmentManager, "manager_update")
ManagerUpdateDialog.newInstance(false).show(supportFragmentManager, "manager_update")
}
R.id.dev_settings -> {
navHost.navigate(SettingsFragmentDirections.toDevSettingsFragment())
@ -178,7 +179,7 @@ class MainActivity : AppCompatActivity() {
private fun checkUpdates() {
if (InternetTools.isUpdateAvailable()) {
ManagerUpdateDialog(false).show(supportFragmentManager, "UpdateCheck")
ManagerUpdateDialog.newInstance(false).show(supportFragmentManager, "UpdateCheck")
}
}

View File

@ -0,0 +1,37 @@
package com.vanced.manager.ui.core
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewbinding.ViewBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
abstract class BindingBottomSheetDialogFragment<VB : ViewBinding> : BottomSheetDialogFragment() {
private var _binding: VB? = null
protected val binding: VB get() = requireNotNull(_binding)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = binding(inflater, container, savedInstanceState)
otherSetups()
return binding.root
}
protected abstract fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): VB
protected open fun otherSetups() = Unit
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@ -0,0 +1,37 @@
package com.vanced.manager.ui.core
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatDialogFragment
import androidx.viewbinding.ViewBinding
abstract class BindingDialogFragment<VB : ViewBinding> : AppCompatDialogFragment() {
private var _binding: VB? = null
protected val binding: VB get() = requireNotNull(_binding)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = binding(inflater, container, savedInstanceState)
otherSetups()
return binding.root
}
protected abstract fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): VB
protected open fun otherSetups() = Unit
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@ -0,0 +1,37 @@
package com.vanced.manager.ui.core
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding
abstract class BindingFragment<VB : ViewBinding> : Fragment() {
private var _binding: VB? = null
protected val binding: VB get() = requireNotNull(_binding)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = binding(inflater, container, savedInstanceState)
otherSetups()
return binding.root
}
protected abstract fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): VB
protected open fun otherSetups() = Unit
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@ -8,10 +8,8 @@ import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.DialogFragment
import androidx.core.view.isVisible
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.downloader.PRDownloader
import com.vanced.manager.R
@ -19,53 +17,87 @@ import com.vanced.manager.core.downloader.MicrogDownloader.downloadMicrog
import com.vanced.manager.core.downloader.MusicDownloader.downloadMusic
import com.vanced.manager.core.downloader.VancedDownloader.downloadVanced
import com.vanced.manager.databinding.DialogAppDownloadBinding
import com.vanced.manager.ui.core.BindingDialogFragment
import com.vanced.manager.utils.DownloadHelper.downloadProgress
class AppDownloadDialog(
private val app: String,
private val installing: Boolean = false
) : DialogFragment() {
class AppDownloadDialog : BindingDialogFragment<DialogAppDownloadBinding>() {
private lateinit var binding: DialogAppDownloadBinding
companion object {
const val CLOSE_DIALOG = "close_dialog"
private const val TAG_APP = "TAG_APP"
private const val TAG_INSTALLING = "TAG_INSTALLING"
fun newInstance(
app: String,
installing: Boolean = false
): AppDownloadDialog = AppDownloadDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP, app)
putBoolean(TAG_INSTALLING, installing)
}
}
}
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
CLOSE_DIALOG -> dismiss()
if (intent.action == CLOSE_DIALOG) {
dismiss()
}
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
if (dialog != null && dialog?.window != null) {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_app_download, container, false)
binding.progress = downloadProgress.get()
return binding.root
) = DialogAppDownloadBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
isCancelable = false
binding.appDownloadHeader.text = requireActivity().getString(R.string.installing_app, app)
binding.appDownloadCancel.setOnClickListener {
if (downloadProgress.get()?.installing?.get() == true)
return@setOnClickListener
PRDownloader.cancel(downloadProgress.get()!!.currentDownload)
dismiss()
private fun bindData() {
with(binding) {
isCancelable = false
bindDownloadProgress()
val app = arguments?.getString(TAG_APP)
appDownloadHeader.text = app
if (arguments?.getBoolean(TAG_INSTALLING) == false) {
when (app) {
getString(R.string.vanced) -> downloadVanced(requireContext())
getString(R.string.music) -> downloadMusic(requireContext())
getString(R.string.microg) -> downloadMicrog(requireContext())
}
}
}
if (!installing) {
when (app) {
requireActivity().getString(R.string.vanced) -> downloadVanced(requireActivity())
requireActivity().getString(R.string.music) -> downloadMusic(requireActivity())
requireActivity().getString(R.string.microg) -> downloadMicrog(requireActivity())
}
private fun DialogAppDownloadBinding.bindDownloadProgress() {
with(downloadProgress) {
observe(viewLifecycleOwner) { progressModel ->
progressModel.downloadProgress.observe(viewLifecycleOwner) {
appDownloadProgressbar.progress = it
}
progressModel.installing.observe(viewLifecycleOwner) { installing ->
appDownloadProgressbar.isVisible = !installing
appInstallProgressbar.isVisible = installing
appDownloadFile.isVisible = !installing
appDownloadCancel.isEnabled = !installing
appDownloadCancel.setOnClickListener {
if (installing) {
return@setOnClickListener
}
PRDownloader.cancel(progressModel.currentDownload)
dismiss()
}
}
progressModel.downloadingFile.observe(viewLifecycleOwner) {
appDownloadFile.text = it
}
}
}
}
@ -80,9 +112,4 @@ class AppDownloadDialog(
intentFilter.addAction(CLOSE_DIALOG)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
companion object {
const val CLOSE_DIALOG = "close_dialog"
}
}

View File

@ -5,34 +5,49 @@ import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.DialogFragment
import androidx.core.graphics.drawable.toBitmap
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogAppInfoBinding
import com.vanced.manager.ui.core.BindingDialogFragment
class AppInfoDialog(
private val appName: String?,
private val appIcon: Drawable?,
private val changelog: String?
) : DialogFragment() {
class AppInfoDialog : BindingDialogFragment<DialogAppInfoBinding>() {
private lateinit var binding: DialogAppInfoBinding
companion object {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
if (dialog != null && dialog?.window != null) {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
private const val TAG_APP_NAME = "TAG_APP_NAME"
private const val TAG_APP_ICON = "TAG_APP_ICON"
private const val TAG_CHANGELOG = "TAG_CHANGELOG"
fun newInstance(
appName: String?,
appIcon: Drawable?,
changelog: String?
): AppInfoDialog = AppInfoDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP_NAME, appName)
putString(TAG_CHANGELOG, changelog)
putParcelable(TAG_APP_ICON, appIcon?.toBitmap())
}
}
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_app_info, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.aboutAppName.text = requireActivity().getString(R.string.about_app, appName)
binding.aboutAppImage.setImageDrawable(appIcon)
binding.aboutAppChangelog.text = changelog
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogAppInfoBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
private fun bindData() {
with(binding) {
aboutAppName.text = getString(R.string.about_app, arguments?.getString(TAG_APP_NAME))
aboutAppChangelog.text = arguments?.getString(TAG_CHANGELOG)
aboutAppImage.setImageBitmap(arguments?.getParcelable(TAG_APP_ICON))
}
}
}

View File

@ -2,68 +2,91 @@ package com.vanced.manager.ui.dialogs
import android.content.DialogInterface
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
import com.vanced.manager.utils.Extensions.getDefaultPrefs
import com.vanced.manager.utils.Extensions.show
class AppVersionSelectorDialog(
private val versions: List<String>,
private val app: String
) : BottomSheetDialogFragment() {
class AppVersionSelectorDialog : BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
private lateinit var binding: DialogBottomRadioButtonBinding
private val prefs by lazy { requireActivity().getDefaultPrefs() }
override fun onCreateView(
companion object {
private const val TAG_VERSIONS = "TAG_VERSIONS"
private const val TAG_APP = "TAG_APP"
fun newInstance(
versions: List<String>?,
app: String
): AppVersionSelectorDialog = AppVersionSelectorDialog().apply {
arguments = Bundle().apply {
val arrayList = arrayListOf<String>()
versions?.let { arrayList.addAll(it) }
putStringArrayList(TAG_VERSIONS, arrayList)
putString(TAG_APP, app)
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_bottom_radio_button, container, false)
return binding.root
) = DialogBottomRadioButtonBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
loadBoxes()
view.findViewWithTag<MaterialRadioButton>(prefs.getString("${app}_version", "latest")).isChecked = true
binding.dialogTitle.text = requireActivity().getString(R.string.version)
binding.dialogSave.setOnClickListener {
prefs.edit {
putString("${app}_version", binding.dialogRadiogroup.getCheckedButtonTag())
private fun bindData() {
with(binding) {
loadBoxes()?.forEach { mrb ->
dialogRadiogroup.addView(
mrb,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
}
dismiss()
}
}
private fun loadBoxes() {
requireActivity().runOnUiThread {
for (i in versions.indices) {
val rb = MaterialRadioButton(requireActivity()).apply {
text = versions[i]
tag = versions[i]
textSize = 18f
val tag = root.findViewWithTag<MaterialRadioButton>(
prefs.getString("${arguments?.getString(TAG_APP)}_version", "latest")
)
if (tag != null) {
tag.isChecked = true
}
dialogTitle.text = getString(R.string.version)
dialogSave.setOnClickListener {
val checkedTag = dialogRadiogroup.getCheckedButtonTag()
if (checkedTag != null) {
prefs.edit { putString("${arguments?.getString(TAG_APP)}_version", checkedTag) }
}
binding.dialogRadiogroup.addView(rb, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
dismiss()
}
}
}
private fun loadBoxes() =
arguments?.getStringArrayList(TAG_VERSIONS)?.map { version ->
MaterialRadioButton(requireActivity()).apply {
text = version
tag = version
textSize = 18f
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
if (app == "vanced")
if (arguments?.getString(TAG_APP) == "vanced") {
VancedPreferencesDialog().show(requireActivity())
else
} else {
MusicPreferencesDialog().show(requireActivity())
}
}
}

View File

@ -2,54 +2,67 @@ package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import androidx.preference.PreferenceManager.*
import com.vanced.manager.R
import com.vanced.manager.core.downloader.MicrogDownloader.startMicrogInstall
import com.vanced.manager.core.downloader.MusicDownloader.startMusicInstall
import com.vanced.manager.core.downloader.VancedDownloader.startVancedInstall
import com.vanced.manager.databinding.DialogInstallationFilesDetectedBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.show
class InstallationFilesDetectedDialog(private val app: String) : BottomSheetDialogFragment() {
class InstallationFilesDetectedDialog : BindingBottomSheetDialogFragment<DialogInstallationFilesDetectedBinding>() {
private lateinit var binding: DialogInstallationFilesDetectedBinding
companion object {
override fun onCreateView(
private const val TAG_APP = "TAG_APP"
fun newInstance(
app: String
): InstallationFilesDetectedDialog = InstallationFilesDetectedDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP, app)
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_installation_files_detected, container, false)
return binding.root
) = DialogInstallationFilesDetectedBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.installationDetectedTitle.text = requireActivity().getString(R.string.app_install_files_detected, app)
binding.installationDetectedSummary.text = requireActivity().getString(R.string.app_install_files_detected_summary, app)
binding.installationDetectedRedownload.setOnClickListener {
dismiss()
if (app == requireActivity().getString(R.string.vanced))
VancedPreferencesDialog().show(requireActivity())
else
AppDownloadDialog(app).show(requireActivity())
}
binding.installationDetectedInstall.setOnClickListener {
dismiss()
when (app) {
requireActivity().getString(R.string.vanced) -> startVancedInstall(requireActivity(), getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot"))
requireActivity().getString(R.string.music) -> startMusicInstall(requireActivity())
requireActivity().getString(R.string.microg) -> startMicrogInstall(requireActivity())
private fun bindData() {
with(binding) {
val app = arguments?.getString(TAG_APP) ?: throw IllegalArgumentException("app name is null")
installationDetectedTitle.text = getString(R.string.app_install_files_detected, app)
installationDetectedSummary.text = getString(R.string.app_install_files_detected_summary, app)
installationDetectedRedownload.setOnClickListener {
dismiss()
if (app == getString(R.string.vanced))
VancedPreferencesDialog().show(requireActivity())
else {
AppDownloadDialog.newInstance(app).show(requireActivity())
}
}
installationDetectedInstall.setOnClickListener {
dismiss()
when (app) {
getString(R.string.vanced) -> startVancedInstall(requireContext(),
getDefaultSharedPreferences(requireContext()).getString("vanced_variant", "nonroot"))
getString(R.string.music) -> startMusicInstall(requireContext())
getString(R.string.microg) -> startMicrogInstall(requireContext())
}
AppDownloadDialog.newInstance(
app = app,
installing = true
).show(requireActivity())
}
AppDownloadDialog(app, true).show(requireActivity())
}
}
}

View File

@ -10,37 +10,45 @@ import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogInstallationFilesDetectedBinding
import com.vanced.manager.databinding.DialogManagerAccentColorBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
class ManagerAccentColorDialog : BottomSheetDialogFragment() {
class ManagerAccentColorDialog : BindingBottomSheetDialogFragment<DialogManagerAccentColorBinding>() {
private lateinit var binding: DialogManagerAccentColorBinding
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_accent_color, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val accent = prefs.getString("manager_accent", "Blue")
view.findViewWithTag<MaterialRadioButton>(accent).isChecked = true
binding.accentSave.setOnClickListener {
val newPref = binding.accentRadiogroup.getCheckedButtonTag()
if (accent != newPref) {
prefs.edit { putString("manager_accent", newPref) }
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
companion object {
fun newInstance(): ManagerAccentColorDialog = ManagerAccentColorDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogManagerAccentColorBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val accent = prefs.getString("manager_accent", "Blue")
root.findViewWithTag<MaterialRadioButton>(accent).isChecked = true
accentSave.setOnClickListener {
val newPref = binding.accentRadiogroup.getCheckedButtonTag()
if (accent != newPref) {
prefs.edit { putString("manager_accent", newPref) }
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
}
}
}
}

View File

@ -2,63 +2,64 @@ package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.view.ViewGroup.LayoutParams.*
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import androidx.preference.PreferenceManager.*
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.BuildConfig.MANAGER_LANGUAGES
import com.vanced.manager.R
import com.vanced.manager.BuildConfig.*
import com.vanced.manager.databinding.DialogManagerLanguageBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
class ManagerLanguageDialog : BottomSheetDialogFragment() {
class ManagerLanguageDialog : BindingBottomSheetDialogFragment<DialogManagerLanguageBinding>() {
companion object {
fun newInstance(): ManagerLanguageDialog = ManagerLanguageDialog().apply {
arguments = Bundle()
}
}
private lateinit var binding: DialogManagerLanguageBinding
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_language, container, false)
return binding.root
) = DialogManagerLanguageBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
addRadioButtons()
val language = prefs.getString("manager_lang", "System Default")
view.findViewWithTag<MaterialRadioButton>(language).isChecked = true
binding.languageSave.setOnClickListener {
val newPref = binding.languageRadiogroup.getCheckedButtonTag()
if (language != newPref) {
prefs.edit { putString("manager_lang", newPref) }
dismiss()
requireActivity().recreate()
} else {
dismiss()
private fun bindData() {
with(binding) {
addRadioButtons().forEach { mrb ->
languageRadiogroup.addView(mrb, MATCH_PARENT, WRAP_CONTENT)
}
}
}
private fun addRadioButtons() {
requireActivity().runOnUiThread {
(arrayOf("System Default") + MANAGER_LANGUAGES).forEach { lang ->
val button = MaterialRadioButton(requireActivity()).apply {
text = getLanguageFormat(requireActivity(), lang)
textSize = 18f
tag = lang
val language = prefs.getString("manager_lang", "System Default")
root.findViewWithTag<MaterialRadioButton>(language).isChecked = true
languageSave.setOnClickListener {
val newPref = binding.languageRadiogroup.getCheckedButtonTag()
if (language != newPref) {
prefs.edit { putString("manager_lang", newPref) }
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
binding.languageRadiogroup.addView(button, MATCH_PARENT, WRAP_CONTENT)
}
}
}
private fun addRadioButtons() =
(arrayOf("System Default") + MANAGER_LANGUAGES).map { lang ->
MaterialRadioButton(requireActivity()).apply {
text = getLanguageFormat(requireActivity(), lang)
textSize = 18f
tag = lang
}
}
}

View File

@ -2,43 +2,48 @@ package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import androidx.preference.PreferenceManager.*
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogManagerThemeBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
class ManagerThemeDialog : BottomSheetDialogFragment() {
class ManagerThemeDialog : BindingBottomSheetDialogFragment<DialogManagerThemeBinding>() {
companion object {
fun newInstance(): ManagerThemeDialog = ManagerThemeDialog().apply {
arguments = Bundle()
}
}
private lateinit var binding: DialogManagerThemeBinding
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_theme, container, false)
return binding.root
) = DialogManagerThemeBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val theme = prefs.getString("manager_theme", "System Default")
view.findViewWithTag<MaterialRadioButton>(theme).isChecked = true
binding.themeSave.setOnClickListener {
val newPref = binding.themeRadiogroup.getCheckedButtonTag()
if (theme != newPref) {
prefs.edit { putString("manager_theme", newPref) }
dismiss()
requireActivity().recreate()
} else {
dismiss()
private fun bindData() {
with(binding) {
val theme = prefs.getString("manager_theme", "System Default")
root.findViewWithTag<MaterialRadioButton>(theme).isChecked = true
themeSave.setOnClickListener {
val newPref = themeRadiogroup.getCheckedButtonTag()
if (theme != newPref) {
prefs.edit { putString("manager_theme", newPref) }
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
}
}
}

View File

@ -8,23 +8,34 @@ import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.DialogFragment
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.downloader.PRDownloader
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogManagerUpdateBinding
import com.vanced.manager.ui.core.BindingDialogFragment
import com.vanced.manager.utils.DownloadHelper.downloadManager
import com.vanced.manager.utils.DownloadHelper.downloadProgress
import com.vanced.manager.utils.InternetTools.isUpdateAvailable
import kotlinx.coroutines.launch
class ManagerUpdateDialog(
private val forceUpdate: Boolean
) : DialogFragment() {
class ManagerUpdateDialog : BindingDialogFragment<DialogManagerUpdateBinding>() {
private lateinit var binding: DialogManagerUpdateBinding
companion object {
const val CLOSE_DIALOG = "close_dialog"
private const val TAG_FORCE_UPDATE = "TAG_FORCE_UPDATE"
fun newInstance(
forceUpdate: Boolean
): ManagerUpdateDialog = ManagerUpdateDialog().apply {
arguments = Bundle().apply {
putBoolean(TAG_FORCE_UPDATE, forceUpdate)
}
}
}
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
@ -36,30 +47,45 @@ class ManagerUpdateDialog(
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
if (dialog != null && dialog?.window != null) {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
) = DialogManagerUpdateBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
lifecycleScope.launch {
if (arguments?.getBoolean(TAG_FORCE_UPDATE) == true) {
binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient)
downloadManager(requireActivity())
} else {
checkUpdates()
}
binding.managerUpdateCancel.setOnClickListener {
PRDownloader.cancel(downloadProgress.value?.currentDownload)
dismiss()
}
}
isCancelable = false
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_update, container, false)
binding.progress = downloadProgress.get()
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (forceUpdate) {
binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient)
downloadManager(requireActivity())
} else
checkUpdates()
private fun bindData() {
with(binding) {
isCancelable = false
bindDownloadProgress()
}
}
binding.managerUpdateCancel.setOnClickListener {
PRDownloader.cancel(downloadProgress.get()!!.currentDownload)
dismiss()
private fun DialogManagerUpdateBinding.bindDownloadProgress() {
with(downloadProgress) {
observe(viewLifecycleOwner) { progressModel ->
progressModel.downloadProgress.observe(viewLifecycleOwner) {
managerUpdateProgressbar.progress = it
managerUpdateProgressbar.isVisible = it != 0
}
}
}
}
@ -68,12 +94,13 @@ class ManagerUpdateDialog(
registerReceiver()
}
private fun checkUpdates() {
private suspend fun checkUpdates() {
if (isUpdateAvailable()) {
binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient)
downloadManager(requireActivity())
} else
} else {
binding.managerUpdatePatient.text = requireActivity().getString(R.string.update_not_found)
}
}
private fun registerReceiver() {
@ -81,9 +108,4 @@ class ManagerUpdateDialog(
intentFilter.addAction(CLOSE_DIALOG)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
companion object {
const val CLOSE_DIALOG = "close_dialog"
}
}

View File

@ -2,48 +2,55 @@ package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import androidx.preference.PreferenceManager.*
import com.google.android.material.radiobutton.MaterialRadioButton
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogManagerVariantBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
class ManagerVariantDialog : BottomSheetDialogFragment() {
class ManagerVariantDialog : BindingBottomSheetDialogFragment<DialogManagerVariantBinding>() {
companion object {
fun newInstance(): ManagerVariantDialog = ManagerVariantDialog().apply {
arguments = Bundle()
}
}
private lateinit var binding: DialogManagerVariantBinding
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_variant, container, false)
return binding.root
) = DialogManagerVariantBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val variant = prefs.getString("vanced_variant", "nonroot")
view.findViewWithTag<MaterialRadioButton>(variant).isChecked = true
binding.variantSave.setOnClickListener {
val newPref = binding.variantRadiogroup.getCheckedButtonTag()
if (variant != newPref) {
if (newPref == "root" && Shell.rootAccess())
prefs.edit { putString("vanced_variant", "root") }
else
prefs.edit { putString("vanced_variant", "nonroot") }
dismiss()
requireActivity().recreate()
} else {
dismiss()
private fun bindData() {
with(binding) {
val variant = prefs.getString("vanced_variant", "nonroot")
root.findViewWithTag<MaterialRadioButton>(variant).isChecked = true
variantSave.setOnClickListener {
val newPref = variantRadiogroup.getCheckedButtonTag()
if (variant != newPref) {
prefs.edit {
if (newPref == "root" && Shell.rootAccess()) {
putString("vanced_variant", "root")
} else {
putString("vanced_variant", "nonroot")
}
}
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
}
}
}

View File

@ -2,49 +2,54 @@ package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogMusicPreferencesBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.convertToAppVersions
import com.vanced.manager.utils.Extensions.getDefaultPrefs
import com.vanced.manager.utils.Extensions.show
import com.vanced.manager.utils.InternetTools.musicVersions
class MusicPreferencesDialog : BottomSheetDialogFragment() {
class MusicPreferencesDialog : BindingBottomSheetDialogFragment<DialogMusicPreferencesBinding>() {
companion object {
fun newInstance(): MusicPreferencesDialog = MusicPreferencesDialog().apply {
arguments = Bundle()
}
}
private lateinit var binding: DialogMusicPreferencesBinding
private val prefs by lazy { requireActivity().getDefaultPrefs() }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_music_preferences, container, false)
return binding.root
) = DialogMusicPreferencesBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val musicVersionsConv = musicVersions.get()?.value?.reversed()?.convertToAppVersions()
binding.musicInstallTitle.text = requireActivity().getString(R.string.app_installation_preferences, requireActivity().getString(R.string.music))
binding.musicVersion.text = requireActivity().getString(R.string.chosen_version, prefs.getString("music_version", "latest"))
binding.openVersionSelector.setOnClickListener {
dismiss()
if (musicVersionsConv != null) {
AppVersionSelectorDialog(musicVersionsConv, "music").show(requireActivity())
private fun bindData() {
with(binding) {
val musicVersionsConv = musicVersions.get()?.value?.reversed()?.convertToAppVersions()
musicInstallTitle.text = getString(R.string.app_installation_preferences, getString(R.string.music))
musicVersion.text = getString(R.string.chosen_version, prefs.getString("music_version", "latest"))
openVersionSelector.setOnClickListener {
dismiss()
AppVersionSelectorDialog.newInstance(
versions = musicVersionsConv,
app = "music"
).show(requireActivity())
}
musicInstall.setOnClickListener {
dismiss()
AppDownloadDialog.newInstance(
app = getString(R.string.music)
).show(requireActivity())
}
}
binding.musicInstall.setOnClickListener {
dismiss()
AppDownloadDialog(requireActivity().getString(R.string.music)).show(requireActivity())
}
}
}

View File

@ -2,50 +2,57 @@ package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.preference.PreferenceManager.*
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.vanced.manager.R
import com.vanced.manager.adapter.SelectAppsAdapter
import com.vanced.manager.databinding.DialogSelectAppsBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
class SelectAppsDialog : BottomSheetDialogFragment() {
class SelectAppsDialog : BindingBottomSheetDialogFragment<DialogSelectAppsBinding>() {
companion object {
fun newInstance(): SelectAppsDialog = SelectAppsDialog().apply {
arguments = Bundle()
}
}
private lateinit var binding: DialogSelectAppsBinding
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_select_apps, container, false)
return binding.root
) = DialogSelectAppsBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val ad = SelectAppsAdapter(requireActivity())
binding.selectAppsRecycler.apply {
layoutManager = LinearLayoutManager(requireActivity())
adapter = ad
setHasFixedSize(true)
}
binding.selectAppsSave.setOnClickListener {
if (ad.apps.all { app -> !app.isChecked }) {
Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show()
return@setOnClickListener
private fun bindData() {
with(binding) {
val ad = SelectAppsAdapter(requireActivity())
selectAppsRecycler.apply {
layoutManager = LinearLayoutManager(requireActivity())
adapter = ad
setHasFixedSize(true)
}
ad.apps.forEach { app ->
prefs.edit { putBoolean("enable_${app.tag}", app.isChecked) }
selectAppsSave.setOnClickListener {
if (ad.apps.all { app -> !app.isChecked }) {
Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
prefs.edit {
ad.apps.forEach { app ->
putBoolean("enable_${app.tag}", app.isChecked)
}
}
dismiss()
}
dismiss()
}
}
}

View File

@ -4,51 +4,65 @@ import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.TextView
import androidx.core.content.edit
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.button.MaterialButton
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogCustomUrlBinding
import com.vanced.manager.ui.core.BindingDialogFragment
import com.vanced.manager.utils.Extensions.fetchData
import com.vanced.manager.utils.InternetTools.baseUrl
import kotlinx.coroutines.launch
class URLChangeDialog : DialogFragment() {
class URLChangeDialog : BindingDialogFragment<DialogCustomUrlBinding>() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
if (dialog != null && dialog?.window != null) {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
companion object {
fun newInstance(): URLChangeDialog = URLChangeDialog().apply {
arguments = Bundle()
}
return inflater.inflate(R.layout.dialog_custom_url, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val urlField = view.findViewById<EditText>(R.id.url_input)
val fieldTxt = if (arguments != null) arguments?.getString("url") else getDefaultSharedPreferences(requireActivity()).getString("install_url", baseUrl)
urlField.setText(fieldTxt, TextView.BufferType.EDITABLE)
view.findViewById<MaterialButton>(R.id.url_save).setOnClickListener {
val finalUrl =
if (urlField.text.startsWith("https://") || urlField.text.startsWith("http://"))
urlField.text.removeSuffix("/").toString()
else
"https://${urlField.text}".removeSuffix("/")
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogCustomUrlBinding.inflate(inflater, container, false)
saveUrl(finalUrl)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
private fun bindData() {
with(binding) {
urlInput.setText(
if (arguments != null) {
arguments?.getString("url")
} else {
getDefaultSharedPreferences(requireActivity()).getString("install_url", baseUrl)
},
TextView.BufferType.EDITABLE
)
urlSave.setOnClickListener {
val finalUrl = if (urlInput.text?.startsWith("https://") == true || urlInput.text?.startsWith("http://") == true) {
urlInput.text?.removeSuffix("/").toString()
} else {
"https://${urlInput.text}".removeSuffix("/")
}
saveUrl(finalUrl)
}
urlReset.setOnClickListener { saveUrl(baseUrl) }
}
view.findViewById<MaterialButton>(R.id.url_reset).setOnClickListener { saveUrl(baseUrl) }
}
private fun saveUrl(url: String) {
getDefaultSharedPreferences(requireActivity()).edit { putString("install_url", url) }
requireActivity().fetchData()
dismiss()
lifecycleScope.launch {
getDefaultSharedPreferences(requireActivity()).edit { putString("install_url", url) }
requireActivity().fetchData()
dismiss()
}
}
}

View File

@ -4,82 +4,75 @@ import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.view.ViewGroup.LayoutParams.*
import android.widget.LinearLayout
import android.widget.Toast
import androidx.core.content.edit
import androidx.core.content.res.ResourcesCompat
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.button.MaterialButton
import com.google.android.material.checkbox.MaterialCheckBox
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogVancedLanguageSelectionBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.show
import com.vanced.manager.utils.InternetTools.vanced
import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.util.*
class VancedLanguageSelectionDialog : BottomSheetDialogFragment() {
class VancedLanguageSelectionDialog : BindingBottomSheetDialogFragment<DialogVancedLanguageSelectionBinding>() {
private lateinit var langs: MutableList<String>
private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) }
companion object {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.dialog_vanced_language_selection, container, false)
}
@ExperimentalStdlibApi
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
langs = vanced.get()?.array<String>("langs")?.value ?: mutableListOf("null")
loadBoxes(view.findViewById(R.id.lang_button_ll))
view.findViewById<MaterialButton>(R.id.vanced_install_finish).setOnClickListener {
val chosenLangs = mutableListOf<String>()
if (!langs.contains("null"))
langs.forEach { lang ->
if (view.findViewWithTag<MaterialCheckBox>(lang).isChecked) {
chosenLangs.add(lang)
}
}
if (chosenLangs.isEmpty()) {
Toast.makeText(requireActivity(), R.string.select_at_least_one_lang, Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
prefs?.edit { putString("lang", chosenLangs.joinToString()) }
dismiss()
fun newInstance(): VancedLanguageSelectionDialog = VancedLanguageSelectionDialog().apply {
arguments = Bundle()
}
}
@ExperimentalStdlibApi
private fun loadBoxes(ll: LinearLayout) {
CoroutineScope(Dispatchers.Main).launch {
val langPrefs = prefs.getString("lang", getDefaultVancedLanguages())
if (this@VancedLanguageSelectionDialog::langs.isInitialized) {
if (!langs.contains("null")) {
langs.forEach { lang ->
val loc = Locale(lang)
val box: MaterialCheckBox = MaterialCheckBox(requireActivity()).apply {
tag = lang
isChecked = langPrefs!!.contains(lang)
text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT)
textSize = 18F
typeface = ResourcesCompat.getFont(requireActivity(), R.font.exo_bold)
}
ll.addView(box, MATCH_PARENT, WRAP_CONTENT)
private val langs = vanced.get()?.array<String>("langs")?.value
private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogVancedLanguageSelectionBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
langButtonLl.loadBoxes()
vancedInstallFinish.setOnClickListener {
val chosenLangs = mutableListOf<String>()
langs?.forEach { lang ->
if (root.findViewWithTag<MaterialCheckBox>(lang).isChecked) {
chosenLangs.add(lang)
}
}
} else
loadBoxes(ll)
if (chosenLangs.isEmpty()) {
Toast.makeText(requireActivity(), R.string.select_at_least_one_lang, Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
prefs?.edit { putString("lang", chosenLangs.joinToString()) }
dismiss()
}
}
}
private fun LinearLayout.loadBoxes() {
val langPrefs = prefs.getString("lang", getDefaultVancedLanguages())
langs?.forEach { lang ->
val loc = Locale(lang)
val box: MaterialCheckBox = MaterialCheckBox(requireActivity()).apply {
tag = lang
isChecked = langPrefs?.contains(lang) ?: false
text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT)
textSize = 18F
typeface = ResourcesCompat.getFont(requireActivity(), R.font.exo_bold)
}
addView(box, MATCH_PARENT, WRAP_CONTENT)
}
}
@ -87,5 +80,4 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() {
super.onDismiss(dialog)
VancedPreferencesDialog().show(requireActivity())
}
}

View File

@ -3,12 +3,10 @@ package com.vanced.manager.ui.dialogs
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogVancedPreferencesBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.convertToAppTheme
import com.vanced.manager.utils.Extensions.convertToAppVersions
import com.vanced.manager.utils.Extensions.getDefaultPrefs
@ -17,58 +15,61 @@ import com.vanced.manager.utils.InternetTools.vancedVersions
import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages
import java.util.*
class VancedPreferencesDialog : BottomSheetDialogFragment() {
class VancedPreferencesDialog : BindingBottomSheetDialogFragment<DialogVancedPreferencesBinding>() {
companion object {
fun newInstance(): VancedPreferencesDialog = VancedPreferencesDialog().apply {
arguments = Bundle()
}
}
private lateinit var binding: DialogVancedPreferencesBinding
private val defPrefs by lazy { requireActivity().getDefaultPrefs() }
private val installPrefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) }
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vanced_preferences, container, false)
return binding.root
) = DialogVancedPreferencesBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
@ExperimentalStdlibApi
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val showLang = mutableListOf<String>()
installPrefs.getString("lang", getDefaultVancedLanguages())?.split(", ")?.toTypedArray()?.forEach { lang ->
val loc = Locale(lang)
showLang.add(loc.getDisplayLanguage(loc).capitalize(Locale.ROOT))
}
val vancedVersionsConv = vancedVersions.get()?.value?.reversed()?.convertToAppVersions()
binding.vancedInstallTitle.text = requireActivity().getString(R.string.app_installation_preferences, requireActivity().getString(R.string.vanced))
binding.vancedTheme.text = requireActivity().getString(R.string.chosen_theme, installPrefs.getString("theme", "dark")?.convertToAppTheme(requireActivity()))
binding.vancedVersion.text = requireActivity().getString(R.string.chosen_version, defPrefs.getString("vanced_version", "latest"))
binding.vancedLang.text = requireActivity().getString(R.string.chosen_lang, showLang)
binding.openThemeSelector.setOnClickListener {
dismiss()
VancedThemeSelectorDialog().show(requireActivity())
}
binding.openVersionSelector.setOnClickListener {
dismiss()
if (vancedVersionsConv != null) {
AppVersionSelectorDialog(vancedVersionsConv, "vanced").show(requireActivity())
private fun bindData() {
with(binding) {
val showLang = mutableListOf<String>()
installPrefs.getString("lang", getDefaultVancedLanguages())?.split(", ")?.toTypedArray()?.forEach { lang ->
val loc = Locale(lang)
showLang.add(loc.getDisplayLanguage(loc).capitalize(Locale.ROOT))
}
val vancedVersionsConv = vancedVersions.get()?.value?.reversed()?.convertToAppVersions()
vancedInstallTitle.text = getString(R.string.app_installation_preferences, getString(R.string.vanced))
vancedTheme.text = getString(R.string.chosen_theme, installPrefs.getString("theme", "dark")?.convertToAppTheme(requireActivity()))
vancedVersion.text = getString(R.string.chosen_version, defPrefs.getString("vanced_version", "latest"))
vancedLang.text = getString(R.string.chosen_lang, showLang)
openThemeSelector.setOnClickListener {
dismiss()
VancedThemeSelectorDialog().show(requireActivity())
}
openVersionSelector.setOnClickListener {
dismiss()
AppVersionSelectorDialog.newInstance(
versions = vancedVersionsConv,
app = "vanced"
).show(requireActivity())
}
openLanguageSelector.setOnClickListener {
dismiss()
VancedLanguageSelectionDialog().show(requireActivity())
}
vancedInstall.setOnClickListener {
dismiss()
AppDownloadDialog.newInstance(
app = getString(R.string.vanced)
).show(requireActivity())
}
}
binding.openLanguageSelector.setOnClickListener {
dismiss()
VancedLanguageSelectionDialog().show(requireActivity())
}
binding.vancedInstall.setOnClickListener {
dismiss()
AppDownloadDialog(requireActivity().getString(R.string.vanced)).show(requireActivity())
}
}
}

View File

@ -12,45 +12,62 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.R
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment
import com.vanced.manager.utils.Extensions.convertToAppTheme
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
import com.vanced.manager.utils.Extensions.show
import com.vanced.manager.utils.InternetTools.vanced
class VancedThemeSelectorDialog : BottomSheetDialogFragment() {
class VancedThemeSelectorDialog : BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
private lateinit var binding: DialogBottomRadioButtonBinding
private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) }
companion object {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_bottom_radio_button, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
loadButtons()
binding.dialogTitle.text = requireActivity().getString(R.string.theme)
view.findViewWithTag<MaterialRadioButton>(prefs.getString("theme", "dark")).isChecked = true
binding.dialogSave.setOnClickListener {
prefs.edit { putString("theme", binding.dialogRadiogroup.getCheckedButtonTag()) }
dismiss()
fun newInstance(): VancedThemeSelectorDialog = VancedThemeSelectorDialog().apply {
arguments = Bundle()
}
}
private fun loadButtons() {
requireActivity().runOnUiThread {
vanced.get()?.array<String>("themes")?.value?.forEach { theme ->
val rb = MaterialRadioButton(requireActivity()).apply {
text = theme.convertToAppTheme(requireActivity())
tag = theme
textSize = 18f
}
binding.dialogRadiogroup.addView(rb, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogBottomRadioButtonBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
loadButtons()?.forEach { mrb ->
dialogRadiogroup.addView(
mrb,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
}
dialogTitle.text = requireActivity().getString(R.string.theme)
val tag = root.findViewWithTag<MaterialRadioButton>(prefs.getString("theme", "dark"))
if (tag != null) {
tag.isChecked = true
}
dialogSave.setOnClickListener {
val checkedTag = binding.dialogRadiogroup.getCheckedButtonTag()
if (checkedTag != null) {
prefs.edit { putString("theme", checkedTag) }
}
dismiss()
}
}
}
private fun loadButtons() = vanced.get()?.array<String>("themes")?.value?.map {theme ->
MaterialRadioButton(requireActivity()).apply {
text = theme.convertToAppTheme(requireActivity())
tag = theme
textSize = 18f
}
}
@ -58,5 +75,4 @@ class VancedThemeSelectorDialog : BottomSheetDialogFragment() {
super.onDismiss(dialog)
VancedPreferencesDialog().show(requireActivity())
}
}

View File

@ -4,42 +4,49 @@ import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.preference.PreferenceManager
import com.vanced.manager.R
import com.vanced.manager.core.ext.showDialog
import com.vanced.manager.databinding.FragmentAboutBinding
import com.vanced.manager.ui.core.BindingFragment
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.viewmodels.AboutViewModel
import com.vanced.manager.utils.InternetTools.manager
class AboutFragment : Fragment() {
class AboutFragment : BindingFragment<FragmentAboutBinding>() {
private lateinit var binding: FragmentAboutBinding
private val viewModel: AboutViewModel by viewModels()
private var count = 0
private var startMillSec: Long = 0
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
requireActivity().title = getString(R.string.title_about)
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_about, container, false)
binding.viewModel = viewModel
return binding.root
) = FragmentAboutBinding.inflate(inflater, container, false)
override fun otherSetups() {
dataBind()
}
@SuppressLint("ClickableViewAccessibility")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnTouchListener { _, event: MotionEvent ->
private fun dataBind() {
requireActivity().title = getString(R.string.title_about)
binding.aboutHeader.root.setOnClickListener {
showDialog(
AppInfoDialog.newInstance(
appName = getString(R.string.app_name),
appIcon = AppCompatResources.getDrawable(requireActivity(), R.mipmap.ic_launcher),
changelog = manager.get()?.string("changelog")
)
)
}
binding.root.setOnTouchListener { _, event: MotionEvent ->
val eventAction = event.action
if (eventAction == MotionEvent.ACTION_UP) {
val time = System.currentTimeMillis()
@ -64,5 +71,7 @@ class AboutFragment : Fragment() {
}
false
}
binding.aboutSources.aboutGithubButton.setOnClickListener { viewModel.openUrl("https://github.com/YTVanced/VancedInstaller") }
binding.aboutSources.aboutLicenseButton.setOnClickListener { viewModel.openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE") }
}
}

View File

@ -10,7 +10,7 @@ import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.preference.*
import com.crowdin.platform.Crowdin
import com.vanced.manager.BuildConfig.ENABLE_CROWDIN_AUTH
import com.vanced.manager.BuildConfig.*
import com.vanced.manager.R
import com.vanced.manager.ui.WelcomeActivity
import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
@ -89,7 +89,7 @@ class DevSettingsFragment: PreferenceFragmentCompat() {
val forceUpdate: Preference? = findPreference("force_update")
forceUpdate?.setOnPreferenceClickListener {
ManagerUpdateDialog(true).show(
ManagerUpdateDialog.newInstance(true).show(
requireActivity().supportFragmentManager,
"update_manager"
)

View File

@ -3,52 +3,48 @@ package com.vanced.manager.ui.fragments
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
import com.vanced.manager.databinding.FragmentGrantRootBinding
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.ui.core.BindingFragment
class GrantRootFragment : Fragment(), View.OnClickListener {
class GrantRootFragment : BindingFragment<FragmentGrantRootBinding>() {
private lateinit var binding: FragmentGrantRootBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_grant_root, container, false)
return binding.root
) = FragmentGrantRootBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.grantRootFinishFab.setOnClickListener(this)
binding.grantRootFab.setOnClickListener(this)
}
override fun onClick(v: View?) {
when (v?.id) {
R.id.grant_root_fab -> {
if (Shell.rootAccess()) {
getDefaultSharedPreferences(requireActivity()).edit { putString("vanced_variant", "root") }
} else {
Toast.makeText(requireActivity(), R.string.root_not_granted, Toast.LENGTH_SHORT).show()
}
}
R.id.grant_root_finish_fab -> {
val intent = Intent(requireActivity(), MainActivity::class.java)
intent.putExtra("firstLaunch", true)
startActivity(intent)
requireActivity().finish()
}
private fun bindData() {
with(binding) {
grantRootFinishFab.setOnClickListener { navigateToFirstLaunch() }
grantRootFab.setOnClickListener { grantRoot() }
}
}
private fun navigateToFirstLaunch() {
val intent = Intent(requireActivity(), MainActivity::class.java)
intent.putExtra("firstLaunch", true)
startActivity(intent)
requireActivity().finish()
}
private fun grantRoot() {
if (Shell.rootAccess()) {
getDefaultSharedPreferences(requireActivity()).edit { putString("vanced_variant", "root") }
navigateToFirstLaunch()
} else {
Toast.makeText(requireActivity(), R.string.root_not_granted, Toast.LENGTH_SHORT).show()
}
}
}

View File

@ -5,11 +5,12 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.view.*
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.ViewGroup
import androidx.core.content.edit
import androidx.core.content.res.ResourcesCompat
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.PreferenceManager
@ -23,36 +24,41 @@ import com.vanced.manager.adapter.AppListAdapter
import com.vanced.manager.adapter.LinkAdapter
import com.vanced.manager.adapter.SponsorAdapter
import com.vanced.manager.databinding.FragmentHomeBinding
import com.vanced.manager.ui.core.BindingFragment
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
import com.vanced.manager.ui.viewmodels.HomeViewModel
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
open class HomeFragment : Fragment() {
open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
companion object {
const val INSTALL_FAILED = "install_failed"
const val REFRESH_HOME = "refresh_home"
}
private lateinit var binding: FragmentHomeBinding
private val viewModel: HomeViewModel by viewModels {
HomeViewModelFactory(requireActivity())
}
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
private val prefs by lazy { PreferenceManager.getDefaultSharedPreferences(requireActivity()) }
private lateinit var tooltip: ViewTooltip
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
requireActivity().title = getString(R.string.title_home)
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
return binding.root
) = FragmentHomeBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
private fun bindData() {
requireActivity().title = getString(R.string.title_home)
setHasOptionsMenu(true)
with(binding) {
viewModel = this@HomeFragment.viewModel
homeRefresh.setOnRefreshListener { viewModel.fetchData() }
tooltip = ViewTooltip
.on(recyclerAppList)
.position(ViewTooltip.Position.TOP)
@ -91,9 +97,13 @@ open class HomeFragment : Fragment() {
adapter = LinkAdapter(requireActivity(), this@HomeFragment.viewModel)
}
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflateWithCrowdin(R.menu.toolbar_menu, menu, resources)
super.onCreateOptionsMenu(menu, inflater)
}
override fun onPause() {
super.onPause()
localBroadcastManager.unregisterReceiver(broadcastReceiver)
@ -122,15 +132,5 @@ open class HomeFragment : Fragment() {
intentFilter.addAction(REFRESH_HOME)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflateWithCrowdin(R.menu.toolbar_menu, menu, resources)
super.onCreateOptionsMenu(menu, inflater)
}
companion object {
const val INSTALL_FAILED = "install_failed"
const val REFRESH_HOME = "refresh_home"
}
}

View File

@ -2,53 +2,56 @@ package com.vanced.manager.ui.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.edit
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.recyclerview.widget.LinearLayoutManager
import com.vanced.manager.R
import com.vanced.manager.adapter.SelectAppsAdapter
import com.vanced.manager.databinding.FragmentSelectAppsBinding
import com.vanced.manager.ui.core.BindingFragment
class SelectAppsFragment : Fragment() {
class SelectAppsFragment : BindingFragment<FragmentSelectAppsBinding>() {
private lateinit var binding: FragmentSelectAppsBinding
private lateinit var selectAdapter: SelectAppsAdapter
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_select_apps, container, false)
return binding.root
) = FragmentSelectAppsBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val selectAdapter = SelectAppsAdapter(requireActivity())
val prefs = getDefaultSharedPreferences(requireActivity())
binding.selectAppsRecycler.apply {
private fun bindData() {
with(binding) {
initRecycler()
selectAppsFab.setOnClickListener { actionOnClickAppsFab() }
}
}
private fun FragmentSelectAppsBinding.initRecycler() {
selectAdapter = SelectAppsAdapter(requireActivity())
selectAppsRecycler.apply {
layoutManager = LinearLayoutManager(requireActivity())
setHasFixedSize(true)
adapter = selectAdapter
}
binding.selectAppsFab.setOnClickListener {
if (selectAdapter.apps.all { app -> !app.isChecked }) {
Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
selectAdapter.apps.forEach { app ->
prefs.edit { putBoolean("enable_${app.tag}", app.isChecked) }
}
findNavController().navigate(SelectAppsFragmentDirections.selectAppsToGrantRoot())
}
}
private fun actionOnClickAppsFab() {
if (selectAdapter.apps.all { app -> !app.isChecked }) {
Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show()
return
}
val prefs = getDefaultSharedPreferences(requireActivity())
selectAdapter.apps.forEach { app ->
prefs.edit { putBoolean("enable_${app.tag}", app.isChecked) }
}
findNavController().navigate(SelectAppsFragmentDirections.selectAppsToGrantRoot())
}
}

View File

@ -1,10 +1,11 @@
package com.vanced.manager.ui.fragments
import android.os.Bundle
import android.view.*
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.firebase.analytics.FirebaseAnalytics
@ -12,48 +13,74 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.google.firebase.perf.FirebasePerformance
import com.vanced.manager.R
import com.vanced.manager.adapter.GetNotifAdapter
import com.vanced.manager.core.ext.showDialogRefl
import com.vanced.manager.databinding.FragmentSettingsBinding
import com.vanced.manager.ui.core.BindingFragment
import com.vanced.manager.ui.dialogs.*
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
import java.io.File
class SettingsFragment : Fragment() {
class SettingsFragment : BindingFragment<FragmentSettingsBinding>() {
private companion object {
const val LIGHT = "Light"
const val DARK = "Dark"
const val BLUE = "Blue"
const val RED = "Red"
const val GREEN = "Green"
const val YELLOW = "Yellow"
}
private lateinit var binding: FragmentSettingsBinding
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun onCreateView(
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
) = FragmentSettingsBinding.inflate(inflater, container, false)
override fun otherSetups() {
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_settings, container, false)
return binding.root
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
private fun bindData() {
with(binding) {
bindRecycler()
bindFirebase()
bindManagerVariant()
bindClearFiles()
bindManagerTheme()
bindManagerAccentColor()
bindManagerLanguage()
selectApps.setOnClickListener { showDialogRefl<SelectAppsDialog>() }
}
}
binding.notificationsRecycler.apply {
private fun FragmentSettingsBinding.bindRecycler() {
notificationsRecycler.apply {
layoutManager = LinearLayoutManager(requireActivity())
adapter = GetNotifAdapter(requireActivity())
}
}
binding.firebase.setOnCheckedListener { _, isChecked ->
private fun FragmentSettingsBinding.bindFirebase() {
firebase.setOnCheckedListener { _, isChecked ->
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(isChecked)
FirebasePerformance.getInstance().isPerformanceCollectionEnabled = isChecked
FirebaseAnalytics.getInstance(requireActivity()).setAnalyticsCollectionEnabled(isChecked)
}
}
binding.managerVariant.apply {
private fun FragmentSettingsBinding.bindManagerVariant() {
managerVariant.apply {
prefs.getString("vanced_variant", "nonroot")?.let { setSummary(it) }
setOnClickListener {
ManagerVariantDialog().show(requireActivity().supportFragmentManager, "")
}
setOnClickListener { showDialogRefl<ManagerVariantDialog>() }
}
binding.clearFiles.setOnClickListener {
}
private fun FragmentSettingsBinding.bindClearFiles() {
clearFiles.setOnClickListener {
with(requireActivity()) {
listOf("vanced/nonroot", "vanced/root", "music/nonroot", "music/root", "microg").forEach { dir ->
File(getExternalFilesDir(dir)?.path.toString()).deleteRecursively()
@ -61,47 +88,43 @@ class SettingsFragment : Fragment() {
Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT).show()
}
}
}
private fun FragmentSettingsBinding.bindManagerTheme() {
val themePref = prefs.getString("manager_theme", "System Default")
binding.managerTheme.apply {
managerTheme.apply {
setSummary(
when (themePref) {
"Light" -> getString(R.string.theme_light)
"Dark" -> getString(R.string.theme_dark)
else -> getString(R.string.system_default)
}
when (themePref) {
LIGHT -> getString(R.string.theme_light)
DARK -> getString(R.string.theme_dark)
else -> getString(R.string.system_default)
}
)
setOnClickListener {
ManagerThemeDialog().show(requireActivity().supportFragmentManager, "")
}
setOnClickListener { showDialogRefl<ManagerThemeDialog>() }
}
}
private fun FragmentSettingsBinding.bindManagerAccentColor() {
val accentPref = prefs.getString("manager_accent", "Blue")
binding.managerAccentColor.apply {
managerAccentColor.apply {
setSummary(
when (accentPref) {
"Blue" -> getString(R.string.accent_blue)
"Red" -> getString(R.string.accent_red)
"Green" -> getString(R.string.accent_green)
"Yellow" -> getString(R.string.accent_yellow)
else -> getString(R.string.accent_purple)
}
when (accentPref) {
BLUE -> getString(R.string.accent_blue)
RED -> getString(R.string.accent_red)
GREEN -> getString(R.string.accent_green)
YELLOW -> getString(R.string.accent_yellow)
else -> getString(R.string.accent_purple)
}
)
setOnClickListener {
ManagerAccentColorDialog().show(requireActivity().supportFragmentManager, "")
}
setOnClickListener { showDialogRefl<ManagerAccentColorDialog>() }
}
}
private fun FragmentSettingsBinding.bindManagerLanguage() {
val langPref = prefs.getString("manager_lang", "System Default")
binding.managerLanguage.apply {
setSummary(getLanguageFormat(requireActivity(), langPref!!))
setOnClickListener {
ManagerLanguageDialog().show(requireActivity().supportFragmentManager, "")
}
}
binding.selectApps.setOnClickListener {
SelectAppsDialog().show(requireActivity().supportFragmentManager, "")
managerLanguage.apply {
setSummary(getLanguageFormat(requireActivity(), requireNotNull(langPref)))
setOnClickListener { showDialogRefl<ManagerLanguageDialog>() }
}
}
@ -113,5 +136,4 @@ class SettingsFragment : Fragment() {
}
super.onCreateOptionsMenu(menu, inflater)
}
}

View File

@ -2,31 +2,28 @@ package com.vanced.manager.ui.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.vanced.manager.R
import com.vanced.manager.databinding.FragmentWelcomeBinding
import com.vanced.manager.ui.core.BindingFragment
class WelcomeFragment : Fragment() {
class WelcomeFragment : BindingFragment<FragmentWelcomeBinding>() {
private lateinit var binding: FragmentWelcomeBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_welcome, container, false)
return binding.root
) = FragmentWelcomeBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.welcomeGetStarted.setOnClickListener {
findNavController().navigate(WelcomeFragmentDirections.welcomeToSelectApps())
}
private fun bindData() {
binding.welcomeGetStarted.setOnClickListener { navigateToWelcome() }
}
private fun navigateToWelcome() {
findNavController().navigate(WelcomeFragmentDirections.welcomeToSelectApps())
}
}

View File

@ -5,11 +5,12 @@ import android.content.ComponentName
import android.content.Intent
import android.view.View
import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.ContextCompat.startActivity
import androidx.databinding.ObservableField
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.crowdin.platform.Crowdin
import com.google.android.material.button.MaterialButton
@ -35,6 +36,7 @@ import com.vanced.manager.utils.PackageHelper.musicApkExists
import com.vanced.manager.utils.PackageHelper.uninstallApk
import com.vanced.manager.utils.PackageHelper.uninstallRootApk
import com.vanced.manager.utils.PackageHelper.vancedInstallFilesExist
import kotlinx.coroutines.launch
open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
@ -48,10 +50,12 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
val manager = ObservableField<DataModel>()
fun fetchData() {
activity.setRefreshing(true)
loadJson(activity)
Crowdin.forceUpdate(activity)
activity.setRefreshing(false)
viewModelScope.launch {
activity.setRefreshing(true)
loadJson(activity)
Crowdin.forceUpdate(activity)
activity.setRefreshing(false)
}
}
private val microgToast = Toast.makeText(activity, R.string.no_microg, Toast.LENGTH_LONG)
@ -96,7 +100,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
when (app) {
activity.getString(R.string.vanced) -> VancedPreferencesDialog().show(activity)
activity.getString(R.string.music) -> MusicPreferencesDialog().show(activity)
else -> AppDownloadDialog(app).show(activity)
else -> AppDownloadDialog.newInstance(app).show(activity)
}
return
@ -105,34 +109,59 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
when (app) {
activity.getString(R.string.vanced) -> {
when (variant) {
"nonroot" -> if (vancedInstallFilesExist(activity)) InstallationFilesDetectedDialog(app).show(activity) else VancedPreferencesDialog().show(activity)
"root" -> VancedPreferencesDialog().show(activity)
"nonroot" -> {
if (vancedInstallFilesExist(activity)) {
InstallationFilesDetectedDialog.newInstance(app).show(activity)
} else {
VancedPreferencesDialog().show(activity)
}
}
"root" -> {
VancedPreferencesDialog().show(activity)
}
}
}
activity.getString(R.string.music) -> {
when (variant) {
"nonroot" -> if (musicApkExists(activity)) InstallationFilesDetectedDialog(app).show(activity) else MusicPreferencesDialog().show(activity)
"root" -> MusicPreferencesDialog().show(activity)
"nonroot" -> {
if (musicApkExists(activity)) {
InstallationFilesDetectedDialog.newInstance(app).show(activity)
} else {
MusicPreferencesDialog().show(activity)
}
}
"root" -> {
MusicPreferencesDialog().show(activity)
}
}
}
activity.getString(R.string.microg) -> {
if (apkExist(activity, "microg.apk")) InstallationFilesDetectedDialog(app).show(activity) else AppDownloadDialog(app).show(activity)
if (apkExist(activity, "microg.apk")) {
InstallationFilesDetectedDialog.newInstance(app).show(activity)
} else {
AppDownloadDialog.newInstance(app).show(activity)
}
}
}
}
fun uninstallPackage(pkg: String) = if (prefs.getString("vanced_variant", "nonroot") == "root" && uninstallRootApk(pkg)) activity.fetchData() else uninstallApk(pkg, activity)
fun uninstallPackage(pkg: String) {
if (prefs.getString("vanced_variant", "nonroot") == "root" && uninstallRootApk(pkg)) {
viewModelScope.launch { activity.fetchData() }
} else {
uninstallApk(pkg, activity)
}
}
init {
activity.setRefreshing(true)
vanced.set(DataModel(InternetTools.vanced, activity, vancedPkg, activity.getString(R.string.vanced), ContextCompat.getDrawable(activity, R.drawable.ic_vanced)))
vancedRoot.set(DataModel(InternetTools.vanced, activity, vancedRootPkg, activity.getString(R.string.vanced), ContextCompat.getDrawable(activity, R.drawable.ic_vanced)))
music.set(DataModel(InternetTools.music, activity, musicPkg, activity.getString(R.string.music), ContextCompat.getDrawable(activity, R.drawable.ic_music)))
musicRoot.set(DataModel(InternetTools.music, activity, musicRootPkg, activity.getString(R.string.music), ContextCompat.getDrawable(activity, R.drawable.ic_music)))
microg.set(DataModel(InternetTools.microg, activity, microgPkg, activity.getString(R.string.microg), ContextCompat.getDrawable(activity, R.drawable.ic_microg)))
manager.set(DataModel(InternetTools.manager, activity, managerPkg, activity.getString(R.string.app_name), ContextCompat.getDrawable(activity, R.mipmap.ic_launcher)))
vanced.set(DataModel(InternetTools.vanced, activity, vancedPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced)))
vancedRoot.set(DataModel(InternetTools.vanced, activity, vancedRootPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced)))
music.set(DataModel(InternetTools.music, activity, musicPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music)))
musicRoot.set(DataModel(InternetTools.music, activity, musicRootPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music)))
microg.set(DataModel(InternetTools.microg, activity, microgPkg, activity.getString(R.string.microg), AppCompatResources.getDrawable(activity, R.drawable.ic_microg)))
manager.set(DataModel(InternetTools.manager, activity, managerPkg, activity.getString(R.string.app_name), AppCompatResources.getDrawable(activity, R.mipmap.ic_launcher)))
activity.setRefreshing(false)
}
}

View File

@ -15,7 +15,7 @@ import java.io.File
import java.io.IOException
import java.security.MessageDigest
object AppUtils {
object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) {
const val vancedPkg = "com.vanced.android.youtube"
const val vancedRootPkg = "com.google.android.youtube"
@ -24,25 +24,24 @@ object AppUtils {
const val microgPkg = "com.mgoogle.android.gms"
const val managerPkg = APPLICATION_ID
fun sendRefresh(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
fun sendRefresh(context: Context): Job {
return launch {
delay(700)
LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
}
}
fun sendCloseDialog(context: Context) {
downloadProgress.get()?.installing?.set(false)
CoroutineScope(Dispatchers.IO).launch {
fun sendCloseDialog(context: Context): Job {
return launch {
delay(700)
downloadProgress.value?.installing?.postValue(false)
LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(AppDownloadDialog.CLOSE_DIALOG))
}
}
fun sendFailure(status: Int, context: Context) {
downloadProgress.get()?.installing?.set(false)
fun sendFailure(status: Int, context: Context): Job {
//Delay error broadcast until activity (and fragment) get back to the screen
CoroutineScope(Dispatchers.IO).launch {
return launch {
delay(700)
val intent = Intent(HomeFragment.INSTALL_FAILED)
intent.putExtra("errorMsg", getErrorMessage(status, context))
@ -50,9 +49,8 @@ object AppUtils {
}
}
fun sendFailure(error: MutableList<String>, context: Context) {
downloadProgress.get()?.installing?.set(false)
CoroutineScope(Dispatchers.IO).launch {
fun sendFailure(error: MutableList<String>, context: Context): Job {
return launch {
delay(700)
val intent = Intent(HomeFragment.INSTALL_FAILED)
intent.putExtra("errorMsg", getErrorMessage(error.joinToString(), context))
@ -134,6 +132,4 @@ object AppUtils {
context.getString(R.string.installation_failed)
}
}
}
}

View File

@ -10,15 +10,14 @@ import android.widget.Toast
import androidx.core.content.FileProvider
import androidx.core.content.getSystemService
import androidx.core.net.toUri
import androidx.databinding.ObservableField
import androidx.lifecycle.MutableLiveData
import com.downloader.OnDownloadListener
import com.downloader.PRDownloader
import com.vanced.manager.R
import com.vanced.manager.model.ProgressModel
import com.vanced.manager.utils.AppUtils.sendCloseDialog
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
object DownloadHelper {
@ -35,26 +34,27 @@ object DownloadHelper {
return downloadManager.enqueue(request)
}
val downloadProgress = ObservableField<ProgressModel>()
val downloadProgress = MutableLiveData<ProgressModel>()
init {
downloadProgress.set(ProgressModel())
downloadProgress.value = ProgressModel()
}
fun downloadManager(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
suspend fun downloadManager(context: Context) =
withContext(Dispatchers.IO) {
val url = "https://github.com/YTVanced/VancedManager/releases/latest/download/manager.apk"
downloadProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("manager")?.path, "manager.apk")
downloadProgress.value?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("manager")?.path, "manager.apk")
.build()
.setOnProgressListener { progress ->
val mProgress = progress.currentBytes * 100 / progress.totalBytes
downloadProgress.get()?.downloadProgress?.set(mProgress.toInt())
downloadProgress.value?.downloadProgress?.value = mProgress.toInt()
}
.setOnCancelListener {
downloadProgress.get()?.downloadProgress?.set(0)
downloadProgress.value?.downloadProgress?.value = 0
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
downloadProgress.value?.downloadProgress?.value = 0
val apk =
File("${context.getExternalFilesDir("manager")?.path}/manager.apk")
val uri =
@ -82,6 +82,4 @@ object DownloadHelper {
})
}
}
}

View File

@ -16,8 +16,8 @@ import java.util.*
object Extensions {
fun RadioGroup.getCheckedButtonTag(): String {
return findViewById<MaterialRadioButton>(checkedRadioButtonId).tag.toString()
fun RadioGroup.getCheckedButtonTag(): String? {
return findViewById<MaterialRadioButton>(checkedRadioButtonId)?.tag?.toString()
}
fun RadioGroup.getCheckedButtonText(): String {
@ -28,7 +28,7 @@ object Extensions {
show(activity.supportFragmentManager, "")
}
fun Activity.fetchData() {
suspend fun Activity.fetchData() {
val refreshLayout = findViewById<SwipeRefreshLayout>(R.id.home_refresh)
setRefreshing(true, refreshLayout)
loadJson(this)

View File

@ -14,9 +14,8 @@ import com.vanced.manager.BuildConfig
import com.vanced.manager.R
import com.vanced.manager.utils.AppUtils.generateChecksum
import com.vanced.manager.utils.Extensions.getDefaultPrefs
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import java.text.SimpleDateFormat
import java.util.*
@ -49,9 +48,9 @@ object InternetTools {
context.startActivity(Intent(Intent.ACTION_VIEW, url.toUri()).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
}
fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/')+1, url.length)
fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/') + 1, url.length)
fun loadJson(context: Context) = CoroutineScope(Dispatchers.IO).launch {
suspend fun loadJson(context: Context) = withContext(Dispatchers.IO) {
val installUrl = context.getDefaultPrefs().getString("install_url", baseUrl)
val latest = JsonHelper.getJson("$installUrl/latest.json?fetchTime=${SimpleDateFormat("HHmmss", Locale.ROOT)}")
val versions = JsonHelper.getJson("$installUrl/versions.json?fetchTime=${SimpleDateFormat("HHmmss", Locale.ROOT)}")
@ -78,6 +77,7 @@ object InternetTools {
set(latest?.obj("manager"))
notifyChange()
}
}
suspend fun getJsonString(file: String, obj: String, context: Context): String {
@ -100,9 +100,9 @@ object InternetTools {
return getJsonString(hashUrl, obj, context)
}
fun checkSHA256(sha256: String, updateFile: File?): Boolean {
fun checkSHA256(sha256: String, updateFile: File): Boolean {
return try {
val dataBuffer = updateFile!!.readBytes()
val dataBuffer = updateFile.readBytes()
// Generate the checksum
val sum = generateChecksum(dataBuffer)

View File

@ -13,13 +13,14 @@ object JsonHelper {
suspend fun getJson(url: String): JsonObject? {
return try {
if(dataMap.containsKey(url)) {
dataMap[url]!!
if (dataMap.containsKey(url)) {
dataMap[url]
} else {
dataMap[url] = getSuspendJson(url)
dataMap[url]!!
dataMap[url]
}
} catch (e: Exception) {
//This null is NEEDED, do NOT try to "fix" NPE here!!!
null
}
}

View File

@ -6,28 +6,20 @@ import java.io.InputStreamReader
object MiuiHelper {
fun isMiui(): Boolean = getSystemProps("ro.miui.ui.version.name")!!.isNotEmpty()
private const val MIUI_PROP_NAME = "ro.miui.ui.version.name"
fun isMiui(): Boolean = !getSystemProps(MIUI_PROP_NAME).isNullOrEmpty()
private fun getSystemProps(propname: String): String? {
val line: String
var input: BufferedReader? = null
try {
val p = Runtime.getRuntime().exec("getprop $propname")
input = BufferedReader(InputStreamReader(p.inputStream), 1024)
line = input.readLine()
input.close()
return try {
val process = Runtime.getRuntime().exec("getprop $propname")
input = BufferedReader(InputStreamReader(process.inputStream), 1024)
input.readLine()
} catch (e: IOException) {
return null
null
} finally {
if (input != null) {
try {
input.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
input?.close()
}
return line
}
}

View File

@ -164,40 +164,38 @@ object PackageHelper {
return false
}
fun installMusicRoot(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
Shell.enableVerboseLogging = BuildConfig.DEBUG
Shell.setDefaultBuilder(
Shell.Builder.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
.setTimeout(10)
)
fun installMusicRoot(context: Context) = CoroutineScope(Dispatchers.IO).launch {
Shell.enableVerboseLogging = BuildConfig.DEBUG
Shell.setDefaultBuilder(
Shell.Builder.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
.setTimeout(10)
)
Shell.getShell {
val musicVersionCode = music.get()?.int("versionCode")
val apkFilesPath = context.getExternalFilesDir("music/root")?.path
val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) }
if (fileInfoList != null) {
val modApk: FileInfo? = fileInfoList.lastOrNull { it.name == "root.apk" }
if (modApk != null) {
if (overwriteBase(modApk, fileInfoList, musicVersionCode!!, musicRootPkg, "music", context)) {
sendRefresh(context)
sendCloseDialog(context)
}
}
else {
sendFailure(listOf("ModApk_Missing").toMutableList(), context)
Shell.getShell {
val musicVersionCode = music.get()?.int("versionCode")
val apkFilesPath = context.getExternalFilesDir("music/root")?.path
val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) }
if (fileInfoList != null) {
val modApk: FileInfo? = fileInfoList.lastOrNull { it.name == "root.apk" }
if (modApk != null) {
if (overwriteBase(modApk, fileInfoList, musicVersionCode!!, musicRootPkg, "music", context)) {
sendRefresh(context)
sendCloseDialog(context)
}
}
else {
sendFailure(listOf("Files_Missing_VA").toMutableList(), context)
sendFailure(listOf("ModApk_Missing").toMutableList(), context)
sendCloseDialog(context)
}
}
else {
sendFailure(listOf("Files_Missing_VA").toMutableList(), context)
sendCloseDialog(context)
}
}
}
fun installVanced(context: Context): Int {
@ -298,49 +296,47 @@ object PackageHelper {
}
} finally {
session!!.close()
session?.close()
}
}
fun installVancedRoot(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
Shell.enableVerboseLogging = BuildConfig.DEBUG
Shell.setDefaultBuilder(
Shell.Builder.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
.setTimeout(10)
)
fun installVancedRoot(context: Context) = CoroutineScope(Dispatchers.IO).launch {
Shell.enableVerboseLogging = BuildConfig.DEBUG
Shell.setDefaultBuilder(
Shell.Builder.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
.setTimeout(10)
)
Shell.getShell {
val vancedVersionCode = vanced.get()?.int("versionCode")
val apkFilesPath = context.getExternalFilesDir("vanced/root")?.path
val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) }
if (fileInfoList != null) {
val modApk: FileInfo? = fileInfoList.lastOrNull { file ->
vancedThemes.any { file.name == "$it.apk" }
}
if (modApk != null) {
if (overwriteBase(modApk, fileInfoList, vancedVersionCode!!, vancedRootPkg, "vanced", context)) {
sendRefresh(context)
sendCloseDialog(context)
}
}
else {
sendFailure(listOf("ModApk_Missing").toMutableList(), context)
Shell.getShell {
val vancedVersionCode = vanced.get()?.int("versionCode")
val apkFilesPath = context.getExternalFilesDir("vanced/root")?.path
val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) }
if (fileInfoList != null) {
val modApk: FileInfo? = fileInfoList.lastOrNull { file ->
vancedThemes.any { file.name == "$it.apk" }
}
if (modApk != null) {
if (overwriteBase(modApk, fileInfoList, vancedVersionCode!!, vancedRootPkg, "vanced", context)) {
sendRefresh(context)
sendCloseDialog(context)
}
}
else {
sendFailure(listOf("Files_Missing_VA").toMutableList(), context)
sendFailure(listOf("ModApk_Missing").toMutableList(), context)
sendCloseDialog(context)
}
}
else {
sendFailure(listOf("Files_Missing_VA").toMutableList(), context)
sendCloseDialog(context)
}
}
}
private fun installSplitApkFiles(apkFiles: ArrayList<FileInfo>, context: Context) : Boolean {
var sessionId: Int?
val filenames = arrayOf("black.apk", "dark.apk", "blue.apk", "pink.apk", "hash.json")
@ -378,7 +374,6 @@ object PackageHelper {
}
sendFailure(installResult.out, context)
sendCloseDialog(context)
return false
}
@ -471,7 +466,7 @@ object PackageHelper {
private fun linkApp(apkFPath: String, pkg:String, path: String): Boolean {
Shell.su("am force-stop $pkg").exec()
val umountv = Shell.su("""for i in ${'$'}(ls /data/app/ | grep $pkg | tr " "); do umount -l "/data/app/${"$"}i/base.apk"; done """).exec()
Shell.su("""for i in ${'$'}(ls /data/app/ | grep $pkg | tr " "); do umount -l "/data/app/${"$"}i/base.apk"; done """).exec()
val response = Shell.su("""su -mm -c "mount -o bind $apkFPath $path"""").exec()
Thread.sleep(500)
Shell.su("am force-stop $pkg").exec()
@ -579,8 +574,8 @@ object PackageHelper {
@Throws(IOException::class)
fun copy(src: File?, dst: File?) {
val cmd = Shell.su("mv ${src!!.absolutePath} ${dst!!.absolutePath}").exec().isSuccess
fun copy(src: File, dst: File) {
val cmd = Shell.su("mv ${src.absolutePath} ${dst.absolutePath}").exec().isSuccess
Log.d("ZLog", cmd.toString())
}

View File

@ -1,7 +1,18 @@
<vector android:height="40.516296dp" android:viewportHeight="34.271"
android:viewportWidth="29.605" android:width="35dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#00000000"
android:pathData="M25.766,0.5h-21.9a3.352,3.352 0,0 0,-3.361 3.361v22.087a3.373,3.373 0,0 0,3.361 3.361h18.522l-0.859,-3.028 2.1,1.954 1.954,1.825 3.522,3.1v-29.3A3.334,3.334 0,0 0,25.766 0.5Z"
android:strokeColor="#000000" android:strokeWidth="1"/>
<path android:fillColor="#000000" android:pathData="M22.055,9.782a7.865,7.865 0,0 0,-4.56 -1.737l-0.235,0.26a10.6,10.6 0,0 1,4.037 2.106,13.138 13.138,0 0,0 -4.87,-1.607 13.679,13.679 0,0 0,-3.289 0.054,1.292 1.292,0 0,0 -0.288,0.022 12.15,12.15 0,0 0,-3.674 1.031,6.119 6.119,0 0,0 -0.908,0.478 10.878,10.878 0,0 1,4.218 -2.16l-0.182,-0.185a7.864,7.864 0,0 0,-4.56 1.737,22.555 22.555,0 0,0 -2.328,9.64 5.871,5.871 0,0 0,4.944 2.5s0.6,-0.738 1.089,-1.368a5.13,5.13 0,0 1,-2.819 -1.921,2.3 2.3,0 0,1 0.438,0.239c0.021,0.022 0.021,0.054 0.053,0.054a0.361,0.361 0,0 0,0.16 0.076,8.514 8.514,0 0,0 1.2,0.575 13.145,13.145 0,0 0,2.381 0.706,10.773 10.773,0 0,0 4.218,0 10.444,10.444 0,0 0,2.36 -0.706,9.122 9.122,0 0,0 1.869,-0.977 5.206,5.206 0,0 1,-2.958 1.976c0.491,0.63 1.089,1.346 1.089,1.346a6.013,6.013 0,0 0,4.976 -2.5A22.319,22.319 0,0 0,22.055 9.782ZM11.878,17.869a1.838,1.838 0,1 1,1.655 -1.813A1.745,1.745 0,0 1,11.878 17.866ZM17.805,17.869a1.838,1.838 0,1 1,1.655 -1.813A1.718,1.718 0,0 1,17.805 17.866Z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="38dp"
android:height="38dp"
android:viewportWidth="35"
android:viewportHeight="35">
<path
android:fillColor="#FF000000"
android:pathData="M27.1,1.1H6.7c-2.3,0 -4,1.8 -4,4v20.7c0,2.3 1.8,4 4,4h18.5L25,29l1.3,1.2l4.9,4.2V5.2C31.2,2.9 29.4,1.1 27.1,1.1zM30.2,32.6l-3.3,-2.9L25.1,28l-2,-1.8l0.8,2.8H6.6c-1.7,0 -3.1,-1.4 -3.1,-3.1V5.2c0,-1.7 1.4,-3.1 3.1,-3.1H27c1.7,0 3.1,1.4 3.1,3.1L30.2,32.6L30.2,32.6z"/>
<path
android:fillColor="#FF000000"
android:pathData="M24.5,10.4l-0.1,-0.2l-0.2,-0.1c-2.3,-1.7 -4.4,-1.8 -4.9,-1.8h-0.4L18.3,9c-0.5,-0.1 -0.9,-0.1 -1.4,-0.1S16,8.9 15.5,9l-0.3,-0.4l-0.3,-0.4h-0.4c-0.4,0 -2.5,0.1 -4.8,1.8l-0.3,0.3C9.3,10.5 7,14.5 7,19.6V20l0.1,0.2c0.1,0.1 1.6,2.6 5.5,2.8h0.5l0.3,-0.4c0,0 0.6,-0.7 1,-1.3c0.1,0 1.9,0.3 2.6,0.3s2.3,-0.2 2.4,-0.3c0.5,0.6 1,1.2 1,1.2l0.3,0.4h0.5c3.9,-0.1 5.4,-2.6 5.5,-2.8l0.1,-0.2v-0.3C26.9,14.6 24.6,10.5 24.5,10.4zM21.2,22c0,0 -0.6,-0.7 -1,-1.2c1.9,-0.6 2.6,-1.7 2.7,-1.8c-0.7,0.4 -1.2,0.7 -1.8,0.9c-0.8,0.3 -1.5,0.6 -2.2,0.7c-1.5,0.3 -2.8,0.2 -4,0c-0.8,-0.2 -1.6,-0.4 -2.3,-0.7c-0.2,0 -1.6,-0.8 -1.6,-0.9c0.1,0.1 0.8,1.2 2.6,1.8c-0.5,0.6 -1,1.2 -1,1.2c-3.4,-0.1 -4.7,-2.4 -4.7,-2.4c0,-4.9 2.2,-8.9 2.2,-8.9c2.2,-1.7 4.3,-1.6 4.3,-1.6l0.2,0.2L15,9.9c0,0 2.3,-0.2 3.4,0c0.1,0 0.4,0.1 0.5,0.1l0.4,-0.5l0.2,-0.3c0,0 2.1,0 4.3,1.6c0,0 2.2,4 2.2,8.9C25.9,19.7 24.6,21.8 21.2,22z"/>
<path
android:fillColor="#FF000000"
android:pathData="M14.1,16.6m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
<path
android:fillColor="#FF000000"
android:pathData="M19.7,16.6m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"/>
</vector>

View File

@ -1,14 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="38.94dp"
android:height="38.918dp"
android:viewportWidth="38.94"
android:viewportHeight="38.918">
android:width="38dp"
android:height="38dp"
android:viewportWidth="35"
android:viewportHeight="35">
<path
android:strokeWidth="1"
android:pathData="M0.5,20.212v-1.485c0.022,-0.177 0.055,-0.366 0.078,-0.543 0.111,-0.842 0.155,-1.7 0.332,-2.526A18.737,18.737 0,0 1,8.82 3.802a18.168,18.168 0,0 1,7.989 -3.08c0.632,-0.089 1.274,-0.155 1.906,-0.222h1.485c0.177,0.022 0.366,0.055 0.543,0.078 0.842,0.111 1.7,0.155 2.526,0.332a18.757,18.757 0,0 1,11.834 7.878,18.1 18.1,0 0,1 3.1,7.989c0.089,0.643 0.155,1.3 0.233,1.939v1.485c-0.022,0.177 -0.055,0.366 -0.078,0.543 -0.111,0.842 -0.155,1.7 -0.332,2.526A18.685,18.685 0,0 1,30.12 35.12a18.168,18.168 0,0 1,-7.989 3.08c-0.632,0.089 -1.274,0.155 -1.906,0.222h-1.485c-0.177,-0.022 -0.366,-0.055 -0.543,-0.078 -0.842,-0.111 -1.7,-0.155 -2.526,-0.332a18.7,18.7 0,0 1,-11.823 -7.878,18.1 18.1,0 0,1 -3.1,-7.989C0.644,21.509 0.578,20.866 0.5,20.212Z"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
android:fillColor="#FF000000"
android:pathData="M17.5,0.4c-9.4,0 -17,7.6 -17,17c0,9.4 7.6,17 17,17c9.4,0 17,-7.6 17,-17C34.5,8 26.9,0.4 17.5,0.4zM17.5,33.4c-8.8,0 -16,-7.2 -16,-16c0,-8.9 7.2,-16 16,-16c8.9,0 16,7.2 16,16C33.5,26.2 26.3,33.4 17.5,33.4z"/>
<path
android:pathData="M11.412,17.386c0.616,-0.337 1.2,-0.7 1.813,-1a14.065,14.065 0,0 1,5.406 -1.314c0.291,-0.011 0.392,-0.124 0.459,-0.4 0.414,-2.044 0.851,-4.078 1.276,-6.122 0.112,-0.517 0.336,-0.663 0.862,-0.55 1.377,0.292 2.753,0.584 4.119,0.887a0.367,0.367 0,0 0,0.459 -0.168,1.948 1.948,0 0,1 2.373,-0.741 2.029,2.029 0,0 1,1.254 2.235,2 2,0 0,1 -3.85,0.4c-0.078,-0.2 -0.123,-0.4 -0.19,-0.629 -1.276,-0.27 -2.563,-0.55 -3.85,-0.82a0.326,0.326 0,0 0,-0.257 0.191c-0.414,1.876 -0.806,3.752 -1.22,5.7a14.049,14.049 0,0 1,7.421 2.381,2.845 2.845,0 0,1 4.69,1.37 2.857,2.857 0,0 1,-1.287 3.112,0.579 0.579,0 0,0 -0.257,0.382 6.564,6.564 0,0 1,-2.966 5.92,12.364 12.364,0 0,1 -5.686,2.314 15.04,15.04 0,0 1,-7.622 -0.663,9.809 9.809,0 0,1 -5.1,-3.741 5.634,5.634 0,0 1,-0.974 -3.7,0.459 0.459,0 0,0 -0.224,-0.528 2.818,2.818 0,1 1,3.179 -4.639C11.311,17.319 11.367,17.353 11.412,17.386ZM13.112,21.486a1.953,1.953 0,0 0,1.97 1.966,1.984 1.984,0 0,0 1.959,-1.955 2.026,2.026 0,0 0,-1.97 -2A2,2 0,0 0,13.113 21.487ZM25.812,21.497a1.984,1.984 0,0 0,-1.959 -1.988,2.026 2.026,0 0,0 -1.981,1.988 1.97,1.97 0,0 0,3.94 0ZM19.802,28.226c0.358,-0.045 1.063,-0.09 1.757,-0.213a5.008,5.008 0,0 0,2.5 -1.123c0.3,-0.258 0.358,-0.55 0.168,-0.775s-0.481,-0.2 -0.795,0.022a5.492,5.492 0,0 1,-0.951 0.573,7.7 7.7,0 0,1 -3.626,0.517 5.622,5.622 0,0 1,-3.436 -1.168,0.458 0.458,0 0,0 -0.672,0.056 0.431,0.431 0,0 0,0.045 0.663,6.376 6.376,0 0,0 1.242,0.809A9.241,9.241 0,0 0,19.806 28.227Z"
android:fillColor="#000000"/>
android:fillColor="#FF000000"
android:pathData="M27.8,17.2c0,-1.7 -1.4,-3.1 -3.1,-3.1c-0.5,0 -1,0.1 -1.5,0.4c-1.2,-0.6 -2.6,-1.1 -4.1,-1.3l0.5,-1.6l1.6,0.4c0.3,1.1 1.4,1.9 2.6,1.9c1.5,0 2.7,-1.2 2.7,-2.7c0,-1.5 -1.2,-2.7 -2.7,-2.7c-0.8,0 -1.5,0.4 -2,0.9l-2.7,-0.6l-0.2,0h-0.1c-0.6,0 -1.1,0.4 -1.2,0.9l-1.1,3.4c-1.8,0.1 -3.5,0.6 -4.9,1.4c-0.4,-0.2 -0.9,-0.4 -1.4,-0.4c-1.7,0 -3.1,1.4 -3.1,3.1c0,0.8 0.4,1.6 1,2.2v0.2c0,3.6 4.2,6.5 9.4,6.5c5.1,0 9.3,-2.9 9.3,-6.5c0,-0.1 0,-0.1 0,-0.2C27.5,18.9 27.8,18.1 27.8,17.2zM25.8,19.6c0,3 -3.8,5.5 -8.3,5.5c-4.6,0 -8.4,-2.5 -8.4,-5.5c0,-0.2 0,-0.4 0.1,-0.7c-0.6,-0.4 -1,-1 -1,-1.8c0,-1.1 0.9,-2.1 2.1,-2.1c0.5,0 1,0.2 1.4,0.6c1.5,-1 3.5,-1.6 5.7,-1.6l1.3,-4c0,-0.2 0.2,-0.2 0.3,-0.2l3.4,0.8c0.2,-0.6 0.9,-1.1 1.6,-1.1c0.9,0 1.7,0.8 1.7,1.7S24.8,13 23.9,13c-0.9,0 -1.7,-0.8 -1.7,-1.7v0l-3.1,-0.7l-1.1,3.6c2.1,0.1 4,0.7 5.4,1.6c0.4,-0.4 0.9,-0.6 1.4,-0.6c1.1,0 2.1,0.9 2.1,2.1c0,0.8 -0.4,1.5 -1.1,1.8C25.8,19.2 25.8,19.4 25.8,19.6z"/>
<path
android:fillColor="#FF000000"
android:pathData="M20.5,22.3c-0.6,0.6 -1.6,0.9 -3,0.9h0c-1.4,0 -2.3,-0.3 -3,-0.9c-0.1,-0.1 -0.1,-0.3 0,-0.4c0.1,-0.1 0.3,-0.1 0.4,0c0.5,0.5 1.3,0.8 2.6,0.8h0c1.2,0 2.1,-0.2 2.6,-0.8c0.1,-0.1 0.3,-0.1 0.4,0C20.6,22 20.6,22.1 20.5,22.3z"/>
<path
android:fillColor="#FF000000"
android:pathData="M15.9,18.6c0,0.7 -0.5,1.2 -1.2,1.2c-0.7,0 -1.2,-0.5 -1.2,-1.2c0,-0.7 0.5,-1.2 1.2,-1.2C15.3,17.4 15.9,18 15.9,18.6z"/>
<path
android:fillColor="#FF000000"
android:pathData="M21.6,18.6c0,0.7 -0.5,1.2 -1.2,1.2s-1.2,-0.5 -1.2,-1.2c0,-0.7 0.6,-1.2 1.2,-1.2S21.6,18 21.6,18.6z"/>
</vector>

View File

@ -1,94 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.dialogs.AppDownloadDialog"
style="@style/DialogCard">
<data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<import type="android.view.View" />
<TextView
android:id="@+id/app_download_header"
tools:text="Installing Vanced"
style="@style/DialogCardTitle"/>
<variable
name="progress"
type="com.vanced.manager.model.ProgressModel" />
<TextView
android:id="@+id/app_download_patient"
android:layout_below="@id/app_download_header"
android:text="@string/please_be_patient"
style="@style/DialogCardSubtitle"/>
</data>
<com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/app_download_progressbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/app_download_patient"
android:layout_marginTop="24dp"
app:indicatorColor="?colorPrimary"
app:indicatorCornerRadius="15dp"
tools:progress="10"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Determinate"/>
<com.google.android.material.card.MaterialCardView
style="@style/DialogCard"
tools:context=".ui.dialogs.AppDownloadDialog">
<com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/app_install_progressbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@id/app_download_progressbar"
android:layout_marginTop="24dp"
android:indeterminate="true"
app:indicatorColor="?colorPrimary"
app:indicatorCornerRadius="15dp"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:layout_below="@id/app_install_progressbar"
android:layout_marginTop="8dp">
<TextView
android:id="@+id/app_download_header"
style="@style/DialogCardTitle"
tools:text="Installing Vanced" />
<TextView
android:id="@+id/app_download_patient"
style="@style/DialogCardSubtitle"
android:layout_below="@id/app_download_header"
android:text="@string/please_be_patient" />
<com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/app_download_progressbar"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Determinate"
android:layout_width="match_parent"
android:id="@+id/app_download_file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/app_download_patient"
android:layout_marginTop="24dp"
android:progress="@{progress.downloadProgress}"
android:visibility="@{progress.installing ? View.GONE : View.VISIBLE}"
app:indicatorColor="?colorPrimary"
app:indicatorCornerRadius="15dp"
tools:progress="10" />
<com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/app_install_progressbar"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/app_download_progressbar"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/app_download_cancel"
android:textSize="15sp"
tools:text="Downloading base.apk..."/>
<com.google.android.material.button.MaterialButton
android:id="@+id/app_download_cancel"
android:layout_alignParentEnd="true"
android:layout_marginTop="24dp"
android:indeterminate="true"
android:visibility="@{progress.installing ? View.VISIBLE : View.GONE}"
app:indicatorColor="?colorPrimary"
app:indicatorCornerRadius="15dp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/app_install_progressbar"
android:layout_marginTop="8dp">
<TextView
android:id="@+id/app_download_file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/app_download_cancel"
android:text="@{progress.downloadingFile}"
android:textSize="15sp"
android:visibility="@{progress.installing ? View.GONE : View.VISIBLE}"
tools:text="Downloading base.apk..." />
<com.google.android.material.button.MaterialButton
android:id="@+id/app_download_cancel"
style="@style/OutlinedButtonStyle"
android:layout_alignParentEnd="true"
android:enabled="@{!progress.installing}"
android:text="@string/cancel"
app:layout_constraintEnd_toEndOf="parent" />
</RelativeLayout>
android:text="@string/cancel"
app:layout_constraintEnd_toEndOf="parent"
style="@style/OutlinedButtonStyle"/>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,60 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?colorLinkBG"
app:cardCornerRadius="8dp"
app:cardElevation="0dp"
app:contentPaddingBottom="8dp"
app:contentPaddingLeft="16dp"
app:contentPaddingRight="16dp">
<com.google.android.material.card.MaterialCardView
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?colorLinkBG"
app:cardCornerRadius="8dp"
app:cardElevation="0dp"
app:contentPaddingBottom="8dp"
app:contentPaddingLeft="16dp"
app:contentPaddingRight="16dp">
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
<TextView
android:id="@+id/about_app_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="About YouTube Vanced"
style="@style/DialogCardTitle"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/about_app_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/about_app_name"
tools:src="@drawable/ic_vanced"/>
<TextView
android:id="@+id/about_app_changelog_header"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/changelog"
app:layout_constraintTop_toBottomOf="@id/about_app_image"
style="@style/CardTextHeader"/>
<TextView
android:id="@+id/about_app_name"
style="@style/DialogCardTitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="About YouTube Vanced" />
<ImageView
android:id="@+id/about_app_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/about_app_name"
tools:src="@drawable/ic_vanced" />
<TextView
android:id="@+id/about_app_changelog_header"
style="@style/CardTextHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/changelog"
app:layout_constraintTop_toBottomOf="@id/about_app_image" />
<TextView
android:id="@+id/about_app_changelog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/about_app_changelog_header"
tools:text="@tools:sample/lorem/random" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<TextView
android:id="@+id/about_app_changelog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/about_app_changelog_header"
tools:text="@tools:sample/lorem/random"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,38 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<TextView
android:id="@+id/dialog_title"
style="@style/BottomDialogCardTitle"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_height="wrap_content">
<TextView
android:id="@+id/dialog_title"
style="@style/BottomDialogCardTitle" />
<androidx.core.widget.NestedScrollView
<RadioGroup
android:id="@+id/dialog_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioGroup
android:id="@+id/dialog_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RadioGroup>
</androidx.core.widget.NestedScrollView>
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/dialog_save"
style="@style/BottomDialogButtonStyle"
android:text="@string/save" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/dialog_save"
android:text="@string/save"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/DialogCard">
@ -48,9 +49,6 @@
style="@style/ButtonStyle"
android:layout_alignParentEnd="true"
android:text="@string/save" />
</RelativeLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,38 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/installation_detected_title"
tools:text="@string/app_install_files_detected"
style="@style/BottomDialogCardTitle"/>
<TextView
android:id="@+id/installation_detected_title"
style="@style/BottomDialogCardTitle"
tools:text="@string/app_install_files_detected" />
<TextView
android:id="@+id/installation_detected_summary"
tools:text="@string/app_install_files_detected_summary"
style="@style/DialogCardSubtitle"/>
<TextView
android:id="@+id/installation_detected_summary"
style="@style/DialogCardSubtitle"
tools:text="@string/app_install_files_detected_summary" />
<com.google.android.material.button.MaterialButton
android:id="@+id/installation_detected_install"
android:layout_marginTop="16dp"
android:text="@string/install"
style="@style/BottomDialogButtonStyle"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/installation_detected_install"
style="@style/BottomDialogButtonStyle"
android:layout_marginTop="16dp"
android:text="@string/install" />
<com.google.android.material.button.MaterialButton
android:id="@+id/installation_detected_redownload"
style="@style/BottomDialogButtonStyle"
android:text="@string/redownload" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/installation_detected_redownload"
android:text="@string/redownload"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,73 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<TextView
android:text="@string/accent_color"
style="@style/BottomDialogCardTitle"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_height="wrap_content">
<TextView
style="@style/BottomDialogCardTitle"
android:text="@string/accent_color" />
<androidx.core.widget.NestedScrollView
<RadioGroup
android:id="@+id/accent_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioGroup
android:id="@+id/accent_radiogroup"
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:tag="Blue"
android:text="@string/accent_blue"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Blue"
android:text="@string/accent_blue"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Red"
android:text="@string/accent_red"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Red"
android:text="@string/accent_red"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Green"
android:text="@string/accent_green"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Green"
android:text="@string/accent_green"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Yellow"
android:text="@string/accent_yellow"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Yellow"
android:text="@string/accent_yellow"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Purple"
android:text="@string/accent_purple"
android:textSize="18sp"/>
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Purple"
android:text="@string/accent_purple"
android:textSize="18sp" />
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/accent_save"
style="@style/BottomDialogButtonStyle"
android:text="@string/save" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/accent_save"
android:text="@string/save"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,38 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<TextView
android:text="@string/language_title"
style="@style/BottomDialogCardTitle"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_height="450dp">
<TextView
style="@style/BottomDialogCardTitle"
android:text="@string/language_title" />
<androidx.core.widget.NestedScrollView
<RadioGroup
android:id="@+id/language_radiogroup"
android:layout_width="match_parent"
android:layout_height="450dp">
android:layout_height="wrap_content"/>
</androidx.core.widget.NestedScrollView>
<RadioGroup
android:id="@+id/language_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/language_save"
style="@style/BottomDialogButtonStyle"
android:text="@string/save" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/language_save"
android:text="@string/save"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,59 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<TextView
android:text="@string/theme"
style="@style/BottomDialogCardTitle"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_height="wrap_content">
<TextView
style="@style/BottomDialogCardTitle"
android:text="@string/theme" />
<androidx.core.widget.NestedScrollView
<RadioGroup
android:id="@+id/theme_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioGroup
android:id="@+id/theme_radiogroup"
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:tag="System Default"
android:text="@string/system_default"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="System Default"
android:text="@string/system_default"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Light"
android:text="@string/theme_light"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Light"
android:text="@string/theme_light"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Dark"
android:text="@string/theme_dark"
android:textSize="18sp"/>
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Dark"
android:text="@string/theme_dark"
android:textSize="18sp" />
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/theme_save"
style="@style/BottomDialogButtonStyle"
android:text="@string/save" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/theme_save"
android:text="@string/save"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,73 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
app:contentPaddingLeft="16dp"
app:contentPaddingRight="16dp"
tools:context=".ui.dialogs.ManagerUpdateDialog"
style="@style/MaterialCard">
<data>
<import type="android.view.View" />
<variable
name="progress"
type="com.vanced.manager.model.ProgressModel" />
</data>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/MaterialCard"
<RelativeLayout
android:layout_width="match_parent"
app:contentPaddingLeft="16dp"
app:contentPaddingRight="16dp"
tools:context=".ui.dialogs.ManagerUpdateDialog">
android:layout_height="match_parent">
<RelativeLayout
<TextView
android:id="@+id/manager_update_header"
android:text="@string/update_center"
style="@style/DialogCardTitle"/>
<TextView
android:id="@+id/manager_update_patient"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@id/manager_update_header"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/checking_updates"
android:textSize="16sp"/>
<TextView
android:id="@+id/manager_update_header"
style="@style/DialogCardTitle"
android:text="@string/update_center" />
<com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/manager_update_progressbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/manager_update_patient"
android:layout_marginTop="32dp"
android:paddingBottom="8dp"
app:indicatorColor="?colorPrimary"
app:indicatorCornerRadius="15dp"
tools:progress="10"
tools:visibility="visible"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Determinate"/>
<TextView
android:id="@+id/manager_update_patient"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/manager_update_header"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/checking_updates"
android:textSize="16sp" />
<com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/manager_update_progressbar"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Determinate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/manager_update_patient"
android:layout_marginTop="32dp"
android:paddingBottom="8dp"
android:progress="@{progress.downloadProgress}"
android:visibility="@{progress.downloadProgress == 0 ? View.GONE : View.VISIBLE}"
app:indicatorColor="?colorPrimary"
app:indicatorCornerRadius="15dp"
tools:progress="10"
tools:visibility="visible" />
<com.google.android.material.button.MaterialButton
android:id="@+id/manager_update_cancel"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/manager_update_progressbar"
android:layout_alignParentEnd="true"
android:text="@string/cancel"
app:strokeWidth="2dp" />
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/manager_update_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_below="@id/manager_update_progressbar"
android:text="@string/cancel"
app:strokeWidth="2dp"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"/>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,53 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools">
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<TextView
android:text="@string/variant"
style="@style/BottomDialogCardTitle"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_height="wrap_content">
<TextView
style="@style/BottomDialogCardTitle"
android:text="@string/variant" />
<androidx.core.widget.NestedScrollView
<RadioGroup
android:id="@+id/variant_radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
tools:ignore="HardcodedText">
<RadioGroup
android:id="@+id/variant_radiogroup"
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="HardcodedText">
android:tag="nonroot"
android:text="nonroot"
android:textSize="18sp"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="nonroot"
android:text="nonroot"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="root"
android:text="root"
android:textSize="18sp"/>
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.radiobutton.MaterialRadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="root"
android:text="root"
android:textSize="18sp" />
</RadioGroup>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/variant_save"
style="@style/BottomDialogButtonStyle"
android:text="@string/save" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/variant_save"
android:text="@string/save"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,50 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
<TextView
android:id="@+id/music_install_title"
style="@style/BottomDialogCardTitle"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_marginTop="12dp">
<TextView
android:id="@+id/music_install_title"
style="@style/BottomDialogCardTitle" />
android:id="@+id/music_version"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/open_version_selector"
style="@style/BottomDialogCardTextItem"/>
<RelativeLayout
android:layout_width="match_parent"
<ImageButton
android:id="@+id/open_version_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
android:layout_alignParentEnd="true"
android:background="@android:color/transparent"
android:maxWidth="24dp"
android:maxHeight="24dp"
android:src="@drawable/ic_baseline_navigate_next_36"/>
</RelativeLayout>
<TextView
android:id="@+id/music_version"
style="@style/BottomDialogCardTextItem"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/open_version_selector" />
<ImageButton
android:id="@+id/open_version_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:background="@android:color/transparent"
android:maxWidth="24dp"
android:maxHeight="24dp"
android:src="@drawable/ic_baseline_navigate_next_36" />
</RelativeLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/music_install"
style="@style/BottomDialogButtonStyle"
android:text="@string/install" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/music_install"
android:text="@string/install"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,17 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BottomDialogCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/BottomDialogCardTitle"
<TextView
style="@style/BottomDialogCardTitle"
android:text="@string/select_apps" />
<androidx.recyclerview.widget.RecyclerView
@ -19,16 +18,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:itemCount="2"
tools:listitem="@layout/view_app_checkbox" />
tools:listitem="@layout/view_app_checkbox"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/select_apps_save"
style="@style/BottomDialogButtonStyle"
android:layout_marginTop="4dp"
android:text="@string/save" />
<com.google.android.material.button.MaterialButton
android:id="@+id/select_apps_save"
style="@style/BottomDialogButtonStyle"
android:layout_marginTop="4dp"
android:text="@string/save"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/BottomDialogCard"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent">
@ -14,7 +16,7 @@
style="@style/BottomDialogCardTitle"
android:text="@string/choose_preferred_language" />
<androidx.core.widget.NestedScrollView xmlns:tools="http://schemas.android.com/tools"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_marginTop="8dp"
@ -25,17 +27,12 @@
android:id="@+id/lang_button_ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
android:orientation="vertical"/>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_install_finish"
style="@style/BottomDialogButtonStyle"
android:text="@string/save" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,44 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
app:contentPaddingBottom="4dp"
style="@style/BottomDialogCard">
<com.google.android.material.card.MaterialCardView
style="@style/BottomDialogCard"
app:contentPaddingBottom="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
<TextView
android:id="@+id/vanced_install_title"
style="@style/BottomDialogCardTitle"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:id="@+id/vanced_install_title"
style="@style/BottomDialogCardTitle" />
android:id="@+id/vanced_theme"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/open_theme_selector"
style="@style/BottomDialogCardTextItem"/>
<RelativeLayout
android:layout_width="match_parent"
<ImageButton
android:id="@+id/open_theme_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<TextView
android:id="@+id/vanced_theme"
style="@style/BottomDialogCardTextItem"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/open_theme_selector" />
<ImageButton
android:id="@+id/open_theme_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:background="@android:color/transparent"
android:maxWidth="24dp"
android:maxHeight="24dp"
android:src="@drawable/ic_baseline_navigate_next_36" />
</RelativeLayout>
android:layout_alignParentEnd="true"
android:background="@android:color/transparent"
android:maxWidth="24dp"
android:maxHeight="24dp"
android:src="@drawable/ic_baseline_navigate_next_36"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
@ -61,7 +58,6 @@
android:maxWidth="24dp"
android:maxHeight="24dp"
android:src="@drawable/ic_baseline_navigate_next_36" />
</RelativeLayout>
<RelativeLayout
@ -84,17 +80,12 @@
android:background="@android:color/transparent"
android:maxWidth="24dp"
android:maxHeight="24dp"
android:src="@drawable/ic_baseline_navigate_next_36" />
android:src="@drawable/ic_baseline_navigate_next_36"/>
</RelativeLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_install"
style="@style/BottomDialogButtonStyle"
android:text="@string/install" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_install"
android:text="@string/install"
style="@style/BottomDialogButtonStyle"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,58 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools">
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none">
<data>
<variable
name="viewModel"
type="com.vanced.manager.ui.viewmodels.AboutViewModel" />
</data>
<androidx.core.widget.NestedScrollView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none">
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="@dimen/twelvedp"
android:clipToPadding="false"
android:orientation="vertical">
<LinearLayout
<include
android:id="@+id/about_header"
layout="@layout/include_about_header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_marginTop="@dimen/twelvedp"
android:layout_marginEnd="16dp"
android:clipToPadding="false"
android:orientation="vertical">
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/twelvedp" />
<include
layout="@layout/include_about_header"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<include
layout="@layout/include_about_vanced_devs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/stdp"/>
<include
layout="@layout/include_about_vanced_devs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/stdp" />
<include
layout="@layout/include_about_app_devs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/stdp"/>
<include
layout="@layout/include_about_app_devs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/stdp" />
<include
layout="@layout/include_about_sources"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/stdp"
bind:viewModel="@{viewModel}" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</layout>
<include
android:id="@+id/about_sources"
layout="@layout/include_about_sources"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/stdp"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@ -1,62 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface">
<com.vanced.manager.ui.core.SlidingConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface">
<TextView
android:id="@+id/grant_root_header"
android:text="@string/are_you_rooted"
app:layout_constraintTop_toTopOf="parent"
style="@style/WelcomeHeaderTitle"/>
<TextView
android:id="@+id/grant_root_header"
style="@style/WelcomeHeaderTitle"
android:text="@string/are_you_rooted"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/grant_root_description"
android:text="@string/willing_to_use_root"
android:textSize="13sp"
app:layout_constraintTop_toBottomOf="@id/grant_root_header"
style="@style/WelcomeHeaderSubtitle"/>
<TextView
android:id="@+id/grant_root_description"
style="@style/WelcomeHeaderSubtitle"
android:text="@string/willing_to_use_root"
android:textSize="13sp"
app:layout_constraintTop_toBottomOf="@id/grant_root_header" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/grant_root_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#1F1F1F"
android:padding="16dp"
android:src="@drawable/ic_magisk"
app:borderWidth="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/grant_root_header"
app:maxImageSize="44dp"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/grant_root_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#1F1F1F"
android:padding="16dp"
android:src="@drawable/ic_magisk"
app:borderWidth="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/grant_root_header"
app:maxImageSize="44dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/grant_root"
android:textColor="#ffffff"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/grant_root_fab"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/grant_root"
android:textColor="#ffffff"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/grant_root_fab" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nonroot"
android:textSize="15sp"
app:layout_constraintBottom_toTopOf="@id/grant_root_finish_fab"
app:layout_constraintEnd_toEndOf="@id/grant_root_finish_fab"
app:layout_constraintStart_toStartOf="@id/grant_root_finish_fab"
android:layout_marginBottom="8dp"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/grant_root_finish_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="45dp"
android:layout_marginBottom="45dp"
android:backgroundTint="?colorPrimary"
android:src="@drawable/ic_baseline_navigate_next_48"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:maxImageSize="48dp" />
</com.vanced.manager.ui.core.SlidingConstraintLayout>
</layout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/grant_root_finish_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="45dp"
android:layout_marginEnd="45dp"
android:backgroundTint="?colorPrimary"
android:src="@drawable/ic_baseline_navigate_next_48"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:maxImageSize="48dp"/>
</com.vanced.manager.ui.core.SlidingConstraintLayout>

View File

@ -1,75 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/home_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<data>
<import type="android.view.View" />
<variable
name="viewModel"
type="com.vanced.manager.ui.viewmodels.HomeViewModel" />
</data>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/home_refresh"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
bind:onRefreshListener="@{()-> viewModel.fetchData()}">
android:fillViewport="true"
android:scrollbars="none">
<androidx.core.widget.NestedScrollView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none">
android:orientation="vertical">
<LinearLayout
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_app_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/view_app"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_app_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/view_app" />
<TextView
android:layout_marginHorizontal="24dp"
android:layout_marginTop="12dp"
android:text="@string/useful_links"
style="@style/CardTextHeader"/>
<TextView
style="@style/CardTextHeader"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="12dp"
android:text="@string/useful_links" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_sponsors"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:nestedScrollingEnabled="false"
tools:itemCount="2"
tools:listitem="@layout/view_sponsor"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_sponsors"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="false"
tools:itemCount="2"
tools:listitem="@layout/view_sponsor" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_links"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:nestedScrollingEnabled="false"
android:paddingBottom="8dp"
tools:itemCount="6"
tools:listitem="@layout/view_social_link" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</layout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_links"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:nestedScrollingEnabled="false"
android:paddingBottom="8dp"
tools:itemCount="6"
tools:listitem="@layout/view_social_link"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@ -1,43 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface">
<com.vanced.manager.ui.core.SlidingConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<TextView
android:id="@+id/select_apps_header"
android:text="@string/select_apps"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
style="@style/WelcomeHeaderTitle"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/select_apps_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface">
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:nestedScrollingEnabled="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:itemCount="2"
tools:listitem="@layout/view_app_checkbox"/>
<TextView
android:id="@+id/select_apps_header"
style="@style/WelcomeHeaderTitle"
android:text="@string/select_apps"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/select_apps_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="45dp"
android:layout_marginEnd="45dp"
android:backgroundTint="?colorPrimary"
android:src="@drawable/ic_baseline_navigate_next_48"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:maxImageSize="48dp"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/select_apps_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:nestedScrollingEnabled="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:itemCount="2"
tools:listitem="@layout/view_app_checkbox" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/select_apps_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="45dp"
android:layout_marginBottom="45dp"
android:backgroundTint="?colorPrimary"
android:src="@drawable/ic_baseline_navigate_next_48"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:maxImageSize="48dp" />
</com.vanced.manager.ui.core.SlidingConstraintLayout>
</layout>
</com.vanced.manager.ui.core.SlidingConstraintLayout>

View File

@ -1,64 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="8dp"
android:paddingTop="16dp">
<LinearLayout
<com.vanced.manager.ui.core.PreferenceCategory
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="8dp"
android:paddingTop="16dp">
android:layout_height="wrap_content"
android:background="@drawable/category_background"
app:category_title="@string/category_behaviour">
<com.vanced.manager.ui.core.PreferenceCategory
<com.vanced.manager.ui.core.PreferenceSwitch
android:id="@+id/use_custom_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/category_background"
app:category_title="@string/category_behaviour">
app:switch_def_value="true"
app:switch_key="@{@string/use_custom_tabs}"
app:switch_summary="@string/link_custom_tabs"
app:switch_title="@string/link_title"/>
<com.vanced.manager.ui.core.PreferenceSwitch
android:id="@+id/use_custom_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:switch_def_value="true"
app:switch_key="@{@string/use_custom_tabs}"
app:switch_summary="@string/link_custom_tabs"
app:switch_title="@string/link_title" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notifications_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/view_preference_switch"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notifications_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/view_preference_switch" />
<com.vanced.manager.ui.core.PreferenceSwitch
android:id="@+id/firebase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:switch_def_value="true"
app:switch_key="@{@string/firebase}"
app:switch_summary="@string/firebase_summary"
app:switch_title="@string/firebase_title"/>
<com.vanced.manager.ui.core.PreferenceSwitch
android:id="@+id/firebase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:switch_def_value="true"
app:switch_key="@{@string/firebase}"
app:switch_summary="@string/firebase_summary"
app:switch_title="@string/firebase_title" />
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/manager_variant"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/variant"/>
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/manager_variant"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/variant" />
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/clearFiles"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/clear_files"/>
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/clearFiles"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/clear_files" />
</com.vanced.manager.ui.core.PreferenceCategory>
</com.vanced.manager.ui.core.PreferenceCategory>
<com.vanced.manager.ui.core.PreferenceCategory
android:layout_width="match_parent"
@ -83,19 +82,13 @@
android:id="@+id/manager_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/language_title" />
app:preference_title="@string/language_title"/>
<com.vanced.manager.ui.core.EmptyPreference
android:id="@+id/select_apps"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:preference_title="@string/select_apps" />
app:preference_title="@string/select_apps"/>
</com.vanced.manager.ui.core.PreferenceCategory>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</layout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@ -1,37 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface">
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface">
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="@dimen/top_header_margin"
app:srcCompat="@drawable/ic_launch_text"
android:textAlignment="center"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="@dimen/top_header_margin"
android:src="@drawable/ic_launch_text"
android:textAlignment="center"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/welcome_get_started"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:letterSpacing="0.15"
android:padding="22dp"
android:text="@string/lets_get_started"
android:textAllCaps="false"
android:textSize="13sp"
app:cornerRadius="50dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</com.vanced.manager.ui.core.SlidingConstraintLayout>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/welcome_get_started"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:letterSpacing="0.15"
android:padding="22dp"
android:text="@string/lets_get_started"
android:textAllCaps="false"
android:textSize="13sp"
app:cornerRadius="50dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</com.vanced.manager.ui.core.SlidingConstraintLayout>

View File

@ -1,73 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="?colorLinkBG"
app:cardElevation="0dp"
app:contentPaddingBottom="8dp"
app:contentPaddingTop="2dp">
<data>
<variable
name="viewModel"
type="com.vanced.manager.ui.viewmodels.AboutViewModel" />
</data>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="?colorLinkBG"
app:cardElevation="0dp"
app:contentPaddingBottom="8dp"
app:contentPaddingTop="2dp">
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
<TextView
android:id="@+id/about_card_vancedTeam"
style="@style/CardTextHeader"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="@string/sources"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.flexbox.FlexboxLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content"
app:alignItems="center"
app:flexDirection="row"
app:justifyContent="space_evenly">
<TextView
android:id="@+id/about_card_vancedTeam"
style="@style/CardTextHeader"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="@string/sources"
<com.google.android.material.button.MaterialButton
android:id="@+id/about_github_button"
style="@style/SocialButtonStyle"
app:icon="@drawable/ic_github"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/about_license_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.flexbox.FlexboxLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:alignItems="center"
app:flexDirection="row"
app:justifyContent="space_evenly">
<com.google.android.material.button.MaterialButton
android:id="@+id/about_github_button"
style="@style/SocialButtonStyle"
android:onClick='@{()-> viewModel.openUrl("https://github.com/YTVanced/VancedInstaller")}'
app:icon="@drawable/ic_github"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/about_license_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/about_license_button"
style="@style/SocialButtonStyle"
android:fontFamily="@font/exo_semibold"
android:onClick='@{()-> viewModel.openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE")}'
android:text="GPL"
android:textSize="21sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/about_github_button"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
</com.google.android.flexbox.FlexboxLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
<com.google.android.material.button.MaterialButton
android:id="@+id/about_license_button"
style="@style/SocialButtonStyle"
android:fontFamily="@font/exo_semibold"
android:text="GPL"
android:textSize="21sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/about_github_button"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
</com.google.android.flexbox.FlexboxLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -36,7 +36,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@{linkModel.linkIcon}"
app:tint="?colorLinkImage"
tools:src="@drawable/ic_instagram" />

View File

@ -34,7 +34,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:src="@{sponsor.logo}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?colorLinkImage"

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">Downloading %1$s</string>
<string name="install">Install</string>
@ -33,7 +33,7 @@
<string name="unavailable">Unavailable</string>
<string name="update">Update</string>
<string name="useful_links">Useful Links</string>
<string name="support_us">Support US!</string>
<string name="support_us">Support us!</string>
<!-- Settings -->
<string name="accent_color">Accent Color</string>
<string name="accent_blue">Blue</string>
@ -42,7 +42,7 @@
<string name="accent_red">Red</string>
<string name="accent_yellow">Yellow</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_title">Firebase Analytics</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller.</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI detected!</string>
<string name="miui_one">In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Error</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Success!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced has successfully been installed! Open now?</string>
@ -94,15 +94,15 @@
<string name="sources">Sources</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` apk to system owner, please try again.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Error Downloading %1$s</string>
<string name="failed_uninstall">Failed to uninstall package %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">Installation failed because user aborted the installation.</string>
<string name="installation_blocked">Installation failed because user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because user tried to downgrade the package. Uninstall updates from stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Installation failed for unknown reasons, join our Telegram or Discord for further support.</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Installation failed because the apk files are corrupted, please try again.</string>

View File

@ -21,7 +21,7 @@
<string name="willing_to_use_root">هل ترغب باستعمال نسخة الروت؟ فقط عليك الضغط على الزر في الأسفل، إذا لا اضغط على زر المتابعة</string>
<!-- Home Page -->
<string name="about_app">حوالي %1$s</string>
<string name="app_changelog_tooltip">اضغط على قائمة التغييرات لرؤية سجل التغيير.</string>
<string name="app_changelog_tooltip">أضغط على إحدى البطاقات لعرض سجل التغييرات.</string>
<string name="changelog">سجل التغييرات</string>
<string name="downloading_file">جارٍ تنزيل %1$s</string>
<string name="install">تثبيت</string>
@ -33,7 +33,7 @@
<string name="unavailable">غير متاح</string>
<string name="update">تحديث</string>
<string name="useful_links">روابط مفيدة</string>
<string name="support_us">ادعمنا!</string>
<string name="support_us">ادعمنا بتريق تنزيل بريف</string>
<!-- Settings -->
<string name="accent_color">الألوان</string>
<string name="accent_blue">أزرق</string>

View File

@ -12,17 +12,17 @@
<string name="title_settings">Tənzimləmələr</string>
<string name="update_manager">Yeniləmə Meneceri</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="are_you_rooted">Cihazınızda root varmı?</string>
<string name="grant_root">Root İcazəsi Ver</string>
<string name="select_at_least_one_app">Ən azı bir tətbiq seçin!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Root versiyasını istifadə etmək istəyirsiniz? Sadəcə aşağıdakı düyməyə basın, əks halda davam etmək üçün toxunun</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced adi Android YouTube tətbiqi olsa da daha yaxşıdır!</string>
<string name="lets_get_started">Gəlin başlayaq</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">%1$s Haqqında</string>
<string name="app_changelog_tooltip">Dəyişiklik jurnalına baxmaq üçün karta toxunun.</string>
<string name="changelog">Dəyişiklik jurnalı</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Dəyişikliklər</string>
<string name="downloading_file">%1$s endirilir</string>
<string name="install">Quraşdır</string>
<string name="button_reinstall">Yenidən quraşdır</string>
@ -33,7 +33,7 @@
<string name="unavailable">Əlçatmazdır</string>
<string name="update">Yenilə</string>
<string name="useful_links">Faydalı Bağlantılar</string>
<string name="support_us">Bizi Dəstəkləyin!</string>
<string name="support_us">Bizi dəstəklə!</string>
<!-- Settings -->
<string name="accent_color">Tema rəngi</string>
<string name="accent_blue">Mavi</string>
@ -42,7 +42,7 @@
<string name="accent_red">Qırmızı</string>
<string name="accent_yellow">Sarı</string>
<string name="category_appearance">Görünüş</string>
<string name="category_behaviour">Davranış</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Endirilmiş faylları təmizlə</string>
<string name="cleared_files">Fayllar uğurla təmizləndi</string>
<string name="firebase_title">Firebase Analitikləri</string>
@ -52,8 +52,8 @@
<string name="link_custom_tabs">Bağlantılar Chrome Özəl Vərəqlərində açılacaq</string>
<string name="system_default">İlkin Sistem</string>
<string name="theme">Tema</string>
<string name="theme_dark">Tünd Tema</string>
<string name="theme_light">ıq Tema</string>
<string name="theme_dark">Tünd mövzu</string>
<string name="theme_light">ıq mövzu</string>
<string name="update_url">Yeniləmə Kanal URL-si</string>
<string name="push_notifications">%1$s Ani Bildirişlər</string>
<string name="push_notifications_summary">%1$s üçün yeni buraxılış olanda ani bildirişlər alın</string>
@ -61,48 +61,48 @@
<string name="update_not_found">Yeniləmə yoxdur</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="advanced">Qabaqcıl</string>
<string name="app_install_files_detected">%1$s quraşdırma faylı aşkarlandı!</string>
<string name="app_install_files_detected_summary">Menecer %1$s quraşdırması üçün lazımi bütün faylların tapıldığını aşkarladı. Quraşdırmaq istəyirsiniz?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Yeniləmələr yoxlanılır…</string>
<string name="chosen_lang">Dil(lər): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="chosen_theme">Mövzu: %1$s</string>
<string name="chosen_version">Versiya: %1$s</string>
<string name="guide">Bələdçi</string>
<string name="hold_on">Dayandır!</string>
<string name="installing_app">%1$s quraşdırılır</string>
<string name="magisk_vanced">Buraxılışı dayandırılan və bu tətbiq istifadə edərək yenilənə bilməyən Vanced-in Magisk/TWRP versiyasını istifadə edirsiniz. Zəhmət olmasa magisk modulunu/TWRP Vanced silici istifadə edərək silin.</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI aşkarlandı!</string>
<string name="miui_one">Vanced-i quraşdırmaq üçün tərtibatçı tənzimləmələrindən MIUI Optimallaşdırmasını sıradan çıxartmaq LAZIMDIR. (20.2.20 və ya yuxarı xiaomi.eu əsaslı ROM istifadə edirsinizsə bu xəbərdarlığı nəzərə almaya bilərsiniz)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Xəta</string>
<string name="redownload">Yenidən endir</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Uğurlu!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="app_installation_preferences">%1$s Qurma Seçimləri</string>
<string name="vanced_installed">Vanced uğurla quraşdırıldı! İndi açılsın?</string>
<string name="version">Version</string>
<string name="version">Versiya</string>
<string name="music_installed">Vanced Music uğurla quraşdırıldı! İndi açılsın?</string>
<string name="please_be_patient">Zəhmət olmasa səbrli olun…</string>
<string name="launch"></string>
<string name="welcome">Xoş gəldiniz</string>
<!-- Install Page -->
<string name="choose_preferred_language">Vanced üçün tərcih etdiyiniz dili seçin</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="light_plus_other">İşıqlı + %1$s</string>
<string name="select_at_least_one_lang">Ən azı bir dil seçin!</string>
<!-- About Page -->
<string name="manager_dev">Menecer Tərtibatçıları</string>
<string name="sources">Mənbələr</string>
<string name="vanced_team">Vanced Birliyi</string>
<!-- Error messages -->
<string name="chown_fail">Apk, sistem sahibinə dəyişdirilmədi, yenidən sınayın.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">%1$s endirilmə xətası</string>
<string name="failed_uninstall">%1$s paketini silinmədi</string>
<string name="files_missing_va">Quraşdırmaq üçün lazımi fayllar tapılmadı. Quraşdırma fayllarını yenidən endirib təkrar sınayın.</string>
<string name="ifile_missing">Anbarda qara/tünd tema üçün apk faylı tapılmadı, yenidən sınayın.</string>
<string name="installation_aborted">İstifadəçi quraşdırmanı ləğv etdiyi üçün quraşdırılma uğursuz oldu.</string>
<string name="installation_blocked">İstifadəçi quraşdırmanı əngəllədiyi üçün quraşdırılma uğursuz oldu.</string>
<string name="installation_downgrade">İstifadəçi paketi alt versiyaya keçirməyə çalışdığı üçün quraşdırılma uğursuz oldu. Stok YouTube tətbiqindən yeniləmələri silib yenidən sınayın.</string>
<string name="installation_conflict">Tətbiq əvvəlcədən quraşdırılmış bir tətbiqlə toqquşduğu üçün quraşdırılma uğursuz oldu. Vanced-in cari versiyasını silib yenidən sınayın.</string>
<string name="ifile_missing">Anbarda qara/tünd mövzu üçün apk faylı tapılmadı, yenidən sınayın.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Bilinməyən səbəblərə görə quraşdırılma uğursuz oldu. Dəstək üçün Telegram və ya Discord-a qoşulun.</string>
<string name="installation_incompatible">Quraşdırma faylı cihazınıza uyğun gəlmədiyi üçün quraşdırılma uğursuz oldu. Tənzimləmələrdən endirilmiş faylları təmizləyib yenidən sınayın.</string>
<string name="installation_invalid">Apk faylları zədəli olduğu üçün quraşdırılma uğursuz oldu, yenidən sınayın.</string>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="cancel">বাতিল করুন</string>
<string name="close">বন্ধ করুন</string>
<string name="reset">আবার শুরু করো</string>
<string name="reset">পুনরায় স্থির করুন</string>
<string name="save">সংরক্ষণ করুন</string>
<string name="select_apps">আপনার আ্যপ্স নির্বাচন করুন</string>
<string name="select_apps">আপনার পছন্দসই অ্যাপগুলি নির্বাচন করুন</string>
<!-- Main Activity -->
<string name="title_about">সম্বন্ধে</string>
<string name="title_home">ম্যানেজার</string>
@ -14,69 +14,69 @@
<!-- Welcome Page -->
<string name="are_you_rooted">আপনার ডিভাইস কি রুটেড?</string>
<string name="grant_root">রুটের অনুমতি দিন</string>
<string name="select_at_least_one_app">সর্বনিম্ন একটি আ্যপ নির্বাচন করুন!</string>
<string name="select_apps_music">ভ্যান্সড, কিন্তু তুলনা মূলক কম গুণাগুণ সম্পন্ন তবুও আপনার চাহিদাকে পূরণ করবে।</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="select_at_least_one_app">অন্তত একটি অ্যাপ নির্বাচন করুন!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">ইউটিউব ভ্যান্সড হল স্টক অ্যান্ড্রয়েড ইউটিউব অ্যাপ, তবে আরো ভাল!</string>
<string name="lets_get_started">চলুন শুরু করি</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">%1$s ডাউনলোড করা হচ্ছে</string>
<string name="install">ইনস্টল করুন</string>
<string name="button_reinstall">পুনরায় ইনস্টল করুন</string>
<string name="version_installed">ইনস্টল হয়েছে:</string>
<string name="version_installed">ইনস্টল করা আছে:</string>
<string name="latest">সর্বশেষ:</string>
<string name="no_microg">মাইক্রোজি ইনস্টল করা নেই</string>
<string name="root_not_granted">রুট অনুমতি দেয়া হয়নি</string>
<string name="unavailable">অনুপলব্ধ</string>
<string name="update">হালনাগাদ</string>
<string name="useful_links">উপকারী লিংক</string>
<string name="support_us">Support US!</string>
<string name="update">আপডেট</string>
<string name="useful_links">উপকারী লিংকগুলি</string>
<string name="support_us">আমাদের সমর্থন করো!</string>
<!-- Settings -->
<string name="accent_color">রঙের ধরন</string>
<string name="accent_color">অ্যাকসেন্ট রঙ</string>
<string name="accent_blue">নীল</string>
<string name="accent_green">সবুজ</string>
<string name="accent_purple">গাঢ় বেগুনী</string>
<string name="accent_purple">বেগুনী</string>
<string name="accent_red">লাল</string>
<string name="accent_yellow">হলুদ</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behaviour</string>
<string name="clear_files">ডাউনলোড করা ফাইল সাফ করুন</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">ডাউনলোড করা ফাইলগুলি সাফ করুন</string>
<string name="cleared_files">সাফল্যের সাথে ফাইলগুলি সাফ করা হয়েছে</string>
<string name="firebase_title">ফায়ারবেস বিশ্লেষণ</string>
<string name="firebase_summary">এটি আমাদের সফটওয়্যার এর চলার ধরন ও অনাকাঙ্ক্ষিত আচরন সম্পকে আমাদের তথ্য দিবে।</string>
<string name="firebase_summary">এটি অ্যাপ্লিকেশন কর্মক্ষমতা এবং ক্র্যাশ লগ সম্পর্কিত তথ্য আমাদের দিবে।</string>
<string name="language_title">ভাষা</string>
<string name="link_title">Chrome কাস্টম ট্যাব ব্যবহার করুন</string>
<string name="link_custom_tabs">লিঙ্কগুলি Chrome কাস্টম ট্যাবগুলিতে খোলা হবে</string>
<string name="link_title">ক্রোম কাস্টম ট্যাবস ব্যবহার করুন</string>
<string name="link_custom_tabs">লিঙ্কগুলি ক্রোম কাস্টম ট্যাবসে খোলা হবে</string>
<string name="system_default">সিস্টেম দ্বারা নির্ধারিত</string>
<string name="theme">থিম</string>
<string name="theme_dark">অন্ধকার থিম</string>
<string name="theme_dark">গাঢ় থিম</string>
<string name="theme_light">হালকা থিম</string>
<string name="update_url">চ্যানেল ইউআরএল আপডেট করুন</string>
<string name="update_url">চ্যানেল URL আপডেট করুন</string>
<string name="push_notifications">%1$s পুশ বিজ্ঞপ্তি</string>
<string name="push_notifications_summary">%1$s এর জন্য আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তিগুলি পান</string>
<string name="update_center">পরিচালক আপডেট কেন্দ্র Center</string>
<string name="update_not_found">No new updates</string>
<string name="push_notifications_summary">%1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তি পান</string>
<string name="update_center">ম্যানেজার আপডেট কেন্দ্র</string>
<string name="update_not_found">কোনো নতুন আপডেট নেই</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="checking_updates">Checking for updates</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">আপডেট আছে কিনা দেখা হচ্ছে</string>
<string name="chosen_lang">ভাষা (গুলি):%1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_theme">থিম: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">সহায়িকা</string>
<string name="hold_on">থামো!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">আপনি ভ্যানসিডের ম্যাজিক / টিডব্লিউআরপি সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং এই অ্যাপ্লিকেশনটি ব্যবহার করে আপডেট করা যাবে না। দয়া করে Magisk মডিউলটি সরিয়ে / TWRP ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি সরিয়ে দিন।.</string>
<string name="installing_app">%1$s ইনস্টল করা হচ্ছে</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">মিইউআই শনাক্তকৃত!</string>
<string name="miui_one">ভ্যানসড ইনস্টল করার জন্য, আপনাকে বিকাশকারী সেটিংসে এমআইইউআই অপটিমাইজেশন অক্ষম করতে হবে। (আপনি যদি 20.2.20 বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">ত্রুটি</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">সফলতা!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">ভ্যান্সড সফলভাবে ইনস্টল করা হয়েছে! এখন খোল?</string>
@ -94,15 +94,15 @@
<string name="sources">সূত্রসমূহ</string>
<string name="vanced_team">ভান্সড দল</string>
<!-- Error messages -->
<string name="chown_fail">সিস্টেমের মালিককে এপিকে `chown` করতে ব্যর্থ হয়েছে, দয়া করে আবার চেষ্টা করুন.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">%1$s ডাউনলোড করার সময় ত্রুটি</string>
<string name="failed_uninstall">প্যাকেজ %1$s আনইনস্টল করতে ব্যর্থ</string>
<string name="files_missing_va">সফটওয়্যার টি ইনস্টল এর জন্য প্রয়োজনী ফাইল সংগ্রহতে ব্যর্থ হয়েছে। পুনরায় ডাওনলোড এবং ইনস্টল করে চেষ্টা করুন.</string>
<string name="ifile_missing">স্টোরেজ থেকে কালো / অন্ধকান থিমের জন্য apk ফাইল সনাক্ত করতে ব্যর্থ হয়েছে, দয়া করে আবার চেষ্টা করুন।.</string>
<string name="installation_aborted">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারীরা ইনস্টলেশনটি বাতিল করে দিয়েছেন।.</string>
<string name="installation_blocked">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারীরা ইনস্টলেশনটি অবরুদ্ধ করেছেন।.</string>
<string name="installation_downgrade">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করেছিল। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।.</string>
<string name="installation_conflict">ইনস্টলেশন ব্যর্থ হয়েছে কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব রয়েছে ts ভান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">অজানা কারণে ইনস্টলেশন ব্যর্থ হয়েছে, আরও সহায়তার জন্য আমাদের টেলিগ্রাম বা ডিসকর্ডে যোগ দিন।.</string>
<string name="installation_incompatible">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ইনস্টলেশন ফাইলটি আপনার ডিভাইসের সাথে বেমানান। সেটিংসে ডাউনলোড করা ফাইল সাফ করুন, তারপরে আবার চেষ্টা করুন।.</string>
<string name="installation_invalid">অ্যাপ্লিকেশন ব্যর্থ হয়েছে কারণ এপিপি ফাইলগুলি দূষিত হয়েছে, দয়া করে আবার চেষ্টা করুন।.</string>

View File

@ -3,22 +3,22 @@
<!-- Global Strings -->
<string name="cancel">বাতিল করুন</string>
<string name="close">বন্ধ করুন</string>
<string name="reset">রিসেট করুন</string>
<string name="reset">পুনরায় স্থির করুন</string>
<string name="save">সংরক্ষণ করুন</string>
<string name="select_apps">আপনার পছন্দসই অ্যাপগুলি নির্বাচন করুন</string>
<!-- Main Activity -->
<string name="title_about">সম্বন্ধে</string>
<string name="title_home">ম্যানেজার</string>
<string name="title_settings">সেটিংস</string>
<string name="update_manager">ম্যানেজার হালনাগাদ করুন</string>
<string name="update_manager">ম্যানেজার আপডেট করুন</string>
<!-- Welcome Page -->
<string name="are_you_rooted">আপনার ডিভাইসটিতে আপনার রুট অ্যাক্সেস আছে?</string>
<string name="grant_root">রুট অনুমতি মঞ্জুর করুন</string>
<string name="select_at_least_one_app">অন্তত একটি অ্যাপ নির্বাচন করুন!</string>
<string name="select_apps_music">ভ্যান্সড, তবে ইউটিউব মিউজিকের জন্য!\nতুলনামূলকভাবে কম বৈশিষ্ট্যযুক্ত, তবে আপনার চাহিদা পূরণ করে।</string>
<string name="select_apps_music">ভ্যান্সড, তবে ইউটিউব মিউজিকের জন্য!\nতুলনামূলকভাবে কম বৈশিষ্ট্যযুক্ত, তবে আপনার চাহিদা পূরণ করে।</string>
<string name="select_apps_vanced">ইউটিউব ভ্যান্সড হল স্টক অ্যান্ড্রয়েড ইউটিউব অ্যাপ, তবে আরো ভাল!</string>
<string name="lets_get_started">শুরু করা যাক</string>
<string name="willing_to_use_root">রুট সংস্করণ ব্যবহার করতে ইচ্ছুক? নীচের বোতামটি চাপুন, অন্যথায় চালিয়ে যেতে আলতো চাপুন</string>
<string name="willing_to_use_root">রুট সংস্করণ ব্যবহার করতে ইচ্ছুক? নীচের বোতামটি চাপুন, অন্যথায় চালিয়ে যেতে > এর উপরে আলতো চাপুন</string>
<!-- Home Page -->
<string name="about_app">%1$s এর সম্বন্ধে</string>
<string name="app_changelog_tooltip">পরিবর্তন নথি দেখতে কার্ডে আলতো চাপুন।</string>
@ -29,16 +29,16 @@
<string name="version_installed">ইনস্টল করা আছে:</string>
<string name="latest">সর্বশেষ:</string>
<string name="no_microg">মাইক্রোজি ইনস্টল করা নেই</string>
<string name="root_not_granted">রুট অ্যাক্সেস দেওয়া হয়নি</string>
<string name="root_not_granted">রুট অনুমতি দেয়া হয়নি</string>
<string name="unavailable">অনুপলব্ধ</string>
<string name="update">হালনাগাদ</string>
<string name="update">আপডেট</string>
<string name="useful_links">উপকারী লিংকগুলি</string>
<string name="support_us">আমাদের সমর্থন করুন!</string>
<!-- Settings -->
<string name="accent_color">অ্যাকসেন্ট রঙ</string>
<string name="accent_blue">নীল</string>
<string name="accent_green">সবুজ</string>
<string name="accent_purple">বেগুনি</string>
<string name="accent_purple">বেগুন</string>
<string name="accent_red">লাল</string>
<string name="accent_yellow">হলুদ</string>
<string name="category_appearance">রূপ</string>
@ -54,26 +54,26 @@
<string name="theme">থিম</string>
<string name="theme_dark">গাঢ় থিম</string>
<string name="theme_light">হালকা থিম</string>
<string name="update_url">চ্যানেল ইউআরএল হালনাগাদ করুন</string>
<string name="push_notifications">%1$s পুশ নোটিফিকেশনগুলি</string>
<string name="push_notifications_summary">%1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তিগুলি পান</string>
<string name="update_center">পরিচালক আপডেট কেন্দ্র</string>
<string name="update_not_found">কোনো নতুন হালনাগাদ নেই</string>
<string name="update_url">চ্যানেল URL আপডেট করুন</string>
<string name="push_notifications">%1$s পুশ বিজ্ঞপ্তিগুলি</string>
<string name="push_notifications_summary">%1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তি পান</string>
<string name="update_center">ম্যানেজার আপডেট কেন্দ্র</string>
<string name="update_not_found">কোনো নতুন আপডেট নেই</string>
<string name="variant">বিকল্প</string>
<!-- Dialogs -->
<string name="advanced">উন্নত</string>
<string name="app_install_files_detected">ইনস্টল করার জন্য %1$s ফাইল খুঁজে পাওয়া গেছে!</string>
<string name="app_install_files_detected_summary">%1$s ইনস্টল করার জন্য প্রয়োজনীয় সমস্ত ফাইলগুলি ম্যানেজার খুঁজে পেয়েছে। আপনি কি ইনস্টল করতে চান?</string>
<string name="checking_updates">হালনাগাদের জন্য চেক করা হচ্ছে…</string>
<string name="checking_updates">আপডেটের জন্য চেক করা হচ্ছে…</string>
<string name="chosen_lang">ভাষা(গুলি): %1$s</string>
<string name="chosen_theme">থিম: %1$s</string>
<string name="chosen_version">সংস্করণ: %1$s</string>
<string name="guide">সহায়িকা</string>
<string name="hold_on">থামুন!</string>
<string name="installing_app">%1$s ইনস্টল করা হচ্ছে</string>
<string name="magisk_vanced">আপনি ভ্যান্সড ম্যাজিস্ক/টিডব্লিউআরপি সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং এই অ্যাপ্লিকেশনটি ব্যবহার করে হালনাগাদ করতে পারবেন না। দয়া করে ম্যাজিস্ক মডিউলটি সরিয়ে/ টিডব্লিউআরপি ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি মুছে ফেলুন।</string>
<string name="magisk_vanced">আপনি ভ্যান্সড ম্যাজিস্ক/TWRP সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং আপনি এটিকে আপডেট করতে পারবেন না। দয়া করে ম্যাজিস্ক মডিউলটি সরিয়ে/TWRP ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি মুছে ফেলুন।</string>
<string name="miui_one_title">মিআইইউআই শনাক্তকৃত!</string>
<string name="miui_one">ভ্যান্সড ইনস্টল করার জন্য, আপনাকে বিকাশকারী সেটিংসে এমআইইউআই অপটিমাইজেশন অক্ষম করতে হবে। (আপনি যদি ২০.২.২০ বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন)</string>
<string name="miui_one">ভ্যান্সড ইনস্টল করার জন্য, আপনাকে সেটিংসে ডেভেলপারের বিকল্পে গিয়ে MIUI অপটিমাইজেশন নিস্ক্রিয় করতে হবে। (আপনি যদি ২০.২.২০ বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন)</string>
<string name="error">ত্রুটি</string>
<string name="redownload">পুনরায় ডাউনলোড করুন</string>
<string name="security_context">নিশ্চিত করুন যে আপনি অ্যাপটি vancedapp.com, ভ্যান্সড ডিসকার্ড সার্ভার বা ভ্যান্সড গিটহাব থেকে ডাউনলোড করেছেন</string>
@ -94,15 +94,15 @@
<string name="sources">উৎসগুলি</string>
<string name="vanced_team">ভ্যান্সড টীম</string>
<!-- Error messages -->
<string name="chown_fail">সিস্টেমের মালিককে এপিকে `chown` করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন।</string>
<string name="chown_fail">System owner কে APK `chown` করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন।</string>
<string name="error_downloading">%1$s ডাউনলোড করার সময় ত্রুটি</string>
<string name="failed_uninstall">%1$s পেকেজ আন‌ইনস্টল করা যাইনি</string>
<string name="files_missing_va">ইনস্টলেশনের জন্য প্রয়োজনীয় ফাইলগুলি খুঁজে পাওয়া যায় নি। ইনস্টল করার জন্য ফাইলগুলি পুনরায় ডাউনলোড করুন, তারপরে আবার চেষ্টা করুন।</string>
<string name="ifile_missing">স্টোরেজ থেকে কালো/গাঢ় থিমের জন্য এপিকে ফাইল সনাক্ত করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন।</string>
<string name="installation_aborted">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী ইনস্টলেশনটি বাতিল করে দিয়েছেন।</string>
<string name="installation_blocked">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী ইনস্টলেশন অবরুদ্ধ করেছেন।</string>
<string name="installation_downgrade">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করছিলেন। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।</string>
<string name="installation_conflict">ইনস্টলেশন ব্যর্থ হয়েছে কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া আরেকটি অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব করছে। ভ্যান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।</string>
<string name="installation_aborted">ইনস্টল করা যায়নি কারণ ব্যবহারকারী ইনস্টল করা বাতিল করে দিয়েছেন।</string>
<string name="installation_blocked">ইনস্টল করা যায়নি কারণ ব্যবহারকারী ইনস্টল করা অবরুদ্ধ করেছেন।</string>
<string name="installation_downgrade">ইনস্টল করা যায়নি কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করছিলেন। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।</string>
<string name="installation_conflict">ইনস্টল করা যায়নি কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া আরেকটি অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব করছে। ভ্যান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।</string>
<string name="installation_failed">অজানা কারণে ইনস্টলেশন ব্যর্থ হয়েছে, আরও সহায়তার জন্য আমাদের টেলিগ্রাম বা ডিসকর্ডে যোগ দিন।</string>
<string name="installation_incompatible">ইনস্টলেশন ব্যর্থ হয়েছে কারণ ইনস্টলেশন ফাইলটি আপনার ডিভাইসের উপযুক্ত নয়। সেটিংসে ডাউনলোড করা ফাইল মুছে ফেলুন, তারপরে আবার চেষ্টা করুন।</string>
<string name="installation_invalid">ইনস্টলেশন ব্যর্থ হয়েছে কারণ এপিকে ফাইলগুলি দূষিত, দয়া করে আবার চেষ্টা করুন।</string>

View File

@ -8,20 +8,20 @@
<string name="select_apps">Select Your Apps</string>
<!-- Main Activity -->
<string name="title_about">Quant a</string>
<string name="title_home">Manager</string>
<string name="title_home">Gestor</string>
<string name="title_settings">Configuració</string>
<string name="update_manager">Update Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">Descarregant %1$s</string>
<string name="install">Instal·lar</string>
@ -33,7 +33,7 @@
<string name="unavailable">No disponible</string>
<string name="update">Actualitza</string>
<string name="useful_links">Enllaços d\'interès</string>
<string name="support_us">Support US!</string>
<string name="support_us">Doneu-nos suport!</string>
<!-- Settings -->
<string name="accent_color">Color d\'èmfasi</string>
<string name="accent_blue">Blau</string>
@ -42,7 +42,7 @@
<string name="accent_red">Vermell</string>
<string name="accent_yellow">Groc</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Esborrar fitxers descarregats</string>
<string name="cleared_files">Fitxers netejats correctament</string>
<string name="firebase_title">Firebase Analytics</string>
@ -58,25 +58,25 @@
<string name="push_notifications">%1$s notificacions automàtiques</string>
<string name="push_notifications_summary">Rebeu notificacions automàtiques quan es publiqui una actualització de%1$s</string>
<string name="update_center">Gestor d\'actualitzacions</string>
<string name="update_not_found">No new updates</string>
<string name="update_not_found">Cap actualització</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Idioma: %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_theme">Tema: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">Guia</string>
<string name="hold_on">Atura!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">Esteu utilitzant la versió Magisk / TWRP de Vanced, que està descatalogada i no es pot actualitzar mitjançant aquesta aplicació. Elimineu-lo traient el mòdul magisk / utilitzant el programa de desinstal·lació de TWRP Vanced.</string>
<string name="installing_app">Instal·lant %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI detectat!</string>
<string name="miui_one">Per instal·lar Vanced, heu de desactivar les optimitzacions MIUI a la configuració del desenvolupador. (Podeu ignorar aquest advertiment si feu servir la ROM basada en xiaomi.eu 20.2.20 o posterior)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Error</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Èxit!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced s\'ha instal·lat correctament. Obert ara?</string>
@ -94,15 +94,15 @@
<string name="sources">Fonts</string>
<string name="vanced_team">Equip avançat</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` apk to system owner, please try again.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Error en descarregar %1$s</string>
<string name="failed_uninstall">Error en instal·lar el paquet %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">La instal·lació ha fallat perquè l\'usuari ha interromput la instal·lació.</string>
<string name="installation_blocked">La instal·lació ha fallat perquè l\'usuari ha bloquejat la instal·lació.</string>
<string name="installation_downgrade">La instal·lació ha fallat perquè l\'usuari ha intentat actualitzar el paquet. Desinstal·leu les actualitzacions de l\'aplicació YouTube existent i torneu-ho a provar.</string>
<string name="installation_conflict">La instal·lació ha fallat perquè l\'aplicació entra en conflicte amb una aplicació ja instal·lada. Desinstal·leu la versió actual de Vanced i torneu-ho a provar.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">La instal·lació ha fallat per motius desconeguts. Uniu-vos al nostre Telegram o Discord per obtenir més assistència.</string>
<string name="installation_incompatible">La instal·lació ha fallat perquè el fitxer d\'instal·lació és incompatible amb el dispositiu. Esborreu els fitxers descarregats a Configuració i torneu-ho a provar.</string>
<string name="installation_invalid">La instal·lació ha fallat perquè els fitxers apk estan danyats. Torneu-ho a provar.</string>

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">مۆبایلەکەت ڕۆت کراوە؟</string>
<string name="grant_root">ڕێگەپێدانی ڕۆت Root</string>
<string name="select_at_least_one_app">لانیکەم دانەیەک دیاریبکە!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">ئەگەر ئەتەوێ بە ڕێگەپێدانی ڕۆت فایلەکان دابەزێنیت، تەنها لە خوارەوە پەنجە بنێ بە بەردەوامبون بۆ ئەنجامدانی کارەکە</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced هەمان بەرنامەی یوتوبە بەڵام بەشێوەکی باشتر!</string>
<string name="lets_get_started">دەست پێکردن</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">دەربارەی %1$s</string>
<string name="app_changelog_tooltip">Ji bo guherînan bibînî kartê bitepîne.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">گۆڕانکارییەکان</string>
<string name="downloading_file">داگرتنی %1$s</string>
<string name="install">دامەزراندن</string>
@ -33,7 +33,7 @@
<string name="unavailable">بەردەست نیە</string>
<string name="update">نوێکردنەوە</string>
<string name="useful_links">کراوە بە کوردی لەلایەن: گۆران غەریب(کوردرۆید)</string>
<string name="support_us">پاڵپشتی تیمەکەمان!</string>
<string name="support_us">پشتگیریکردن!</string>
<!-- Settings -->
<string name="accent_color">ڕەنگی سەرەکی</string>
<string name="accent_blue">شین</string>
@ -42,7 +42,7 @@
<string name="accent_red">سوور</string>
<string name="accent_yellow">زەرد</string>
<string name="category_appearance">ڕووکار</string>
<string name="category_behaviour">ڕووکەش</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">سڕینەوەی فایلە داگیراوەکان</string>
<string name="cleared_files">فایلەکان بەسەرکەتوویی سڕانەوە</string>
<string name="firebase_title">Firebase شیکردنەوەی</string>
@ -61,9 +61,9 @@
<string name="update_not_found">هیچ نوێکردنەوەیەک نیە</string>
<string name="variant">جۆر</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="advanced">پێشکەوتوو</string>
<string name="app_install_files_detected">%1$s فایل دۆزرایەوە بۆ دابەزاندن!</string>
<string name="app_install_files_detected_summary">بەرنامەکە هەموو ئەو فایلانەی دۆزیەوە %1$s کە پێویستن بۆ دابەزاندن، ئەتەوێ دایان مەزرێنیت؟</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">پشکنین بۆ نوێکردنەوە…</string>
<string name="chosen_lang">زمان: %1$s</string>
<string name="chosen_theme">ڕووکار: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">زانیاری</string>
<string name="hold_on">وەستاندن!</string>
<string name="installing_app">دامەزراندنی %1$s</string>
<string name="magisk_vanced">تۆ وەشانی Magisk/TWRP ـی Vanced بەکاردێنیت، کە ناتوانرێت بە بەکارهێنانی ئەم بەرنامەیە نوێبکرێتەوە، تکایە لایبدە بە سڕینەوەی مۆدیولی ماگیسک/لەڕێی TWRP Vanced.</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">تۆ ڕووکاری MIUI بەکاردێنیت!</string>
<string name="miui_one">بۆ ئەوەی Vanced دابمەزرێنیت، پێویستە چاکسازییەکانی ڕووکاری MIUI لە ڕێکبەندەکانی پەرەپێدەر لە کار بخەیت، (دەتوانیت ئەم ئاگاداریە پشتگوێ بخەیت ئەگەر ڕومی تایبەتی وەشانی 20.2.20 یان دواتر xiaomi.eu بەکاردەهێنیت. بەکاردەهێنیت)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">هەڵەیەک ڕوویدا</string>
<string name="redownload">داگرتنەوە</string>
<string name="security_context">دڵنیابە کە بەرنامەکەت لە سایتی vancedapp.com، سێرڤەری دیسکۆرد یان Vanced GitHub داگرتووە</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">سەرکەوتو بوو!</string>
<string name="app_installation_preferences">%1$s ڕێکخستنەکانی دامەزراندن</string>
<string name="vanced_installed">بەرنامەکە بەسەرکەوتوویی دابەزێنرا! کردنەوە ئێستا؟</string>
@ -94,15 +94,15 @@
<string name="sources">سەرچاوەکان</string>
<string name="vanced_team">Vanced تیمی</string>
<!-- Error messages -->
<string name="chown_fail">سەرکەوتو نەبوو `chown` بۆ دانان وەک بەرنامەی سیستەم, تکایە دووبارە هەوڵبدەرەوە.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">کێشە ڕوویدا لە داگرتنی %1$s</string>
<string name="failed_uninstall">سڕینەوەی %1$s سەرکەوتو نەبوو</string>
<string name="files_missing_va">سەرکەوتو نەبوو لە دۆزینەوەی فایلە پێویستەکان بۆ دامەزراندن، فایلە پێویستیەکان دووبارە دابگرەوە بۆ جێگیرکردن، پاشان دووبارە هەوڵبدەرەوە.</string>
<string name="ifile_missing">سەرکەوتوو نەبوو لەدۆزینەوەی شوێنی فایلی Apk بۆ ڕووکاری ڕەش/تاریک لە بیرگەدا، تکایە دووبارە هەوڵبدەرەوە.</string>
<string name="installation_aborted">دامەزراندن سەرکەوتو نەبوو، لەبەر ئەوەی بەکارهێنەر کۆتاییهێنا بە دابەزاندنەکە.</string>
<string name="installation_blocked">دامەزراندن سەرکەوتو نەبوو، لەبەر ئەوەی بەکارهێنەر ڕێگریکرد لە دابەزاندنەکە.</string>
<string name="installation_downgrade">دامەزراندن سەرکەوتو نەبوو، لەبەر ئەوەی بەکارهێنەر هەوڵیدا بۆ نزمکردنەوەی وەشان، نوێکارییەکانی بەرنامەی بنەڕەتی YouTube بسڕەوە و دووبارە هەوڵبدەرەوە.</string>
<string name="installation_conflict">دامەزراندن سەرکەوتو نەبوو لەبەرئەوەی وەشانێکی تری بەرنامەکە پێشتر دامەزرێنراوە، وەشانی ئێستای Vanced بسڕەوە و پاشان دووبارە هەوڵبدەرەوە.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">دامەزراندن سەرکەوتو نەبوو لەبەر هۆکاری نادیار، پەیوەندی بکە بە تێلێگرامەکەمان یان Discord بۆ پشتگیری زیاتر.</string>
<string name="installation_incompatible">دامەزراندن سەرکەوتو نەبوو لەبەرئەوەی فایلی دابەزاندن گونجاو نییە لەگەڵ ئامێرەکەت، فایلە داگیراوەکان بسڕەوە و پاشان دووبارە هەوڵبدەرەوە.</string>
<string name="installation_invalid">دامەزراندن سەرکەوتوو نەبوو لەبەرئەوەی فایلی apk تێکچووە، تکایە دووبارە هەوڵبدرەوە.</string>

View File

@ -94,7 +94,7 @@
<string name="sources">Zdrojové kódy</string>
<string name="vanced_team">Tým Vanced</string>
<!-- Error messages -->
<string name="chown_fail">Nelze změnit soubor apk na vlastníka systému, zkuste to prosím znovu.</string>
<string name="chown_fail">Nelze změnit soubor APK na vlastníka systému, zkuste to prosím znovu.</string>
<string name="error_downloading">Chyba při stahování %1$s</string>
<string name="failed_uninstall">Nepodařilo se odinstalovat balíček %1$s</string>
<string name="files_missing_va">Nepodařilo se najít požadované soubory pro instalaci. Stáhněte znovu instalační soubory a pokus opakujte.</string>

View File

@ -42,7 +42,7 @@
<string name="accent_red">Rød</string>
<string name="accent_yellow">Gul</string>
<string name="category_appearance">Udseende</string>
<string name="category_behaviour">Opførsel</string>
<string name="category_behaviour">Adfærd</string>
<string name="clear_files">Ryd hentede filer</string>
<string name="cleared_files">Filer ryddet succesfuldt</string>
<string name="firebase_title">Firebase analyse</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Avanceret</string>
<string name="app_install_files_detected">%1$s installationsfiler fundet!</string>
<string name="app_install_files_detected_summary">Manageren opdagede, at alle nødvendige filer til %1$s installationen blev fundet. Vil du installere?</string>
<string name="app_install_files_detected_summary">Manageren opdagede, at alle nødvendige filer til %1$s installationen blev fundet. Vil du installere den?</string>
<string name="checking_updates">Søger efter opdateringer…</string>
<string name="chosen_lang">Sprog:%1$s</string>
<string name="chosen_theme">Tema: %1$s</string>
@ -73,7 +73,7 @@
<string name="installing_app">Installerer %1$s</string>
<string name="magisk_vanced">Det ser ud som om du bruger Magisk/TWRP versionen af Vanced. Den er ikke længere understøttet og kan derfor ikke opdateres igennem denne app. Vær venlig at fjerne magisk modulet/brug TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI fundet!</string>
<string name="miui_one">For at kunne installere Vanced er du NØDT til at slå MIUI optimering fra i udvikler indstillingerne. (Du kan ignorere denne advarsel hvis du bruger en 20.2.20 eller nyere xiaomi.eu baseret ROM)</string>
<string name="miui_one">For at installere Vanced er du NØDT til at slå MIUI optimering fra i udvikler indstillingerne. (Du kan ignorere denne advarsel hvis du bruger en 20.2.20 eller nyere xiaomi.eu baseret ROM)</string>
<string name="error">Fejl</string>
<string name="redownload">Hent igen</string>
<string name="security_context">Venligst sørg for kun at have downloaded appen fra vancedapp.com, Vanced Discord serveren eller Vanced GitHub siden</string>

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">Ist mein Gerät gerootet?</string>
<string name="grant_root">Root-Berechtigung erteilen</string>
<string name="select_at_least_one_app">Wählen Sie mindestens eine App!</string>
<string name="select_apps_music">Vanced, aber für YouTube Music!\nrelativ wenige features aber erfüllt die Bedürfnissse.</string>
<string name="select_apps_music">Vanced, aber für YouTube Music!\nrelativ weniger funktionsreich, aber erfüllt Ihre Bedürfnisse.</string>
<string name="select_apps_vanced">YouTube Vanced ist die standard Android YouTube App, aber besser!</string>
<string name="lets_get_started">Los geht\'s</string>
<string name="willing_to_use_root">Möchten Sie die Root-Version verwenden? Tippen Sie einfach auf die Schaltfläche unten, andernfalls tippen Sie um fortzufahren</string>
<string name="willing_to_use_root">Möchten Sie die Root-Version verwenden? Tippen Sie einfach auf die Schaltfläche unten, sonst tippen Sie um fortzufahren</string>
<!-- Home Page -->
<string name="about_app">Über %1$s</string>
<string name="app_changelog_tooltip">Tippe auf die Karte, um Changelog zu sehen.</string>
<string name="app_changelog_tooltip">Tippe auf die Karte, um den Changelog zu sehen.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">%1$s wird heruntergeladen</string>
<string name="install">Installieren</string>
@ -33,7 +33,7 @@
<string name="unavailable">Nicht verfügbar</string>
<string name="update">Aktualisieren</string>
<string name="useful_links">Nützliche Links</string>
<string name="support_us">Ünterstütze uns!</string>
<string name="support_us">Unterstütze uns!</string>
<!-- Settings -->
<string name="accent_color">Akzentfarbe</string>
<string name="accent_blue">Blau</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Erweitert</string>
<string name="app_install_files_detected">%1$s Installationsdateien erkannt!</string>
<string name="app_install_files_detected_summary">Manager hat festgestellt, dass alle notwendigen Dateien für die Installation von %1$s gefunden wurden. Möchten Sie installieren?</string>
<string name="app_install_files_detected_summary">Manager hat festgestellt, dass alle notwendigen Dateien für die Installation von %1$s gefunden wurden. Möchten Sie sie installieren?</string>
<string name="checking_updates">Suche nach Updates…</string>
<string name="chosen_lang">Sprache(n): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
@ -73,10 +73,10 @@
<string name="installing_app">%1$s wird installiert</string>
<string name="magisk_vanced">Sie nutzen die Magisk/TWRP-Version von Vanced, die nicht mehr unterstützt wird und mit dieser App nicht aktualisiert werden kann. Bitte entfernen sie diese indem Sie das Magisk-Modul mit dem TWRP Vanced Uninstaller entfernen.</string>
<string name="miui_one_title">MIUI erkannt!</string>
<string name="miui_one">Um Vanced zu installieren, MÜSSEN Sie MIUI-Optimierungen in den Entwickler-Einstellungen deaktivieren. (Sie können diese Warnung ignorieren, wenn Sie einen auf xiaomi.eu basierenden ROM 20.2.20 oder höher verwenden)</string>
<string name="miui_one">Um Vanced zu installieren, müssen Sie MIUI Optimierungen in den Entwicklereinstellungen deaktivieren. (Sie können diese Warnung ignorieren, wenn Sie 20.2.20 oder höher auf xiaomi.eu basierenden ROM verwenden)</string>
<string name="error">Fehler</string>
<string name="redownload">Erneut herunterladen</string>
<string name="security_context">Bitte stellen Sie sicher, dass Sie die App von vancedapp.com, dem Vanced Discord Server oder dem Vanced GitHub heruntergeladen haben</string>
<string name="security_context">Stelle sicher, dass du die App von vancedapp.com, dem Vanced Discord Server oder dem Vanced GitHub heruntergeladen hast</string>
<string name="success">Erfolg!</string>
<string name="app_installation_preferences">%1$s Installationsoptionen</string>
<string name="vanced_installed">Vanced wurde erfolgreich installiert. Jetzt öffnen?</string>
@ -94,15 +94,15 @@
<string name="sources">Quellen</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Fehler bei `chown` der apk an den Systembesitzer, bitte versuchen Sie es erneut.</string>
<string name="chown_fail">Fehler bei der `chown` APK zum Systembesitzer, bitte versuchen Sie es erneut.</string>
<string name="error_downloading">Download von %1$s fehlgeschlagen</string>
<string name="failed_uninstall">Entfernen von %1$s fehlgeschlagen</string>
<string name="files_missing_va">Die benötigten Dateien für die Installation konnten nicht gefunden werden. Laden Sie die Installationsdateien erneut herunter und versuchen Sie es erneut.</string>
<string name="ifile_missing">Apk-Datei für schwarz/dunkles Theme konnte nicht gefunden werden, bitte versuchen Sie es erneut.</string>
<string name="installation_aborted">Installation fehlgeschlagen, da der Nutzer diese abgebrochen hat.</string>
<string name="installation_blocked">Installation fehlgeschlagen, da der Benutzer diese blockiert hat.</string>
<string name="installation_downgrade">Installation fehlgeschlagen, da der Benutzer versucht hat, eine ältere Version des Paketes zu installieren. Deinstallieren Sie Updates von der YouTube App und versuchen Sie es erneut.</string>
<string name="installation_conflict">Installation aufgrund von Konflikten mit einer bereits installierten App fehlgeschlagen. Deinstallieren Sie die Aktuelle Version von Vanced und versuchen Sie es erneut.</string>
<string name="installation_aborted">Installation fehlgeschlagen, da der Benutzer die Installation abgebrochen hat.</string>
<string name="installation_blocked">Installation fehlgeschlagen, da der Benutzer die Installation blockiert hat.</string>
<string name="installation_downgrade">Installation fehlgeschlagen, da der Benutzer versucht hat, das Paket herunterzustufen. Aktualisierungen von YouTube deinstallieren und dann erneut versuchen.</string>
<string name="installation_conflict">Installation fehlgeschlagen, da die App mit einer bereits installierten App kollidiert. Deinstallieren Sie die aktuelle Version von Vanced, dann versuchen Sie es erneut.</string>
<string name="installation_failed">Installation aus unbekannten Grund fehlgeschlagen. Treten Sie bitte unserem Telegram-Chat oder Discord-Server bei, um Support zu erhalten.</string>
<string name="installation_incompatible">Installation fehlgeschlagen, da die Installationsdatei nicht mit Ihrem Gerät kompatibel ist. Löschen Sie heruntergeladene Dateien in den Einstellungen, dann versuchen Sie es erneut.</string>
<string name="installation_invalid">Installation fehlgeschlagen, da die apk-Dateien beschädigt sind, bitte versuchen Sie es erneut.</string>

View File

@ -12,16 +12,16 @@
<string name="title_settings">Ρυθμίσεις</string>
<string name="update_manager">Ενημέρωση Διαχειριστή Vanced</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Έχετε πρόσβαση Root στην συσκευή σας;</string>
<string name="are_you_rooted">Έχετε πρόσβαση Root στη συσκευή σας;</string>
<string name="grant_root">Χορήγηση Άδειας Root</string>
<string name="select_at_least_one_app">Επιλέξτε τουλάχιστον μια εφαρμογή!</string>
<string name="select_apps_music">Vanced, αλλά για το YouTube Music!\nμε σχετικά λιγότερες δυνατότητες αλλά καλύπτει όλες τις ανάγκες σας.</string>
<string name="select_apps_music">Vanced, αλλά για το YouTube Music!\nΣχετικά λιγότερες δυνατότητες, αλλά καλύπτει τις ανάγκες σας.</string>
<string name="select_apps_vanced">Το YouTube Vanced είναι το όπως την αρχική εφαρμογή YouTube, αλλά καλύτερο!</string>
<string name="lets_get_started">Ας ξεκινήσουμε</string>
<string name="willing_to_use_root">Επιθυμείτε την έκδοση root; Απλώς πατήστε το παρακάτω κουμπί, αλλιώς πατήστε το βελάκι για συνέχεια</string>
<string name="willing_to_use_root">Θέλετε να χρησιμοποιήσετε την έκδοση root; Πατήστε απλά το παρακάτω κουμπί, αλλιώς πατήστε το βέλος για συνέχεια</string>
<!-- Home Page -->
<string name="about_app">Σχετικά με το %1$s</string>
<string name="app_changelog_tooltip">Πατήστε στην καρτέλα για να δείτε τις αλλαγές.</string>
<string name="app_changelog_tooltip">Πατήστε στην καρτέλα για να δείτε το αρχείο αλλαγών.</string>
<string name="changelog">Αρχείο καταγραφής αλλαγών</string>
<string name="downloading_file">Λήψη %1$s</string>
<string name="install">Εγκατάσταση</string>
@ -73,10 +73,10 @@
<string name="installing_app">Εγκατάσταση του %1$s</string>
<string name="magisk_vanced">Χρησιμοποιείτε την έκδοση Magisk/TWRP του Vanced, η οποία δεν υποστηρίζεται πλέον και δεν μπορεί να ενημερωθεί μέσω αυτής της εφαρμογής. Παρακαλούμε αφαιρέστε αυτή την έκδοση αφαιρώντας το Magisk Module/χρησιμοποιόντας το πρόγραμμα κατάργησης TWRP Vanced.</string>
<string name="miui_one_title">Ανιχνεύτηκε MIUI!</string>
<string name="miui_one">Για να εγκαταστήσετε το Vanced, ΠΡΕΠΕΙ να απενεργοποιήσετε (στις ρυθμίσεις) τη βελτιστοποίηση MIUI στις επιλογές προγραμματιστών. (Μπορείτε να αγνοήσετε αυτήν την προειδοποίηση εάν χρησιμοποιείτε την έκδοση ROM 20.2.20 ή μεταγενέστερη βασισμένη στο xiaomi.eu)</string>
<string name="miui_one">Για να εγκαταστήσετε το Vanced, ΠΡΕΠΕΙ να απενεργοποιήσετε τις Βελτιστοποιήσεις MIUI στις ρυθμίσεις για προγραμματιστές. (Μπορείτε να αγνοήσετε αυτή την προειδοποίηση αν χρησιμοποιείτε την έκδοση ROM 20.2.20 ή μεταγενέστερη, βάσει του xiaomi.eu)</string>
<string name="error">Σφάλμα</string>
<string name="redownload">Επανάληψη λήψης</string>
<string name="security_context">Σιγουρευτείτε πως κατεβάσατε την εφαρμογή από το vancedapp.com, τον διακομιστή Discord του Vanced ή το GitHub του Vanced</string>
<string name="security_context">Βεβαιωθείτε ότι κάνατε λήψη της εφαρμογής από το vancedapp.com, τον διακομιστή Discord του Vanced ή το GitHub του Vanced</string>
<string name="success">Επιτυχία!</string>
<string name="app_installation_preferences">Προτιμήσεις Εγκατάστασης του %1$s</string>
<string name="vanced_installed">Το Vanced έχει εγκατασταθεί επιτυχώς! Εκκίνηση τώρα;</string>
@ -94,12 +94,12 @@
<string name="sources">Πηγές</string>
<string name="vanced_team">Η ομάδα του Vanced</string>
<!-- Error messages -->
<string name="chown_fail">Αποτυχία αλλαγής του κατόχου του Apk σε system owner, παρακαλώ προσπαθήστε ξανά.</string>
<string name="chown_fail">Αποτυχία παραχώρησης ιδιοκτησίας του APK στον κάτοχο συστήματος, παρακαλούμε προσπαθείστε ξανά.</string>
<string name="error_downloading">Σφάλμα λήψης του %1$s</string>
<string name="failed_uninstall">Αποτυχία απεγκατάστασης πακέτου %1$s</string>
<string name="files_missing_va">Αδυναμία εντοπισμού των απαιτούμενων αρχείων για την εγκατάσταση. Κατεβάστε τα αρχεία εγκατάστασης, και προσπαθήστε ξανά.</string>
<string name="ifile_missing">Αδυναμία εντοπισμού του αρχείου apk σκουρόχρωμου/απολύτου μαύρου θέματος στον αποθηκευτικό χώρο, παρακαλώ προσπαθήστε ξανά.</string>
<string name="installation_aborted">Η εγκατάσταση απέτυχε διότι ο χρήστης απέτρεψε την εγκατάσταση.</string>
<string name="installation_aborted">Η εγκατάσταση απέτυχε διότι ο χρήστης ακύρωσε την εγκατάσταση.</string>
<string name="installation_blocked">Η εγκατάσταση απέτυχε διότι ο χρήστης απέκλεισε την εγκατάσταση.</string>
<string name="installation_downgrade">Η εγκατάσταση απέτυχε διότι ο χρήστης προσπάθησε να υποβαθμίσει το πακέτο. Απεγκαταστήστε τις ενημερώσεις της αρχικής εφαρμογής YouTube, στη συνέχεια προσπαθήστε ξανά.</string>
<string name="installation_conflict">Η εγκατάσταση απέτυχε διότι η εφαρμογή αντικρούεται με μια ήδη εγκατεστημένη εφαρμογή. Απεγκαταστήστε την τρέχουσα έκδοση του Vanced, στην συνέχεια προσπαθήστε ξανά.</string>

View File

@ -10,18 +10,18 @@
<string name="title_about">Información</string>
<string name="title_home">Manager</string>
<string name="title_settings">Ajustes</string>
<string name="update_manager">Gestor de actualizaciones</string>
<string name="update_manager">Actualizar Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">¿Su dispositivo está rooteado?</string>
<string name="grant_root">Conceder permiso root</string>
<string name="grant_root">Otorgar permiso root</string>
<string name="select_at_least_one_app">¡Seleccione al menos una aplicación!</string>
<string name="select_apps_music">Vanced, pero para YouTube Music!\nrelativamente menos características, pero satisface tus necesidades.</string>
<string name="select_apps_vanced">YouTube Vanced es la aplicación stock de YouTube, pero mejorada!</string>
<string name="select_apps_vanced">YouTube Vanced es la aplicación original de YouTube para Android, pero mejorada!</string>
<string name="lets_get_started">Comencemos</string>
<string name="willing_to_use_root">¿Deseas usar la versión root? Sólo tienes que tocar el botón de abajo, si no, toca para continuar</string>
<string name="willing_to_use_root">¿Deseas usar la versión root? Sólo haz clic en el botón de abajo, si no, toca para continuar</string>
<!-- Home Page -->
<string name="about_app">Acerca de %1$s</string>
<string name="app_changelog_tooltip">Toque en la tarjeta para ver el registro de cambios.</string>
<string name="app_changelog_tooltip">Haz clic en la tarjeta para ver el registro de cambios.</string>
<string name="changelog">Registro de cambios</string>
<string name="downloading_file">Descargando %1$s</string>
<string name="install">Instalar</string>
@ -33,7 +33,7 @@
<string name="unavailable">No Disponible</string>
<string name="update">Actualizar</string>
<string name="useful_links">Links Utiles</string>
<string name="support_us">¡Apóyenos!</string>
<string name="support_us">¡Apóyanos!</string>
<!-- Settings -->
<string name="accent_color">Color de Acento</string>
<string name="accent_blue">Azul</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Configuración avanzada</string>
<string name="app_install_files_detected">¡%1$s archivos de instalación detectados!</string>
<string name="app_install_files_detected_summary">El Manager detectó que todos los archivos necesarios para la instalación de %1$s, se encontraron. ¿Desea instalar?</string>
<string name="app_install_files_detected_summary">Manager encontró todos los archivos necesarios para la instalación de %1$s. ¿Deseas instalarlo?</string>
<string name="checking_updates">Comprobando actualizaciones…</string>
<string name="chosen_lang">Idioma(s): %1$s</string>
<string name="chosen_theme">Tema: %1$s</string>
@ -73,10 +73,10 @@
<string name="installing_app">Instalando %1$s</string>
<string name="magisk_vanced">Estás utilizando la versión Magisk/TWRP de Vanced, la cual está descontinuada y no puede ser actualizada mediante esta app. Por favor elimínala quitando el módulo de Magisk o utilizando el desinstalador TWRP.</string>
<string name="miui_one_title">MIUI detectado!</string>
<string name="miui_one">Para instalar Vanced, DEBES desactivar las Optimizaciones MIUI en los ajustes de desarrollador. (Puedes ignorar esta advertencia si estas utilizando el ROM 20.2.20 o posterior de xiaomi.eu)</string>
<string name="miui_one">Para instalar Vanced, DEBES desactivar la Optimización de MIUI en las opciones para desarrolladores. (Puedes omitir este paso si estás utilizando Xiaomi.eu 20.2.20 o más reciente)</string>
<string name="error">Error</string>
<string name="redownload">Volver a descargar</string>
<string name="security_context">Asegúrate de haber descargado la aplicación desde vancedapp.com, el servidor Discord de Vanced o el GitHub de Vanced</string>
<string name="security_context">Asegúrate de haber descargado la app desde vancedapp.com, el servidor de Discord de Vanced, o el GitHub de Vanced</string>
<string name="success">Éxito!</string>
<string name="app_installation_preferences">%1$s preferencias de instalación</string>
<string name="vanced_installed">¡Vanced se ha instalado correctamente! ¿Abrir ahora?</string>
@ -94,15 +94,15 @@
<string name="sources">Fuentes</string>
<string name="vanced_team">Equipo Vanced</string>
<!-- Error messages -->
<string name="chown_fail">No se pudo conectar a Chown Apk con el propietario del sistema, inténtalo de nuevo.</string>
<string name="chown_fail">No se pudo cambiar el propietario del APK al propietario del sistema, inténtalo de nuevo.</string>
<string name="error_downloading">Error al descargar %1$s</string>
<string name="failed_uninstall">Falla al desinstalar paquete %1$s</string>
<string name="files_missing_va">Error al localizar los archivos necesarios para la instalación. Vuelva a descargar los archivos de instalación y vuelva a intentarlo.</string>
<string name="ifile_missing">No se pudo encontrar el archivo apk para el tema negro/oscuro del almacenamiento, por favor inténtelo de nuevo.</string>
<string name="installation_aborted">La instalación falló porque el usuario abortó la instalación.</string>
<string name="installation_blocked">Instalación fallida porque el usuario bloqueó la instalación.</string>
<string name="installation_downgrade">La instalación falló porque el usuario intentó degradar el paquete. Desinstale las actualizaciones de stock YouTube, y vuelva a intentarlo.</string>
<string name="installation_conflict">La instalación falló porque la aplicación entra en conflicto con una aplicación ya instalada. Desinstale la versión actual de Vanced, y vuelva a intentarlo.</string>
<string name="installation_aborted">La instalación falló debido a que el usuario canceló la instalación.</string>
<string name="installation_blocked">La instalación falló debido a que el usuario bloqueó la instalación.</string>
<string name="installation_downgrade">La instalación falló debido a que el usuario intentó instalar una versión anterior. Desinstala las actualizaciones de la aplicación stock de YouTube, e inténtalo de nuevo.</string>
<string name="installation_conflict">La instalación falló debido a que la aplicación entra en conflicto con una aplicación ya instalada. Desinstala la versión actual de Vanced, e inténtalo de nuevo.</string>
<string name="installation_failed">La instalación ha fallado por razones desconocidas, únete a nuestro grupo de Telegram o Discord para brindarte soporte.</string>
<string name="installation_incompatible">La instalación ha fallado porque el archivo de instalación es incompatible con tu dispositivo. Limpia los archivos descargados en la ajustes y vuelve a intentarlo.</string>
<string name="installation_invalid">La instalación falló porque los archivos apk están corruptos, por favor inténtalo de nuevo.</string>

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="close">Close</string>
<string name="reset">Reset</string>
<string name="save">Save</string>
<string name="select_apps">Select Your Apps</string>
<!-- Main Activity -->
<string name="title_about">About</string>
<string name="title_home">Manager</string>
<string name="title_settings">Settings</string>
<string name="update_manager">Update Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">Downloading %1$s</string>
<string name="install">Install</string>
<string name="button_reinstall">Reinstall</string>
<string name="version_installed">Installed:</string>
<string name="latest">Latest:</string>
<string name="no_microg">microG isn\'t installed</string>
<string name="root_not_granted">Root access not granted</string>
<string name="unavailable">Unavailable</string>
<string name="update">Update</string>
<string name="useful_links">Useful Links</string>
<string name="support_us">Support us!</string>
<!-- Settings -->
<string name="accent_color">Accent Color</string>
<string name="accent_blue">Blue</string>
<string name="accent_green">Green</string>
<string name="accent_purple">Purple</string>
<string name="accent_red">Red</string>
<string name="accent_yellow">Yellow</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_title">Firebase Analytics</string>
<string name="firebase_summary">This lets us collect information about app performance and crash logs</string>
<string name="language_title">Language</string>
<string name="link_title">Use Chrome Custom Tabs</string>
<string name="link_custom_tabs">Links will open in Chrome Custom Tabs</string>
<string name="system_default">System Default</string>
<string name="theme">Theme</string>
<string name="theme_dark">Dark Theme</string>
<string name="theme_light">Light Theme</string>
<string name="update_url">Update Channel URL</string>
<string name="push_notifications">%1$s Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when an update for %1$s is released</string>
<string name="update_center">Manager Update Center</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI detected!</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Error</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Success!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced has successfully been installed! Open now?</string>
<string name="version">Version</string>
<string name="music_installed">Vanced Music has successfully been installed! Open now?</string>
<string name="please_be_patient">Please be patient…</string>
<string name="launch">Open</string>
<string name="welcome">Welcome</string>
<!-- Install Page -->
<string name="choose_preferred_language">Choose your preferred language(s) for Vanced</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="sources">Sources</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Error Downloading %1$s</string>
<string name="failed_uninstall">Failed to uninstall package %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Installation failed for unknown reasons, join our Telegram or Discord for further support.</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Installation failed because the apk files are corrupted, please try again.</string>
<string name="installation_signature">Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again.</string>
<string name="installation_miui">Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again.</string>
<string name="installation_storage">Installation failed due to a storage error.</string>
<string name="modapk_missing">Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again.</string>
<string name="path_missing">Failed to locate the stock YouTube installation path after split installation.</string>
</resources>

View File

@ -12,16 +12,16 @@
<string name="title_settings">Asetukset</string>
<string name="update_manager">Päivitä hallintasovellus</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="are_you_rooted">Onko laitteesi rootattu?</string>
<string name="grant_root">Anna root-oikeudet</string>
<string name="select_at_least_one_app">Valitse ainakin yksi sovellus!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="select_apps_music">Vanhentunut, mutta YouTube Music!\nsuhteellisen vähemmän ominaisuus-rikas, mutta täyttää tarpeesi.</string>
<string name="select_apps_vanced">YouTube Vanced on Androidin Youtube-vakiosovellus, mutta parempi!</string>
<string name="lets_get_started">Aloitetaan</string>
<string name="willing_to_use_root">Haluaisitko käyttää juuriversiota? Paina vain alla olevaa painiketta, muuta napauta jatkaaksesi</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Napauta korttia nähdäksesi muutoshistoria.</string>
<string name="about_app">%1$s-tietoja</string>
<string name="app_changelog_tooltip">Napauta korttia nähdäksesi muutoslokin.</string>
<string name="changelog">Muutoshistoria</string>
<string name="downloading_file">Ladataan %1$s</string>
<string name="install">Asenna</string>
@ -42,7 +42,7 @@
<string name="accent_red">Punainen</string>
<string name="accent_yellow">Keltainen</string>
<string name="category_appearance">Ulkoasu</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_behaviour">Käyttäytyminen</string>
<string name="clear_files">Tyhjennä ladatut tiedostot</string>
<string name="cleared_files">Tiedostot tyhjennettiin onnistuneesti</string>
<string name="firebase_title">Firebase-analytiikka</string>
@ -59,11 +59,11 @@
<string name="push_notifications_summary">Vastaanota push-ilmoituksia, kun %1$s:lle on julkaistu päivitys</string>
<string name="update_center">Managerin päivityskeskus</string>
<string name="update_not_found">Ei uusia päivityksiä</string>
<string name="variant">Variant</string>
<string name="variant">Variaatio</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="advanced">Kehittyneet</string>
<string name="app_install_files_detected">%1$s asennustiedostoa havaittu!</string>
<string name="app_install_files_detected_summary">Hallitsija havaitsi, että kaikki tarvittavat tiedostot %1$s asennusta varten. Haluatko asentaa sen?</string>
<string name="checking_updates">Tarkistetaan päivityksiä…</string>
<string name="chosen_lang">Kieli: %1$s</string>
<string name="chosen_theme">Teema: %1$s</string>
@ -71,14 +71,14 @@
<string name="guide">Opas</string>
<string name="hold_on">Pysähdy!</string>
<string name="installing_app">Asennetaan %1$s</string>
<string name="magisk_vanced">Käytät Vancedin Magisk / TWRP-versiota, joka on lopetettu eikä sitä voi päivittää tällä sovelluksella. Poista se poistamalla magisk-moduuli / käyttämällä TWRP Vanced -asennusohjelmaa.</string>
<string name="magisk_vanced">Käytät Magisk / TWRP versio Vanced, joka on lopetettu ja ei voi päivittää käyttämällä tätä sovellusta. Poista se poistamalla Magisk moduuli / käyttämällä TWRP Vanced asennuksen.</string>
<string name="miui_one_title">MIUI tunnistettu!</string>
<string name="miui_one">Vancedin asentamiseksi TÄYTYY poistaa MIUI-optimoinnit käytöstä kehittäjäasetuksissa. (Voit ohittaa tämän varoituksen, jos käytät 20.2.20 tai uudempaa xiaomi.eu-pohjaista ROM-levyä)</string>
<string name="miui_one">Jos haluat asentaa Vanced, sinun täytyy poistaa MIUI-optimoinnit käytöstä kehittäjän asetuksista. (Voit ohittaa tämän varoituksen, jos käytät 20.2.20 tai myöhemmin xiaomi.eu-pohjaista ROM:ia)</string>
<string name="error">Virhe</string>
<string name="redownload">Uudelleenlataa</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Varmista, että latasit sovelluksen osoitteesta vancedapp.com, Vanced Discord-palvelin tai Vanced GitHub</string>
<string name="success">Onnistui!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="app_installation_preferences">%1$s asennusasetukset</string>
<string name="vanced_installed">Vanced on asennettu onnistuneesti! Avaa nyt?</string>
<string name="version">Versio</string>
<string name="music_installed">Vanced Music on asennettu onnistuneesti! Avoinna nyt?</string>
@ -94,15 +94,15 @@
<string name="sources">Lähdekoodi</string>
<string name="vanced_team">Vanced kehitystiimi</string>
<!-- Error messages -->
<string name="chown_fail">APK:n omistajuuden siirto järjestelmän omistajalle epäonnistui, yritä uudelleen.</string>
<string name="chown_fail">Ei voitu `chown` APK järjestelmän omistajalle, yritä uudelleen.</string>
<string name="error_downloading">%1$s lataus epäonnistui</string>
<string name="failed_uninstall">Paketin %1$s asennus epäonnistui</string>
<string name="files_missing_va">Asennukseen vaadittavien tiedostojen paikannus epäonnistui. Yritä ladata asennustiedostot uudelleen.</string>
<string name="ifile_missing">APK-tiedostoa mustalle/tummalle teemalle ei voitu paikantaa tallennustilasta, yritä uudelleen.</string>
<string name="installation_aborted">Asennus epäonnistui, koska käyttäjä keskeytti asennuksen.</string>
<string name="installation_blocked">Asennus epäonnistui, koska käyttäjä esti asennuksen.</string>
<string name="installation_downgrade">Asennus epäonnistui, koska käyttäjä yritti asentaa paketin vanhempaa versiota. Poista YouTube-sovelluksen päivitykset ja yritä sitten uudelleen.</string>
<string name="installation_conflict">Asennus epäonnistui, koska sovellus on ristiriidassa jo asennetun sovelluksen kanssa. Poista Vancedin nykyinen versio ja yritä uudelleen.</string>
<string name="installation_blocked">Asennus epäonnistui, koska käyttäjä on estänyt asennuksen.</string>
<string name="installation_downgrade">Asennus epäonnistui, koska käyttäjä yritti heikentää pakettia. Poista päivitykset YouTube-sovelluksesta ja yritä sitten uudelleen.</string>
<string name="installation_conflict">Asennus epäonnistui, koska sovellus on ristiriidassa jo asennetun sovelluksen kanssa. Poista Vanedin nykyisen version asennus ja yritä uudelleen.</string>
<string name="installation_failed">Asennus epäonnistui tuntemattomista syistä, liity Telegramiin tai Discordiin saadaksesi lisätukea.</string>
<string name="installation_incompatible">Asennus epäonnistui, koska asennustiedosto ei ole yhteensopiva laitteesi kanssa. Tyhjennä ladatut tiedostot asetuksista ja yritä uudelleen.</string>
<string name="installation_invalid">Asennus epäonnistui, koska APK-tiedostot ovat vioittuneet, yritä uudelleen.</string>

View File

@ -5,12 +5,12 @@
<string name="close">Fermer</string>
<string name="reset">Réinitialiser</string>
<string name="save">Sauvegarder</string>
<string name="select_apps">Sélectionnez votre application</string>
<string name="select_apps">Sélectionnez vos applications</string>
<!-- Main Activity -->
<string name="title_about">À propos</string>
<string name="title_home">Gestionnaire</string>
<string name="title_settings">Paramètres</string>
<string name="update_manager">Gestionnaire de Mise à Jour</string>
<string name="update_manager">Gestionnaire de mise à jour</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Votre appareil est-il rooté ?</string>
<string name="grant_root">Accorder lautorisation root</string>
@ -33,7 +33,7 @@
<string name="unavailable">Indisponible</string>
<string name="update">Mettre à jour</string>
<string name="useful_links">Liens utiles</string>
<string name="support_us">Nous soutenir !</string>
<string name="support_us">Soutenez-nous !</string>
<!-- Settings -->
<string name="accent_color">Couleur d\'accentuation</string>
<string name="accent_blue">Bleu</string>
@ -66,19 +66,19 @@
<string name="app_install_files_detected_summary">Le gestionnaire a détecté que tous les fichiers nécessaires à l\'installation de %1$s ont été trouvés. Voulez-vous installer ?</string>
<string name="checking_updates">Vérification des mises à jour…</string>
<string name="chosen_lang">Langue(s) : %1$s</string>
<string name="chosen_theme">Thème: %1$s</string>
<string name="chosen_theme">Thème : %1$s</string>
<string name="chosen_version">Version : %1$s</string>
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installation de %1$s</string>
<string name="magisk_vanced">Vous utilisez la version Magisk/TWRP de Vanced, qui n\'est plus entretenu et ne peut pas être mise à jour à l\'aide de cette application. Veuillez la retirer en supprimant le module Magisk/en utilisant le désinstallateur TWRP pour Vanced.</string>
<string name="miui_one_title">MIUI détecté!</string>
<string name="miui_one">Afin d\'installer Vanced, vous DEVEZ désactiver les optimisations MIUI dans les paramètres du développeur. (Vous pouvez ignorer cet avertissement si vous utilisez une ROM basée sur 20.2.20 ou ultérieure sur xiaomi.eu)</string>
<string name="miui_one">Afin d\'installer Vanced, vous DEVEZ désactiver les optimisations MIUI dans les paramètres développeur. (Vous pouvez ignorer cet avertissement si vous utilisez une ROM basée sur 20.2.20 ou ultérieure de xiaomi.eu)</string>
<string name="error">Erreur</string>
<string name="redownload">Re-téléchargé</string>
<string name="security_context">Assurez-vous d\'avoir téléchargé l\'application sur vancedapp.com, le serveur Discord Vanced ou sur le Github Vanced</string>
<string name="redownload">Re-télécharger</string>
<string name="security_context">Assurez-vous d\'avoir téléchargé l\'application depuis vancedapp.com, le serveur Discord Vanced ou sur le Github Vanced</string>
<string name="success">Succès!</string>
<string name="app_installation_preferences">%1$s Préférences D\'installation</string>
<string name="app_installation_preferences">%1$s Préférences d\'installation</string>
<string name="vanced_installed">Vanced a été installé avec succès ! Ouvrir maintenant ?</string>
<string name="version">Version</string>
<string name="music_installed">Vanced Music a été installé avec succès ! Voulez-vous l\'ouvrir maintenant ?</string>
@ -94,13 +94,13 @@
<string name="sources">Sources</string>
<string name="vanced_team">Équipe Vanced</string>
<!-- Error messages -->
<string name="chown_fail">Impossible de modifier les permissions de l\'Apk système, réessayez.</string>
<string name="chown_fail">Échec de la commande `chown` APK vers le propriétaire du système, veuillez réessayer.</string>
<string name="error_downloading">Erreur en téléchargeant %1$s</string>
<string name="failed_uninstall">N\'a pas pu désinstaller le paquet %1$s</string>
<string name="files_missing_va">Impossible de localiser les fichiers nécessaires à l\'installation. Retéléchargez les fichiers d\'installation, puis réessayez.</string>
<string name="ifile_missing">Impossible de localiser le fichier apk pour le thème noir/foncé du stockage, veuillez réessayer.</string>
<string name="installation_aborted">L\'opération a échouée, l\'utilisateur a abandonné l\'installation.</string>
<string name="installation_blocked">L\'opération a échouée, l\'utilisateur a bloqué l\'installation.</string>
<string name="installation_aborted">L\'installation a échoué car l\'utilisateur a abandonné l\'installation.</string>
<string name="installation_blocked">L\'installation a échoué, car l\'utilisateur a bloqué l\'installation.</string>
<string name="installation_downgrade">L\'installation a échoué parce que l\'utilisateur a essayé de downgrader le package. Désinstallez les mises à jour depuis l\'application YouTube d\'origine, puis réessayez.</string>
<string name="installation_conflict">L\'installation a échoué parce que l\'application est en conflit avec une application déjà installée. Désinstallez la version actuelle de Vanced, puis réessayez.</string>
<string name="installation_failed">L\'installation a échouée pour une raison inconnue, rejoignez notre Telegram ou Discord pour obtenir de l\'aide.</string>
@ -109,6 +109,6 @@
<string name="installation_signature">L\'installation a échoué car la vérification de la signature apk est activée. Désactivez la vérification de la signature apk, puis réessayez.</string>
<string name="installation_miui">L\'installation a échouée car l\'optimisation MIUI est activée. Désactivez l\'optimisation MIUI, puis réessayez.</string>
<string name="installation_storage">L\'opération à échouée, une erreur de stockage s\'est produite.</string>
<string name="modapk_missing">Impossible de trouver le fichier apk pour le thème noir/foncé de l\'installateur. Effacer les données de l\'application de Manager, puis réessayer.</string>
<string name="path_missing">Impossible de localiser le chemin d\'installation de YouTube d\'origine après l\'installation de la division.</string>
<string name="modapk_missing">Impossible de trouver le fichier apk pour le thème noir/foncé de l\'installateur. Effacez les données de l\'application de Manager, puis réessayez.</string>
<string name="path_missing">Impossible de localiser le chemin d\'installation du YouTube original après l\'installation fractionnée.</string>
</resources>

View File

@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="cancel">रद्द करना</string>
<string name="close">बंद करे</string>
<string name="reset">रिसेट</string>
<string name="save">सुरक्षित करें</string>
<string name="select_apps">Select Your Apps</string>
<string name="select_apps">अपने ऐप्स चुनें</string>
<!-- Main Activity -->
<string name="title_about">बारे में</string>
<string name="title_home">Manager</string>
<string name="title_home">मैनेजर</string>
<string name="title_settings">सेटिंग्स</string>
<string name="update_manager">Update Manager</string>
<string name="update_manager">उन्न्त प्रबंधक</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="are_you_rooted">क्या आपका डिवाइस निहित है?</string>
<string name="grant_root">ग्रांट रूट अनुमति</string>
<string name="select_at_least_one_app">कम से कम एक ऐप चुनें!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced स्टॉक Android YouTube App है, लेकिन बेहतर है!</string>
<string name="lets_get_started">आएँ शुरू करें</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">%1$s के बारे में</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">परिवर्तन लॉग</string>
<string name="downloading_file">डाउनलोड कर रहा है %1$s</string>
<string name="install">इंस्टॉल</string>
@ -33,7 +33,7 @@
<string name="unavailable">अनुपलब्ध</string>
<string name="update">अद्यतन करें</string>
<string name="useful_links">उपयोगी लिंक्स </string>
<string name="support_us">हमें सपोर्ट कीजिए!</string>
<string name="support_us">हमें सपॉर्ट कीजिये!</string>
<!-- Settings -->
<string name="accent_color">एक्सेंट रंग</string>
<string name="accent_blue">नीला</string>
@ -42,7 +42,7 @@
<string name="accent_red">लाल</string>
<string name="accent_yellow">पीला</string>
<string name="category_appearance">रूप</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">डाउनलोड की गई फ़ाइलें साफ़ करें</string>
<string name="cleared_files">फ़ाइलें सफलतापूर्वक साफ़ की गई</string>
<string name="firebase_title">फायरबेस वैश्लेषिकी</string>
@ -58,51 +58,51 @@
<string name="push_notifications">%1$s पुश सूचनाएँ</string>
<string name="push_notifications_summary">जब %1$s का अपडेट जारी किया जाता है, तो पुश सूचनाएँ प्राप्त करें</string>
<string name="update_center">अपडेट केंद्र</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
<string name="update_not_found">कोई नया अपडेट नहीं</string>
<string name="variant">संस्करण</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="checking_updates">Checking for updates</string>
<string name="advanced">एडवांस्ड</string>
<string name="app_install_files_detected">%1$s इंस्टालेशन फ़ाइलों का पता चला!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">अपडेट्स के लिए जांच हो रही है</string>
<string name="chosen_lang">भाषा (एं): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="chosen_theme">थीम:%1$s</string>
<string name="chosen_version">संस्करण:%1$s</string>
<string name="guide">गाइड</string>
<string name="hold_on">रुकें!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">आप Vanced के Magisk / TWRP संस्करण का उपयोग कर रहे हैं, जिसे बंद कर दिया गया है और इस ऐप का उपयोग करके अपडेट नहीं किया जा सकता है। कृपया इस Magisk मॉड्यूल को हटाकर / TWRP Vanced uninstaller का उपयोग करके हटा दें।</string>
<string name="installing_app">%1$s स्थापित कर रहा है</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">पता लगाया MiUI उपयोगकर्ता!</string>
<string name="miui_one">Vanced इनस्टॉल करने के लिए, आप डेवलपर सेटिंग में MIUI ऑप्टिमाइज़ेशन को निष्क्रिय करें। (यदि आप 20.2.20 या बाद में xiaomi.eu आधारित ROM का उपयोग कर रहे हैं तो आप इस चेतावनी को अनदेखा कर सकते हैं)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">त्रुटि</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="redownload">फिर से डाउनलोड करें</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">सफलता!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="app_installation_preferences">%1$s इंस्टालेशन प्राथमिकताएँ</string>
<string name="vanced_installed">सफलतापूर्वक स्थापित किया गया है! अब खोलो?</string>
<string name="version">संस्करण</string>
<string name="music_installed">वेंसड संगीत सफलतापूर्वक स्थापित किया गया है! अब खोले?</string>
<string name="please_be_patient">Please be patient</string>
<string name="please_be_patient">कृपया धैर्य रखें</string>
<string name="launch">खोले</string>
<string name="welcome">स्वागत है!</string>
<!-- Install Page -->
<string name="choose_preferred_language">Vanced के लिए अपनी पसंदीदा भाषा (ए) चुनें</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<string name="light_plus_other">लाइट +%1$s</string>
<string name="select_at_least_one_lang">कम से कम एक भाषा का चयन करें!</string>
<!-- About Page -->
<string name="manager_dev">प्रबंधक डेवलपर्स</string>
<string name="sources">स्रोत</string>
<string name="vanced_team">वांसड टीम</string>
<!-- Error messages -->
<string name="chown_fail">सिस्टम स्वामी को `chown` apk में विफल, कृपया पुनः प्रयास करें।</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">डाउनलोड करने में त्रुटि %1$s</string>
<string name="failed_uninstall">पैकेज की स्थापना रद्द करने में विफल %1$s</string>
<string name="files_missing_va">स्थापना के लिए आवश्यक फ़ाइलों का पता लगाने में विफल। स्थापना फ़ाइलों को फिर से डाउनलोड करें, फिर पुनः प्रयास करें।</string>
<string name="ifile_missing">भंडारण से काले / अंधेरे विषय के लिए apk फ़ाइल खोजने में विफल, कृपया पुनः प्रयास करें।</string>
<string name="installation_aborted">स्थापना विफल रही क्योंकि उपयोगकर्ता ने स्थापना रद्द कर दी थी</string>
<string name="installation_blocked">स्थापना विफल रही क्योंकि उपयोगकर्ता ने स्थापना को अवरुद्ध कर दिया।</string>
<string name="installation_downgrade">स्थापना विफल रही क्योंकि उपयोगकर्ता ने पैकेज को डाउनग्रेड करने का प्रयास किया। स्टॉक YouTube ऐप से अपडेट अनइंस्टॉल करें, फिर प्रयास करें।</string>
<string name="installation_conflict">इंस्टॉलेशन विफल रहा क्योंकि ऐप पहले से इंस्टॉल किए गए ऐप के साथ टकराव करता है। Vanced के वर्तमान संस्करण को अनइंस्टॉल करें, फिर पुनः प्रयास करें।</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">अज्ञात कारणों से स्थापना विफल हो गई, आगे के समर्थन के लिए हमारे टेलीग्राम या डिसॉर्ड में शामिल हों।</string>
<string name="installation_incompatible">इंस्टॉलेशन विफल हो गया क्योंकि इंस्टॉलेशन फ़ाइल आपके डिवाइस के साथ असंगत है। सेटिंग्स में डाउनलोड की गई फ़ाइलों को साफ़ करें, फिर प्रयास करें।</string>
<string name="installation_invalid">स्थापना विफल रही क्योंकि एपीके फ़ाइलें दूषित हैं, कृपया पुनः प्रयास करें।</string>

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="close">Close</string>
<string name="reset">Reset</string>
<string name="save">Save</string>
<string name="select_apps">Select Your Apps</string>
<!-- Main Activity -->
<string name="title_about">O autorima</string>
<string name="title_home">Manager</string>
<string name="title_settings">Settings</string>
<string name="update_manager">Update Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">Downloading %1$s</string>
<string name="install">Install</string>
<string name="button_reinstall">Reinstall</string>
<string name="version_installed">Installed:</string>
<string name="latest">Latest:</string>
<string name="no_microg">microG isn\'t installed</string>
<string name="root_not_granted">Root access not granted</string>
<string name="unavailable">Unavailable</string>
<string name="update">Update</string>
<string name="useful_links">Useful Links</string>
<string name="support_us">Support us!</string>
<!-- Settings -->
<string name="accent_color">Accent Color</string>
<string name="accent_blue">Blue</string>
<string name="accent_green">Green</string>
<string name="accent_purple">Purple</string>
<string name="accent_red">Red</string>
<string name="accent_yellow">Yellow</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_title">Firebase Analytics</string>
<string name="firebase_summary">This lets us collect information about app performance and crash logs</string>
<string name="language_title">Language</string>
<string name="link_title">Use Chrome Custom Tabs</string>
<string name="link_custom_tabs">Links will open in Chrome Custom Tabs</string>
<string name="system_default">System Default</string>
<string name="theme">Theme</string>
<string name="theme_dark">Dark Theme</string>
<string name="theme_light">Light Theme</string>
<string name="update_url">Update Channel URL</string>
<string name="push_notifications">%1$s Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when an update for %1$s is released</string>
<string name="update_center">Manager Update Center</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI detected!</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Error</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Success!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced has successfully been installed! Open now?</string>
<string name="version">Version</string>
<string name="music_installed">Vanced Music has successfully been installed! Open now?</string>
<string name="please_be_patient">Please be patient…</string>
<string name="launch">Open</string>
<string name="welcome">Welcome</string>
<!-- Install Page -->
<string name="choose_preferred_language">Choose your preferred language(s) for Vanced</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="sources">Sources</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Error Downloading %1$s</string>
<string name="failed_uninstall">Failed to uninstall package %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Installation failed for unknown reasons, join our Telegram or Discord for further support.</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Installation failed because the apk files are corrupted, please try again.</string>
<string name="installation_signature">Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again.</string>
<string name="installation_miui">Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again.</string>
<string name="installation_storage">Installation failed due to a storage error.</string>
<string name="modapk_missing">Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again.</string>
<string name="path_missing">Failed to locate the stock YouTube installation path after split installation.</string>
</resources>

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">Rootolt az eszközöd?</string>
<string name="grant_root">Root hozzáférés engedélyezése</string>
<string name="select_at_least_one_app">Legalább egy appot válassz!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Rootolt verziót használsz? Nyomd meg lent a gombot vagy nyomj a továbbra!</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">%1$s- ról</string>
<string name="app_changelog_tooltip">Kattintson a kártyára hogy megnézze a változásjegyzéket.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Változáslista</string>
<string name="downloading_file">%1$s letöltése</string>
<string name="install">Telepítés</string>
@ -33,7 +33,7 @@
<string name="unavailable">Nem elérhető</string>
<string name="update">Frissítés</string>
<string name="useful_links">Hasznos hivatkozások</string>
<string name="support_us">Támogasson minket!</string>
<string name="support_us">Támogasson bennünket!</string>
<!-- Settings -->
<string name="accent_color">Kiemelés színe</string>
<string name="accent_blue">Kék</string>
@ -42,7 +42,7 @@
<string name="accent_red">Vörös</string>
<string name="accent_yellow">Sárga</string>
<string name="category_appearance">Megjelenítés</string>
<string name="category_behaviour">Viselkedés</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Letöltött fájlok törlése</string>
<string name="cleared_files">Sikeresen törölte a fájlokat</string>
<string name="firebase_title">Firebase Analytics</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s telepítőfájlok észlelve!</string>
<string name="app_install_files_detected_summary">A Manager észlelte ez összes szükséges file-t a(z) %1$s telepítéséhez. Kívánja folytatni a telepítést?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Frissítések ellenőrzése... </string>
<string name="chosen_lang">Nyelv: %1$s</string>
<string name="chosen_theme">Kinézet: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">Útmutató</string>
<string name="hold_on">Állj!</string>
<string name="installing_app">%1$s telepítése</string>
<string name="magisk_vanced">A Vanced Magisk/TWRP verzióját használod, ami már nem támogatott és nem frissíthető ezzel az alkalmazással. Távolítsd el a Magisk modul eltávolításával vagy TWRP Vanced eltávolítóval.</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI észlelve!</string>
<string name="miui_one">Hogy a Vanced-et telepítsd, ki KELL kapcsolnod a MIUI Optimalizációt a fejlesztői beállításokban. (Ezt figyelmen kívül hagyhatod ha 20.2.20 vagy későbbi xiaomi.eu alapú ROM-ot használsz)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Hiba</string>
<string name="redownload">Újra letölt</string>
<string name="security_context">Bizonyosodjon meg arró, l hogy az alkalmaz@st a vancedapp.com-ról, a Vanced Discord szerverről vagy a Vanced Github-röl töltötte le</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Kész!</string>
<string name="app_installation_preferences">%1$s Telepítés személyreszabása</string>
<string name="vanced_installed">Vanced sikeresen telepítve! Elindítod most?</string>
@ -94,16 +94,15 @@
<string name="sources">Források</string>
<string name="vanced_team">Vanced csapat</string>
<!-- Error messages -->
<string name="chown_fail">Meghiúsult az alkalmazás \'chown\' beállítása a rendszer fiókra, kéjük próbálja újra.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">%1$s letöltése nem sikerült</string>
<string name="failed_uninstall">A %1$s-t nem sikerült eltávolítani</string>
<string name="files_missing_va">A telepítéshez szükséges file-ok megtalálása meghiúsult. Töltse le újra a telepítőfile-okat és próbálja újra.</string>
<string name="ifile_missing">Nem sikerült az apk file-t megtalálni a fekete/sötét kinézethez, kérjük próbálja újra.</string>
<string name="installation_aborted">A telepítés nem sikerült, mert a felhasználó elutasította azt.</string>
<string name="installation_blocked">A telepítés nem sikerült, mert a felhasználó megszakította azt.</string>
<string name="installation_downgrade">A telepítés nem sikerült, mert a felhasználó régebbi verziót próbált telepíteni.
Távolítsd el a gyári YouTube app frissítéseit, majd próld újra.</string>
<string name="installation_conflict">A telepítés nem sikerült, mert az alkalmazás egy már telepített alkalmazással ütközik. Távolítsd el a jelenlegi Vanced-et és próbáld újra.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">A telepítés ismeretlen okok miatt nem sikerült, támogatásért csatlakozz a Telegram vagy a Discord csoportunkhoz.</string>
<string name="installation_incompatible">A telepítés nem sikerült, mert a telepítő fájl nem kompatibilis az eszközöddel. Töröld ki a letöltött fájlokat a beállításokban és próbáld újra.</string>
<string name="installation_invalid">A telepítés nem sikerült, mert az apk fájlok korruptak, próbáld újra.</string>

View File

@ -15,9 +15,9 @@
<string name="are_you_rooted">Apakah Perangkat Anda Mempunyai Root?</string>
<string name="grant_root">Berikan Izin Root</string>
<string name="select_at_least_one_app">Pilih setidaknya satu aplikasi!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="select_apps_music">Vanced, tetapi untuk YouTube Music! \nfitur yang relatif kurang kaya tetapi memenuhi kebutuhan anda.</string>
<string name="select_apps_vanced">YouTube Vanced adalah Aplikasi YouTube bawaan Android, tetapi lebih baik!</string>
<string name="lets_get_started">Mari memulai</string>
<string name="willing_to_use_root">Bersedia menggunakan versi root? Cukup tekan tombol di bawah, atau ketuk untuk melanjutkan</string>
<!-- Home Page -->
<string name="about_app">Tentang %1$s</string>
@ -33,7 +33,7 @@
<string name="unavailable">Tidak tersedia</string>
<string name="update">Perbarui</string>
<string name="useful_links">Tautan Berguna</string>
<string name="support_us">Dukung Kami!</string>
<string name="support_us">Dukung kami!</string>
<!-- Settings -->
<string name="accent_color">Aksen Warna</string>
<string name="accent_blue">Biru</string>
@ -61,9 +61,9 @@
<string name="update_not_found">Tidak ada pembaruan</string>
<string name="variant">Varian</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="advanced">Tingkat Lanjut</string>
<string name="app_install_files_detected">%1$s file instalasi terdeteksi!</string>
<string name="app_install_files_detected_summary">Manager mendeteksi bahwa semua file yang diperlukan untuk instalasi %1$s ditemukan. Apakah anda ingin memasang?</string>
<string name="app_install_files_detected_summary">Manager mendeteksi bahwa semua file yang diperlukan untuk instalasi %1$s ditemukan. Apakah anda ingin memasangnya?</string>
<string name="checking_updates">Memeriksa pembaruan…</string>
<string name="chosen_lang">Bahasa: %1$s</string>
<string name="chosen_theme">Tema: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">Petunjuk</string>
<string name="hold_on">Berhenti!</string>
<string name="installing_app">Memasang %1$s</string>
<string name="magisk_vanced">Anda memakai Vanced versi Magisk/TWRP, yang pengembangannya dihentikan dan tidak bisa diperbarui menggunakan aplikasi ini. Mohon untuk menghapus itu dengan menghapus modul magisk/gunakan pencopot Vanced TWRP.</string>
<string name="magisk_vanced">Anda memakai Vanced versi Magisk/TWRP, yang pengembangannya dihentikan dan tidak bisa diperbarui menggunakan aplikasi ini. Mohon untuk menghapus itu dengan menghapus modul Magisk/gunakan pencopot Vanced TWRP.</string>
<string name="miui_one_title">MIUI terdeteksi!</string>
<string name="miui_one">Agar bisa memasang Vanced, anda HARUS menonaktifkan Optimisasi MIUI di pengaturan pengembang. (Anda bisa mengabaikan peringatan ini jika anda menggunakan ROM versi 20.2.20 atau lebih yang didasarkan xiaomi.eu)</string>
<string name="miui_one">Untuk memasang Vanced, anda HARUS menonaktifkan Optimisasi MIUI di pengaturan pengembang. (Anda bisa mengabaikan peringatan ini jika anda menggunakan ROM versi 20.2.20 atau lebih yang didasarkan xiaomi.eu)</string>
<string name="error">Terjadi kesalahan</string>
<string name="redownload">Unduh ulang</string>
<string name="security_context">Pastikan anda mengunduh aplikasi ini dari vancedapp.com, Vanced Discord atau Vanced Github</string>
<string name="security_context">Pastikan anda mengunduh aplikasi ini dari vancedapp.com, server Discord Vanced, atau Vanced Github</string>
<string name="success">Berhasil!</string>
<string name="app_installation_preferences">Preferensi Instalasi %1$s</string>
<string name="vanced_installed">Vanced berhasil dipasang! Buka sekarang?</string>
@ -94,7 +94,7 @@
<string name="sources">Sumber</string>
<string name="vanced_team">Tim Vanced</string>
<!-- Error messages -->
<string name="chown_fail">Gagal untuk `chown` apk ke pemilik sistem, mohon coba lagi.</string>
<string name="chown_fail">Gagal untuk `chown` APK ke pemilik sistem, mohon coba lagi.</string>
<string name="error_downloading">Gagal Mengunduh %1$s</string>
<string name="failed_uninstall">Gagal mencopot pemasangan paket %1$s</string>
<string name="files_missing_va">Gagal untuk menemukan file yang diperlukan untuk instalasi. Unduh ulang file instalasi, lalu coba lagi.</string>
@ -102,7 +102,7 @@
<string name="installation_aborted">Pemasangan gagal karena pengguna membatalkan pemasangan.</string>
<string name="installation_blocked">Pemasangan gagal karena pengguna memblokir pemasangan.</string>
<string name="installation_downgrade">Pemasangan gagal karena pengguna mencoba untuk menurunkan versi paket. Hapus pembaruan dari aplikasi YouTube bawaan, lalu coba lagi.</string>
<string name="installation_conflict">Pemasangan gagal karena aplikasi konflik dengan aplikasi yang sudah terpasang. Hapus versi Vanced yang sekarang, lalu coba lagi.</string>
<string name="installation_conflict">Pemasangan gagal dikarenakan aplikasi konflik dengan aplikasi yang sudah terpasang. Hapus versi Vanced yang sekarang, lalu coba lagi.</string>
<string name="installation_failed">Pemasangan gagal untuk alasan yang tidak diketahui, gabung Telegram atau Discord kami untuk bantuan lebih lanjut.</string>
<string name="installation_incompatible">Pemasangan gagal karena file pemasangan tidak kompatibel dengan perangkat anda. Hapus file yang diunduh di pengaturan, lalu coba lagi.</string>
<string name="installation_invalid">Pemasangan gagal karena file apk rusak, mohon coba lagi.</string>

View File

@ -3,7 +3,7 @@
<!-- Global Strings -->
<string name="cancel">Annulla</string>
<string name="close">Chiudi</string>
<string name="reset">Ripristina</string>
<string name="reset">Reimposta</string>
<string name="save">Salva</string>
<string name="select_apps">Seleziona le Tue App</string>
<!-- Main Activity -->
@ -12,16 +12,16 @@
<string name="title_settings">Impostazioni</string>
<string name="update_manager">Aggiorna Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Il tuo dispositivo ha i permessi di root?</string>
<string name="are_you_rooted">Il Tuo Dispositivo Ha i Permessi di Root?</string>
<string name="grant_root">Concedi i Permessi di Root</string>
<string name="select_at_least_one_app">Seleziona almeno un\'app!</string>
<string name="select_apps_music">Vanced, ma per YouTube Music!\nrelativamente meno ricco di caratteristiche ma ugualmente adattabile alle tue esigenze.</string>
<string name="select_apps_vanced">YouTube Vanced è l\'App di YouTube preinstallata di Android, ma migliorata!</string>
<string name="lets_get_started">Iniziamo</string>
<string name="willing_to_use_root">Sei disposto ad utilizzare la versione root? È sufficiente premere il pulsante in basso, altrimenti tocca per continuare</string>
<string name="willing_to_use_root">Vuoi utilizzare la versione root? Basta premere il pulsante in basso, altrimenti tocca per continuare</string>
<!-- Home Page -->
<string name="about_app">Informazioni su %1$s</string>
<string name="app_changelog_tooltip">Tocca la scheda per vedere le novità.</string>
<string name="app_changelog_tooltip">Tocca la scheda per leggere le novità.</string>
<string name="changelog">Novità</string>
<string name="downloading_file">Download in corso di %1$s</string>
<string name="install">Installa</string>
@ -30,7 +30,7 @@
<string name="latest">Disponibile:</string>
<string name="no_microg">microG non è installato</string>
<string name="root_not_granted">Accesso root non consentito</string>
<string name="unavailable">Non disponibile</string>
<string name="unavailable">Irraggiungibile</string>
<string name="update">Aggiorna</string>
<string name="useful_links">Link Utili</string>
<string name="support_us">Sostienici!</string>
@ -44,7 +44,7 @@
<string name="category_appearance">Aspetto</string>
<string name="category_behaviour">Comportamento</string>
<string name="clear_files">Cancella i file scaricati</string>
<string name="cleared_files">File cancellati con successo</string>
<string name="cleared_files">Cancellazione file riuscita</string>
<string name="firebase_title">Analisi Firebase</string>
<string name="firebase_summary">Questo ci consente di raccogliere informazioni sulle prestazioni dell\'app ed i registri sui crash</string>
<string name="language_title">Lingua</string>
@ -54,7 +54,7 @@
<string name="theme">Tema</string>
<string name="theme_dark">Tema Scuro</string>
<string name="theme_light">Tema Chiaro</string>
<string name="update_url">Aggiorna l\'URL del canale</string>
<string name="update_url">Aggiorna l\'URL del Canale</string>
<string name="push_notifications">Notifiche Push di %1$s</string>
<string name="push_notifications_summary">Ricevi notifiche push quando un aggiornamento per %1$s è disponibile</string>
<string name="update_center">Centro Aggiornamenti</string>
@ -62,8 +62,8 @@
<string name="variant">Variante</string>
<!-- Dialogs -->
<string name="advanced">Avanzate</string>
<string name="app_install_files_detected">%1$s file d\'installazione rilevati!</string>
<string name="app_install_files_detected_summary">Manager ha rilevato tutti i file necessari per l\'installazione di %1$s. Vuoi installarli?</string>
<string name="app_install_files_detected">%1$s file di installazione rilevati!</string>
<string name="app_install_files_detected_summary">Manager ha trovato tutti i file necessari per l\'installazione di %1$s. Vuoi installarli?</string>
<string name="checking_updates">Verifica aggiornamenti…</string>
<string name="chosen_lang">Lingue: %1$s</string>
<string name="chosen_theme">Tema: %1$s</string>
@ -71,17 +71,17 @@
<string name="guide">Guida</string>
<string name="hold_on">Aspetta!</string>
<string name="installing_app">Installazione %1$s</string>
<string name="magisk_vanced">Stai utilizzando la versione di Vanced ottenuta con Magisk/TWRP, ormai è obsoleta e non può essere aggiornata con questa app. Per favore, rimuovila eliminando il modulo di Magisk oppure utilizzando TWRP Vanced uninstaller.</string>
<string name="magisk_vanced">Stai utilizzando la versione Magisk/TWRP di Vanced, ormai obsoleta e non più aggiornabile tramite questa app. Per favore, rimuovila eliminando il modulo Magisk oppure utilizzando TWRP Vanced uninstaller.</string>
<string name="miui_one_title">Rilevata l\'interfaccia MIUI!</string>
<string name="miui_one">Per poter installare Vanced, DEVI PER FORZA disattivare le ottimizzazioni di MIUI nelle impostazioni da sviluppatore (puoi ignorare questo avviso se stai utilizzando la versione 20.2.20 o successive di una ROM basata su xiaomi.eu).</string>
<string name="miui_one">Per poter installare Vanced, DEVI disattivare le ottimizzazioni MIUI nelle Opzioni Sviluppatore (puoi ignorare questo avviso se stai utilizzando la versione 20.2.20 o successive di una ROM basata su xiaomi.eu)</string>
<string name="error">Errore</string>
<string name="redownload">Scarica nuovamente</string>
<string name="security_context">Assicurati di aver scaricato l\'app da vancedapp.com, dal server di Discord di Vanced o dalla pagina GitHub di Vanced</string>
<string name="security_context">Assicurati di aver scaricato l\'app da vancedapp.com, dal server Discord di Vanced o dalla pagina GitHub di Vanced</string>
<string name="success">Riuscito!</string>
<string name="app_installation_preferences">Preferenze di installazione %1$s</string>
<string name="vanced_installed">Vanced è stato installato con successo. Vuoi avviarlo ora?</string>
<string name="app_installation_preferences">Preferenze Installazione di %1$s</string>
<string name="vanced_installed">Vanced è stato correttamente installato. Desideri avviarlo ora?</string>
<string name="version">Versione</string>
<string name="music_installed">Vanced Music è stato installato con successo! Vuoi eseguirlo ora?</string>
<string name="music_installed">Vanced Music è stato correttamente installato! Vuoi eseguirlo ora?</string>
<string name="please_be_patient">Si prega di attendere…</string>
<string name="launch">Avvia</string>
<string name="welcome">Benvenuto</string>
@ -91,7 +91,7 @@
<string name="select_at_least_one_lang">Seleziona almeno una lingua!</string>
<!-- About Page -->
<string name="manager_dev">Sviluppatori di Manager</string>
<string name="sources">Codice sorgente</string>
<string name="sources">Codice Sorgente</string>
<string name="vanced_team">Il Team di Vanced</string>
<!-- Error messages -->
<string name="chown_fail">Impossibile modificare il proprietario dell\'apk nel proprietario di sistema, per favore riprova.</string>
@ -99,10 +99,10 @@
<string name="failed_uninstall">Impossibile disinstallare il pacchetto %1$s</string>
<string name="files_missing_va">Impossibile individuare i file richiesti per l\'installazione. Scaricali nuovamente e riprova.</string>
<string name="ifile_missing">Impossibile individuare il file apk per il tema nero/scuro dalla memoria, per favore riprova.</string>
<string name="installation_aborted">Installazione non riuscita, l\'utente ha annullato l\'installazione.</string>
<string name="installation_blocked">Installazione non riuscita, l\'utente ha bloccato l\'installazione.</string>
<string name="installation_downgrade">Installazione non riuscita, l\'utente ha provato a eseguire il downgrade del pacchetto. Disinstalla gli aggiornamenti dell\'app predefinita di YouTube, poi riprova.</string>
<string name="installation_conflict">Installazione non riuscita, l\'app va in conflitto con un\'app già installata. Disinstalla la versione attuale di Vanced, poi riprova.</string>
<string name="installation_aborted">Installazione non riuscita. L\'utente ha annullato l\'installazione.</string>
<string name="installation_blocked">Installazione non riuscita. L\'utente ha bloccato l\'installazione.</string>
<string name="installation_downgrade">Installazione non riuscita. L\'utente ha provato ad eseguire il downgrade del pacchetto. Disinstalla gli aggiornamenti dell\'app predefinita di YouTube, poi riprova.</string>
<string name="installation_conflict">Installazione non riuscita. L\'app è andata in conflitto con un\'app già installata. Disinstalla la versione attuale di Vanced, poi riprova.</string>
<string name="installation_failed">Installazione non riuscita a causa di un errore sconosciuto, unisciti al nostro gruppo Telegram o al server di Discord per ricevere ulteriore assistenza.</string>
<string name="installation_incompatible">Installazione non riuscita, il file di installazione non è compatibile con il tuo dispositivo. Elimina i file scaricati nelle impostazioni, poi riprova.</string>
<string name="installation_invalid">Installazione non riuscita a causa di file apk corrotti, si prega di riprovare.</string>

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">האם המכשיר שלך Root?</string>
<string name="grant_root">הענק הרשאות Root</string>
<string name="select_at_least_one_app">בחר לפחות יישום אחד!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">מוכן להשתמש בRoot? רק הקש על הכפתור מטה, או לחץ המשך</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">אודות %1$s</string>
<string name="app_changelog_tooltip">לחץ על הכרטיס כדי לצפות בשינויים.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">היסטורית שינויים</string>
<string name="downloading_file">מוריד את %1$s</string>
<string name="install">התקן</string>
@ -33,7 +33,7 @@
<string name="unavailable">אינו זמין</string>
<string name="update">עדכן</string>
<string name="useful_links">קישורים שימושיים</string>
<string name="support_us">תמוך בנו!</string>
<string name="support_us">תמכו בנו!</string>
<!-- Settings -->
<string name="accent_color">צבע הדגשה</string>
<string name="accent_blue">כחול</string>
@ -42,7 +42,7 @@
<string name="accent_red">אדום</string>
<string name="accent_yellow">צהוב</string>
<string name="category_appearance">מראה</string>
<string name="category_behaviour">התנהגות</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">מחק קבצים שהורדו</string>
<string name="cleared_files">מחיקת הקבצים הסתיימה בהצלחה</string>
<string name="firebase_title">ניתוח מידע משתמש</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s קבצי התקנה נמצאו!</string>
<string name="app_install_files_detected_summary">מנהל איתר את כל הקבצים הנדרשים עבור התקנת %1$s. האם להתקין?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">בודק אחר עדכונים…</string>
<string name="chosen_lang">שפה: %1$s</string>
<string name="chosen_theme">ערכת נושא: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">מדריך</string>
<string name="hold_on">עצור!</string>
<string name="installing_app">מתקין %1$s</string>
<string name="magisk_vanced">נדמה שאתה משתמש בגרסת הMagisk/TWRP של Vanced, שתמיכה בה הופסקה והגרסה אינה יכולה להתעדכן בעזרת האפליקציה הזו. אנא מחק אותה קודם על ידי מחיקת מודול בMagisk.</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI זוהה!</string>
<string name="miui_one">על מנת להתקין את Vanced, עליך להשבית אופטימיזציות של MIUI בהגדרות המפתח. (אתה יכול להתעלם מאזהרה זו אם אתה משתמש בגרסה 20.2.2. של שיאומי או יותר)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">בעיה</string>
<string name="redownload">הורד מחדש</string>
<string name="security_context">וודא שאתה מוריד את היישום דרך vancedapp.com, דרך שרת Vanced Discord או דרך Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">הצלחה!</string>
<string name="app_installation_preferences">%1$s העדפות התקנה</string>
<string name="vanced_installed">Vanced הותקן בהצלחה! לפתוח עכשיו?</string>
@ -94,15 +94,15 @@
<string name="sources">מקורות</string>
<string name="vanced_team">צוות Vanced</string>
<!-- Error messages -->
<string name="chown_fail">נכשל ב \'chown\' לקובץ Apk למנהל המערכת. בבקשה נסה שוב.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">בעיה בהורדה של %1$s</string>
<string name="failed_uninstall">יש בעיה במחיקת החבילה %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">הפעולה נכשלה מכיוון שהמשתמש ביטל את ההתקנה.</string>
<string name="installation_blocked">ההתקנה נכשלה מכיוון שהמשתמש חסם את ההתקנה.</string>
<string name="installation_downgrade">ההתקנה נכשלה מכיוון שהמשתמש ניסה לשנמך את הגירסה. מחק עדכונים מהיוטיוב הרגיל, ואז נסה שוב.</string>
<string name="installation_conflict">ההתקנה נכשלה מכיוון שהישום מתנגש עם גרסה מותקנת, מחק את הגרסה הנוכחית של Vanced, ונסה שוב.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">הפעולה נכשלה בגלל סיבה אינה ידועה, בבקשה הצטרפו לטלגרם או דיסקורד שלנו בשביל עזרה.</string>
<string name="installation_incompatible">ההתקנה נכשלה מכיוון שההתקנה או הקובץ לא תואמים עם מכשירך. נקה הורדות שהושלמו מתוך ההגדרות, ואז נסה שוב.</string>
<string name="installation_invalid">ההתקנה נכשלה מכיוון שקבצי הישום הרוסים, בבקשה נסה שוב.</string>

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">端末をルート化していますか?</string>
<string name="grant_root">root 権限を付与</string>
<string name="select_at_least_one_app">アプリを少なくとも一つ選択してください!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">さあ、始めましょう</string>
<string name="willing_to_use_root">root 版を使用したいですか?下のボタンを押してください。そうでないなら続けるボタンを押してください</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">%1$s について</string>
<string name="app_changelog_tooltip">カードをタップして更新履歴を見る。</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">更新履歴</string>
<string name="downloading_file">%1$s をダウンロードしています</string>
<string name="install">インストール</string>
@ -33,7 +33,7 @@
<string name="unavailable">利用不可</string>
<string name="update">更新</string>
<string name="useful_links">リンク集</string>
<string name="support_us">サポートする</string>
<string name="support_us">Brave をダウンロードして支援する</string>
<!-- Settings -->
<string name="accent_color">アクセントカラー</string>
<string name="accent_blue"></string>
@ -42,7 +42,7 @@
<string name="accent_red"></string>
<string name="accent_yellow"></string>
<string name="category_appearance">表示設定</string>
<string name="category_behaviour">動作設定</string>
<string name="category_behaviour">動作</string>
<string name="clear_files">ダウンロード済みファイルを消去</string>
<string name="cleared_files">ファイルを消去しました</string>
<string name="firebase_title">Firebase アナリティクス</string>
@ -62,8 +62,8 @@
<string name="variant">種類</string>
<!-- Dialogs -->
<string name="advanced">上級者向け</string>
<string name="app_install_files_detected">%1$sのインストールに必要なファイルが見つかりました</string>
<string name="app_install_files_detected_summary">%1$sのインストールに必要な全てのファイル準備が整いました。インストールしますか?</string>
<string name="app_install_files_detected">%1$s のインストールに必要なファイルが見つかりました</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">アップデートを確認中...</string>
<string name="chosen_lang">言語: %1$s</string>
<string name="chosen_theme">テーマ: %1$s</string>
@ -71,14 +71,14 @@
<string name="guide">ガイド</string>
<string name="hold_on">ストップ!</string>
<string name="installing_app">%1$s をインストールしています</string>
<string name="magisk_vanced">Vanced の Magisk/TWRP バージョンを使用しているようです。このバージョンは廃止されており、このアプリでは更新できません。 まず Magisk モジュールを削除するか、TWRP で Vanced uninstaller を使用してください。</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI ユーザーを検知しました!</string>
<string name="miui_one">Vanced をインストールするには、開発者設定で MIUI の最適化を無効化しなければなりません。 (20.2.20 以降の xiaomi.eu ベースの ROM の場合はこの警告は無視してください)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">エラー</string>
<string name="redownload">再ダウンロード</string>
<string name="security_context">このアプリは必ずvancedapp.com、VancedのDiscordサーバー、VancedのGitHubのいづれかからダウンロードして下さい。</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">成功!</string>
<string name="app_installation_preferences">%1$sのインストール設定</string>
<string name="app_installation_preferences">%1$s のインストール設定</string>
<string name="vanced_installed">Vanced のインストールに成功しました。今すぐ開きますか?</string>
<string name="version">バージョン</string>
<string name="music_installed">Vanced Music のインストールに成功しました。今すぐ開きますか?</string>
@ -94,15 +94,15 @@
<string name="sources">ソースコード</string>
<string name="vanced_team">Vanced チーム</string>
<!-- Error messages -->
<string name="chown_fail">システム所有者への APK の Chown ができませんでした、もう一度やり直してください.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">%1$s のダウンロード中にエラー</string>
<string name="failed_uninstall">パッケージ %1$s のアンインストールに失敗しました</string>
<string name="files_missing_va">インストールに必要なファイルが見つかりませんでした。再ダウンロードし、もう一度お試しください。</string>
<string name="ifile_missing">ストレージからブラック/ダークテーマの APK ファイルが見つかりませんでした。もう一度お試しください。</string>
<string name="installation_aborted">ユーザーがインストールを中断したためインストールに失敗しました。</string>
<string name="installation_blocked">ユーザーがインストールをブロックしたためインストールに失敗しました。</string>
<string name="installation_downgrade">ユーザーがパッケージをダウングレードしようとしたためインストールに失敗しました。ストックの YouTube アプリのアップデートをアンインストールしてから、もう一度やり直してください。</string>
<string name="installation_conflict">既にインストールされたアプリと競合したためインストールに失敗しました。Vanced の現在のバージョンをアンインストールしてから、もう一度やり直してください。</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">何らかの理由によりインストールに失敗しました、サポートのために Telegram または Discord に参加してください。</string>
<string name="installation_incompatible">インストールするファイルがお使いのデバイスと互換性がないためインストールに失敗しました。設定でダウンロードしたファイルを削除してから、もう一度やり直してください。</string>
<string name="installation_invalid">APK ファイルが破損しているためインストールに失敗しました、もう一度やり直してください。</string>

View File

@ -8,20 +8,20 @@
<string name="select_apps">Select Your Apps</string>
<!-- Main Activity -->
<string name="title_about">შესახებ</string>
<string name="title_home">Manager</string>
<string name="title_home">მენეჯერი</string>
<string name="title_settings">პარამეტრები</string>
<string name="update_manager">Update Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">მიმდინარეობს %1$s-ის გადმოწერა</string>
<string name="install">ინსტალაცია</string>
@ -33,7 +33,7 @@
<string name="unavailable">ხელმიუწვდომელია</string>
<string name="update">განახლება</string>
<string name="useful_links">საჭირო ლინკები</string>
<string name="support_us">Support US!</string>
<string name="support_us">დაგვიჭირეთ მხარი Brave-ის გადმოწერით</string>
<!-- Settings -->
<string name="accent_color">აქცენტის ფერი</string>
<string name="accent_blue">ლურჯი</string>
@ -42,7 +42,7 @@
<string name="accent_red">წითელი</string>
<string name="accent_yellow">ყვითელი</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_title">Firebase Analytics</string>
@ -58,25 +58,25 @@
<string name="push_notifications">%1$s Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when an update for %1$s is released</string>
<string name="update_center">განახლების ცენტრი</string>
<string name="update_not_found">No new updates</string>
<string name="update_not_found">განახლება არ არის აღმოჩენილი</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_theme">თემა: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">ინსტრუქცია</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller.</string>
<string name="installing_app">მიმდინარეობს %1$s-ის ინსტალაცია</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">აღმოჩენილია MIUI-ის მომხმარებელი!</string>
<string name="miui_one">In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">შეცდომა</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">წარმატება!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced has successfully been installed! Open now?</string>
@ -94,15 +94,15 @@
<string name="sources">წყაროები</string>
<string name="vanced_team">Vanced-ის გუნდი</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` apk to system owner, please try again.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">შეცდომა %1$s-ის გადმოწერის დროს</string>
<string name="failed_uninstall">პაკეტი %1$s ვერ დეინსტალირდა</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">Installation failed because user aborted the installation.</string>
<string name="installation_blocked">Installation failed because user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because user tried to downgrade the package. Uninstall updates from stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Installation failed for unknown reasons, join our Telegram or Discord for further support.</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Installation failed because the apk files are corrupted, please try again.</string>

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="close">Close</string>
<string name="reset">Reset</string>
<string name="save">Save</string>
<string name="select_apps">Select Your Apps</string>
<!-- Main Activity -->
<string name="title_about">About</string>
<string name="title_home">Manager</string>
<string name="title_settings">Settings</string>
<string name="update_manager">Update Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">Downloading %1$s</string>
<string name="install">Install</string>
<string name="button_reinstall">Reinstall</string>
<string name="version_installed">Installed:</string>
<string name="latest">Latest:</string>
<string name="no_microg">microG isn\'t installed</string>
<string name="root_not_granted">Root access not granted</string>
<string name="unavailable">Unavailable</string>
<string name="update">Update</string>
<string name="useful_links">Useful Links</string>
<string name="support_us">Support us!</string>
<!-- Settings -->
<string name="accent_color">Accent Color</string>
<string name="accent_blue">Blue</string>
<string name="accent_green">Green</string>
<string name="accent_purple">Purple</string>
<string name="accent_red">Red</string>
<string name="accent_yellow">Yellow</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_title">Firebase Analytics</string>
<string name="firebase_summary">This lets us collect information about app performance and crash logs</string>
<string name="language_title">Language</string>
<string name="link_title">Use Chrome Custom Tabs</string>
<string name="link_custom_tabs">Links will open in Chrome Custom Tabs</string>
<string name="system_default">System Default</string>
<string name="theme">Theme</string>
<string name="theme_dark">Dark Theme</string>
<string name="theme_light">Light Theme</string>
<string name="update_url">Update Channel URL</string>
<string name="push_notifications">%1$s Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when an update for %1$s is released</string>
<string name="update_center">Manager Update Center</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI detected!</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Error</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Success!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced has successfully been installed! Open now?</string>
<string name="version">Version</string>
<string name="music_installed">Vanced Music has successfully been installed! Open now?</string>
<string name="please_be_patient">Please be patient…</string>
<string name="launch">Open</string>
<string name="welcome">Welcome</string>
<!-- Install Page -->
<string name="choose_preferred_language">Choose your preferred language(s) for Vanced</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="sources">Sources</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Error Downloading %1$s</string>
<string name="failed_uninstall">Failed to uninstall package %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Installation failed for unknown reasons, join our Telegram or Discord for further support.</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Installation failed because the apk files are corrupted, please try again.</string>
<string name="installation_signature">Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again.</string>
<string name="installation_miui">Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again.</string>
<string name="installation_storage">Installation failed due to a storage error.</string>
<string name="modapk_missing">Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again.</string>
<string name="path_missing">Failed to locate the stock YouTube installation path after split installation.</string>
</resources>

View File

@ -8,20 +8,20 @@
<string name="select_apps">앱을 선택하세요</string>
<!-- Main Activity -->
<string name="title_about">정보</string>
<string name="title_home">관리자</string>
<string name="title_home">매니저</string>
<string name="title_settings">설정</string>
<string name="update_manager">업데이트 관리자</string>
<string name="update_manager">업데이트 매니저</string>
<!-- Welcome Page -->
<string name="are_you_rooted">기기가 루팅되어 있습니까?</string>
<string name="grant_root">루트 권한 부여</string>
<string name="select_at_least_one_app">적어도 하나의 앱을 선택해주세요</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">%1$s 다운로드 중</string>
<string name="install">설치</string>
@ -33,7 +33,7 @@
<string name="unavailable">사용 불가</string>
<string name="update">업데이트</string>
<string name="useful_links">참고할 만한 링크</string>
<string name="support_us">Support US!</string>
<string name="support_us">우리를 지원해주세요!</string>
<!-- Settings -->
<string name="accent_color">강조 색상</string>
<string name="accent_blue">파란색</string>
@ -42,7 +42,7 @@
<string name="accent_red">빨간색</string>
<string name="accent_yellow">노란색</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">다운로드된 파일 모두 지우기</string>
<string name="cleared_files">다운로드된 파일을 모두 삭제했습니다</string>
<string name="firebase_title">Firebase 분석</string>
@ -58,25 +58,25 @@
<string name="push_notifications">%1$s 푸시 알림</string>
<string name="push_notifications_summary">새로운 %1$s 업데이트가 출시되면 알림 받기</string>
<string name="update_center">업데이트 센터</string>
<string name="update_not_found">No new updates</string>
<string name="update_not_found">새로운 업데이트 없음</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">언어: %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_theme">테마: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">가이드</string>
<string name="hold_on">잠깐만요!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">현재 설치되어 있는 Vanced의 Magisk/TWRP 버전은 더 이상 지원되지 않으며 이 앱으로 업데이트할 수 없습니다. 먼저 삭제 프로그램을 이용하여 Vanced의 TWRP/Magisk 모듈을 제거하여 주시기 바랍니다.</string>
<string name="installing_app">%1$s 설치 중</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI 사용자로 보입니다!</string>
<string name="miui_one">Vanced를 올바르게 설치하려면, 개발자 설정으로 들어가서 MIUI 최적화 기능을 반드시 끄셔야 합니다. (단, 버전이 20.2.20 이상인 xiaomi.eu 기반 ROM을 사용하는 경우 이 경고를 무시하셔도 좋습니다)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">오류</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">성공!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced가 성공적으로 설치되었습니다. 지금 실행하시겠어요?</string>
@ -94,15 +94,15 @@
<string name="sources">소스</string>
<string name="vanced_team">Vanced 팀</string>
<!-- Error messages -->
<string name="chown_fail">시스템 소유자에게 apk의 소유권 변경을 실패했습니다. 다시 시도하십시오.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">%1$s 다운로드 중 오류 발생</string>
<string name="failed_uninstall">%1$s 패키지 제거에 실패하였습니다</string>
<string name="files_missing_va">설치에 필요한 파일을 찾지 못했습니다. 설치 파일을 다시 다운로드한 다음 재시도하십시오.</string>
<string name="ifile_missing">저장소에서 블랙/다크 테마에 대한 apk 파일을 찾지 못했습니다. 다시 시도하십시오.</string>
<string name="installation_aborted">사용자가 설치를 중단했기 때문에 앱을 설치하지 못했습니다.</string>
<string name="installation_blocked">사용자가 설치를 차단했기 때문에 앱을 설치하지 못했습니다.</string>
<string name="installation_downgrade">사용자가 패키지를 이전 버전으로 변경하려고 하여 앱을 설치하지 못했습니다. 기본 YouTube 앱을 초기 버전으로 변경한 다음, 설치를 다시 진행해주세요.</string>
<string name="installation_conflict">설치하려는 앱이 이미 설치된 앱과 충돌하여 앱을 설치하지 못했습니다. 현재 설치된 Vanced 앱을 삭제한 다음, 설치를 다시 진행해주세요.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">알 수 없는 이유가 발생하여 앱을 설치하지 못했습니다. 저희 텔레그램 또는 디스코드에 문제를 제보해주시면 도와드리겠습니다.</string>
<string name="installation_incompatible">설치 파일이 기기와 호환되지 않아 앱을 설치하지 못했습니다. Manager 설정에서 다운로드된 파일을 모두 삭제한 다음, 설치를 다시 진행해주세요.</string>
<string name="installation_invalid">APK 파일이 손상되어 앱을 설치하지 못했습니다. 설치를 다시 진행해주세요.</string>

View File

@ -15,13 +15,13 @@
<string name="are_you_rooted">Gelo cîhaza te Root e?</string>
<string name="grant_root">Destûra Root\'ê bide</string>
<string name="select_at_least_one_app">Herî kêm sepanekê hilbijêre!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Gelo dixwazî guhertoya root bi kar bînî? Tenê bişkoka jêrîn bidewsîne, an ji bo domandinê bitepînin</string>
<string name="lets_get_started">Dest pê kirin</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">Derbar %1$s</string>
<string name="app_changelog_tooltip">Ji bo guherînan bibînî kartê bitepîne.</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Guherîn</string>
<string name="downloading_file">Tê daxistin %1$s</string>
<string name="install">Saz bike</string>
@ -42,7 +42,7 @@
<string name="accent_red">Sor</string>
<string name="accent_yellow">Zer</string>
<string name="category_appearance">Xuyang</string>
<string name="category_behaviour">Reftar</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Dosiyayên daxistî paqij bike</string>
<string name="cleared_files">Dosiya, biserketî paqij bûn</string>
<string name="firebase_title">Analîza Firebase\'ê</string>
@ -61,9 +61,9 @@
<string name="update_not_found">Hildema nû nîne</string>
<string name="variant">Guharto</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="advanced">Pêşketî</string>
<string name="app_install_files_detected">%1$s dosiyên sazkirinê peyda bûn!</string>
<string name="app_install_files_detected_summary">Rêveberê peydabûna hemû ew dosiyên pêwîst ên ji bo sazkirina %1$s tesbît kir. Gelo tu dixwazî saz bikî?</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Hildem tên kontrolkirin...</string>
<string name="chosen_lang">Ziman(ên):%1$s</string>
<string name="chosen_theme">Rûkar: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">Rêzan</string>
<string name="hold_on">Rawestîne!</string>
<string name="installing_app">%1$s tê sazkirin</string>
<string name="magisk_vanced">Hûn niha guhertoya Magisk/TWRP ji Vanced\'ê bi kar tînin, ku qut bûye û bi saya vê sepanê naye hildemandin. Jkx magsik module/bi alîkariya TWRP Vanced uninstaller\'ê rakin.</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI destnîşan bû!</string>
<string name="miui_one">Ji bo ku Vanced were sazkirin, DIVÊ hûn Optimîzasyonên MIUI-yê di sazkariyên pêşvebirinê de neçalak bikin. (Hûn dikarin vê hişyariyê paşguh bikin heke hûn ROM\'a li ser esasa xiaomi.eu 20.2.20 an jortir bi kar tînin)</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Çewtî</string>
<string name="redownload">Ji nû ve daxîne</string>
<string name="security_context">Piştrast bin ku we sepan ji vancedapp.com\'ê, ji servera Vanced Discord\'ê an Vanced GitHub\'ê daxistiye</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Bi Ser Ket!</string>
<string name="app_installation_preferences">%1$s sazkariyên bijarde yên sazkirinê</string>
<string name="vanced_installed">Vanced biserketî saz bû! Gelo niha vebe?</string>
@ -94,15 +94,15 @@
<string name="sources">Çavkanî</string>
<string name="vanced_team">Koma Vanced\'ê</string>
<!-- Error messages -->
<string name="chown_fail">\'Chown\' apk ji xwediyê sîstemê re bi ser neket, jkx dîsa biceribîne.</string>
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Çewtiya daxistinê %1$s</string>
<string name="failed_uninstall">Rakirina pakêta %1$s bi ser neket</string>
<string name="files_missing_va">Dozîna dosiyên pêwîst ji bo sazkirinê bi ser neket. Dosiyên sazkirinê dîsa daxîne, paşê dubare biceribîne.</string>
<string name="ifile_missing">Dozîna dosiya apk ji bo rûkara reş/tarî ji bîrgehê bi ser neket, jkx dîsa biceribîne.</string>
<string name="installation_aborted">Sazkirin bi ser neket ji ber ku bikarîner dawî li pêvajoya sazkirinê anî.</string>
<string name="installation_blocked">Sazkirin bi ser neket ji ber ku bikarînerê sazkirin asteng kir.</string>
<string name="installation_downgrade">Sazkirin bi ser neket ji ber ku bikarîner hewl dida derecebendiya pakêtê kêm bike. Hildeman ji bernameya YouTube\'ê ya heyî rakin, paşê dîsa biceribînin.</string>
<string name="installation_conflict">Sazkirin bi ser neket ji ber ku ev bernameya ligel bernameyeke din ya sazkirî li hev nake. Guhertoya heyî ya Vanced\'ê rakin, paşê dîsa biceribînin.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Sazkirin ji ber sedemên nenas bi ser neket, ji bo piştgiriya zêdetir tevlî Telegram an Discord\'ê bibin.</string>
<string name="installation_incompatible">Sazkirin bi ser neket ji ber ku dosiya sazkirinê ligel cîhaza te hevaheng nîne. Dosiyên daxistî ji sazkariyan paqij bike, paşê dîsa biceribîne.</string>
<string name="installation_invalid">Sazkirin bi ser neket ji ber ku dosiyên apk\'ayê xirab in, jkx dîsa biceribîne.</string>

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="close">Close</string>
<string name="reset">Reset</string>
<string name="save">Save</string>
<string name="select_apps">Select Your Apps</string>
<!-- Main Activity -->
<string name="title_about">About</string>
<string name="title_home">Manager</string>
<string name="title_settings">Settings</string>
<string name="update_manager">Update Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use the root version? Just hit the button below, else tap to continue</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see the changelog.</string>
<string name="changelog">Changelog</string>
<string name="downloading_file">Downloading %1$s</string>
<string name="install">Install</string>
<string name="button_reinstall">Reinstall</string>
<string name="version_installed">Installed:</string>
<string name="latest">Latest:</string>
<string name="no_microg">microG isn\'t installed</string>
<string name="root_not_granted">Root access not granted</string>
<string name="unavailable">Unavailable</string>
<string name="update">Update</string>
<string name="useful_links">Useful Links</string>
<string name="support_us">Support us!</string>
<!-- Settings -->
<string name="accent_color">Accent Color</string>
<string name="accent_blue">Blue</string>
<string name="accent_green">Green</string>
<string name="accent_purple">Purple</string>
<string name="accent_red">Red</string>
<string name="accent_yellow">Yellow</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behavior</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_title">Firebase Analytics</string>
<string name="firebase_summary">This lets us collect information about app performance and crash logs</string>
<string name="language_title">Language</string>
<string name="link_title">Use Chrome Custom Tabs</string>
<string name="link_custom_tabs">Links will open in Chrome Custom Tabs</string>
<string name="system_default">System Default</string>
<string name="theme">Theme</string>
<string name="theme_dark">Dark Theme</string>
<string name="theme_light">Light Theme</string>
<string name="update_url">Update Channel URL</string>
<string name="push_notifications">%1$s Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when an update for %1$s is released</string>
<string name="update_center">Manager Update Center</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install it?</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI detected!</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="error">Error</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="success">Success!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="vanced_installed">Vanced has successfully been installed! Open now?</string>
<string name="version">Version</string>
<string name="music_installed">Vanced Music has successfully been installed! Open now?</string>
<string name="please_be_patient">Please be patient…</string>
<string name="launch">Open</string>
<string name="welcome">Welcome</string>
<!-- Install Page -->
<string name="choose_preferred_language">Choose your preferred language(s) for Vanced</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="sources">Sources</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Failed to `chown` APK to system owner, please try again.</string>
<string name="error_downloading">Error Downloading %1$s</string>
<string name="failed_uninstall">Failed to uninstall package %1$s</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">Failed to locate apk file for black/dark theme from storage, please try again.</string>
<string name="installation_aborted">Installation failed because the user aborted the installation.</string>
<string name="installation_blocked">Installation failed because the user blocked the installation.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again.</string>
<string name="installation_conflict">Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again.</string>
<string name="installation_failed">Installation failed for unknown reasons, join our Telegram or Discord for further support.</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Installation failed because the apk files are corrupted, please try again.</string>
<string name="installation_signature">Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again.</string>
<string name="installation_miui">Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again.</string>
<string name="installation_storage">Installation failed due to a storage error.</string>
<string name="modapk_missing">Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again.</string>
<string name="path_missing">Failed to locate the stock YouTube installation path after split installation.</string>
</resources>

View File

@ -10,7 +10,7 @@
<string name="title_about">Over</string>
<string name="title_home">Manager</string>
<string name="title_settings">Instellingen</string>
<string name="update_manager">Manager update</string>
<string name="update_manager">Manager bijwerken</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is je apparaat geroot?</string>
<string name="grant_root">Root machtiging toestaan</string>
@ -18,7 +18,7 @@
<string name="select_apps_music">Vanced voor YouTube Music !\nMinder functies maar voldoet zeker aan je wensen.</string>
<string name="select_apps_vanced">YouTube Vanced is de standaard Android YouTube app, maar nog beter !</string>
<string name="lets_get_started">Aan de slag !</string>
<string name="willing_to_use_root">Wil je de root versie gebruiken? Tik dan op de knop hieronder of tik om verder te gaan</string>
<string name="willing_to_use_root">Wil je de root-versie gebruiken? Tik dan op de knop hieronder of tik om verder te gaan</string>
<!-- Home Page -->
<string name="about_app">Over %1$s</string>
<string name="app_changelog_tooltip">Tik op de kaart om de wijzigingen te zien.</string>
@ -42,7 +42,7 @@
<string name="accent_red">Rood</string>
<string name="accent_yellow">Geel</string>
<string name="category_appearance">Weergave</string>
<string name="category_behaviour">Werking</string>
<string name="category_behaviour">Gedrag</string>
<string name="clear_files">Gedownloade bestanden verwijderen</string>
<string name="cleared_files">Bestanden succesvol verwijderd</string>
<string name="firebase_title">Firebase analyse</string>
@ -63,7 +63,7 @@
<!-- Dialogs -->
<string name="advanced">Geavanceerd</string>
<string name="app_install_files_detected">%1$s installatiebestanden gedetecteerd!</string>
<string name="app_install_files_detected_summary">Manager heeft alle nodige bestanden gedetecteerd voor het installeren van %1$s. Wil je installeren?</string>
<string name="app_install_files_detected_summary">Manager heeft alle nodige bestanden gedetecteerd voor het installeren van %1$s. Wil je ze installeren?</string>
<string name="checking_updates">Controleren op updates…</string>
<string name="chosen_lang">Talen: %1$s</string>
<string name="chosen_theme">Thema: %1$s</string>
@ -71,12 +71,12 @@
<string name="guide">Handleiding</string>
<string name="hold_on">Stoppen!</string>
<string name="installing_app">%1$s installeren</string>
<string name="magisk_vanced">Je gebruikt de Magisk/TWRP-versie van Vanced, die stopgezet is en niet kan bijgewerkt worden met deze app. Verwijder deze eerst door het verwijderen van de Magisk module / door de TWRP Vanced uninstaller te gebruiken.</string>
<string name="magisk_vanced">Je gebruikt de Magisk/TWRP-versie van Vanced, die stopgezet is en niet kan bijgewerkt worden met deze app. Verwijder deze eerst door het verwijderen van de Magisk-module / door de TWRP Vanced uninstaller te gebruiken.</string>
<string name="miui_one_title">MIUI gedetecteerd!</string>
<string name="miui_one">Om Vanced te installeren MOET je MIUI-optimalisaties uitschakelen in de ontwikkelaarsinstellingen (je kunt deze waarschuwing negeren als je 20.2.20 of later xiaomi.eu gebaseerde ROM gebruikt)</string>
<string name="miui_one">Om Vanced te installeren MOET je MIUI-optimalisaties uitschakelen in de ontwikkelaarsinstellingen (je kunt deze waarschuwing negeren als je de op xiaomi.eu gebaseerde ROM 20.2.20 of later gebruikt)</string>
<string name="error">Fout</string>
<string name="redownload">Opnieuw downloaden</string>
<string name="security_context">Zorg ervoor dat je de app hebt gedownload van vancedapp.com, de Vanced Discord server of Vanced GitHub</string>
<string name="security_context">Zorg ervoor dat je de app hebt gedownload van vancedapp.com, de Vanced Discord-server of Vanced GitHub</string>
<string name="success">Gelukt!</string>
<string name="app_installation_preferences">installatievoorkeuren voor %1$s</string>
<string name="vanced_installed">Vanced is succesvol geïnstalleerd! Nu starten?</string>
@ -94,14 +94,14 @@
<string name="sources">Bronnen</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Wijzigen van apk-eigenaar naar systeemeigenaar mislukt. Probeer het opnieuw.</string>
<string name="chown_fail">Wijzigen van APK-eigenaar naar systeemeigenaar mislukt. Probeer het opnieuw.</string>
<string name="error_downloading">Fout bij downloaden van %1$s</string>
<string name="failed_uninstall">Deïnstalleren van pakket %1$s mislukt</string>
<string name="files_missing_va">Kan de vereiste bestanden voor de installatie niet vinden. Download de installatiebestanden opnieuw en probeer het opnieuw.</string>
<string name="ifile_missing">Kan het apk-bestand voor zwart/donker thema niet vinden in opslag. Probeer het opnieuw.</string>
<string name="installation_aborted">Installatie mislukt omdat de gebruiker de installatie heeft afgebroken.</string>
<string name="installation_blocked">Installatie mislukt omdat de gebruiker de installatie heeft geblokkeerd.</string>
<string name="installation_downgrade">Installatie mislukt omdat de gebruiker het pakket probeerde te downgraden. Verwijder updates van de standaard YouTube app en probeer het daarna opnieuw.</string>
<string name="installation_downgrade">Installatie mislukt omdat de gebruiker het pakket probeerde te downgraden. Verwijder updates van de standaard YouTube-app en probeer het daarna opnieuw.</string>
<string name="installation_conflict">Installatie mislukt omdat de app conflicten heeft met een reeds geïnstalleerde app. Verwijder de huidige versie van Vanced en probeer het opnieuw.</string>
<string name="installation_failed">Installatie mislukt om onbekende redenen, word lid van onze Telegram of Discord voor verdere ondersteuning.</string>
<string name="installation_incompatible">Installatie mislukt omdat het installatiebestand niet compatibel is met jouw apparaat. Wis de gedownloade bestanden in de instellingen en probeer het opnieuw.</string>

View File

@ -1,28 +1,28 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="cancel">Avbryt</string>
<string name="close">Lukk</string>
<string name="reset">Tilbakestill</string>
<string name="save">Lagre</string>
<string name="select_apps">Select Your Apps</string>
<string name="select_apps">Velg dine apper</string>
<!-- Main Activity -->
<string name="title_about">Om</string>
<string name="title_home">Manager</string>
<string name="title_home">Leder</string>
<string name="title_settings">Innstillinger</string>
<string name="update_manager">Update Manager</string>
<string name="update_manager">Oppdater administrator</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="select_apps_music">Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs.</string>
<string name="select_apps_vanced">YouTube Vanced is the stock Android YouTube App, but better!</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="willing_to_use_root">Willing to use root version? Just hit the button below, else tap to continue</string>
<string name="are_you_rooted">Er enheten tilkoblet?</string>
<string name="grant_root">Gi root-tillatelse</string>
<string name="select_at_least_one_app">Velg minst en app!</string>
<string name="select_apps_music">Benyttet for YouTube-Musikk!\nrelativt mindre funksjonsrik men dekker dine behov.</string>
<string name="select_apps_vanced">YouTube Vanced er standard Android YouTube App, men bedre!</string>
<string name="lets_get_started">La oss komme i gang</string>
<string name="willing_to_use_root">Gå til å bruke rotversjonen? Bare trykk på knappen nedenfor, ellers trykk for å fortsette</string>
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="app_changelog_tooltip">Tap on the card to see changelog.</string>
<string name="changelog">Changelog</string>
<string name="about_app">Om %1$s</string>
<string name="app_changelog_tooltip">Trykk på kortet for å se endringsloggen.</string>
<string name="changelog">Endringslogg</string>
<string name="downloading_file">Laster ned %1$s</string>
<string name="install">Installer</string>
<string name="button_reinstall">Reinstaller</string>
@ -33,7 +33,7 @@
<string name="unavailable">Utilgjengelig</string>
<string name="update">Oppdater</string>
<string name="useful_links">Nyttige lenker</string>
<string name="support_us">Support US!</string>
<string name="support_us">Støtt oss!</string>
<!-- Settings -->
<string name="accent_color">Aksentfarge</string>
<string name="accent_blue">Blå</string>
@ -41,10 +41,10 @@
<string name="accent_purple">Lilla</string>
<string name="accent_red">Rød</string>
<string name="accent_yellow">Gul</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behaviour</string>
<string name="category_appearance">Utseende</string>
<string name="category_behaviour">Oppførsel</string>
<string name="clear_files">Fjern nedlastede filer</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="cleared_files">Valgte filer er fjernet</string>
<string name="firebase_title">Firebase analyser</string>
<string name="firebase_summary">Dette lar oss samle informasjon om app-ytelse og krasj-logger</string>
<string name="language_title">Språk</string>
@ -58,51 +58,51 @@
<string name="push_notifications">%1$s Push varsler</string>
<string name="push_notifications_summary">Motta push varsler når en oppdatering for %1$s er utgitt</string>
<string name="update_center">Oppdateringssenter</string>
<string name="update_not_found">No new updates</string>
<string name="update_not_found">Ingen nye oppdateringer</string>
<string name="variant">Variant</string>
<!-- Dialogs -->
<string name="advanced">Advanced</string>
<string name="app_install_files_detected">%1$s installation files detected!</string>
<string name="app_install_files_detected_summary">Manager detected that all necessary files for %1$s installation were found. Do you want to install?</string>
<string name="checking_updates">Checking for updates</string>
<string name="advanced">Avansert</string>
<string name="app_install_files_detected">%1$s installasjonsfiler oppdaget!</string>
<string name="app_install_files_detected_summary">Manager oppdaget at alle nødvendige filer for %1$s installasjonen ble funnet. Vil du installere den?</string>
<string name="checking_updates">Sjekker etter oppdateringer</string>
<string name="chosen_lang">Språk: %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="chosen_theme">Tema: %1$s</string>
<string name="chosen_version">Versjon: %1$s</string>
<string name="guide">Guide</string>
<string name="hold_on">Stopp!</string>
<string name="installing_app">Installing %1$s</string>
<string name="magisk_vanced">Du bruker Magisk/TWRP versjonen av Vanced, som ikke funker lengre og ikke kan oppdateres ved hjelp av denne appen. Vennligst fjern den ved å fjerne Magisk modul/bruke TWRP Vanced uninstaller.</string>
<string name="installing_app">Installerer %1$s</string>
<string name="magisk_vanced">Du bruker Magisk/TWRP-versjonen av Vansert, som seponeres og som ikke kan oppdateres ved hjelp av denne appen. Vennligst fjern den ved å fjerne Magisk modul/bruke TWRP Vanced uninstaller.</string>
<string name="miui_one_title">MIUI oppdaget!</string>
<string name="miui_one">For å installere Vanced, MÅ du deaktivere MIUI Optimaliseringer i utviklerinnstillingene. (Du kan ignorere denne advarselen hvis du bruker 20.2.20 eller senere xiaomi.eu basert ROM)</string>
<string name="miui_one">For å installere Vananced, MÅ du deaktivere MIUI Optimaliseringer i utviklerinnstillingene. (Du kan ignorere denne advarselen hvis du bruker 20.2.20 eller senere xiaomi.eu basert ROM)</string>
<string name="error">Feil</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub</string>
<string name="redownload">Last ned på nytt</string>
<string name="security_context">Sørg for at du lastet ned appen fra vancedapp.com, Vanced Discord server, eller Vanced GitHub</string>
<string name="success">Suksess!</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="app_installation_preferences">%1$s Installasjonsinnstillinger</string>
<string name="vanced_installed">Vanced har blitt installert! Åpne nå?</string>
<string name="version">Version</string>
<string name="version">Versjon</string>
<string name="music_installed">Vanced Music har blitt installert! Åpne nå?</string>
<string name="please_be_patient">Please be patient</string>
<string name="please_be_patient">Vær tålmodig</string>
<string name="launch">Åpne</string>
<string name="welcome">Velkommen</string>
<!-- Install Page -->
<string name="choose_preferred_language">Velg dine foretrukne språk for Vanced</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<string name="light_plus_other">Lys + %1$s</string>
<string name="select_at_least_one_lang">Velg minst ett språk!</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="sources">Kilder</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->
<string name="chown_fail">Kunne ikke `chown` apk til systemeieren, vennligst prøv igjen.</string>
<string name="chown_fail">Kan ikke `chown` APK til systemeieren, vennligst prøv igjen.</string>
<string name="error_downloading">Feil ved nedlasting %1$s</string>
<string name="failed_uninstall">Kunne ikke avinstallere pakken %1$s</string>
<string name="files_missing_va">Kunne ikke finne de nødvendige filene for installasjon. Last ned installasjonsfilene på nytt, og prøv på nytt.</string>
<string name="ifile_missing">Klarte ikke å finne apk-filen for svart/mørkt tema på enheten, vennligst prøv igjen.</string>
<string name="installation_aborted">Installasjonen mislyktes fordi brukeren har avbrutt installasjonen.</string>
<string name="installation_blocked">Installasjonen mislyktes fordi brukeren har blokkert installasjonen.</string>
<string name="installation_downgrade">Installasjonen mislyktes fordi brukeren prøvde å nedgradere pakken. Avinstaller oppdateringer fra YouTube appen, og prøv på nytt.</string>
<string name="installation_conflict">Installasjonen mislyktes på grunn av at appen er i konflikt med en allerede installert app. Avinstaller den installerte versjon av Vanced, og prøv på nytt.</string>
<string name="installation_aborted">Installasjonen mislyktes fordi brukeren avbrutt installasjonen.</string>
<string name="installation_blocked">Installasjonen mislyktes på grunn av at brukeren blokkerte installasjonen.</string>
<string name="installation_downgrade">Installasjonen mislyktes fordi brukeren prøvde å nedgradere pakken. Avinstaller oppdateringer fra standard YouTube app, og prøv på nytt.</string>
<string name="installation_conflict">Installasjonen mislyktes på grunn av at appen er i konflikt med en allerede installert app. Avinstaller gjeldende versjon, og prøv på nytt.</string>
<string name="installation_failed">Installasjonen mislyktes av ukjente årsaker, bli med i vår Telegram eller Discord gruppe for videre støtte.</string>
<string name="installation_incompatible">Installasjonen mislyktes på grunn av at installasjonsfilen er inkompatibel med enheten. Fjern nedlastede filer i innstillinger og prøv på nytt.</string>
<string name="installation_invalid">Installasjonen mislyktes fordi apk-filene er ødelagt, vennligst prøv på nytt.</string>

Some files were not shown because too many files have changed in this diff Show More